diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90 index d8294a83437cdc05ac1dc7874029d108a3f3bc4e..834db53558eec2041befa3a8d7e54f9f2d3a12cd 100644 --- a/src/MNH/goto_model_wrapper.f90 +++ b/src/MNH/goto_model_wrapper.f90 @@ -141,7 +141,7 @@ CALL DUMMY_GR_FIELD_GOTO_MODEL(KFROM, KTO) CALL DYN_GOTO_MODEL(KFROM, KTO) CALL DYNZD_GOTO_MODEL(KFROM,KTO) CALL FIELD_GOTO_MODEL(KFROM, KTO) -CALL PAST_FIELD_GOTO_MODEL(KFROM, KTO) +!CALL PAST_FIELD_GOTO_MODEL(KFROM, KTO) CALL GET_GOTO_MODEL(KFROM, KTO) !CALL GR_FIELD_GOTO_MODEL(KFROM, KTO) !$20140403 add grid_conf_proj_goto_model diff --git a/src/MNH/modd_deep_convectionn.f90 b/src/MNH/modd_deep_convectionn.f90 index 5a9ec33c41e2029ebc6c934395ec6f0f4780b0ed..ed180329cab7ea380ba33da2d187dd3766868617 100644 --- a/src/MNH/modd_deep_convectionn.f90 +++ b/src/MNH/modd_deep_convectionn.f90 @@ -45,17 +45,17 @@ IMPLICIT NONE TYPE DEEP_CONVECTION_t ! - INTEGER, DIMENSION(:,:),POINTER :: NCOUNTCONV=>NULL()! convective counter used - ! to refresh the - ! convective tendencies - REAL, DIMENSION(:,:,:) ,POINTER :: XDTHCONV=>NULL() ! convective TH tendency (K/s) - REAL, DIMENSION(:,:,:) ,POINTER :: XDRVCONV=>NULL() ! convective r_v tendency (1/s) - REAL, DIMENSION(:,:,:) ,POINTER :: XDRCCONV=>NULL() ! convective r_c tendency (1/s) - REAL, DIMENSION(:,:,:) ,POINTER :: XDRICONV=>NULL() ! convective r_i tendency (1/s) - REAL, DIMENSION(:,:) ,POINTER :: XPRCONV=>NULL() ! total precipitation rate (m/s) - REAL, DIMENSION(:,:) ,POINTER :: XPRSCONV=>NULL() ! solid precipitation rate (m/s) - REAL, DIMENSION(:,:) ,POINTER :: XPACCONV=>NULL() ! accumulated convective - ! precipitation (m) +! INTEGER, DIMENSION(:,:),POINTER :: NCOUNTCONV=>NULL()! convective counter used +! ! to refresh the +! ! convective tendencies +! REAL, DIMENSION(:,:,:) ,POINTER :: XDTHCONV=>NULL() ! convective TH tendency (K/s) +! REAL, DIMENSION(:,:,:) ,POINTER :: XDRVCONV=>NULL() ! convective r_v tendency (1/s) +! REAL, DIMENSION(:,:,:) ,POINTER :: XDRCCONV=>NULL() ! convective r_c tendency (1/s) +! REAL, DIMENSION(:,:,:) ,POINTER :: XDRICONV=>NULL() ! convective r_i tendency (1/s) +! REAL, DIMENSION(:,:) ,POINTER :: XPRCONV=>NULL() ! total precipitation rate (m/s) +! REAL, DIMENSION(:,:) ,POINTER :: XPRSCONV=>NULL() ! solid precipitation rate (m/s) +! REAL, DIMENSION(:,:) ,POINTER :: XPACCONV=>NULL() ! accumulated convective +! ! precipitation (m) REAL, DIMENSION(:,:,:,:),POINTER ::XDSVCONV=>NULL() ! tracer tendencies (1/s) ! diagnostic variables REAL, DIMENSION(:,:,:) ,POINTER :: XUMFCONV=>NULL() ! updraft mass flux (kg/s m2) @@ -104,14 +104,14 @@ SUBROUTINE DEEP_CONVECTION_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -DEEP_CONVECTION_MODEL(KFROM)%NCOUNTCONV=>NCOUNTCONV -DEEP_CONVECTION_MODEL(KFROM)%XDTHCONV=>XDTHCONV -DEEP_CONVECTION_MODEL(KFROM)%XDRVCONV=>XDRVCONV -DEEP_CONVECTION_MODEL(KFROM)%XDRCCONV=>XDRCCONV -DEEP_CONVECTION_MODEL(KFROM)%XDRICONV=>XDRICONV -DEEP_CONVECTION_MODEL(KFROM)%XPRCONV=>XPRCONV -DEEP_CONVECTION_MODEL(KFROM)%XPRSCONV=>XPRSCONV -DEEP_CONVECTION_MODEL(KFROM)%XPACCONV=>XPACCONV +!DEEP_CONVECTION_MODEL(KFROM)%NCOUNTCONV=>NCOUNTCONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XDTHCONV=>XDTHCONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XDRVCONV=>XDRVCONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XDRCCONV=>XDRCCONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XDRICONV=>XDRICONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XPRCONV=>XPRCONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XPRSCONV=>XPRSCONV !Done in FIELDLIST_GOTO_MODEL +!DEEP_CONVECTION_MODEL(KFROM)%XPACCONV=>XPACCONV !Done in FIELDLIST_GOTO_MODEL DEEP_CONVECTION_MODEL(KFROM)%XDSVCONV=>XDSVCONV DEEP_CONVECTION_MODEL(KFROM)%XUMFCONV=>XUMFCONV DEEP_CONVECTION_MODEL(KFROM)%XDMFCONV=>XDMFCONV @@ -127,14 +127,14 @@ DEEP_CONVECTION_MODEL(KFROM)%XIC_TOTAL_NUMBER=>XIC_TOTAL_NUMBER DEEP_CONVECTION_MODEL(KFROM)%XCG_TOTAL_NUMBER=>XCG_TOTAL_NUMBER ! ! Current model is set to model KTO -NCOUNTCONV=>DEEP_CONVECTION_MODEL(KTO)%NCOUNTCONV -XDTHCONV=>DEEP_CONVECTION_MODEL(KTO)%XDTHCONV -XDRVCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRVCONV -XDRCCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRCCONV -XDRICONV=>DEEP_CONVECTION_MODEL(KTO)%XDRICONV -XPRCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRCONV -XPRSCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRSCONV -XPACCONV=>DEEP_CONVECTION_MODEL(KTO)%XPACCONV +!NCOUNTCONV=>DEEP_CONVECTION_MODEL(KTO)%NCOUNTCONV !Done in FIELDLIST_GOTO_MODEL +!XDTHCONV=>DEEP_CONVECTION_MODEL(KTO)%XDTHCONV !Done in FIELDLIST_GOTO_MODEL +!XDRVCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRVCONV !Done in FIELDLIST_GOTO_MODEL +!XDRCCONV=>DEEP_CONVECTION_MODEL(KTO)%XDRCCONV !Done in FIELDLIST_GOTO_MODEL +!XDRICONV=>DEEP_CONVECTION_MODEL(KTO)%XDRICONV !Done in FIELDLIST_GOTO_MODEL +!XPRCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRCONV !Done in FIELDLIST_GOTO_MODEL +!XPRSCONV=>DEEP_CONVECTION_MODEL(KTO)%XPRSCONV !Done in FIELDLIST_GOTO_MODEL +!XPACCONV=>DEEP_CONVECTION_MODEL(KTO)%XPACCONV !Done in FIELDLIST_GOTO_MODEL XDSVCONV=>DEEP_CONVECTION_MODEL(KTO)%XDSVCONV XUMFCONV=>DEEP_CONVECTION_MODEL(KTO)%XUMFCONV XDMFCONV=>DEEP_CONVECTION_MODEL(KTO)%XDMFCONV diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90 index d7ea0abad99fb7552eeb97ed604529e98628e858..3f3d0a469d18df7c926920d77b4f74d7c2898bab 100644 --- a/src/MNH/modd_fieldn.f90 +++ b/src/MNH/modd_fieldn.f90 @@ -98,11 +98,11 @@ TYPE FIELD_t ! REAL :: XDRYMASST ! Mass of dry air Md REAL :: XDRYMASSS ! LS sources of Md REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL() ! turbulent flux <s'Rc'> - REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL() ! =sqrt(<s's'>) for the - ! Subgrid Condensation - REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL() ! cloud fraction - REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL() ! turbulent flux <s'Rc'> - ! at t +! REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL() ! turbulent flux <s'Rc'> +! ! at t +! REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL() ! =sqrt(<s's'>) for the +! ! Subgrid Condensation +! REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL() ! cloud fraction REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL() ! Pristine ice concentration REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL() ! Theta at Previous time step REAL, DIMENSION(:,:,:), POINTER :: XRCM=>NULL() ! Cloud mixing ratio at Previous time step @@ -134,9 +134,9 @@ REAL, DIMENSION(:,:,:,:), POINTER :: XRSVS_CLD=>NULL() REAL, POINTER :: XDRYMASST=>NULL() REAL, POINTER :: XDRYMASSS=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL() -REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL() @@ -177,9 +177,9 @@ FIELD_MODEL(KFROM)%XSVT=>XSVT FIELD_MODEL(KFROM)%XRSVS=>XRSVS FIELD_MODEL(KFROM)%XRSVS_CLD=>XRSVS_CLD FIELD_MODEL(KFROM)%XSRC=>XSRC -FIELD_MODEL(KFROM)%XSIGS=>XSIGS -FIELD_MODEL(KFROM)%XCLDFR=>XCLDFR -FIELD_MODEL(KFROM)%XSRCT=>XSRCT +!FIELD_MODEL(KFROM)%XSRCT=>XSRCT !Done in FIELDLIST_GOTO_MODEL +!FIELD_MODEL(KFROM)%XSIGS=>XSIGS !Done in FIELDLIST_GOTO_MODEL +!FIELD_MODEL(KFROM)%XCLDFR=>XCLDFR !Done in FIELDLIST_GOTO_MODEL FIELD_MODEL(KFROM)%XCIT=>XCIT FIELD_MODEL(KFROM)%XTHM=>XTHM FIELD_MODEL(KFROM)%XPABSM=>XPABSM @@ -214,9 +214,9 @@ XRSVS_CLD=>FIELD_MODEL(KTO)%XRSVS_CLD !XDRYMASST=>FIELD_MODEL(KTO)%XDRYMASST !Done in FIELDLIST_GOTO_MODEL XDRYMASSS=>FIELD_MODEL(KTO)%XDRYMASSS XSRC=>FIELD_MODEL(KTO)%XSRC -XSIGS=>FIELD_MODEL(KTO)%XSIGS -XCLDFR=>FIELD_MODEL(KTO)%XCLDFR -XSRCT=>FIELD_MODEL(KTO)%XSRCT +!XSRCT=>FIELD_MODEL(KTO)%XSRCT !Done in FIELDLIST_GOTO_MODEL +!XSIGS=>FIELD_MODEL(KTO)%XSIGS !Done in FIELDLIST_GOTO_MODEL +!XCLDFR=>FIELD_MODEL(KTO)%XCLDFR !Done in FIELDLIST_GOTO_MODEL XCIT=>FIELD_MODEL(KTO)%XCIT XTHM=>FIELD_MODEL(KTO)%XTHM XPABSM=>FIELD_MODEL(KTO)%XPABSM diff --git a/src/MNH/modd_past_fieldn.f90 b/src/MNH/modd_past_fieldn.f90 index d87523da88d50d846e54703f90f0e433cae2ecdf..3fa92f5a8e9bd93f5b94044da288f3516debebff 100644 --- a/src/MNH/modd_past_fieldn.f90 +++ b/src/MNH/modd_past_fieldn.f90 @@ -47,16 +47,7 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX IMPLICIT NONE -TYPE FIELD_t - REAL, DIMENSION(:,:,:), POINTER :: XUM=>NULL(),XVM=>NULL(),XWM=>NULL() - ! U,V,W at time t-dt - REAL, DIMENSION(:,:,:), POINTER :: XDUM=>NULL(),XDVM=>NULL(),XDWM=>NULL() -! -END TYPE FIELD_t - -TYPE(FIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: FIELD_MODEL - -REAL, DIMENSION(:,:,:), POINTER :: XUM=>NULL(),XVM=>NULL(),XWM=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XUM=>NULL(),XVM=>NULL(),XWM=>NULL() ! U,V,W at time t-dt REAL, DIMENSION(:,:,:), POINTER :: XDUM=>NULL(),XDVM=>NULL(),XDWM=>NULL() CONTAINS @@ -64,21 +55,21 @@ CONTAINS SUBROUTINE PAST_FIELD_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! -! Save current state for allocated arrays -FIELD_MODEL(KFROM)%XUM=>XUM -FIELD_MODEL(KFROM)%XVM=>XVM -FIELD_MODEL(KFROM)%XWM=>XWM -FIELD_MODEL(KFROM)%XDUM=>XDUM -FIELD_MODEL(KFROM)%XDVM=>XDVM -FIELD_MODEL(KFROM)%XDWM=>XDWM -! -! Current model is set to model KTO -XUM=>FIELD_MODEL(KTO)%XUM -XVM=>FIELD_MODEL(KTO)%XVM -XWM=>FIELD_MODEL(KTO)%XWM -XDUM=>FIELD_MODEL(KTO)%XDUM -XDVM=>FIELD_MODEL(KTO)%XDVM -XDWM=>FIELD_MODEL(KTO)%XDWM +! ! Save current state for allocated arrays +! !FIELD_MODEL(KFROM)%XUM=>XUM !Done in FIELDLIST_GOTO_MODEL +! !FIELD_MODEL(KFROM)%XVM=>XVM !Done in FIELDLIST_GOTO_MODEL +! !FIELD_MODEL(KFROM)%XWM=>XWM !Done in FIELDLIST_GOTO_MODEL +! !FIELD_MODEL(KFROM)%XDUM=>XDUM !Done in FIELDLIST_GOTO_MODEL +! !FIELD_MODEL(KFROM)%XDVM=>XDVM !Done in FIELDLIST_GOTO_MODEL +! !FIELD_MODEL(KFROM)%XDWM=>XDWM !Done in FIELDLIST_GOTO_MODEL +! ! +! ! Current model is set to model KTO +! !XUM=>FIELD_MODEL(KTO)%XUM !Done in FIELDLIST_GOTO_MODEL +! !XVM=>FIELD_MODEL(KTO)%XVM !Done in FIELDLIST_GOTO_MODEL +! !XWM=>FIELD_MODEL(KTO)%XWM !Done in FIELDLIST_GOTO_MODEL +! !XDUM=>FIELD_MODEL(KTO)%XDUM !Done in FIELDLIST_GOTO_MODEL +! !XDVM=>FIELD_MODEL(KTO)%XDVM !Done in FIELDLIST_GOTO_MODEL +! !XDWM=>FIELD_MODEL(KTO)%XDWM !Done in FIELDLIST_GOTO_MODEL END SUBROUTINE PAST_FIELD_GOTO_MODEL diff --git a/src/MNH/modd_precipn.f90 b/src/MNH/modd_precipn.f90 index 13572802d414b360acf7bf3a2b3e542d35d7c853..645ec2b2a3cb673285791931b759e1b8d535d259 100644 --- a/src/MNH/modd_precipn.f90 +++ b/src/MNH/modd_precipn.f90 @@ -50,14 +50,13 @@ TYPE PRECIP_t REAL, DIMENSION(:,:), POINTER :: XINPRC=>NULL(), XACPRC=>NULL(), & XINDEP=>NULL(), XACDEP=>NULL(), & ! XINPRR=>NULL(), XACPRR=>NULL(), & - XINPRR=>NULL(), & XINPRS=>NULL(), XACPRS=>NULL(), XINPRG=>NULL(), & XACPRG=>NULL(), XINPRH=>NULL(), XACPRH=>NULL() ! Instant and cumul of ground ! precipitation fields of Cloud,Rain, ! Snow, Graupel and Hail - REAL, DIMENSION(:,:,:), POINTER :: XINPRR3D=>NULL(), & !Instant precip 3D - XEVAP3D=>NULL()! Evap profile 3D +! REAL, DIMENSION(:,:,:), POINTER :: XINPRR3D=>NULL(), & !Instant precip 3D +! XEVAP3D=>NULL()! Evap profile 3D ! END TYPE PRECIP_t @@ -84,9 +83,9 @@ PRECIP_MODEL(KFROM)%XINPRC=>XINPRC PRECIP_MODEL(KFROM)%XACPRC=>XACPRC PRECIP_MODEL(KFROM)%XINDEP=>XINDEP PRECIP_MODEL(KFROM)%XACDEP=>XACDEP -PRECIP_MODEL(KFROM)%XINPRR=>XINPRR -PRECIP_MODEL(KFROM)%XINPRR3D=>XINPRR3D -PRECIP_MODEL(KFROM)%XEVAP3D=>XEVAP3D +!PRECIP_MODEL(KFROM)%XINPRR=>XINPRR !Done in FIELDLIST_GOTO_MODEL +!PRECIP_MODEL(KFROM)%XINPRR3D=>XINPRR3D !Done in FIELDLIST_GOTO_MODEL +!PRECIP_MODEL(KFROM)%XEVAP3D=>XEVAP3D !Done in FIELDLIST_GOTO_MODEL !PRECIP_MODEL(KFROM)%XACPRR=>XACPRR !Done in FIELDLIST_GOTO_MODEL PRECIP_MODEL(KFROM)%XINPRS=>XINPRS PRECIP_MODEL(KFROM)%XACPRS=>XACPRS @@ -100,9 +99,9 @@ XINPRC=>PRECIP_MODEL(KTO)%XINPRC XACPRC=>PRECIP_MODEL(KTO)%XACPRC XINDEP=>PRECIP_MODEL(KTO)%XINDEP XACDEP=>PRECIP_MODEL(KTO)%XACDEP -XINPRR=>PRECIP_MODEL(KTO)%XINPRR -XINPRR3D=>PRECIP_MODEL(KTO)%XINPRR3D -XEVAP3D=>PRECIP_MODEL(KTO)%XEVAP3D +!XINPRR=>PRECIP_MODEL(KTO)%XINPRR !Done in FIELDLIST_GOTO_MODEL +!XINPRR3D=>PRECIP_MODEL(KTO)%XINPRR3D !Done in FIELDLIST_GOTO_MODEL +!XEVAP3D=>PRECIP_MODEL(KTO)%XEVAP3D !Done in FIELDLIST_GOTO_MODEL !XACPRR=>PRECIP_MODEL(KTO)%XACPRR !Done in FIELDLIST_GOTO_MODEL XINPRS=>PRECIP_MODEL(KTO)%XINPRS XACPRS=>PRECIP_MODEL(KTO)%XACPRS diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90 index 1304d91a9d0ac5359ad494a2674aa108852af7f9..6dcdc45869f468969550fe77856bd421c78f2375 100644 --- a/src/MNH/modd_spawn.f90 +++ b/src/MNH/modd_spawn.f90 @@ -75,7 +75,6 @@ REAL,DIMENSION(:,:,:),SAVE,POINTER :: XZZ1 LOGICAL, SAVE,POINTER :: LSLEVE1 REAL, SAVE,POINTER :: XLEN11 REAL, SAVE,POINTER :: XLEN21 -REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRR1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTHT1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTKET1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XPABST1 @@ -83,11 +82,17 @@ REAL,DIMENSION(:,:,:,:),SAVE,POINTER :: XRT1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XWT1 +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSRCT1 +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XSIGS1 TYPE(DATE_TIME), SAVE,POINTER :: TDTCUR1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSUM1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSVM1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSWM1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSTHM1 REAL,DIMENSION(:,:,:),SAVE,POINTER :: XLSRVM1 +REAL,DIMENSION(:,:), SAVE,POINTER :: XINPRR1 +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XINPRR3D1 +REAL,DIMENSION(:,:,:),SAVE,POINTER :: XEVAP3D1 +REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRR1 ! END MODULE MODD_SPAWN diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index db5c54ff9a832e4b8192e17a59852a41248bddaa..563f2ba4dbe4b2e96bc5d17ad4fff340bbcf5ef8 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -239,8 +239,6 @@ INTEGER :: IRR ! Number of moist variables ! REAL, DIMENSION(SIZE(XRT1,1),SIZE(XRT1,2),SIZE(XRT1,3)) :: ZHUT ! relative humidity ! (model 1) -!REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XTHT,1),SIZE(FIELD_MODEL(1)%XTHT,2),SIZE(FIELD_MODEL(1)%XTHT,3)) :: ZTHVT! virtual pot. T -!REAL, DIMENSION(:,:,:),ALLOCATABLE :: ZTHVT! virtual pot. T REAL, DIMENSION(SIZE(XTHT1,1),SIZE(XTHT1,2),SIZE(XTHT1,3)) :: ZTHVT! virtual pot. T ! (model 1) !$20140708 @@ -363,8 +361,8 @@ CALL MPPDB_CHECK3D(PVT,"SPAWN_FIELD2:PVT",PRECISION) !* 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,:) + PSRCT(:,:,:) = XSRCT1 (KXOR:KXEND,KYOR:KYEND,:) + PSIGS(:,:,:) = XSIGS1(KXOR:KXEND,KYOR:KYEND,:) ENDIF ! !* 2.1.6 Large scale variables @@ -488,8 +486,8 @@ ELSE CALL SET_LSFIELD_1WAY_ll(ZHUT(:,:,JI),ZHUT_C(:,:,JI),2) ENDIF IF (CONF_MODEL(1)%NRR>1 .AND. HTURB /='NONE') THEN - CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XSRCT(:,:,JI),ZSRCT_C(:,:,JI),2) - CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XSIGS(:,:,JI),ZSIGS_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XSRCT1(:,:,JI),ZSRCT_C(:,:,JI),2) + CALL SET_LSFIELD_1WAY_ll(XSIGS1(:,:,JI),ZSIGS_C(:,:,JI),2) ENDIF IF (LUV_FLX) & CALL SET_LSFIELD_1WAY_ll(EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M(:,:,JI),ZVU_FLUX_M_C(:,:,JI),2) diff --git a/src/MNH/spawn_surf2_rain.f90 b/src/MNH/spawn_surf2_rain.f90 index 18cfed7cb47dc43682b353dd3aeaf046f2c1402c..dd984b3ce2366fb83061305307318bdad10af1f8 100644 --- a/src/MNH/spawn_surf2_rain.f90 +++ b/src/MNH/spawn_surf2_rain.f90 @@ -214,11 +214,11 @@ IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN 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(:,:) = XACPRR1(KXOR:KXEND,KYOR:KYEND) + IF (SIZE(XINPRR1) /= 0 ) THEN + PINPRR(:,:) = XINPRR1 (KXOR:KXEND,KYOR:KYEND) + PINPRR3D(:,:,:) = XINPRR3D1(KXOR:KXEND,KYOR:KYEND,:) + PEVAP3D(:,:,:) = XEVAP3D1 (KXOR:KXEND,KYOR:KYEND,:) + PACPRR(:,:) = XACPRR1 (KXOR:KXEND,KYOR:KYEND) END IF ! IF (SIZE(PRECIP_MODEL(1)%XINPRS) /= 0 ) THEN @@ -279,21 +279,21 @@ ELSE PACDEP(:,:)=MAX(0.,PACDEP(:,:)) END IF ! - IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN - IDIMX = SIZE(PRECIP_MODEL(1)%XINPRR,1) - IDIMY = SIZE(PRECIP_MODEL(1)%XINPRR,2) + IF (SIZE(XINPRR1) /= 0 ) THEN + IDIMX = SIZE(XINPRR1,1) + IDIMY = SIZE(XINPRR1,2) CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1, & - LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XINPRR,PINPRR) + LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XINPRR1,PINPRR) CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1, & - LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XINPRR3D,PINPRR3D) + LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XINPRR3D1,PINPRR3D) CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1, & - LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XEVAP3D,PEVAP3D) + LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XEVAP3D1,PEVAP3D) CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & 2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1, & @@ -377,7 +377,7 @@ IF (PRESENT(HSONFILE)) THEN ALLOCATE(ZACDEP1(0,0)) YGETRRT='SKIP' END IF - IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN + IF (SIZE(XINPRR1) /= 0 ) THEN ALLOCATE(ZINPRR1(KIUSON,KJUSON)) ALLOCATE(ZINPRR3D1(KIUSON,KJUSON,ILU)) ALLOCATE(ZEVAP3D1(KIUSON,KJUSON,ILU)) @@ -434,7 +434,7 @@ IF (PRESENT(HSONFILE)) THEN DEALLOCATE(ZACPRC1) DEALLOCATE(ZINDEP1) DEALLOCATE(ZACDEP1) - IF (SIZE(PRECIP_MODEL(1)%XINPRR) /= 0 ) THEN + IF (SIZE(XINPRR1) /= 0 ) THEN PINPRR(KIB2:KIE2,KJB2:KJE2) = ZINPRR1(KIB1:KIE1,KJB1:KJE1) PINPRR3D(KIB2:KIE2,KJB2:KJE2,:) = ZINPRR3D1(KIB1:KIE1,KJB1:KJE1,:) PEVAP3D(KIB2:KIE2,KJB2:KJE2,:) = ZEVAP3D1(KIB1:KIE1,KJB1:KJE1,:) diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90 index 34b3840db73f1522c5a08848b63e72f894c633c5..b537f31b57ad43e937899570366cc0edb833aaff 100644 --- a/src/MNH/spawning.f90 +++ b/src/MNH/spawning.f90 @@ -274,7 +274,6 @@ XZZ1 => XZZ LSLEVE1 => LSLEVE XLEN11 => XLEN1 XLEN21 => XLEN2 -XACPRR1 => XACPRR XTHT1 => XTHT XTKET1 => XTKET XPABST1 => XPABST @@ -282,12 +281,18 @@ XRT1 => XRT XUT1 => XUT XVT1 => XVT XWT1 => XWT +XSRCT1 => XSRCT +XSIGS1 => XSIGS TDTCUR1 => TDTCUR XLSUM1 => XLSUM XLSVM1 => XLSVM XLSWM1 => XLSWM XLSTHM1 => XLSTHM XLSRVM1 => XLSRVM +XINPRR1 => XINPRR +XINPRR3D1 => XINPRR3D +XEVAP3D1 => XEVAP3D +XACPRR1 => XACPRR ! END SUBROUTINE SET_POINTERS_TO_MODEL1 ! diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 61b48cd675385ad6f47e945187489ead4efbdd00..57aab16bf962cbd631a624bf6686cb04d5d22887 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -319,7 +319,7 @@ INTEGER :: JI,JJ,JK ! loop index INTEGER :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds ! CHARACTER(LEN=2) :: INDICE -INTEGER :: I +INTEGER :: I, IID TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------- ! @@ -479,49 +479,18 @@ CALL IO_WRITE_FIELD(TPFILE,'WT',CLUOUT,IRESP,XWT) CALL IO_WRITE_FIELD(TPFILE,'THT',CLUOUT,IRESP,XTHT) ! !* 1.4.2 Time t-dt: -YDIR='XY' ! IF ( (CUVW_ADV_SCHEME == 'CEN4TH') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN - YRECFM='UM' - YCOMMENT='X_Y_Z_U component of wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUM,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='VM' - YCOMMENT='X_Y_Z_V component of wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVM,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='WM' - YCOMMENT='X_Y_Z_vertical wind (m/s)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWM,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='DUM' - YCOMMENT='X_Y_Z_U component of wind (m/s)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDUM,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='DVM' - YCOMMENT='X_Y_Z_V component of wind (m/s)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDVM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'UM', CLUOUT,IRESP,XUM) + CALL IO_WRITE_FIELD(TPFILE,'VM', CLUOUT,IRESP,XVM) + CALL IO_WRITE_FIELD(TPFILE,'WM', CLUOUT,IRESP,XWM) + CALL IO_WRITE_FIELD(TPFILE,'DUM',CLUOUT,IRESP,XDUM) + CALL IO_WRITE_FIELD(TPFILE,'DVM',CLUOUT,IRESP,XDVM) + CALL IO_WRITE_FIELD(TPFILE,'DWM',CLUOUT,IRESP,XDWM) +END IF ! - YRECFM='DWM' - YCOMMENT='X_Y_Z_vertical wind (m/s)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDWM,IGRID,ILENCH,YCOMMENT,IRESP) +YDIR='XY' ! -END IF - - - IF (MEAN_COUNT /= 0) THEN ! YRECFM='UMME' @@ -805,13 +774,13 @@ IF (NSV >=1) THEN IF (LSCAV .AND. LAERO_MASS) THEN IF (ASSOCIATED(XINPAP)) THEN IF (SIZE(XINPAP) /= 0 ) THEN - ZWORK2D(:,:) = XINPAP(:,:) YRECFM = 'INPAP' YCOMMENT = 'X_Y_INstantaneous Precipitating Aerosol Rate (kg/m2/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPAP,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion +! ZWORK2D(:,:) = XRHOLW*XINPRR(:,:)*XSVT(:,:,2,NSV_LIMA_SCAVMASS)/ & max( 1.e-20,XRT(:,:,2,3) ) !~2=at ground level YRECFM = 'INPBP' @@ -821,12 +790,11 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ! - ZWORK2D(:,:) = XACPAP(:,:) YRECFM = 'ACPAP' YCOMMENT = 'X_Y_ACcumulated Precipitating Aerosol Rate (kg/m2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPAP,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion END IF END IF @@ -842,7 +810,6 @@ IF (NSV >=1) THEN WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (nb ions/m3)' END IF ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = 0. ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) @@ -867,7 +834,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDW(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='EMODULE' YCOMMENT='X_Y_Z_EMODULE (V/m)' ZWORK3D(:,:,:) = (XEFIELDU**2 + XEFIELDV**2 + XEFIELDW**2)**0.5 @@ -875,7 +841,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='NI_IAGGS' YCOMMENT='X_Y_Z_NI_IAGGS (pC/m3/s)' ILENCH=LEN(YCOMMENT) @@ -883,7 +848,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='NI_IDRYG' YCOMMENT='X_Y_Z_NI_IDRYG (pC/m3/s)' ILENCH=LEN(YCOMMENT) @@ -891,7 +855,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='NI_SDRYG' YCOMMENT='X_Y_Z_NI_SDRYG (pC/m3/s)' ILENCH=LEN(YCOMMENT) @@ -899,7 +862,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='INDUC_CG' YCOMMENT='X_Y_Z_INDUC_CG (pC/m3/s)' ILENCH=LEN(YCOMMENT) @@ -907,7 +869,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK2D(:,:) = 0. YRECFM='TRIG_IC' YCOMMENT='X_Y_Z_FLASH_MAP_TRIG_IC (no unit)' ILENCH=LEN(YCOMMENT) @@ -915,7 +876,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK2D(:,:) = 0. YRECFM='IMPACT_CG' YCOMMENT='X_Y_Z_FLASH_MAP_IMPACT_CG (no unit)' ILENCH=LEN(YCOMMENT) @@ -923,7 +883,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK2D(:,:) = 0. YRECFM='AREA_CG' YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_CG (no unit)' ILENCH=LEN(YCOMMENT) @@ -931,7 +890,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK2D(:,:) = 0. YRECFM='AREA_IC' YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_IC (no unit)' ILENCH=LEN(YCOMMENT) @@ -939,7 +897,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='FLASH_3DCG' YCOMMENT='X_Y_Z_FLASH_MAP_3DCG (no unit)' ILENCH=LEN(YCOMMENT) @@ -947,7 +904,6 @@ IF (NSV >=1) THEN CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! - ZWORK3D(:,:,:) = 0. YRECFM='FLASH_3DIC' YCOMMENT='X_Y_Z_FLASH_MAP_3DIC (no unit)' ILENCH=LEN(YCOMMENT) @@ -1374,20 +1330,9 @@ IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN CALL IO_WRITE_FIELD(TPFILE,'WTHVMF',CLUOUT,IRESP,XWTHVMF) END IF ! -! IF( NRR > 1 .AND. CTURB /= 'NONE' ) THEN - YRECFM='SRCT' - YCOMMENT='X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2 (KG/KG**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSRCT,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='SIGS' - YCOMMENT='X_Y_Z_Sigma_s from turbulence scheme (KG/KG**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSIGS,IGRID,ILENCH,YCOMMENT,IRESP) -! + CALL IO_WRITE_FIELD(TPFILE,'SRCT',CLUOUT,IRESP,XSRCT) + CALL IO_WRITE_FIELD(TPFILE,'SIGS',CLUOUT,IRESP,XSIGS) END IF ! !* 1.5 Reference state variables : @@ -1460,12 +1405,7 @@ IF (CRAD /= 'NONE') THEN ENDIF ! IF (NRR > 1 .AND. CPROGRAM == 'MESONH') THEN - YRECFM='CLDFR' - YCOMMENT='X_Y_Z_CLouD FRaction (0)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - YDIR='XY' - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'CLDFR',CLUOUT,IRESP,XCLDFR) END IF ! ! @@ -1476,68 +1416,27 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN ! ! ! - CALL IO_WRITE_FIELD(TPFILE,'DTDCONV',CLUOUT,IRESP,TDTDCONV) + CALL IO_WRITE_FIELD(TPFILE,'DTDCONV', CLUOUT,IRESP,TDTDCONV) + CALL IO_WRITE_FIELD(TPFILE,'COUNTCONV',CLUOUT,IRESP,NCOUNTCONV) + CALL IO_WRITE_FIELD(TPFILE,'DTHCONV', CLUOUT,IRESP,XDTHCONV) + CALL IO_WRITE_FIELD(TPFILE,'DRVCONV', CLUOUT,IRESP,XDRVCONV) + CALL IO_WRITE_FIELD(TPFILE,'DRCCONV', CLUOUT,IRESP,XDRCCONV) + CALL IO_WRITE_FIELD(TPFILE,'DRICONV', CLUOUT,IRESP,XDRICONV) ! - YDIR='XY' + CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'mm hour-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPRCONV*3.6E6) ! - YRECFM = 'COUNTCONV' - YCOMMENT = 'X_Y_COUNTCONV' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NCOUNTCONV,IGRID,ILENCH,YCOMMENT, & - IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'mm' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPACCONV*1.0E3) ! -! - YRECFM = 'DTHCONV' - YCOMMENT = 'X_Y_Z_CONVective heating/cooling rate (K/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP) -! -! - YRECFM = 'DRVCONV' - YCOMMENT = 'X_Y_Z_CONVective R_v tendency (1/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP) -! -! - YRECFM = 'DRCCONV' - YCOMMENT = 'X_Y_Z_CONVective R_c tendency (1/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP) -! -! - YRECFM = 'DRICONV' - YCOMMENT = 'X_Y_Z_CONVective R_i tendency (1/s)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP) -! -! - YRECFM = 'PRCONV' - YCOMMENT = 'X_Y_CONVective instantaneous Precipitation Rate (MM/H)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPRCONV*3.6E6,IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM = 'PACCONV' - YCOMMENT = 'X_Y_CONVective ACcumulated Precipitation rate (MM)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPACCONV*1.0E3,IGRID,ILENCH, & - YCOMMENT,IRESP) -! -! - YRECFM = 'PRSCONV' - YCOMMENT = 'X_Y_CONVective instantaneous Precipitation Rate for Snow (MM/H)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPRSCONV*3.6E6,IGRID,ILENCH, & - YCOMMENT,IRESP) + CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'mm hour-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XPRSCONV*3.6E6) ! IF ( LCH_CONV_LINOX ) THEN YRECFM = 'IC_RATE' @@ -1678,116 +1577,90 @@ IF (CPROGRAM /= 'IDEAL') THEN ! IF (ASSOCIATED(XINPRC)) THEN IF (SIZE(XINPRC) /= 0 ) THEN - ZWORK2D(:,:) = XINPRC(:,:) YRECFM = 'INPRC' YCOMMENT = 'X_Y_INstantaneous Cloud Precipitation Rain Rate (MM/H)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRC*3.6E6,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ! - ZWORK2D(:,:) = XACPRC(:,:) YRECFM = 'ACPRC' YCOMMENT = 'X_Y_ACcumulated Cloud Precipitation Rain Rate (MM)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRC*1.0E3,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ENDIF ENDIF ! IF (ASSOCIATED(XINPRR)) THEN IF (SIZE(XINPRR) /= 0 ) THEN - ZWORK2D(:,:) = XINPRR(:,:) - YRECFM = 'INPRR' - YCOMMENT = 'X_Y_INstantaneous Precipitation Rain Rate (MM/H)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion + CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'mm hour-1' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XINPRR*3.6E6) ! - ZWORK3D(:,:,:) = XINPRR3D(:,:,:) - YRECFM = 'INPRR3D' - YCOMMENT = 'X_Y_INstantaneous 3D Rain Precipitation flux (M/S)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion + CALL IO_WRITE_FIELD(TPFILE,'INPRR3D',CLUOUT,IRESP,XINPRR3D) + CALL IO_WRITE_FIELD(TPFILE,'EVAP3D', CLUOUT,IRESP,XEVAP3D) ! - ZWORK3D(:,:,:) = XEVAP3D(:,:,:) - YRECFM = 'EVAP3D' - YCOMMENT = 'X_Y_INstantaneous 3D Rain Evaporation flux (KG/KG/S)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion + CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%CUNITS = 'mm' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XACPRR*1.0E3) ! - ZWORK2D(:,:) = XACPRR(:,:) - YRECFM = 'ACPRR' - YCOMMENT = 'X_Y_ACcumulated Precipitation Rain Rate (MM)' - IGRID = 1 - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, & - YCOMMENT,IRESP) ! unit conversion ENDIF ENDIF ! IF (ASSOCIATED(XINPRS)) THEN IF (SIZE(XINPRS) /= 0 ) THEN - ZWORK2D(:,:) = XINPRS(:,:) YRECFM = 'INPRS' YCOMMENT = 'X_Y_INstantaneous PRecipitation Snow Rate (MM/H)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRS*3.6E6,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ! - ZWORK2D(:,:) = XACPRS(:,:) YRECFM = 'ACPRS' YCOMMENT = 'X_Y_ACcumulated PRecipitation Snow Rate (MM)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRS*1.0E3,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion END IF END IF ! IF (ASSOCIATED(XINPRG)) THEN IF (SIZE(XINPRG) /= 0 ) THEN - ZWORK2D(:,:) = XINPRG(:,:) YRECFM = 'INPRG' YCOMMENT = 'X_Y_INstantaneous PRecipitation Graupel Rate (MM/H)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRG*3.6E6,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ! - ZWORK2D(:,:) = XACPRG(:,:) YRECFM = 'ACPRG' YCOMMENT = 'X_Y_ACcumulated PRecipitation Graupel Rate (MM)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRG*1.0E3,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion END IF END IF ! IF (ASSOCIATED(XINPRH)) THEN IF (SIZE(XINPRH) /= 0 ) THEN - ZWORK2D(:,:) = XINPRH(:,:) YRECFM = 'INPRH' YCOMMENT = 'X_Y_INstantaneous PRecipitation Hail Rate (MM/H)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XINPRH*3.6E6,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ! - ZWORK2D(:,:) = XACPRH(:,:) YRECFM = 'ACPRH' YCOMMENT = 'X_Y_ACcumulated PRecipitation Hail Rate (MM)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XACPRH*1.0E3,IGRID,ILENCH, & YCOMMENT,IRESP) ! unit conversion ENDIF ENDIF