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