From 23b782c601e536faec505de09278e6e0fa54ecd8 Mon Sep 17 00:00:00 2001 From: Juan Escobar <escj@aero.obs-mip.fr> Date: Mon, 5 Mar 2018 18:36:21 +0100 Subject: [PATCH] Juan 05/03/2018 : bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized --- src/MNH/spawn_field2.f90 | 171 ++++++++++++++++++----------------- src/MNH/spawn_grid2.f90 | 27 +++--- src/MNH/spawn_pressure2.f90 | 17 ++-- src/MNH/spawn_surf2_rain.f90 | 83 ++++++++--------- 4 files changed, 151 insertions(+), 147 deletions(-) diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index 45617fb5f..2fcc04982 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -146,6 +146,7 @@ END MODULE MODI_SPAWN_FIELD2 !! Modification 15/04/2016 (P.Tulet) bug allocation ZSVT_C !! 29/04/2016 (J.Escobar) bug in use of ZSVT_C in SET_LSFIELD_1WAY_ll !! Modification 01/2016 (JP Pinty) Add LIMA +!! Modification 05/03/2018 (J.Escobar) bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -317,90 +318,90 @@ END IF ! --------------------------------------------------------- ! ! -IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN -! -!* 2.1 special case of spawning - no change of resolution : -! -!* 2.1.1 variables which always exist -! - PUT (:,:,:) = FIELD_MODEL(1)%XUT (KXOR:KXEND,KYOR:KYEND,:) - PVT (:,:,:) = FIELD_MODEL(1)%XVT (KXOR:KXEND,KYOR:KYEND,:) - PWT (:,:,:) = FIELD_MODEL(1)%XWT (KXOR:KXEND,KYOR:KYEND,:) - PTHVT(:,:,:) = ZTHVT(KXOR:KXEND,KYOR:KYEND,:) -! - PLSUM (:,:,:) = FIELD_MODEL(1)%XUT (KXOR:KXEND,KYOR:KYEND,:) - PLSVM (:,:,:) = FIELD_MODEL(1)%XVT (KXOR:KXEND,KYOR:KYEND,:) - PLSWM (:,:,:) = FIELD_MODEL(1)%XWT (KXOR:KXEND,KYOR:KYEND,:) - PLSTHM(:,:,:) = FIELD_MODEL(1)%XTHT(KXOR:KXEND,KYOR:KYEND,:) -! - PLSRVM(:,:,:) = 0. -! -!$20140707 -CALL MPPDB_CHECK3D(PUT,"SPAWN_FIELD2:PUT",PRECISION) -CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION) -!$ -!* 2.1.2 TKE variable -! - IF (HTURB /= 'NONE') THEN - PTKET(:,:,:) = FIELD_MODEL(1)%XTKET(KXOR:KXEND,KYOR:KYEND,:) - ENDIF -! -!* 2.1.3 moist variables -! - IF (CONF_MODEL(1)%NRR /= 0) THEN - PRT (:,:,:,:) = FIELD_MODEL(1)%XRT (KXOR:KXEND,KYOR:KYEND,:,:) - PLSRVM(:,:,:) = FIELD_MODEL(1)%XRT (KXOR:KXEND,KYOR:KYEND,:,1) - PHUT (:,:,:) = ZHUT (KXOR:KXEND,KYOR:KYEND,:) - ENDIF -! -!* 2.1.4 scalar variables -! - IF (NSV /= 0) THEN - PSVT (:,:,:,:) = FIELD_MODEL(1)%XSVT (KXOR:KXEND,KYOR:KYEND,:,:) - ENDIF -! -!* 2.1.5 secondary prognostic variables -! - IF (CONF_MODEL(1)%NRR > 1) THEN - PSRCT (:,:,:) = FIELD_MODEL(1)%XSRCT (KXOR:KXEND,KYOR:KYEND,:) - PSIGS(:,:,:) = FIELD_MODEL(1)%XSIGS(KXOR:KXEND,KYOR:KYEND,:) - ENDIF -! -!* 2.1.6 Large scale variables -! - PLSUM (:,:,:) = LSFIELD_MODEL(1)%XLSUM (KXOR:KXEND,KYOR:KYEND,:) - PLSVM (:,:,:) = LSFIELD_MODEL(1)%XLSVM (KXOR:KXEND,KYOR:KYEND,:) - PLSWM (:,:,:) = LSFIELD_MODEL(1)%XLSWM (KXOR:KXEND,KYOR:KYEND,:) - PLSTHM(:,:,:) = LSFIELD_MODEL(1)%XLSTHM (KXOR:KXEND,KYOR:KYEND,:) - IF ( CONF_MODEL(1)%NRR > 0 ) THEN - PLSRVM (:,:,:) = LSFIELD_MODEL(1)%XLSRVM (KXOR:KXEND,KYOR:KYEND,:) - END IF -! -!* 2.1.7 Advective forcing fields for 2D (Modif MT) -! - IF (L2D_ADV_FRC) THEN - PDTHFRC(:,:,:,:)= ADVFRC_MODEL(1)%XDTHFRC (KXOR:KXEND,KYOR:KYEND,:,:) - PDRVFRC(:,:,:,:)= ADVFRC_MODEL(1)%XDRVFRC (KXOR:KXEND,KYOR:KYEND,:,:) - ENDIF - IF (L2D_REL_FRC) THEN - PTHREL(:,:,:,:)= RELFRC_MODEL(1)%XTHREL (KXOR:KXEND,KYOR:KYEND,:,:) - PRVREL(:,:,:,:)= RELFRC_MODEL(1)%XRVREL (KXOR:KXEND,KYOR:KYEND,:,:) - ENDIF -! -!* 2.1.8 Turbulent fluxes for 2D (Modif MT) -! - IF (LUV_FLX) THEN - PVU_FLUX_M(:,:,:)= EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) - END IF -! - IF (LTH_FLX) THEN - PVTH_FLUX_M(:,:,:)= EDDY_FLUX_MODEL(1)%XVTH_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) - PWTH_FLUX_M(:,:,:)= EDDY_FLUX_MODEL(1)%XWTH_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) - END IF -! -!------------------------------------------------------------------------------- -! -ELSE +!!$IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN +!!$! +!!$!* 2.1 special case of spawning - no change of resolution : +!!$! +!!$!* 2.1.1 variables which always exist +!!$! +!!$ PUT (:,:,:) = FIELD_MODEL(1)%XUT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PVT (:,:,:) = FIELD_MODEL(1)%XVT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PWT (:,:,:) = FIELD_MODEL(1)%XWT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PTHVT(:,:,:) = ZTHVT(KXOR:KXEND,KYOR:KYEND,:) +!!$! +!!$ PLSUM (:,:,:) = FIELD_MODEL(1)%XUT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PLSVM (:,:,:) = FIELD_MODEL(1)%XVT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PLSWM (:,:,:) = FIELD_MODEL(1)%XWT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PLSTHM(:,:,:) = FIELD_MODEL(1)%XTHT(KXOR:KXEND,KYOR:KYEND,:) +!!$! +!!$ PLSRVM(:,:,:) = 0. +!!$! +!!$!$20140707 +!!$CALL MPPDB_CHECK3D(PUT,"SPAWN_FIELD2:PUT",PRECISION) +!!$CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION) +!!$!$ +!!$!* 2.1.2 TKE variable +!!$! +!!$ IF (HTURB /= 'NONE') THEN +!!$ PTKET(:,:,:) = FIELD_MODEL(1)%XTKET(KXOR:KXEND,KYOR:KYEND,:) +!!$ ENDIF +!!$! +!!$!* 2.1.3 moist variables +!!$! +!!$ IF (CONF_MODEL(1)%NRR /= 0) THEN +!!$ PRT (:,:,:,:) = FIELD_MODEL(1)%XRT (KXOR:KXEND,KYOR:KYEND,:,:) +!!$ PLSRVM(:,:,:) = FIELD_MODEL(1)%XRT (KXOR:KXEND,KYOR:KYEND,:,1) +!!$ PHUT (:,:,:) = ZHUT (KXOR:KXEND,KYOR:KYEND,:) +!!$ ENDIF +!!$! +!!$!* 2.1.4 scalar variables +!!$! +!!$ IF (NSV /= 0) THEN +!!$ PSVT (:,:,:,:) = FIELD_MODEL(1)%XSVT (KXOR:KXEND,KYOR:KYEND,:,:) +!!$ ENDIF +!!$! +!!$!* 2.1.5 secondary prognostic variables +!!$! +!!$ IF (CONF_MODEL(1)%NRR > 1) THEN +!!$ PSRCT (:,:,:) = FIELD_MODEL(1)%XSRCT (KXOR:KXEND,KYOR:KYEND,:) +!!$ PSIGS(:,:,:) = FIELD_MODEL(1)%XSIGS(KXOR:KXEND,KYOR:KYEND,:) +!!$ ENDIF +!!$! +!!$!* 2.1.6 Large scale variables +!!$! +!!$ PLSUM (:,:,:) = LSFIELD_MODEL(1)%XLSUM (KXOR:KXEND,KYOR:KYEND,:) +!!$ PLSVM (:,:,:) = LSFIELD_MODEL(1)%XLSVM (KXOR:KXEND,KYOR:KYEND,:) +!!$ PLSWM (:,:,:) = LSFIELD_MODEL(1)%XLSWM (KXOR:KXEND,KYOR:KYEND,:) +!!$ PLSTHM(:,:,:) = LSFIELD_MODEL(1)%XLSTHM (KXOR:KXEND,KYOR:KYEND,:) +!!$ IF ( CONF_MODEL(1)%NRR > 0 ) THEN +!!$ PLSRVM (:,:,:) = LSFIELD_MODEL(1)%XLSRVM (KXOR:KXEND,KYOR:KYEND,:) +!!$ END IF +!!$! +!!$!* 2.1.7 Advective forcing fields for 2D (Modif MT) +!!$! +!!$ IF (L2D_ADV_FRC) THEN +!!$ PDTHFRC(:,:,:,:)= ADVFRC_MODEL(1)%XDTHFRC (KXOR:KXEND,KYOR:KYEND,:,:) +!!$ PDRVFRC(:,:,:,:)= ADVFRC_MODEL(1)%XDRVFRC (KXOR:KXEND,KYOR:KYEND,:,:) +!!$ ENDIF +!!$ IF (L2D_REL_FRC) THEN +!!$ PTHREL(:,:,:,:)= RELFRC_MODEL(1)%XTHREL (KXOR:KXEND,KYOR:KYEND,:,:) +!!$ PRVREL(:,:,:,:)= RELFRC_MODEL(1)%XRVREL (KXOR:KXEND,KYOR:KYEND,:,:) +!!$ ENDIF +!!$! +!!$!* 2.1.8 Turbulent fluxes for 2D (Modif MT) +!!$! +!!$ IF (LUV_FLX) THEN +!!$ PVU_FLUX_M(:,:,:)= EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) +!!$ END IF +!!$! +!!$ IF (LTH_FLX) THEN +!!$ PVTH_FLUX_M(:,:,:)= EDDY_FLUX_MODEL(1)%XVTH_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) +!!$ PWTH_FLUX_M(:,:,:)= EDDY_FLUX_MODEL(1)%XWTH_FLUX_M (KXOR:KXEND,KYOR:KYEND,:) +!!$ END IF +!!$! +!!$!------------------------------------------------------------------------------- +!!$! +!!$ELSE ! !------------------------------------------------------------------------------- ! @@ -714,7 +715,7 @@ ELSE CALL MPPDB_CHECK3D(PWTH_FLUX_M,"SPAWN_FIELD2:PWTH_FLUX_M",PRECISION) ENDIF ! -END IF +!!$END IF ! IF (CONF_MODEL(1)%NRR>=3) THEN WHERE (PRT(:,:,:,3)<1.E-20) diff --git a/src/MNH/spawn_grid2.f90 b/src/MNH/spawn_grid2.f90 index 3fa646362..5bfe7612e 100644 --- a/src/MNH/spawn_grid2.f90 +++ b/src/MNH/spawn_grid2.f90 @@ -150,6 +150,7 @@ END MODULE MODI_SPAWN_GRID2 !! Modification 24/02/15 (M.Moge) parallelization !! Modification 10/06/15 (M.Moge) bug fix for reproductibility !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! J.Escobar 05/03/2018 : bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -314,18 +315,18 @@ OSLEVE = GRID_MODEL(1)%LSLEVE PLEN1 = GRID_MODEL(1)%XLEN1 PLEN2 = GRID_MODEL(1)%XLEN2 ! -IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN -! -!* 2.1 special case of spawning - no change of resolution : -!$ in our case we don't get them here ! - PXHAT(:) = GRID_MODEL(1)%XXHAT(KXOR:KXEND) - PYHAT(:) = GRID_MODEL(1)%XYHAT(KYOR:KYEND) - PZS (:,:) = GRID_MODEL(1)%XZS (KXOR:KXEND,KYOR:KYEND) - PZS_LS(:,:)= GRID_MODEL(1)%XZS (KXOR:KXEND,KYOR:KYEND) - PZSMT (:,:) = GRID_MODEL(1)%XZSMT(KXOR:KXEND,KYOR:KYEND) - PZSMT_LS(:,:) = GRID_MODEL(1)%XZSMT(KXOR:KXEND,KYOR:KYEND) -! -ELSE +!!$IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN +!!$! +!!$!* 2.1 special case of spawning - no change of resolution : +!!$!$ in our case we don't get them here ! +!!$ PXHAT(:) = GRID_MODEL(1)%XXHAT(KXOR:KXEND) +!!$ PYHAT(:) = GRID_MODEL(1)%XYHAT(KYOR:KYEND) +!!$ PZS (:,:) = GRID_MODEL(1)%XZS (KXOR:KXEND,KYOR:KYEND) +!!$ PZS_LS(:,:)= GRID_MODEL(1)%XZS (KXOR:KXEND,KYOR:KYEND) +!!$ PZSMT (:,:) = GRID_MODEL(1)%XZSMT(KXOR:KXEND,KYOR:KYEND) +!!$ PZSMT_LS(:,:) = GRID_MODEL(1)%XZSMT(KXOR:KXEND,KYOR:KYEND) +!!$! +!!$ELSE ! !* 2.2 general case - change of resolution : ! @@ -491,7 +492,7 @@ ELSE ! !* 2.2.2 interpolation of ZS performed later ! -END IF +!!$END IF ! PLONOR = XLONORI PLATOR = XLATORI diff --git a/src/MNH/spawn_pressure2.f90 b/src/MNH/spawn_pressure2.f90 index afc88db33..d0e7fb042 100644 --- a/src/MNH/spawn_pressure2.f90 +++ b/src/MNH/spawn_pressure2.f90 @@ -106,6 +106,7 @@ END MODULE MODI_SPAWN_PRESSURE2 !! Modification 20/05/06 Remove Clark and Farley interpolation !! 2014 (M.Faivre) parallelization !! 10/02/15 (M.Moge) correction of M.Faivre's parallelization attempt +!! 05/03/2018 (J.Escobar) bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -209,14 +210,14 @@ IKE=IKU-JPVEXT ! ----------------------- ! ! -IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN -! - PPABST (:,:,:) = FIELD_MODEL(1)%XPABST (KXOR:KXEND,KYOR:KYEND,:) -! - CALL GOTO_MODEL(IMI) - RETURN -! -END IF +!!$IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN +!!$! +!!$ PPABST (:,:,:) = FIELD_MODEL(1)%XPABST (KXOR:KXEND,KYOR:KYEND,:) +!!$! +!!$ CALL GOTO_MODEL(IMI) +!!$ RETURN +!!$! +!!$END IF ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/spawn_surf2_rain.f90 b/src/MNH/spawn_surf2_rain.f90 index 90f2a47c7..694d19ed0 100644 --- a/src/MNH/spawn_surf2_rain.f90 +++ b/src/MNH/spawn_surf2_rain.f90 @@ -111,6 +111,7 @@ END MODULE MODI_SPAWN_SURF2_RAIN !! Modification 2014 (M.Faivre) !! J.Escobar 2/05/2016 : bug in use of global/local bounds for call of BIKHARDT !! C.Lac 10/2016 : Add droplet deposition for fog +!! J.Escobar 05/03/2018 : bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -198,46 +199,46 @@ YMETHOD='BI' !* 3. INITIALIZATION OF THE SURFACE VARIABLES OF MODEL 2: ! -------------------------------------------------- ! -IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN -! -!* 3.1 special case of spawning - no change of resolution : -! - IF (SIZE(PRECIP_MODEL(1)%XINPRC) /= 0 ) THEN - PINPRC(:,:) = PRECIP_MODEL(1)%XINPRC(KXOR:KXEND,KYOR:KYEND) - PACPRC(:,:) = PRECIP_MODEL(1)%XACPRC(KXOR:KXEND,KYOR:KYEND) - END IF -! - IF (SIZE(PRECIP_MODEL(1)%XINDEP) /= 0 ) THEN - PINDEP(:,:) = PRECIP_MODEL(1)%XINDEP(KXOR:KXEND,KYOR:KYEND) - PACDEP(:,:) = PRECIP_MODEL(1)%XACDEP(KXOR:KXEND,KYOR:KYEND) - END IF -! - IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN - PINPRR(:,:) = PRECIP_MODEL(1)%XINPRR(KXOR:KXEND,KYOR:KYEND) - PINPRR3D(:,:,:) = PRECIP_MODEL(1)%XINPRR3D(KXOR:KXEND,KYOR:KYEND,:) - PEVAP3D(:,:,:) = PRECIP_MODEL(1)%XEVAP3D(KXOR:KXEND,KYOR:KYEND,:) - PACPRR(:,:) = PRECIP_MODEL(1)%XACPRR(KXOR:KXEND,KYOR:KYEND) - END IF -! - IF (SIZE(PRECIP_MODEL(1)%XINPRS) /= 0 ) THEN - PINPRS(:,:) = PRECIP_MODEL(1)%XINPRS(KXOR:KXEND,KYOR:KYEND) - PACPRS(:,:) = PRECIP_MODEL(1)%XACPRS(KXOR:KXEND,KYOR:KYEND) - END IF -! - IF (SIZE(PRECIP_MODEL(1)%XINPRG) /= 0 ) THEN - PINPRG(:,:) = PRECIP_MODEL(1)%XINPRG(KXOR:KXEND,KYOR:KYEND) - PACPRG(:,:) = PRECIP_MODEL(1)%XACPRG(KXOR:KXEND,KYOR:KYEND) - END IF -! - IF (SIZE(PRECIP_MODEL(1)%XINPRH) /= 0 ) THEN - PINPRH(:,:) = PRECIP_MODEL(1)%XINPRH(KXOR:KXEND,KYOR:KYEND) - PACPRH(:,:) = PRECIP_MODEL(1)%XACPRH(KXOR:KXEND,KYOR:KYEND) - END IF -! -! -!------------------------------------------------------------------------------- -! -ELSE +!!$IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN +!!$! +!!$!* 3.1 special case of spawning - no change of resolution : +!!$! +!!$ IF (SIZE(PRECIP_MODEL(1)%XINPRC) /= 0 ) THEN +!!$ PINPRC(:,:) = PRECIP_MODEL(1)%XINPRC(KXOR:KXEND,KYOR:KYEND) +!!$ PACPRC(:,:) = PRECIP_MODEL(1)%XACPRC(KXOR:KXEND,KYOR:KYEND) +!!$ END IF +!!$! +!!$ IF (SIZE(PRECIP_MODEL(1)%XINDEP) /= 0 ) THEN +!!$ PINDEP(:,:) = PRECIP_MODEL(1)%XINDEP(KXOR:KXEND,KYOR:KYEND) +!!$ PACDEP(:,:) = PRECIP_MODEL(1)%XACDEP(KXOR:KXEND,KYOR:KYEND) +!!$ END IF +!!$! +!!$ IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN +!!$ PINPRR(:,:) = PRECIP_MODEL(1)%XINPRR(KXOR:KXEND,KYOR:KYEND) +!!$ PINPRR3D(:,:,:) = PRECIP_MODEL(1)%XINPRR3D(KXOR:KXEND,KYOR:KYEND,:) +!!$ PEVAP3D(:,:,:) = PRECIP_MODEL(1)%XEVAP3D(KXOR:KXEND,KYOR:KYEND,:) +!!$ PACPRR(:,:) = PRECIP_MODEL(1)%XACPRR(KXOR:KXEND,KYOR:KYEND) +!!$ END IF +!!$! +!!$ IF (SIZE(PRECIP_MODEL(1)%XINPRS) /= 0 ) THEN +!!$ PINPRS(:,:) = PRECIP_MODEL(1)%XINPRS(KXOR:KXEND,KYOR:KYEND) +!!$ PACPRS(:,:) = PRECIP_MODEL(1)%XACPRS(KXOR:KXEND,KYOR:KYEND) +!!$ END IF +!!$! +!!$ IF (SIZE(PRECIP_MODEL(1)%XINPRG) /= 0 ) THEN +!!$ PINPRG(:,:) = PRECIP_MODEL(1)%XINPRG(KXOR:KXEND,KYOR:KYEND) +!!$ PACPRG(:,:) = PRECIP_MODEL(1)%XACPRG(KXOR:KXEND,KYOR:KYEND) +!!$ END IF +!!$! +!!$ IF (SIZE(PRECIP_MODEL(1)%XINPRH) /= 0 ) THEN +!!$ PINPRH(:,:) = PRECIP_MODEL(1)%XINPRH(KXOR:KXEND,KYOR:KYEND) +!!$ PACPRH(:,:) = PRECIP_MODEL(1)%XACPRH(KXOR:KXEND,KYOR:KYEND) +!!$ END IF +!!$! +!!$! +!!$!------------------------------------------------------------------------------- +!!$! +!!$ELSE ! !* 3.2 general case - change of resolution : ! ----------------------------------- @@ -351,7 +352,7 @@ ELSE ! !------------------------------------------------------------------------------- ! -END IF +!!$END IF ! !* 3.3 Informations from model SON1 ! ---------------------------- -- GitLab