From e4393953246da6707d814a9648770cd301b4b70c Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 9 Feb 2023 16:15:48 +0100 Subject: [PATCH] Philippe 09/02/2023: XTMOY, XTMOYCOUNT and XNUMBELT => NTMOY, NTMOYCOUNT and NNUMBELT --- src/MNH/default_desfmn.f90 | 8 +-- src/MNH/ini_modeln.f90 | 26 +++++----- src/MNH/modd_recycl_paramn.f90 | 19 ++++--- src/MNH/modn_recycl_paramn.f90 | 30 +++++------ src/MNH/recycl_fluc.f90 | 92 +++++++++++++++++----------------- src/MNH/recycling.f90 | 6 +-- 6 files changed, 93 insertions(+), 88 deletions(-) diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index 0597b379c..829ce58fc 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -1431,9 +1431,9 @@ ENDIF XARECYCLS = 0. XDRECYCLE = 0. XARECYCLE = 0. - XTMOY = 0. - XTMOYCOUNT = 0. - XNUMBELT = 28. + NTMOY = 0 + NTMOYCOUNT = 0 + NNUMBELT = 28 XRCOEFF = 0.2 XTBVTOP = 500. XTBVBOT = 300. diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 47b48dd14..779b55526 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -727,19 +727,19 @@ IF (LRECYCL) THEN ! NR_COUNT = 0 ! - ALLOCATE(XUMEANW(IJU,IKU,INT(XNUMBELT))) ; XUMEANW = 0.0 - ALLOCATE(XVMEANW(IJU,IKU,INT(XNUMBELT))) ; XVMEANW = 0.0 - ALLOCATE(XWMEANW(IJU,IKU,INT(XNUMBELT))) ; XWMEANW = 0.0 - ALLOCATE(XUMEANN(IIU,IKU,INT(XNUMBELT))) ; XUMEANN = 0.0 - ALLOCATE(XVMEANN(IIU,IKU,INT(XNUMBELT))) ; XVMEANN = 0.0 - ALLOCATE(XWMEANN(IIU,IKU,INT(XNUMBELT))) ; XWMEANN = 0.0 - ALLOCATE(XUMEANE(IJU,IKU,INT(XNUMBELT))) ; XUMEANE = 0.0 - ALLOCATE(XVMEANE(IJU,IKU,INT(XNUMBELT))) ; XVMEANE = 0.0 - ALLOCATE(XWMEANE(IJU,IKU,INT(XNUMBELT))) ; XWMEANE = 0.0 - ALLOCATE(XUMEANS(IIU,IKU,INT(XNUMBELT))) ; XUMEANS = 0.0 - ALLOCATE(XVMEANS(IIU,IKU,INT(XNUMBELT))) ; XVMEANS = 0.0 - ALLOCATE(XWMEANS(IIU,IKU,INT(XNUMBELT))) ; XWMEANS = 0.0 - ALLOCATE(XTBV(IIU,IJU,IKU)) ; XTBV = 0.0 + ALLOCATE(XUMEANW(IJU,IKU,NNUMBELT)) ; XUMEANW = 0.0 + ALLOCATE(XVMEANW(IJU,IKU,NNUMBELT)) ; XVMEANW = 0.0 + ALLOCATE(XWMEANW(IJU,IKU,NNUMBELT)) ; XWMEANW = 0.0 + ALLOCATE(XUMEANN(IIU,IKU,NNUMBELT)) ; XUMEANN = 0.0 + ALLOCATE(XVMEANN(IIU,IKU,NNUMBELT)) ; XVMEANN = 0.0 + ALLOCATE(XWMEANN(IIU,IKU,NNUMBELT)) ; XWMEANN = 0.0 + ALLOCATE(XUMEANE(IJU,IKU,NNUMBELT)) ; XUMEANE = 0.0 + ALLOCATE(XVMEANE(IJU,IKU,NNUMBELT)) ; XVMEANE = 0.0 + ALLOCATE(XWMEANE(IJU,IKU,NNUMBELT)) ; XWMEANE = 0.0 + ALLOCATE(XUMEANS(IIU,IKU,NNUMBELT)) ; XUMEANS = 0.0 + ALLOCATE(XVMEANS(IIU,IKU,NNUMBELT)) ; XVMEANS = 0.0 + ALLOCATE(XWMEANS(IIU,IKU,NNUMBELT)) ; XWMEANS = 0.0 + ALLOCATE(XTBV(IIU,IJU,IKU)) ; XTBV = 0.0 ELSE ALLOCATE(XUMEANW(0,0,0)) ALLOCATE(XVMEANW(0,0,0)) diff --git a/src/MNH/modd_recycl_paramn.f90 b/src/MNH/modd_recycl_paramn.f90 index bfc4d7b3e..52872ad2a 100644 --- a/src/MNH/modd_recycl_paramn.f90 +++ b/src/MNH/modd_recycl_paramn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2021-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2021-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -31,6 +31,7 @@ ! MODIFICATIONS ! ------------- ! Original 01/02/2021 +! P. Wautelet 09/02/2023: XTMOY, XTMOYCOUNT and XNUMBELT => NTMOY, NTMOYCOUNT and NNUMBELT ! !------------------------------------------------------------------------------ ! @@ -42,10 +43,11 @@ IMPLICIT NONE ! TYPE RECYCL_t ! +INTEGER :: NTMOY, NTMOYCOUNT, NNUMBELT LOGICAL :: LRECYCL,LRECYCLN,LRECYCLW,LRECYCLE,LRECYCLS ! Recycling logical REAL :: XDRECYCLN,XDRECYCLW,XDRECYCLE,XDRECYCLS, & XARECYCLN,XARECYCLW,XARECYCLE,XARECYCLS, & - XTMOY,XTMOYCOUNT,XNUMBELT,XRCOEFF,XTBVTOP,XTBVBOT + XRCOEFF,XTBVTOP,XTBVBOT INTEGER :: NR_COUNT REAL, DIMENSION(:,:,:) ,POINTER :: XUMEANW=>NULL() @@ -65,6 +67,10 @@ END TYPE RECYCL_t TYPE(RECYCL_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: RECYCL_MODEL +INTEGER ,POINTER :: NTMOY=>NULL() +INTEGER ,POINTER :: NTMOYCOUNT=>NULL() +INTEGER ,POINTER :: NNUMBELT=>NULL() + LOGICAL ,POINTER :: LRECYCL=>NULL() LOGICAL ,POINTER :: LRECYCLN=>NULL() LOGICAL ,POINTER :: LRECYCLW=>NULL() @@ -79,9 +85,6 @@ REAL ,POINTER :: XDRECYCLE=>NULL() REAL ,POINTER :: XARECYCLE=>NULL() REAL ,POINTER :: XDRECYCLS=>NULL() REAL ,POINTER :: XARECYCLS=>NULL() -REAL ,POINTER :: XTMOY=>NULL() -REAL ,POINTER :: XTMOYCOUNT=>NULL() -REAL ,POINTER :: XNUMBELT=>NULL() REAL ,POINTER :: XRCOEFF=>NULL() REAL ,POINTER :: XTBVTOP=>NULL() REAL ,POINTER :: XTBVBOT=>NULL() @@ -127,6 +130,9 @@ RECYCL_MODEL(KFROM)%XWMEANS=>XWMEANS ! ! Current model is set to model KTO +NTMOY => RECYCL_MODEL(KTO)%NTMOY +NTMOYCOUNT => RECYCL_MODEL(KTO)%NTMOYCOUNT +NNUMBELT => RECYCL_MODEL(KTO)%NNUMBELT LRECYCL=>RECYCL_MODEL(KTO)%LRECYCL LRECYCLN=>RECYCL_MODEL(KTO)%LRECYCLN LRECYCLW=>RECYCL_MODEL(KTO)%LRECYCLW @@ -140,9 +146,6 @@ XDRECYCLE=>RECYCL_MODEL(KTO)%XDRECYCLE XARECYCLE=>RECYCL_MODEL(KTO)%XARECYCLE XDRECYCLS=>RECYCL_MODEL(KTO)%XDRECYCLS XARECYCLS=>RECYCL_MODEL(KTO)%XARECYCLS -XTMOY=>RECYCL_MODEL(KTO)%XTMOY -XTMOYCOUNT=>RECYCL_MODEL(KTO)%XTMOYCOUNT -XNUMBELT=>RECYCL_MODEL(KTO)%XNUMBELT XRCOEFF=>RECYCL_MODEL(KTO)%XRCOEFF XTBVTOP=>RECYCL_MODEL(KTO)%XTBVTOP XTBVBOT=>RECYCL_MODEL(KTO)%XTBVBOT diff --git a/src/MNH/modn_recycl_paramn.f90 b/src/MNH/modn_recycl_paramn.f90 index fbe4cf576..92007900f 100644 --- a/src/MNH/modn_recycl_paramn.f90 +++ b/src/MNH/modn_recycl_paramn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2019-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2021-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -46,23 +46,25 @@ USE MODD_RECYCL_PARAM_n, ONLY: & XARECYCLE_n => XARECYCLE , & XDRECYCLS_n => XDRECYCLS , & XARECYCLS_n => XARECYCLS , & - XTMOY_n => XTMOY, & - XTMOYCOUNT_n => XTMOYCOUNT , & - XNUMBELT_n => XNUMBELT, & + NTMOY_n => NTMOY, & + NTMOYCOUNT_n => NTMOYCOUNT, & + NNUMBELT_n => NNUMBELT, & XRCOEFF_n => XRCOEFF, & XTBVTOP_n => XTBVTOP, & XTBVBOT_n => XTBVBOT ! IMPLICIT NONE ! +INTEGER, SAVE :: NTMOY, NTMOYCOUNT, NNUMBELT LOGICAL,SAVE :: LRECYCL,LRECYCLN,LRECYCLW,LRECYCLE,LRECYCLS REAL,SAVE :: XDRECYCLN,XARECYCLN,XDRECYCLW,XARECYCLW,XDRECYCLE,XARECYCLE,XDRECYCLS,& - XARECYCLS,XTMOY,XTMOYCOUNT,XNUMBELT,XRCOEFF,XTBVTOP,XTBVBOT + XARECYCLS,XRCOEFF,XTBVTOP,XTBVBOT ! -NAMELIST /NAM_RECYCL_PARAMn/ LRECYCL,LRECYCLN,LRECYCLW,LRECYCLE,LRECYCLS,XDRECYCLW, & - XARECYCLW,XDRECYCLN,XARECYCLN,XDRECYCLE,XARECYCLE,XDRECYCLS,& - XARECYCLS,XTMOY,XTMOYCOUNT,XNUMBELT,XRCOEFF,XTBVTOP,XTBVBOT +NAMELIST /NAM_RECYCL_PARAMn/ NTMOY, NTMOYCOUNT, NNUMBELT, & + LRECYCL, LRECYCLN, LRECYCLW, LRECYCLE, LRECYCLS, & + XDRECYCLW, XARECYCLW, XDRECYCLN, XARECYCLN, XDRECYCLE, XARECYCLE, XDRECYCLS, & + XARECYCLS, XRCOEFF, XTBVTOP, XTBVBOT ! CONTAINS ! @@ -80,9 +82,9 @@ SUBROUTINE INIT_NAM_RECYCL_PARAMn XARECYCLE = XARECYCLE_n XDRECYCLS = XDRECYCLS_n XARECYCLS = XARECYCLS_n - XTMOY = XTMOY_n - XTMOYCOUNT = XTMOYCOUNT_n - XNUMBELT = XNUMBELT_n + NTMOY = NTMOY_n + NTMOYCOUNT = NTMOYCOUNT_n + NNUMBELT = NNUMBELT_n XRCOEFF = XRCOEFF_n XTBVTOP = XTBVTOP_n XTBVBOT = XTBVBOT_n @@ -104,9 +106,9 @@ SUBROUTINE UPDATE_NAM_RECYCL_PARAMn XARECYCLE_n = XARECYCLE XDRECYCLS_n = XDRECYCLS XARECYCLS_n = XARECYCLS - XTMOY_n = XTMOY - XTMOYCOUNT_n = XTMOYCOUNT - XNUMBELT_n = XNUMBELT + NTMOY_n = NTMOY + NTMOYCOUNT_n = NTMOYCOUNT + NNUMBELT_n = NNUMBELT XRCOEFF_n = XRCOEFF XTBVTOP_n = XTBVTOP XTBVBOT_n = XTBVBOT diff --git a/src/MNH/recycl_fluc.f90 b/src/MNH/recycl_fluc.f90 index 2ee5471c1..15700f18c 100644 --- a/src/MNH/recycl_fluc.f90 +++ b/src/MNH/recycl_fluc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2021-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2021-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -60,7 +60,7 @@ END MODULE MODI_RECYCL_FLUC !! MODIFICATIONS !! ------------- !! Original 01/02/2021 -!! +! P. Wautelet 09/02/2023: XTMOY, XTMOYCOUNT and XNUMBELT => NTMOY, NTMOYCOUNT and NNUMBELT !------------------------------------------------------------------------------ ! !**** 0. DECLARATIONS @@ -215,21 +215,21 @@ IF (LRECYCLW) THEN ! ! *** Mean and fluctuations calculation ! - IF(ONR_COUNT.LE.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0) THEN - ICOUNT=ONR_COUNT/XTMOYCOUNT + IF(ONR_COUNT<=NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0) THEN + ICOUNT=ONR_COUNT/NTMOYCOUNT XUMEANW(:,:,ICOUNT)=ZTMPUNW(:,:) XVMEANW(:,:,ICOUNT)=ZTMPVTW(:,:) XWMEANW(:,:,ICOUNT)=ZTMPWTW(:,:) ENDIF - IF(ONR_COUNT.GT.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0.AND.OPT_COUNT/=1) THEN - DO JCOUNT=1,INT(XNUMBELT)-1 + IF(ONR_COUNT>NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0.AND.OPT_COUNT/=1) THEN + DO JCOUNT=1,NNUMBELT-1 XUMEANW(:,:,JCOUNT)=XUMEANW(:,:,JCOUNT+1) XVMEANW(:,:,JCOUNT)=XVMEANW(:,:,JCOUNT+1) XWMEANW(:,:,JCOUNT)=XWMEANW(:,:,JCOUNT+1) ENDDO - XUMEANW(:,:,INT(XNUMBELT))=ZTMPUNW(:,:) - XVMEANW(:,:,INT(XNUMBELT))=ZTMPVTW(:,:) - XWMEANW(:,:,INT(XNUMBELT))=ZTMPWTW(:,:) + XUMEANW(:,:,NNUMBELT)=ZTMPUNW(:,:) + XVMEANW(:,:,NNUMBELT)=ZTMPVTW(:,:) + XWMEANW(:,:,NNUMBELT)=ZTMPWTW(:,:) ENDIF IF (LWEST_ll( )) THEN DO JJ = 1,IJU-1 @@ -243,10 +243,10 @@ IF (LRECYCLW) THEN ENDIF ENDDO ENDDO - IF(NR_COUNT.GT.XTMOY) THEN - ZTMPFUNW =ZTMPUNW(:,:)-(SUM(XUMEANW,DIM=3)/INT(XNUMBELT)) - ZTMPFVTW =ZTMPVTW(:,:)-(SUM(XVMEANW,DIM=3)/INT(XNUMBELT)) - ZTMPFWTW =ZTMPWTW(:,:)-(SUM(XWMEANW,DIM=3)/INT(XNUMBELT)) + IF(NR_COUNT>NTMOY) THEN + ZTMPFUNW =ZTMPUNW(:,:)-(SUM(XUMEANW,DIM=3)/NNUMBELT) + ZTMPFVTW =ZTMPVTW(:,:)-(SUM(XVMEANW,DIM=3)/NNUMBELT) + ZTMPFWTW =ZTMPWTW(:,:)-(SUM(XWMEANW,DIM=3)/NNUMBELT) PFLUCTUNW(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFUNW(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & ZALPWEST(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT) PFLUCTVTW(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFVTW(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & @@ -290,21 +290,21 @@ IF (LRECYCLN) THEN ! ! *** Mean and fluctuations calculation ! - IF(ONR_COUNT.LE.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0) THEN - ICOUNT=ONR_COUNT/XTMOYCOUNT + IF(ONR_COUNT<=NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0) THEN + ICOUNT=ONR_COUNT/NTMOYCOUNT XUMEANN(:,:,ICOUNT)=ZTMPUTN(:,:) XVMEANN(:,:,ICOUNT)=ZTMPVNN(:,:) XWMEANN(:,:,ICOUNT)=ZTMPWTN(:,:) ENDIF - IF(ONR_COUNT.GT.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0.AND.OPT_COUNT/=1) THEN - DO JCOUNT=1,INT(XNUMBELT)-1 + IF(ONR_COUNT>NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0.AND.OPT_COUNT/=1) THEN + DO JCOUNT=1,NNUMBELT-1 XUMEANN(:,:,JCOUNT)=XUMEANN(:,:,JCOUNT+1) XVMEANN(:,:,JCOUNT)=XVMEANN(:,:,JCOUNT+1) XWMEANN(:,:,JCOUNT)=XWMEANN(:,:,JCOUNT+1) ENDDO - XUMEANN(:,:,INT(XNUMBELT))=ZTMPUTN(:,:) - XVMEANN(:,:,INT(XNUMBELT))=ZTMPVNN(:,:) - XWMEANN(:,:,INT(XNUMBELT))=ZTMPWTN(:,:) + XUMEANN(:,:,NNUMBELT)=ZTMPUTN(:,:) + XVMEANN(:,:,NNUMBELT)=ZTMPVNN(:,:) + XWMEANN(:,:,NNUMBELT)=ZTMPWTN(:,:) ENDIF IF (LNORTH_ll( )) THEN @@ -319,10 +319,10 @@ IF (LRECYCLN) THEN ENDIF ENDDO ENDDO - IF(NR_COUNT.GT.XTMOY) THEN - ZTMPFUTN =ZTMPUTN(:,:)-(SUM(XUMEANN,DIM=3)/INT(XNUMBELT)) - ZTMPFVNN =ZTMPVNN(:,:)-(SUM(XVMEANN,DIM=3)/INT(XNUMBELT)) - ZTMPFWTN =ZTMPWTN(:,:)-(SUM(XWMEANN,DIM=3)/INT(XNUMBELT)) + IF(NR_COUNT>NTMOY) THEN + ZTMPFUTN =ZTMPUTN(:,:)-(SUM(XUMEANN,DIM=3)/NNUMBELT) + ZTMPFVNN =ZTMPVNN(:,:)-(SUM(XVMEANN,DIM=3)/NNUMBELT) + ZTMPFWTN =ZTMPWTN(:,:)-(SUM(XWMEANN,DIM=3)/NNUMBELT) PFLUCTVNN(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFVNN(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & ZALPNORTH(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT) PFLUCTUTN(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFUTN(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & @@ -366,21 +366,21 @@ IF (LRECYCLE) THEN ! ! *** Mean and fluctuations calculation ! - IF(ONR_COUNT.LE.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0) THEN - ICOUNT=ONR_COUNT/XTMOYCOUNT + IF(ONR_COUNT<=NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0) THEN + ICOUNT=ONR_COUNT/NTMOYCOUNT XUMEANE(:,:,ICOUNT)=ZTMPUNE(:,:) XVMEANE(:,:,ICOUNT)=ZTMPVTE(:,:) XWMEANE(:,:,ICOUNT)=ZTMPWTE(:,:) ENDIF - IF(ONR_COUNT.GT.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0.AND.OPT_COUNT/=1) THEN - DO JCOUNT=1,INT(XNUMBELT)-1 + IF(ONR_COUNT>NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0.AND.OPT_COUNT/=1) THEN + DO JCOUNT=1,NNUMBELT-1 XUMEANE(:,:,JCOUNT)=XUMEANE(:,:,JCOUNT+1) XVMEANE(:,:,JCOUNT)=XVMEANE(:,:,JCOUNT+1) XWMEANE(:,:,JCOUNT)=XWMEANE(:,:,JCOUNT+1) ENDDO - XUMEANE(:,:,INT(XNUMBELT))=ZTMPUNE(:,:) - XVMEANE(:,:,INT(XNUMBELT))=ZTMPVTE(:,:) - XWMEANE(:,:,INT(XNUMBELT))=ZTMPWTE(:,:) + XUMEANE(:,:,NNUMBELT)=ZTMPUNE(:,:) + XVMEANE(:,:,NNUMBELT)=ZTMPVTE(:,:) + XWMEANE(:,:,NNUMBELT)=ZTMPWTE(:,:) ENDIF IF (LEAST_ll( )) THEN DO JJ = 1,IJU-1 @@ -394,10 +394,10 @@ IF (LRECYCLE) THEN ENDIF ENDDO ENDDO - IF(NR_COUNT.GT.XTMOY) THEN - ZTMPFUNE =ZTMPUNE(:,:)-(SUM(XUMEANE,DIM=3)/INT(XNUMBELT)) - ZTMPFVTE =ZTMPVTE(:,:)-(SUM(XVMEANE,DIM=3)/INT(XNUMBELT)) - ZTMPFWTE =ZTMPWTE(:,:)-(SUM(XWMEANE,DIM=3)/INT(XNUMBELT)) + IF(NR_COUNT>NTMOY) THEN + ZTMPFUNE =ZTMPUNE(:,:)-(SUM(XUMEANE,DIM=3)/NNUMBELT) + ZTMPFVTE =ZTMPVTE(:,:)-(SUM(XVMEANE,DIM=3)/NNUMBELT) + ZTMPFWTE =ZTMPWTE(:,:)-(SUM(XWMEANE,DIM=3)/NNUMBELT) PFLUCTUNE(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFUNE(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & ZALPEAST(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT) PFLUCTVTE(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFVTE(1+JPHEXT:IJU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & @@ -441,21 +441,21 @@ IF (LRECYCLS) THEN ! ! *** Mean and fluctuations calculation ! - IF(ONR_COUNT.LE.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0) THEN - ICOUNT=ONR_COUNT/XTMOYCOUNT + IF(ONR_COUNT<=NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0) THEN + ICOUNT=ONR_COUNT/NTMOYCOUNT XUMEANS(:,:,ICOUNT)=ZTMPUTS(:,:) XVMEANS(:,:,ICOUNT)=ZTMPVNS(:,:) XWMEANS(:,:,ICOUNT)=ZTMPWTS(:,:) ENDIF - IF(ONR_COUNT.GT.XTMOY.AND.MOD(ONR_COUNT,INT(XTMOYCOUNT))==0.AND.OPT_COUNT/=1) THEN - DO JCOUNT=1,INT(XNUMBELT)-1 + IF(ONR_COUNT>NTMOY.AND.MOD(ONR_COUNT,NTMOYCOUNT)==0.AND.OPT_COUNT/=1) THEN + DO JCOUNT=1,NNUMBELT-1 XUMEANS(:,:,JCOUNT)=XUMEANS(:,:,JCOUNT+1) XVMEANS(:,:,JCOUNT)=XVMEANS(:,:,JCOUNT+1) XWMEANS(:,:,JCOUNT)=XWMEANS(:,:,JCOUNT+1) ENDDO - XUMEANS(:,:,INT(XNUMBELT))=ZTMPUTS(:,:) - XVMEANS(:,:,INT(XNUMBELT))=ZTMPVNS(:,:) - XWMEANS(:,:,INT(XNUMBELT))=ZTMPWTS(:,:) + XUMEANS(:,:,NNUMBELT)=ZTMPUTS(:,:) + XVMEANS(:,:,NNUMBELT)=ZTMPVNS(:,:) + XWMEANS(:,:,NNUMBELT)=ZTMPWTS(:,:) ENDIF IF (LSOUTH_ll( )) THEN DO JJ = 1,IIU-1 @@ -469,10 +469,10 @@ IF (LRECYCLS) THEN ENDIF ENDDO ENDDO - IF(NR_COUNT.GT.XTMOY) THEN - ZTMPFUTS =ZTMPUTS(:,:)-(SUM(XUMEANS,DIM=3)/INT(XNUMBELT)) - ZTMPFVNS =ZTMPVNS(:,:)-(SUM(XVMEANS,DIM=3)/INT(XNUMBELT)) - ZTMPFWTS =ZTMPWTS(:,:)-(SUM(XWMEANS,DIM=3)/INT(XNUMBELT)) + IF(NR_COUNT>NTMOY) THEN + ZTMPFUTS =ZTMPUTS(:,:)-(SUM(XUMEANS,DIM=3)/NNUMBELT) + ZTMPFVNS =ZTMPVNS(:,:)-(SUM(XVMEANS,DIM=3)/NNUMBELT) + ZTMPFWTS =ZTMPWTS(:,:)-(SUM(XWMEANS,DIM=3)/NNUMBELT) PFLUCTVNS(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFVNS(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & ZALPSOUTH(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT) PFLUCTUTS(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)= ZTMPFUTS(1+JPHEXT:IIU-JPHEXT,1+JPVEXT:IKU-JPVEXT)* & diff --git a/src/MNH/recycling.f90 b/src/MNH/recycling.f90 index 18e0956cd..8f23754e9 100644 --- a/src/MNH/recycling.f90 +++ b/src/MNH/recycling.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2021-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2021-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -109,8 +109,8 @@ Z_DELTY = XYHAT(2)-XYHAT(1) ! --------------- ! !Moving averaged parameter verification -IF (PTCOUNT==1 .AND. INT(XTMOY)/INT(XTMOYCOUNT) /= INT(XNUMBELT)) THEN - CMNHMSG(1) = 'XTMOY/XTMOYCOUNT must be equal to XNUMBELT' +IF (PTCOUNT==1 .AND. ( NTMOY /= NNUMBELT * NTMOYCOUNT ) ) THEN + CMNHMSG(1) = 'NTMOY must be equal to NNUMBELT*NTMOYCOUNT' CMNHMSG(2) = 'Please change the above parameters accordingly in NAM_RECYCL_PARAMn' CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'RECYCLING' ) END IF -- GitLab