diff --git a/src/MNH/advection_uvw.f90 b/src/MNH/advection_uvw.f90 index b01a5a02d4b72334c134e07d400072ccb65c5466..24f827339666a1fd62341cfc604e243c29d2f8d8 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 7a7d65e9faed8ae5c484cdea00af6d2a06490752..4ce244e32919ad19841e9532c2aaed3e0f6780ec 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 d7a568e9a9778ae7fa36bfe961976947b2e38b24..a964c476a5aebdb2fe2f39e8d168854113984622 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