From 7512812fad32755d07e3b8c2eb38c451d1b8d1b2 Mon Sep 17 00:00:00 2001 From: Gaelle TANGUY <gaelle.tanguy@meteo.fr> Date: Tue, 15 Nov 2016 10:38:53 +0100 Subject: [PATCH] C.Lac 15/11/2016 Add OSPLIT_WENO --- src/MNH/advection_uvw.f90 | 22 ++++++++++++++-------- src/MNH/modd_advn.f90 | 10 +++++++--- src/MNH/modn_advn.f90 | 9 +++++++-- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index b01a5a02d..24f827339 100644 --- a/src/MNH/advection_uvw.f90 +++ b/src/MNH/advection_uvw.f90 @@ -9,7 +9,7 @@ ! INTERFACE SUBROUTINE ADVECTION_UVW (HUVW_ADV_SCHEME, & - HTEMP_SCHEME, KWENO_ORDER, KSPLIT_PPM, & + HTEMP_SCHEME, KWENO_ORDER, OSPLIT_WENO, & HLBCX, HLBCY, PTSTEP, & PUT, PVT, PWT, & PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY, & @@ -21,8 +21,8 @@ CHARACTER(LEN=4), INTENT(IN) :: HTEMP_SCHEME ! Temporal scheme ! INTEGER, INTENT(IN) :: KWENO_ORDER ! Order of the WENO ! scheme (3 or 5) -INTEGER, INTENT(IN) :: KSPLIT_PPM ! Number of time splitting - ! for PPM advection +LOGICAL, INTENT(IN) :: OSPLIT_WENO ! flag to add a time + ! splitting to RK for WENO ! CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC ! @@ -44,7 +44,7 @@ END INTERFACE END MODULE MODI_ADVECTION_UVW ! ########################################################################## SUBROUTINE ADVECTION_UVW (HUVW_ADV_SCHEME, & - HTEMP_SCHEME, KWENO_ORDER, KSPLIT_PPM, & + HTEMP_SCHEME, KWENO_ORDER, OSPLIT_WENO, & HLBCX, HLBCY, PTSTEP, & PUT, PVT, PWT, & PRHODJ, PDXX, PDYY, PDZZ, PDZX, PDZY, & @@ -90,7 +90,7 @@ END MODULE MODI_ADVECTION_UVW !! time splitting !! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 -!! +!! C.LAC 10/2016 : Add OSPLIT_WENO !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -119,8 +119,8 @@ CHARACTER(LEN=4), INTENT(IN) :: HTEMP_SCHEME ! Temporal scheme ! INTEGER, INTENT(IN) :: KWENO_ORDER ! Order of the WENO ! scheme (3 or 5) -INTEGER, INTENT(IN) :: KSPLIT_PPM ! Number of time splitting - ! for PPM advection +LOGICAL, INTENT(IN) :: OSPLIT_WENO ! flag to add a time + ! splitting to RK for WENO ! CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC ! @@ -255,7 +255,13 @@ NULLIFY(TZFIELDS0_ll) ! !------------------------------------------------------------------------------- ! -ISPLIT = 2 +IF ( HUVW_ADV_SCHEME == 'CEN4TH' ) THEN + ISPLIT = 1 +ELSE IF (OSPLIT_WENO) THEN + ISPLIT = 2 +ELSE + ISPLIT = 1 +END IF ZTSTEP = PTSTEP / REAL(ISPLIT) ! !------------------------------------------------------------------------------- diff --git a/src/MNH/modd_advn.f90 b/src/MNH/modd_advn.f90 index 7a7d65e9f..4ce244e32 100644 --- a/src/MNH/modd_advn.f90 +++ b/src/MNH/modd_advn.f90 @@ -5,7 +5,7 @@ !----------------------------------------------------------------- !--------------- special set of characters for RCS information !----------------------------------------------------------------- -! $Source$ $Revision$ +! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modd_advn.f90,v $ $Revision: 1.2.2.1.2.1.18.2 $ ! MASDEV4_7 modd 2007/02/19 11:58:44 !----------------------------------------------------------------- ! ################ @@ -39,6 +39,7 @@ !! removal of CFV_ADV_SCHEME !! J.-P. Pinty 20/03/10 Add NWENO_ORDER !! C.Lac and V.Masson Add CTEMP_SCHEME and TIME SPLITTING +!! C.LAC 10/2016 : Add OSPLIT_WENO !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -59,8 +60,9 @@ TYPE ADV_t INTEGER :: NSPLIT ! Number of time splitting ! for advection ! - LOGICAL :: LSPLIT_CFL ! Flag to automatically choose number of iterations - REAL :: XSPLIT_CFL ! Limit of CFL to automatically choose number of iterations + LOGICAL :: LSPLIT_CFL ! Flag to split PPM advection as a function of CFL + LOGICAL :: LSPLIT_WENO ! Flag to split WENO momentum advection + REAL :: XSPLIT_CFL ! Limit of CFL to automatically choose number of iterations for PPM ! LOGICAL :: LCFL_WRIT ! Flag to write CFL fields in output file ! @@ -74,6 +76,7 @@ CHARACTER(LEN=4), POINTER :: CTEMP_SCHEME=>NULL() INTEGER, POINTER :: NWENO_ORDER=>NULL() INTEGER, POINTER :: NSPLIT=>NULL() LOGICAL, POINTER :: LSPLIT_CFL=>NULL() +LOGICAL, POINTER :: LSPLIT_WENO=>NULL() LOGICAL, POINTER :: LCFL_WRIT=>NULL() REAL, POINTER :: XSPLIT_CFL=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL() @@ -95,6 +98,7 @@ CTEMP_SCHEME=>ADV_MODEL(KTO)%CTEMP_SCHEME NWENO_ORDER=>ADV_MODEL(KTO)%NWENO_ORDER NSPLIT=>ADV_MODEL(KTO)%NSPLIT LSPLIT_CFL=>ADV_MODEL(KTO)%LSPLIT_CFL +LSPLIT_WENO=>ADV_MODEL(KTO)%LSPLIT_WENO LCFL_WRIT=>ADV_MODEL(KTO)%LCFL_WRIT XSPLIT_CFL=>ADV_MODEL(KTO)%XSPLIT_CFL XRTKEMS=>ADV_MODEL(KTO)%XRTKEMS diff --git a/src/MNH/modn_advn.f90 b/src/MNH/modn_advn.f90 index d7a568e9a..a964c476a 100644 --- a/src/MNH/modn_advn.f90 +++ b/src/MNH/modn_advn.f90 @@ -5,7 +5,7 @@ !----------------------------------------------------------------- !--------------- special set of characters for RCS information !----------------------------------------------------------------- -! $Source$ $Revision$ +! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modn_advn.f90,v $ $Revision: 1.2.4.1.18.2 $ ! MASDEV4_7 modn 2007/03/27 09:58:10 !----------------------------------------------------------------- ! ################# @@ -36,6 +36,7 @@ !! removal of CFV_ADV_SCHEME !! J.-P. Pinty 20/03/10 Add NWENO_ORDER !! C.Lac, V.Masson Add CTEMP_SCHEME and time splitting +!! C.LAC 10/2016 : Add OSPLIT_WENO !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -48,6 +49,7 @@ USE MODD_ADV_n, ONLY: & CTEMP_SCHEME_n => CTEMP_SCHEME, & NWENO_ORDER_n => NWENO_ORDER, & LSPLIT_CFL_n => LSPLIT_CFL, & + LSPLIT_WENO_n => LSPLIT_WENO, & LCFL_WRIT_n => LCFL_WRIT, & XSPLIT_CFL_n => XSPLIT_CFL ! @@ -59,11 +61,12 @@ CHARACTER(LEN=6) :: CSV_ADV_SCHEME CHARACTER(LEN=4) :: CTEMP_SCHEME INTEGER :: NWENO_ORDER LOGICAL :: LSPLIT_CFL +LOGICAL :: LSPLIT_WENO LOGICAL :: LCFL_WRIT REAL :: XSPLIT_CFL ! NAMELIST/NAM_ADVn/CUVW_ADV_SCHEME,CMET_ADV_SCHEME,CSV_ADV_SCHEME,CTEMP_SCHEME, & - NWENO_ORDER,LSPLIT_CFL,XSPLIT_CFL,LCFL_WRIT + NWENO_ORDER,LSPLIT_CFL,LSPLIT_WENO,XSPLIT_CFL,LCFL_WRIT ! CONTAINS ! @@ -74,6 +77,7 @@ SUBROUTINE INIT_NAM_ADVn CTEMP_SCHEME = CTEMP_SCHEME_n NWENO_ORDER = NWENO_ORDER_n LSPLIT_CFL = LSPLIT_CFL_n + LSPLIT_WENO = LSPLIT_WENO_n LCFL_WRIT = LCFL_WRIT_n XSPLIT_CFL = XSPLIT_CFL_n END SUBROUTINE INIT_NAM_ADVn @@ -85,6 +89,7 @@ SUBROUTINE UPDATE_NAM_ADVn CTEMP_SCHEME_n = CTEMP_SCHEME NWENO_ORDER_n = NWENO_ORDER LSPLIT_CFL_n = LSPLIT_CFL + LSPLIT_WENO_n = LSPLIT_WENO LCFL_WRIT_n = LCFL_WRIT XSPLIT_CFL_n = XSPLIT_CFL END SUBROUTINE UPDATE_NAM_ADVn -- GitLab