From 0e20cfe5462659ce5659d6527fe4637b6bc31187 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 12 Dec 2016 09:49:47 +0100 Subject: [PATCH] Philippe 12/12/2016: added FIELDLIST_GOTO_MODEL subroutine --- src/LIB/SURCOUCHE/src/mode_field.f90 | 39 ++++++++++++++++++++++++++++ src/MNH/goto_model_wrapper.f90 | 5 +++- src/MNH/ini_micron.f90 | 4 --- src/MNH/ini_modeln.f90 | 8 ------ src/MNH/init_mnh.f90 | 2 ++ src/MNH/modd_fieldn.f90 | 34 +++++------------------- src/MNH/modd_precipn.f90 | 14 ++-------- 7 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 525569ab6..057e6d4b4 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -225,4 +225,43 @@ END IF ! END SUBROUTINE FIND_FIELD_ID_FROM_MNHNAME ! +SUBROUTINE FIELDLIST_GOTO_MODEL(KFROM, KTO) +! +USE MODD_FIELD_n +USE MODD_PRECIP_n +! +INTEGER, INTENT(IN) :: KFROM, KTO +! +INTEGER :: IID,IRESP +! +IF (.NOT.LFIELDLIST_ISINIT) THEN + RETURN +END IF +! +! Save current state for allocated arrays +! +CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP) +TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XUT +CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP) +TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XVT +CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP) +TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XTHT +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP) +TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XACPRR +! +! Current model is set to model KTO +! +IF( KFROM/=KTO) THEN +CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP) +XUT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP) +XVT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP) +XTHT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP) +XACPRR=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +END IF +! +END SUBROUTINE FIELDLIST_GOTO_MODEL +! END MODULE MODE_FIELD diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90 index bf39783db..0199b28e5 100644 --- a/src/MNH/goto_model_wrapper.f90 +++ b/src/MNH/goto_model_wrapper.f90 @@ -113,6 +113,7 @@ USE MODD_ADVFRC_n ! USE MODD_CH_PRODLOSSTOT_n USE MODD_CH_BUDGET_n +USE MODE_FIELD ! IMPLICIT NONE INTEGER,INTENT(IN) :: KFROM, KTO @@ -201,5 +202,7 @@ CALL ADVFRC_GOTO_MODEL(KFROM, KTO) CALL RELFRC_GOTO_MODEL(KFROM, KTO) CALL CH_PRODLOSSTOT_GOTO_MODEL(KFROM,KTO) CALL CH_BUDGET_GOTO_MODEL(KFROM,KTO) - +! +CALL FIELDLIST_GOTO_MODEL(KFROM, KTO) +! END SUBROUTINE GOTO_MODEL_WRAPPER diff --git a/src/MNH/ini_micron.f90 b/src/MNH/ini_micron.f90 index cac673733..17154b38c 100644 --- a/src/MNH/ini_micron.f90 +++ b/src/MNH/ini_micron.f90 @@ -106,7 +106,6 @@ USE MODD_LIMA_PRECIP_SCAVENGING_n USE MODI_INIT_AEROSOL_CONCENTRATION USE MODI_INI_LIMA USE MODI_SET_CONC_LIMA -USE MODE_FIELD ! IMPLICIT NONE ! @@ -129,7 +128,6 @@ INTEGER :: IKB,IKE REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDZ ! mesh size REAL :: ZDZMIN INTEGER :: IMI -INTEGER :: IID,IRESP ! !------------------------------------------------------------------------------- ! @@ -316,7 +314,5 @@ IMI = GET_CURRENT_MODEL_INDEX() ! XDXX,XDYY,XDZZ,XDZX,XDZY ) !END IF ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X2D(IMI)%DATA=>XACPRR ! END SUBROUTINE INI_MICRO_n diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 9c74e2a99..deb55ee7d 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -421,7 +421,6 @@ USE MODI_CH_INIT_PRODLOSSTOT_n USE MODD_CH_BUDGET_n USE MODI_CH_INIT_BUDGET_n USE MODD_CH_M9_n, ONLY:NNONZEROTERMS -USE MODE_FIELD ! USE MODE_MPPDB USE MODI_INIT_AEROSOL_PROPERTIES @@ -516,7 +515,6 @@ REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTH REAL, DIMENSION(:,:,:), POINTER :: DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS ! INTEGER :: IIB,IJB,IIE,IJE,IDIMX,IDIMY,IMI -INTEGER :: IID ! !------------------------------------------------------------------------------- ! @@ -725,15 +723,9 @@ IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN END IF ! ALLOCATE(XUT(IIU,IJU,IKU)) ; XUT = 0.0 -CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X3D(KMI)%DATA=>XUT ALLOCATE(XVT(IIU,IJU,IKU)) ; XVT = 0.0 -CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X3D(KMI)%DATA=>XVT ALLOCATE(XWT(IIU,IJU,IKU)) ; XWT = 0.0 ALLOCATE(XTHT(IIU,IJU,IKU)) ; XTHT = 0.0 -CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X3D(KMI)%DATA=>XTHT ALLOCATE(XRUS(IIU,IJU,IKU)) ; XRUS = 0.0 ALLOCATE(XRVS(IIU,IJU,IKU)) ; XRVS = 0.0 ALLOCATE(XRWS(IIU,IJU,IKU)) ; XRWS = 0.0 diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90 index d3f36461c..9405e8e55 100644 --- a/src/MNH/init_mnh.f90 +++ b/src/MNH/init_mnh.f90 @@ -232,6 +232,8 @@ DO JMI=1,NMODEL CALL GOTO_MODEL(JMI) IF (CPROGRAM/='SPEC ') THEN CALL INI_MODEL_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI)) + !Call necessary to update the TFIELDLIST pointers to the data + CALL FIELDLIST_GOTO_MODEL(JMI,JMI) ELSE CALL INI_SPECTRE_n(JMI,YLUOUT(JMI),YINIFILE(JMI)) END IF diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90 index 3c21b1d8e..9e2abed9e 100644 --- a/src/MNH/modd_fieldn.f90 +++ b/src/MNH/modd_fieldn.f90 @@ -147,21 +147,13 @@ CONTAINS SUBROUTINE FIELD_GOTO_MODEL(KFROM, KTO) ! -USE MODE_FIELD -! INTEGER, INTENT(IN) :: KFROM, KTO ! INTEGER :: IID,IRESP ! ! Save current state for allocated arrays -!FIELD_MODEL(KFROM)%XUT=>XUT -!FIELD_MODEL(KFROM)%XVT=>XVT -IF( KFROM/=1 .AND. KTO/=1) THEN -CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XUT -CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XVT -END IF +!FIELD_MODEL(KFROM)%XUT=>XUT !Done in FIELDLIST_GOTO_MODEL +!FIELD_MODEL(KFROM)%XVT=>XVT !Done in FIELDLIST_GOTO_MODEL FIELD_MODEL(KFROM)%XWT=>XWT FIELD_MODEL(KFROM)%XRUS=>XRUS FIELD_MODEL(KFROM)%XRVS=>XRVS @@ -169,11 +161,7 @@ FIELD_MODEL(KFROM)%XRWS=>XRWS FIELD_MODEL(KFROM)%XRUS_PRES=>XRUS_PRES FIELD_MODEL(KFROM)%XRVS_PRES=>XRVS_PRES FIELD_MODEL(KFROM)%XRWS_PRES=>XRWS_PRES -!FIELD_MODEL(KFROM)%XTHT=>XTHT -IF( KFROM/=1 .AND. KTO/=1) THEN -CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XTHT -END IF +!FIELD_MODEL(KFROM)%XTHT=>XTHT !Done in FIELDLIST_GOTO_MODEL FIELD_MODEL(KFROM)%XRTHS=>XRTHS FIELD_MODEL(KFROM)%XRTHS_CLD=>XRTHS_CLD FIELD_MODEL(KFROM)%XSUPSAT=>XSUPSAT @@ -199,14 +187,8 @@ FIELD_MODEL(KFROM)%XPABSM=>XPABSM FIELD_MODEL(KFROM)%XRCM=>XRCM ! ! Current model is set to model KTO -!XUT=>FIELD_MODEL(KTO)%XUT -!XVT=>FIELD_MODEL(KTO)%XVT -IF( KFROM/=1 .AND. KTO/=1) THEN -CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP) -XUT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP) -XVT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -END IF +!XUT=>FIELD_MODEL(KTO)%XUT !Done in FIELDLIST_GOTO_MODEL +!XVT=>FIELD_MODEL(KTO)%XVT !Done in FIELDLIST_GOTO_MODEL XWT=>FIELD_MODEL(KTO)%XWT XRUS=>FIELD_MODEL(KTO)%XRUS XRVS=>FIELD_MODEL(KTO)%XRVS @@ -214,11 +196,7 @@ XRWS=>FIELD_MODEL(KTO)%XRWS XRUS_PRES=>FIELD_MODEL(KTO)%XRUS_PRES XRVS_PRES=>FIELD_MODEL(KTO)%XRVS_PRES XRWS_PRES=>FIELD_MODEL(KTO)%XRWS_PRES -!XTHT=>FIELD_MODEL(KTO)%XTHT -IF( KFROM/=1 .AND. KTO/=1) THEN -CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP) -XTHT=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -END IF +!XTHT=>FIELD_MODEL(KTO)%XTHT !Done in FIELDLIST_GOTO_MODEL XRTHS=>FIELD_MODEL(KTO)%XRTHS XRTHS_CLD=>FIELD_MODEL(KTO)%XRTHS_CLD XSUPSAT=>FIELD_MODEL(KTO)%XSUPSAT diff --git a/src/MNH/modd_precipn.f90 b/src/MNH/modd_precipn.f90 index 5413147dd..13572802d 100644 --- a/src/MNH/modd_precipn.f90 +++ b/src/MNH/modd_precipn.f90 @@ -75,8 +75,6 @@ CONTAINS SUBROUTINE PRECIP_GOTO_MODEL(KFROM, KTO) ! -USE MODE_FIELD -! INTEGER, INTENT(IN) :: KFROM, KTO ! INTEGER :: IID,IRESP @@ -89,11 +87,7 @@ PRECIP_MODEL(KFROM)%XACDEP=>XACDEP PRECIP_MODEL(KFROM)%XINPRR=>XINPRR PRECIP_MODEL(KFROM)%XINPRR3D=>XINPRR3D PRECIP_MODEL(KFROM)%XEVAP3D=>XEVAP3D -!PRECIP_MODEL(KFROM)%XACPRR=>XACPRR -IF( KFROM/=1 .AND. KTO/=1) THEN -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP) -TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA=>XACPRR -END IF +!PRECIP_MODEL(KFROM)%XACPRR=>XACPRR !Done in FIELDLIST_GOTO_MODEL PRECIP_MODEL(KFROM)%XINPRS=>XINPRS PRECIP_MODEL(KFROM)%XACPRS=>XACPRS PRECIP_MODEL(KFROM)%XINPRG=>XINPRG @@ -109,11 +103,7 @@ XACDEP=>PRECIP_MODEL(KTO)%XACDEP XINPRR=>PRECIP_MODEL(KTO)%XINPRR XINPRR3D=>PRECIP_MODEL(KTO)%XINPRR3D XEVAP3D=>PRECIP_MODEL(KTO)%XEVAP3D -!XACPRR=>PRECIP_MODEL(KTO)%XACPRR -IF( KFROM/=1 .AND. KTO/=1) THEN -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP) -XACPRR=>TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA -END IF +!XACPRR=>PRECIP_MODEL(KTO)%XACPRR !Done in FIELDLIST_GOTO_MODEL XINPRS=>PRECIP_MODEL(KTO)%XINPRS XACPRS=>PRECIP_MODEL(KTO)%XACPRS XINPRG=>PRECIP_MODEL(KTO)%XINPRG -- GitLab