From 45609c3e081c515f035436bb5525553f54c4de30 Mon Sep 17 00:00:00 2001 From: Gaelle TANGUY <gaelle.tanguy@meteo.fr> Date: Tue, 15 Nov 2016 10:36:50 +0100 Subject: [PATCH] C.Lac 15/11/2016 : Correction on RK loop (cherry picked from commit b6151050a41a19333fb760d802668860278cc8a0) --- src/MNH/advecuvw_rk.f90 | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90 index 018508723..0241fdf9e 100644 --- a/src/MNH/advecuvw_rk.f90 +++ b/src/MNH/advecuvw_rk.f90 @@ -61,7 +61,7 @@ END MODULE MODI_ADVECUVW_RK ! ########################################################################## ! !!**** *ADVECUVW_RK * - routine to call the specialized advection routines for wind -!! +!!(:,:,IKE+ !! PURPOSE !! ------- !! @@ -100,7 +100,9 @@ END MODULE MODI_ADVECUVW_RK !! 04/2011 (V. Masson & C. Lac) splits the routine and adds !! time splitting !! J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test -!! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! F.Auguste and C.Lac : 08/16 : CEN4TH with RKC4 +!! C.Lac 10/16 : Correction on RK loop !! !------------------------------------------------------------------------------- ! @@ -118,6 +120,8 @@ USE MODI_ADV_BOUNDARIES USE MODI_GET_HALO USE MODE_MPPDB ! +USE MODI_ADVECUVW_4TH +! !------------------------------------------------------------------------------- ! IMPLICIT NONE @@ -157,8 +161,6 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRUS_OTHER , PRVS_OTHER, PRWS_OTHER ! INTEGER :: IKE ! indice K End in z direction ! -REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZU, ZV, ZW -! Guesses at the beginning of the RK loop REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZUT, ZVT, ZWT ! Intermediate Guesses inside the RK loop ! @@ -332,12 +334,7 @@ ZWT = PW CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZUT, PUT, 'U' ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZVT, PVT, 'V' ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' ) -ZWT (:,:,IKE+1 ) = 0. -ZU = PU -ZV = PV -ZW = PW -! NULLIFY(TZFIELDMT_ll) CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZUT) CALL ADD3DFIELD_ll(TZFIELDMT_ll, ZVT) @@ -359,19 +356,25 @@ ZRWS = 0. CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZVT, PVT, 'V' ) CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZWT, PWT, 'W' ) ! - ZW (:,:,IKE+1 ) = 0. -! CALL UPDATE_HALO_ll(TZFIELDMT_ll,IINFO_ll) CALL UPDATE_HALO2_ll(TZFIELDMT_ll, TZHALO2MT_ll, IINFO_ll) ! !* 4. Advection with WENO ! ------------------- ! + + IF (HUVW_ADV_SCHEME=='WENO_K') THEN CALL ADVECUVW_WENO_K (HLBCX, HLBCY, KWENO_ORDER, ZUT, ZVT, ZWT, & PRUCT, PRVCT, PRWCT, & ZRUS(:,:,:,JS), ZRVS(:,:,:,JS), ZRWS(:,:,:,JS), & TZHALO2MT_ll ) -! + ELSE IF ((HUVW_ADV_SCHEME=='CEN4TH') .AND. (HTEMP_SCHEME=='RKC4')) THEN + CALL ADVECUVW_4TH (HLBCX, HLBCY, PRUCT, PRVCT, PRWCT, & + ZUT, ZVT, ZWT, & + ZRUS(:,:,:,JS), ZRVS(:,:,:,JS), ZRWS(:,:,:,JS), & + TZHALO2MT_ll ) + ENDIF +! NULLIFY(TZFIELDS4_ll) ! CALL ADD3DFIELD_ll(TZFIELDS4_ll, ZRUS(:,:,:,JS)) @@ -381,12 +384,12 @@ ZRWS = 0. CALL CLEANLIST_ll(TZFIELDS4_ll) ! IF ( JS /= ISPL ) THEN +! + ZUT = PU + ZVT = PV + ZWT = PW ! DO JI = 1, JS - - ZUT = ZU - ZVT = ZV - ZWT = ZW ! ! Intermediate guesses inside the RK loop ! -- GitLab