From 30cd338ddda4137e24a13247a3659da404d63114 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 30 Mar 2017 15:58:44 +0200 Subject: [PATCH] Philippe 30/03/2017: IO: use file structure instead of filename in arguments + add fields in TFIELDLIST --- src/LIB/SURCOUCHE/src/modd_io.f90 | 4 +- src/LIB/SURCOUCHE/src/mode_field.f90 | 368 ++++++++++++++++++++++++- src/MNH/advection_metsv.f90 | 23 +- src/MNH/c2r2_adjust.f90 | 18 +- src/MNH/compute_r00.f90 | 28 +- src/MNH/diag.f90 | 14 +- src/MNH/khko_notadjust.f90 | 21 +- src/MNH/lima_adjust.f90 | 20 +- src/MNH/lima_cold.f90 | 62 ++--- src/MNH/lima_cold_hom_nucl.f90 | 16 +- src/MNH/lima_cold_sedimentation.f90 | 12 - src/MNH/lima_cold_slow_processes.f90 | 34 +-- src/MNH/lima_meyers.f90 | 30 +- src/MNH/lima_mixed.f90 | 38 +-- src/MNH/lima_phillips.f90 | 34 +-- src/MNH/lima_warm.f90 | 65 ++--- src/MNH/lima_warm_coal.f90 | 14 +- src/MNH/lima_warm_evap.f90 | 34 +-- src/MNH/lima_warm_nucl.f90 | 30 +- src/MNH/lima_warm_sedim.f90 | 12 - src/MNH/modeln.f90 | 56 ++-- src/MNH/paspol.f90 | 52 ++-- src/MNH/phys_paramn.f90 | 23 +- src/MNH/prandtl.f90 | 27 +- src/MNH/radiations.f90 | 145 +++++----- src/MNH/rain_c2r2_khko.f90 | 28 +- src/MNH/resolved_cloud.f90 | 75 ++--- src/MNH/shallow_mf_pack.f90 | 93 ++++--- src/MNH/tke_eps_sources.f90 | 23 +- src/MNH/turb.f90 | 38 +-- src/MNH/turb_cloud_index.f90 | 32 ++- src/MNH/turb_hor.f90 | 27 +- src/MNH/turb_hor_dyn_corr.f90 | 22 +- src/MNH/turb_hor_splt.f90 | 17 +- src/MNH/turb_hor_sv_flux.f90 | 21 +- src/MNH/turb_hor_thermo_corr.f90 | 25 +- src/MNH/turb_hor_thermo_flux.f90 | 28 +- src/MNH/turb_hor_uv.f90 | 19 +- src/MNH/turb_hor_uw.f90 | 18 +- src/MNH/turb_hor_vw.f90 | 18 +- src/MNH/turb_ver.f90 | 33 ++- src/MNH/turb_ver_dyn_flux.f90 | 21 +- src/MNH/turb_ver_sv_flux.f90 | 19 +- src/MNH/turb_ver_thermo_corr.f90 | 23 +- src/MNH/turb_ver_thermo_flux.f90 | 22 +- src/MNH/uv_to_zonal_and_merid.f90 | 52 ++-- src/MNH/write_lfifm1_for_diag.f90 | 12 +- src/MNH/write_lfifm1_for_diag_supp.f90 | 152 +++++----- 48 files changed, 1168 insertions(+), 830 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90 index d65039cd4..52a690279 100644 --- a/src/LIB/SURCOUCHE/src/modd_io.f90 +++ b/src/LIB/SURCOUCHE/src/modd_io.f90 @@ -86,7 +86,7 @@ TYPE TFILEDATA LOGICAL :: LNCREDUCE_FLOAT_PRECISION = .FALSE. ! Reduce the precision of floats to single precision ! instead of double precision LOGICAL :: LNCCOMPRESS = .FALSE. ! Do compression on fields - INTEGER(KIND=IDCDF_KIND) :: NNCCOMPRESS_LEVEL ! Compression level + INTEGER(KIND=IDCDF_KIND) :: NNCCOMPRESS_LEVEL = 0 ! Compression level ! TYPE(TFILEDATA),POINTER :: TFILE_PREV => NULL() TYPE(TFILEDATA),POINTER :: TFILE_NEXT => NULL() @@ -97,4 +97,6 @@ TYPE(TFILEDATA),POINTER,SAVE :: TFILE_LAST => NULL() TYPE(TFILEDATA),POINTER,SAVE :: TFILE_SURFEX => NULL() !Pointer used to find the file used when writing SURFEX fields in write_surf_mnh.f90 +TYPE(TFILEDATA),TARGET, SAVE :: TFILE_DUMMY = TFILEDATA(CNAME="dummy") !Non existing file which can be used as a dummy target + END MODULE MODD_IO_ll diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index b4053138e..27aa93d13 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -7,13 +7,13 @@ MODULE MODE_FIELD USE MODD_CONF, ONLY : CPROGRAM USE MODD_IO_ll, ONLY : NVERB_DEBUG,NVERB_INFO,NVERB_WARNING,NVERB_ERROR,NVERB_FATAL USE MODD_PARAMETERS -USE MODD_PARAM_n, ONLY : CRAD +USE MODD_PARAM_n, ONLY : CDCONV,CRAD,CSCONV USE MODD_TYPE_DATE USE MODE_MSG ! IMPLICIT NONE ! -INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 150 +INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 200 INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5 ! TYPE TFIELDPTR_C0D @@ -232,6 +232,30 @@ TFIELDLIST(IDX)%NDIMS = 0 IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'XSIZE' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: XSIZE' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Number of model 1 grid points in x-direction in the model 2 physical domain' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'YSIZE' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: YSIZE' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Number of model 1 grid points in y-direction in the model 2 physical domain' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 0 +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'XOR' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: XOR' @@ -903,6 +927,84 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'UM' +TFIELDLIST(IDX)%CSTDNAME = 'x_wind' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: UM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of wind' +TFIELDLIST(IDX)%NGRID = 2 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'VM' +TFIELDLIST(IDX)%CSTDNAME = 'y_wind' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: VM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of wind' +TFIELDLIST(IDX)%NGRID = 3 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'WM' +TFIELDLIST(IDX)%CSTDNAME = 'upward_air_velocity' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: WM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_vertical wind' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DUM' +TFIELDLIST(IDX)%CSTDNAME = 'x_wind' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DUM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_U component of wind' +TFIELDLIST(IDX)%NGRID = 2 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DVM' +TFIELDLIST(IDX)%CSTDNAME = 'y_wind' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DVM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_V component of wind' +TFIELDLIST(IDX)%NGRID = 3 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DWM' +TFIELDLIST(IDX)%CSTDNAME = 'upward_air_velocit' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DWM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_vertical wind' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'TKET' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: TKET' @@ -1331,6 +1433,32 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SRCT' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SRCT' +TFIELDLIST(IDX)%CUNITS = 'kg kg-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SIGS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SIGS' +TFIELDLIST(IDX)%CUNITS = 'kg kg-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Sigma_s from turbulence scheme' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'RHOREFZ' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RHOREFZ' @@ -1531,6 +1659,19 @@ TFIELDLIST(IDX)%NDIMS = 3 ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'CLDFR' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: CLDFR' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_CLouD FRaction' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! END IF ! CPROGRAM=MESONH ! ! @@ -1721,7 +1862,118 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) IDX = IDX+1 ! END IF !CRAD /= 'NONE' -END IF ! CPROGRAM=MESONH +END IF !CPROGRAM=MESONH +! +! +IF (TRIM(CPROGRAM) /= 'PGD' .AND. TRIM(CPROGRAM) /= 'NESPGD' .AND. TRIM(CPROGRAM) /= 'SPAWN') THEN +IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'COUNTCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: COUNTCONV' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_COUNTCONV' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_N2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DTHCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DTHCONV' +TFIELDLIST(IDX)%CUNITS = 'K s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_CONVective heating/cooling rate' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DRVCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DRVCONV' +TFIELDLIST(IDX)%CUNITS = 's-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_CONVective R_v tendency' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DRCCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DRCCONV' +TFIELDLIST(IDX)%CUNITS = 's-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_CONVective R_c tendency' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'DRICONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DRICONV' +TFIELDLIST(IDX)%CUNITS = 's-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_CONVective R_i tendency' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PRCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PRCONV' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_CONVective instantaneous Precipitation Rate' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PACCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PACCONV' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_CONVective ACcumulated Precipitation rate' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'PRSCONV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: PRSCONV' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_CONVective instantaneous Precipitation Rate for Snow' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +END IF !CDCONV /= 'NONE' .OR. CSCONV == 'KAFR' +END IF !CPROGRAM/=PGD , NESPGD, SPAWN ! ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -1829,12 +2081,51 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'INPRR' +TFIELDLIST(IDX)%CSTDNAME = 'rainfall_rate' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: INPRR' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_INstantaneous Precipitation Rain Rate' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'INPRR3D' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: INPRR3D' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_INstantaneous 3D Rain Precipitation flux' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'EVAP3D' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: EVAP3D' +TFIELDLIST(IDX)%CUNITS = 'kg kg-1 s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_INstantaneous 3D Rain Evaporation flux' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'ACPRR' TFIELDLIST(IDX)%CSTDNAME = 'rainfall_amount' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: ACPRR' !PW: TODO: CF-convention prefers 'kg m-2' TFIELDLIST(IDX)%CUNITS = 'm' -TFIELDLIST(IDX)%CDIR = '' +TFIELDLIST(IDX)%CDIR = 'XY' TFIELDLIST(IDX)%CCOMMENT = 'X_Y_ACcumulated Precipitation Rain Rate' TFIELDLIST(IDX)%NGRID = 1 TFIELDLIST(IDX)%NTYPE = TYPEREAL @@ -2084,12 +2375,14 @@ USE MODD_REF ! USE MODD_ADV_n USE MODD_CONF_n +USE MODD_DEEP_CONVECTION_n USE MODD_DYN_n USE MODD_FIELD_n USE MODD_GR_FIELD_n USE MODD_GRID_n USE MODD_LSFIELD_n USE MODD_PARAM_n +USE MODD_PAST_FIELD_n USE MODD_PRECIP_n USE MODD_RADIATIONS_n USE MODD_REF_n @@ -2176,6 +2469,9 @@ IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN CALL FIND_FIELD_ID_FROM_MNHNAME('RHT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) END IF ! +CALL FIND_FIELD_ID_FROM_MNHNAME('SRCT',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XSRCT +CALL FIND_FIELD_ID_FROM_MNHNAME('SIGS',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XSIGS +! IF (CPROGRAM == 'MESONH') THEN ! CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRUS_PRES @@ -2213,9 +2509,19 @@ IF (CPROGRAM == 'MESONH') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('RHS_CLD',IID,IRESP) TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) END IF + CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XCLDFR ! END IF ! +! MODD_PAST_FIELD_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('UM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XUM +CALL FIND_FIELD_ID_FROM_MNHNAME('VM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XVM +CALL FIND_FIELD_ID_FROM_MNHNAME('WM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWM +CALL FIND_FIELD_ID_FROM_MNHNAME('DUM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDUM +CALL FIND_FIELD_ID_FROM_MNHNAME('DVM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDVM +CALL FIND_FIELD_ID_FROM_MNHNAME('DWM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDWM +! ! MODD_LSFIELD_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('LSUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSUM @@ -2297,6 +2603,21 @@ IF (CRAD /= 'NONE') THEN END IF END IF ! +! MODD_DEEP_CONVECTION_n variables +! +IF (TRIM(CPROGRAM) /= 'PGD' .AND. TRIM(CPROGRAM) /= 'NESPGD' .AND. TRIM(CPROGRAM) /= 'SPAWN') THEN +IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('COUNTCONV',IID,IRESP); TFIELDLIST(IID)%TFIELD_N2D(KFROM)%DATA => NCOUNTCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('DTHCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDTHCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('DRVCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDRVCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('DRCCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDRCCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('DRICONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDRICONV + CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPRCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPRSCONV + CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XPACCONV +END IF +END IF +! ! MODD_GR_FIELD_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_ANIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XSSO_ANISOTROPY @@ -2310,7 +2631,10 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_STDEV',IID,IRESP); TFIELDLIST(IID)%TFIELD_X ! ! MODD_PRECIP_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRR +CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XINPRR +CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR3D',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XINPRR3D +CALL FIND_FIELD_ID_FROM_MNHNAME('EVAP3D', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XEVAP3D +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRR ! ! ! @@ -2361,6 +2685,9 @@ IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RHT) END IF ! +CALL FIND_FIELD_ID_FROM_MNHNAME('SRCT',IID,IRESP); XSRCT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SIGS',IID,IRESP); XSIGS => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! IF (CPROGRAM == 'MESONH') THEN ! CALL FIND_FIELD_ID_FROM_MNHNAME('RS_CLD',IID,IRESP); XRRS_CLD => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA @@ -2398,8 +2725,18 @@ IF (CPROGRAM == 'MESONH') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); XRVS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); XRWS_PRES => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); XRTHS_CLD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR', IID,IRESP); XCLDFR => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA END IF ! +! MODD_PAST_FIELD_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('UM', IID,IRESP); XUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('VM', IID,IRESP); XVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('WM', IID,IRESP); XWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DUM',IID,IRESP); XDUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DVM',IID,IRESP); XDVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('DWM',IID,IRESP); XDWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! ! MODD_LSFIELD_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('LSUM', IID,IRESP); XLSUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA @@ -2588,6 +2925,22 @@ IF (CRAD /= 'NONE') THEN END IF END IF ! +! MODD_DEEP_CONVECTION_n variables +! +IF (TRIM(CPROGRAM) /= 'PGD' .AND. TRIM(CPROGRAM) /= 'NESPGD' .AND. TRIM(CPROGRAM) /= 'SPAWN') THEN +IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('COUNTCONV',IID,IRESP); NCOUNTCONV => TFIELDLIST(IID)%TFIELD_N2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DTHCONV', IID,IRESP); XDTHCONV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DRVCONV', IID,IRESP); XDRVCONV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DRCCONV', IID,IRESP); XDRCCONV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('DRICONV', IID,IRESP); XDRICONV => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('PRCONV', IID,IRESP); XPRCONV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('PRSCONV', IID,IRESP); XPRSCONV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('PACCONV', IID,IRESP); XPACCONV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + +END IF +END IF +! ! MODD_GR_FIELD_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_ANIS', IID,IRESP); XSSO_ANISOTROPY => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA @@ -2601,7 +2954,10 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_STDEV',IID,IRESP); XSSO_STDEV => TFIEL ! ! MODD_PRECIP_n variables ! -CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); XACPRR => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR', IID,IRESP); XINPRR => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('INPRR3D',IID,IRESP); XINPRR3D => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('EVAP3D', IID,IRESP); XEVAP3D => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR', IID,IRESP); XACPRR => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA ! END IF !KFROM/=KTO ! diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index 8318e5f05..7085b2e6a 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -8,7 +8,7 @@ ! ########################### ! INTERFACE - SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, & + SUBROUTINE ADVECTION_METSV (HLUOUT, TPFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, & HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT, & OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT, & HLBCX, HLBCY, KRR, KSV, TPDTCUR, PTSTEP, & @@ -17,12 +17,12 @@ INTERFACE PRTHS, PRRS, PRTKES, PRSVS, & PRTHS_CLD, PRRS_CLD, PRSVS_CLD, PRTKES_ADV ) ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_TYPE_DATE, ONLY: DATE_TIME ! LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous ! file opening -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER(LEN=6), INTENT(IN) :: HMET_ADV_SCHEME, & ! Control of the @@ -66,7 +66,7 @@ END INTERFACE ! END MODULE MODI_ADVECTION_METSV ! ########################################################################## - SUBROUTINE ADVECTION_METSV (HLUOUT, HFMFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, & + SUBROUTINE ADVECTION_METSV (HLUOUT, TPFILE, OCLOSE_OUT,HUVW_ADV_SCHEME, & HMET_ADV_SCHEME,HSV_ADV_SCHEME, HCLOUD, KSPLIT, & OSPLIT_CFL, PSPLIT_CFL, OCFL_WRIT, & HLBCX, HLBCY, KRR, KSV, TPDTCUR, PTSTEP, & @@ -148,6 +148,7 @@ USE MODD_CONF, ONLY : LNEUTRAL,NHALO,L1D, L2D USE MODD_CTURB, ONLY : XTKEMIN USE MODD_CST USE MODD_BUDGET +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_TYPE_DATE, ONLY: DATE_TIME ! USE MODI_CONTRAV @@ -167,8 +168,7 @@ IMPLICIT NONE ! LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous ! file opening -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER(LEN=6), INTENT(IN) :: HMET_ADV_SCHEME, & ! Control of the @@ -258,6 +258,7 @@ TYPE(LIST_ll), POINTER :: TZFIELDS1_ll ! list of fields to exchange INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file INTEGER :: ILUOUT ! logical unit @@ -268,6 +269,8 @@ INTEGER :: IIB, IIE, IJB, IJE !* 0. INITIALIZATION ! -------------- ! +YFMFILE = TPFILE%CNAME +! CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) ! GTKE=(SIZE(PTKET)/=0) @@ -312,25 +315,25 @@ IF (OCLOSE_OUT .AND. OCFL_WRIT .AND. (.NOT. L1D)) THEN YCOMMENT='X_Y_Z_CFLU (-)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLU,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFLU,IGRID,ILENCH,YCOMMENT,IRESP) YRECFM ='CFLV' YCOMMENT='X_Y_Z_CFLV (-)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFLV,IGRID,ILENCH,YCOMMENT,IRESP) YRECFM ='CFLW' YCOMMENT='X_Y_Z_CFLW (-)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFLW,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFLW,IGRID,ILENCH,YCOMMENT,IRESP) YRECFM ='CFL' YCOMMENT='X_Y_Z_CFL (-)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCFL,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCFL,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! !* prints in the output file the maximum CFL diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90 index 7025d323a..f9e099fe6 100644 --- a/src/MNH/c2r2_adjust.f90 +++ b/src/MNH/c2r2_adjust.f90 @@ -14,14 +14,16 @@ ! INTERFACE ! - SUBROUTINE C2R2_ADJUST(KRR, HFMFILE, HLUOUT, HRAD, & + SUBROUTINE C2R2_ADJUST(KRR, TPFILE, HLUOUT, HRAD, & HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP, & PRHODJ, PSIGS, PPABST, & PTHS, PRVS, PRCS, PCNUCS, & PCCS, PSRCS, PCLDFR, PRRS ) - ! +! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KRR ! Number of moist variables -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HTURBDIM ! Dimensionality of the @@ -56,7 +58,7 @@ END INTERFACE ! END MODULE MODI_C2R2_ADJUST ! ########################################################################## - SUBROUTINE C2R2_ADJUST(KRR, HFMFILE, HLUOUT, HRAD, & + SUBROUTINE C2R2_ADJUST(KRR, TPFILE, HLUOUT, HRAD, & HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP, & PRHODJ, PSIGS, PPABST, & PTHS, PRVS, PRCS, PCNUCS, & @@ -157,6 +159,7 @@ USE MODD_PARAMETERS USE MODD_CST USE MODD_CONF USE MODD_BUDGET +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_NSV, ONLY : NSV_C2R2BEG ! USE MODI_CONDENS @@ -172,7 +175,7 @@ IMPLICIT NONE ! ! INTEGER, INTENT(IN) :: KRR ! Number of moist variables -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HTURBDIM ! Dimensionality of the @@ -220,6 +223,7 @@ INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: JITER,ITERMAX ! iterative loop for first order adjustment INTEGER :: ILUOUT ! Logical unit of output listing +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! Comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file !------------------------------------------------------------------------------- @@ -227,6 +231,8 @@ CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file !* 1. PRELIMINARIES ! ------------- ! +YFMFILE = TPFILE%CNAME +! CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP) ZEPS= XMV / XMD ! @@ -426,7 +432,7 @@ IF ( OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_NEB (0)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZW1,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZW1,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90 index a59a5c939..7425b458a 100644 --- a/src/MNH/compute_r00.f90 +++ b/src/MNH/compute_r00.f90 @@ -13,16 +13,18 @@ ! ############################### ! INTERFACE -SUBROUTINE COMPUTE_R00(HFMFILE) +SUBROUTINE COMPUTE_R00(TPFILE) ! -CHARACTER (LEN=28), INTENT(IN) :: HFMFILE ! name of the OUTPUT FM-file +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! END SUBROUTINE COMPUTE_R00 END INTERFACE END MODULE MODI_COMPUTE_R00 ! ! ############################### - SUBROUTINE COMPUTE_R00(HFMFILE) + SUBROUTINE COMPUTE_R00(TPFILE) ! ############################### ! !!**** @@ -65,6 +67,7 @@ END MODULE MODI_COMPUTE_R00 ! USE MODD_FIELD_n USE MODD_GRID_n +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LUNIT_n USE MODD_GRID_n USE MODD_STO_FILE @@ -87,7 +90,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER (LEN=28), INTENT(IN) :: HFMFILE ! name of the OUTPUT FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! !* 0.2 declarations of local variables ! @@ -98,8 +101,9 @@ INTEGER :: ININAR ! number of articles present in ! the LFIFM file INTEGER :: ITYPE ! type of file (conv2dia and transfer) ! -CHARACTER (LEN=100) :: YCOMMENT -CHARACTER (LEN=16) :: YRECFM +CHARACTER(LEN=100) :: YCOMMENT +CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write +CHARACTER(LEN=16) :: YRECFM INTEGER :: IFILECUR,JFILECUR,NIU,NJU,NKU,IGRID,ILENCH INTEGER :: NFILES,JLOOP REAL :: ZXOR,ZYOR,ZDX,ZDY @@ -132,6 +136,8 @@ ITYPE=2 ZSPVAL=-1.E+11 IKU=SIZE(XZHAT) ! +YFMFILE = TPFILE%CNAME +! !------------------------------------------------------------------------------- ! !* 2.0 FIND THE FILE TO BE TREATED AND THE INIT-SV FILES @@ -298,7 +304,7 @@ DO JFILECUR=1,NFILES YCOMMENT=YCOMMENT(1:10)//YDATE//' (KM)' PRINT *,'YCOMMENT = ',YCOMMENT ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZX00(:,:,:),IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZX00(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! WRITE(YRECFM,'(A2,I2.2)')'Y0',INBR_START @@ -306,7 +312,7 @@ DO JFILECUR=1,NFILES YCOMMENT=YCOMMENT(1:10)//YDATE//' (KM)' PRINT *,'YCOMMENT = ',YCOMMENT ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZY00(:,:,:),IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZY00(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! WRITE(YRECFM,'(A2,I2.2)')'Z0',INBR_START @@ -314,7 +320,7 @@ DO JFILECUR=1,NFILES YCOMMENT=YCOMMENT(1:10)//YDATE//' (KM)' PRINT *,'YCOMMENT = ',YCOMMENT ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZZ00(:,:,:),IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZZ00(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) END IF ! @@ -338,7 +344,7 @@ DO JFILECUR=1,NFILES YCOMMENT=YCOMMENT(1:11)//YDATE//' (K)' PRINT *,'YCOMMENT = ',YCOMMENT ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY', & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY', & ZWORK1(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ! @@ -347,7 +353,7 @@ DO JFILECUR=1,NFILES YCOMMENT=YCOMMENT(1:11)//YDATE//' (G/KG)' PRINT *,'YCOMMENT = ',YCOMMENT ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY', & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY', & ZWORK2(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) ENDIF diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index c4389ab79..3b06c8376 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -171,7 +171,6 @@ IMPLICIT NONE TYPE(DATE_TIME) :: TXDTBAL ! current time and date for BALLOON and AIRCRAFT trajectories CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file CHARACTER (LEN=28), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file -CHARACTER (LEN=28) :: YFMFILE ! name of the OUTPUT FM-file CHARACTER (LEN=5) :: YSUFFIX ! character string for the OUTPUT FM-file number CHARACTER (LEN=4) :: YRAD ! initial flag to call to radiation schemes CHARACTER (LEN=4) :: YDCONV ! initial flag to call to deep convection schemes @@ -446,10 +445,9 @@ IF ( LEN_TRIM(CINIFILE)==0 ) THEN ENDIF ! INPRAR = 24 +2*(4+NRR+NSV) -YFMFILE=ADJUSTL(ADJUSTR(CINIFILE)//YSUFFIX) -COUTFMFILE=YFMFILE +COUTFMFILE=TRIM(CINIFILE)//YSUFFIX ! -TZFILE%CNAME = TRIM(YFMFILE) +TZFILE%CNAME = TRIM(CINIFILE)//YSUFFIX TZFILE%CTYPE = 'DIAG' IF (LCDF4) THEN IF (.NOT.LLFIOUT) THEN @@ -716,8 +714,8 @@ ZCHEM=0. XTIME_LES=0. XTIME_LES_BU_PROCESS=0. XTIME_BU_PROCESS=0. -CALL PHYS_PARAM_n(1,YFMFILE,GCLOSE_OUT, & - ZRAD,ZSHADOWS,ZDCONV,ZGROUND,ZMAFL,ZDRAG, & +CALL PHYS_PARAM_n(1,TZFILE,GCLOSE_OUT, & + ZRAD,ZSHADOWS,ZDCONV,ZGROUND,ZMAFL,ZDRAG, & ZTURB,ZTRACER, ZCHEM,ZTIME_BU,GMASKkids) WRITE(ILUOUT0,*) 'DIAG AFTER PHYS_PARAM1' ! @@ -755,7 +753,7 @@ ZTIME1=ZTIME2 ! !* 7.0 Stores other fields in MESONH files if necessary ! -CALL WRITE_LFIFM1_FOR_DIAG_SUPP(YFMFILE) +CALL WRITE_LFIFM1_FOR_DIAG_SUPP(TZFILE) WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) 'DIAG AFTER WRITE_LFIFM1_FOR_DIAG_SUPP' ! @@ -766,7 +764,7 @@ ZTIME1=ZTIME2 ! !* 8.0 Initial positions computation (back into simulation segments) ! -IF (LTRAJ .AND. JF/=1) CALL COMPUTE_R00(YFMFILE) +IF (LTRAJ .AND. JF/=1) CALL COMPUTE_R00(TZFILE) ! CALL SECOND_MNH2(ZTIME2) ZTRAJ =ZTIME2-ZTIME1 diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90 index d4b667566..e76310acc 100644 --- a/src/MNH/khko_notadjust.f90 +++ b/src/MNH/khko_notadjust.f90 @@ -14,16 +14,17 @@ ! INTERFACE ! - SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, HFMFILE, HLUOUT, HRAD, OCLOSE_OUT, & + SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, TPFILE, HLUOUT, HRAD, OCLOSE_OUT, & PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ, & PTHT,PRVT,PRCT,PRRT, & PTHS, PRVS, PRCS, PRRS, PCCS, PCNUCS, PSAT, & PCLDFR, PSRCS, PNPRO,PSSPRO ) - - ! +! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KTCOUNT ! Number of moist variables -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HRAD ! Radiation scheme name @@ -66,7 +67,7 @@ END INTERFACE END MODULE MODI_KHKO_NOTADJUST ! ! ################################################################################ - SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, HFMFILE, HLUOUT, HRAD, OCLOSE_OUT, & + SUBROUTINE KHKO_NOTADJUST(KRR, KTCOUNT, TPFILE, HLUOUT, HRAD, OCLOSE_OUT, & PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ, & PTHT,PRVT,PRCT,PRRT, & PTHS, PRVS, PRCS, PRRS, PCCS, PCNUCS, PSAT, & @@ -105,6 +106,7 @@ USE MODD_PARAMETERS USE MODD_CST USE MODD_CONF USE MODD_BUDGET +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_NSV, ONLY : NSV_C2R2BEG USE MODD_RAIN_C2R2_DESCR, ONLY : XRTMIN @@ -122,7 +124,7 @@ IMPLICIT NONE ! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KTCOUNT ! Number of moist variables -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HRAD ! Radiation scheme name @@ -166,6 +168,7 @@ INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: ILUOUT ! Logical unit of output listing +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! Comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file @@ -198,6 +201,8 @@ INTEGER :: JK ! For loop !* 1. PRELIMINARIES ! ------------- ! +YFMFILE = TPFILE%CNAME +! CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB=1+JPVEXT @@ -395,12 +400,12 @@ IF ( OCLOSE_OUT ) THEN YRECFM ='SURSAT' YCOMMENT='X_Y_Z_NEB (0)' IGRID = 1 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) ILENCH=LEN(YCOMMENT) YRECFM ='ACT_OD' YCOMMENT='X_Y_Z_NEB (0)' IGRID = 1 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZACT,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZACT,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! !* 7. STORE THE BUDGET TERMS diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90 index 02450c133..c7b2ab442 100644 --- a/src/MNH/lima_adjust.f90 +++ b/src/MNH/lima_adjust.f90 @@ -4,15 +4,17 @@ ! INTERFACE ! - SUBROUTINE LIMA_ADJUST(KRR, KMI, HFMFILE, HLUOUT, HRAD, & + SUBROUTINE LIMA_ADJUST(KRR, KMI, TPFILE, HLUOUT, HRAD, & HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP, & PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, & PRT, PRS, PSVT, PSVS, & PTHS, PSRCS, PCLDFR ) - ! +! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HTURBDIM ! Dimensionality of the @@ -54,7 +56,7 @@ END INTERFACE END MODULE MODI_LIMA_ADJUST ! ! ########################################################################## - SUBROUTINE LIMA_ADJUST(KRR, KMI, HFMFILE, HLUOUT, HRAD, & + SUBROUTINE LIMA_ADJUST(KRR, KMI, TPFILE, HLUOUT, HRAD, & HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP, & PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, & PRT, PRS, PSVT, PSVS, & @@ -137,6 +139,7 @@ END MODULE MODI_LIMA_ADJUST USE MODD_PARAMETERS USE MODD_CST USE MODD_CONF +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAM_LIMA USE MODD_PARAM_LIMA_WARM USE MODD_PARAM_LIMA_COLD @@ -158,7 +161,7 @@ IMPLICIT NONE ! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HTURBDIM ! Dimensionality of the @@ -263,6 +266,7 @@ INTEGER :: IIB,IJB ! Horz index values of the first inner ma INTEGER :: IIE,IJE ! Horz index values of the last inner mass points INTEGER :: JITER,ITERMAX ! iterative loop for first order adjustment INTEGER :: ILUOUT ! Logical unit of output listing +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! Comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -281,6 +285,8 @@ INTEGER , DIMENSION(3) :: BV !* 1. PRELIMINARIES ! ------------- ! +YFMFILE = TPFILE%CNAME +! CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP) ! IIB = 1 + JPHEXT @@ -1125,7 +1131,7 @@ IF ( OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_NEB (0)' IGRID = 1 ILENG = SIZE(ZW,1)*SIZE(ZW,2)*SIZE(ZW,3) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! @@ -1175,7 +1181,7 @@ IF ( OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_SSI' IGRID = 1 ILENG = SIZE(ZW,1)*SIZE(ZW,2)*SIZE(ZW,3) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZW,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! diff --git a/src/MNH/lima_cold.f90 b/src/MNH/lima_cold.f90 index fe9e92e6b..13b135498 100644 --- a/src/MNH/lima_cold.f90 +++ b/src/MNH/lima_cold.f90 @@ -3,12 +3,12 @@ ! ##################### ! INTERFACE - SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PW_NU, & - PTHM, PPABSM, & - PTHT, PRT, PSVT, & - PTHS, PRS, PSVS, & + SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PW_NU, & + PTHM, PPABSM, & + PTHT, PRT, PSVT, & + PTHS, PRS, PSVS, & PINPRS, PINPRG, PINPRH) ! LOGICAL, INTENT(IN) :: OSEDI ! switch to activate the @@ -19,11 +19,6 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time step REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp INTEGER, INTENT(IN) :: KRR ! Number of moist variables ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) @@ -53,15 +48,15 @@ END SUBROUTINE LIMA_COLD END INTERFACE END MODULE MODI_LIMA_COLD ! -! ###################################################################### - SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PW_NU, & - PTHM, PPABSM, & - PTHT, PRT, PSVT, & - PTHS, PRS, PSVS, & +! ############################################################ + SUBROUTINE LIMA_COLD (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PW_NU, & + PTHM, PPABSM, & + PTHT, PRT, PSVT, & + PTHS, PRS, PSVS, & PINPRS, PINPRG, PINPRH) -! ###################################################################### +! ############################################################ ! !! !! PURPOSE @@ -132,11 +127,6 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time step REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp INTEGER, INTENT(IN) :: KRR ! Number of moist variables ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) @@ -303,7 +293,6 @@ END IF ! ------------------------------------- ! CALL LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODJ, PRHODREF, & PRIT, PCIT, & PRIS, PRSS, PRGS, PRHS, PCIS, & @@ -320,23 +309,23 @@ IF (LNUCL) THEN IF ( LMEYERS ) THEN PIFS(:,:,:,:) = 0.0 PNIS(:,:,:,:) = 0.0 - CALL LIMA_MEYERS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, & - PTHS, PRVS, PRCS, PRIS, & + CALL LIMA_MEYERS (OHHONI, PTSTEP, KMI, & + PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, & + PTHS, PRVS, PRCS, PRIS, & PCCS, PCIS, PINS ) ELSE - CALL LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PTHS, PRVS, PRCS, PRIS, & - PCIT, PCCS, PCIS, & + CALL LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, & + PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & + PTHS, PRVS, PRCS, PRIS, & + PCIT, PCCS, PCIS, & PNAS, PIFS, PINS, PNIS ) END IF ! IF (LWARM) THEN CALL LIMA_COLD_HOM_NUCL (OHHONI, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, & + PZZ, PRHODJ, & PRHODREF, PEXNREF, PPABST, PW_NU, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRCS, PRRS, PRIS, PRGS, & @@ -355,8 +344,7 @@ END IF ! IF (LSNOW) THEN ! - CALL LIMA_COLD_SLOW_PROCESSES(PTSTEP, KMI, HFMFILE, HLUOUT, & - OCLOSE_OUT, PZZ, PRHODJ, & + CALL LIMA_COLD_SLOW_PROCESSES(PTSTEP, KMI, PZZ, PRHODJ, & PRHODREF, PEXNREF, PPABST, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRIS, PRSS, & diff --git a/src/MNH/lima_cold_hom_nucl.f90 b/src/MNH/lima_cold_hom_nucl.f90 index fb50b8ace..fccb8e7f0 100644 --- a/src/MNH/lima_cold_hom_nucl.f90 +++ b/src/MNH/lima_cold_hom_nucl.f90 @@ -4,7 +4,7 @@ ! INTERFACE SUBROUTINE LIMA_COLD_HOM_NUCL (OHHONI, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, & + PZZ, PRHODJ, & PRHODREF, PEXNREF, PPABST, PW_NU, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRCS, PRRS, PRIS, PRGS, & @@ -16,12 +16,6 @@ LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp -! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF! Reference density @@ -64,7 +58,7 @@ END MODULE MODI_LIMA_COLD_HOM_NUCL ! ! ###################################################################### SUBROUTINE LIMA_COLD_HOM_NUCL (OHHONI, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, & + PZZ, PRHODJ, & PRHODREF, PEXNREF, PPABST, PW_NU, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRCS, PRRS, PRIS, PRGS, & @@ -123,12 +117,6 @@ LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp -! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF! Reference density diff --git a/src/MNH/lima_cold_sedimentation.f90 b/src/MNH/lima_cold_sedimentation.f90 index de72fd6f3..f71b9eef2 100644 --- a/src/MNH/lima_cold_sedimentation.f90 +++ b/src/MNH/lima_cold_sedimentation.f90 @@ -4,7 +4,6 @@ ! INTERFACE SUBROUTINE LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODJ, PRHODREF, & PRIT, PCIT, & PRIS, PRSS, PRGS, PRHS, PCIS, & @@ -16,11 +15,6 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time ste ! for ice sedimendation REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the FM file output ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian (Budgets) @@ -45,7 +39,6 @@ END MODULE MODI_LIMA_COLD_SEDIMENTATION ! ! ###################################################################### SUBROUTINE LIMA_COLD_SEDIMENTATION (OSEDI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODJ, PRHODREF, & PRIT, PCIT, & PRIS, PRSS, PRGS, PRHS, PCIS, & @@ -106,11 +99,6 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time ste ! for ice sedimendation REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the FM file output ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian (Budgets) diff --git a/src/MNH/lima_cold_slow_processes.f90 b/src/MNH/lima_cold_slow_processes.f90 index bdbb4c64e..963a2b926 100644 --- a/src/MNH/lima_cold_slow_processes.f90 +++ b/src/MNH/lima_cold_slow_processes.f90 @@ -3,22 +3,15 @@ ! ##################### ! INTERFACE - SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, HFMFILE, HLUOUT, & - OCLOSE_OUT, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, & + SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PTHS, PRVS, PRIS, PRSS, & - PCIT, PCIS ) + PTHS, PRVS, PRIS, PRSS, & + PCIT, PCIS ) ! REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp -! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF! Reference density @@ -46,14 +39,13 @@ END SUBROUTINE LIMA_COLD_SLOW_PROCESSES END INTERFACE END MODULE MODI_LIMA_COLD_SLOW_PROCESSES ! -! ###################################################################### - SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, HFMFILE, HLUOUT, & - OCLOSE_OUT, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, & +! ################################################################################ + SUBROUTINE LIMA_COLD_SLOW_PROCESSES (PTSTEP, KMI, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, & PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PTHS, PRVS, PRIS, PRSS, & - PCIT, PCIS ) -! ###################################################################### + PTHS, PRVS, PRIS, PRSS, & + PCIT, PCIS ) +! ################################################################################ ! !! PURPOSE !! ------- @@ -112,12 +104,6 @@ IMPLICIT NONE REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp -! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF! Reference density diff --git a/src/MNH/lima_meyers.f90 b/src/MNH/lima_meyers.f90 index 1751a96eb..de2e06335 100644 --- a/src/MNH/lima_meyers.f90 +++ b/src/MNH/lima_meyers.f90 @@ -3,20 +3,15 @@ ! ####################### ! INTERFACE - SUBROUTINE LIMA_MEYERS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, & - PTHS, PRVS, PRCS, PRIS, & + SUBROUTINE LIMA_MEYERS (OHHONI, PTSTEP, KMI, & + PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, & + PTHS, PRVS, PRCS, PRIS, & PCCS, PCIS, PINS ) ! LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian @@ -50,13 +45,13 @@ END SUBROUTINE LIMA_MEYERS END INTERFACE END MODULE MODI_LIMA_MEYERS ! -! ###################################################################### - SUBROUTINE LIMA_MEYERS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, & - PTHS, PRVS, PRCS, PRIS, & +! ########################################################################### + SUBROUTINE LIMA_MEYERS (OHHONI, PTSTEP, KMI, & + PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, PCCT, & + PTHS, PRVS, PRCS, PRIS, & PCCS, PCIS, PINS ) -! ###################################################################### +! ########################################################################### !! !! PURPOSE !! ------- @@ -131,11 +126,6 @@ IMPLICIT NONE LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian diff --git a/src/MNH/lima_mixed.f90 b/src/MNH/lima_mixed.f90 index e557a1c3f..ea9c1bee5 100644 --- a/src/MNH/lima_mixed.f90 +++ b/src/MNH/lima_mixed.f90 @@ -3,12 +3,12 @@ ! ###################### ! INTERFACE - SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PW_NU, & - PTHM, PPABSM, & - PTHT, PRT, PSVT, & - PTHS, PRS, PSVS ) + SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PW_NU, & + PTHM, PPABSM, & + PTHT, PRT, PSVT, & + PTHS, PRS, PSVS ) ! LOGICAL, INTENT(IN) :: OSEDI ! switch to activate the ! cloud ice sedimentation @@ -18,11 +18,6 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time step REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp INTEGER, INTENT(IN) :: KRR ! Number of moist variables ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) @@ -49,14 +44,14 @@ END SUBROUTINE LIMA_MIXED END INTERFACE END MODULE MODI_LIMA_MIXED ! -! ####################################################################### - SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PW_NU, & - PTHM, PPABSM, & - PTHT, PRT, PSVT, & - PTHS, PRS, PSVS ) -! ####################################################################### +! ############################################################# + SUBROUTINE LIMA_MIXED (OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PW_NU, & + PTHM, PPABSM, & + PTHT, PRT, PSVT, & + PTHS, PRS, PSVS ) +! ############################################################# ! !! !! PURPOSE @@ -129,11 +124,6 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time step REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp INTEGER, INTENT(IN) :: KRR ! Number of moist variables ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) diff --git a/src/MNH/lima_phillips.f90 b/src/MNH/lima_phillips.f90 index f0674dc86..ce5cebc46 100644 --- a/src/MNH/lima_phillips.f90 +++ b/src/MNH/lima_phillips.f90 @@ -3,21 +3,16 @@ ! ######################### ! INTERFACE - SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PTHS, PRVS, PRCS, PRIS, & - PCIT, PCCS, PCIS, & + SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, & + PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & + PTHS, PRVS, PRCS, PRIS, & + PCIT, PCCS, PCIS, & PNAS, PIFS, PINS, PNIS ) ! LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian @@ -58,14 +53,14 @@ END SUBROUTINE LIMA_PHILLIPS END INTERFACE END MODULE MODI_LIMA_PHILLIPS ! -! ###################################################################### - SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & - PTHS, PRVS, PRCS, PRIS, & - PCIT, PCCS, PCIS, & +! ##################################################################### + SUBROUTINE LIMA_PHILLIPS (OHHONI, PTSTEP, KMI, & + PZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & + PTHS, PRVS, PRCS, PRIS, & + PCIT, PCCS, PCIS, & PNAS, PIFS, PINS, PNIS ) -! ###################################################################### +! ##################################################################### !! !! PURPOSE !! ------- @@ -146,11 +141,6 @@ IMPLICIT NONE LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! Dry density * Jacobian diff --git a/src/MNH/lima_warm.f90 b/src/MNH/lima_warm.f90 index ef46126cc..6c3562aea 100644 --- a/src/MNH/lima_warm.f90 +++ b/src/MNH/lima_warm.f90 @@ -3,13 +3,13 @@ ! ##################### ! INTERFACE - SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,& - PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST, & - PTHM, PRCM, & - PTHT, PRT, PSVT, & - PTHS, PRS, PSVS, & - PINPRC, PINPRR, PINPRR3D, PEVAP3D ) + SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST, & + PTHM, PRCM, & + PTHT, PRT, PSVT, & + PTHS, PRS, PSVS, & + PINPRC, PINPRR, PINPRR3D, PEVAP3D ) ! LOGICAL, INTENT(IN) :: OACTIT ! Switch to activate the ! activation by radiative @@ -23,11 +23,6 @@ INTEGER, INTENT(IN) :: KSPLITR ! Number of small time ste REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp INTEGER, INTENT(IN) :: KRR ! Number of moist variables ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) @@ -62,15 +57,15 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PEVAP3D ! Rain evap profile END SUBROUTINE LIMA_WARM END INTERFACE END MODULE MODI_LIMA_WARM -! ##################################################################### - SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,& - PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST, & - PTHM, PRCM, & - PTHT, PRT, PSVT, & - PTHS, PRS, PSVS, & - PINPRC, PINPRR, PINPRR3D, PEVAP3D ) -! ##################################################################### +! ################################################################### + SUBROUTINE LIMA_WARM (OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PW_NU, PPABSM, PPABST, & + PTHM, PRCM, & + PTHT, PRT, PSVT, & + PTHS, PRS, PSVS, & + PINPRC, PINPRR, PINPRR3D, PEVAP3D ) +! ################################################################### ! !! !! PURPOSE @@ -160,11 +155,6 @@ INTEGER, INTENT(IN) :: KSPLITR ! Number of small time ste REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp INTEGER, INTENT(IN) :: KRR ! Number of moist variables ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) @@ -304,7 +294,6 @@ ZTM(:,:,:) = PTHM(:,:,:) * (PPABSM(:,:,:)/XP00)**(XRD/XCPD) ! ! CALL LIMA_WARM_SEDIM (OSEDC, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODREF, PPABST, ZT, & ZWLBDC, & PRCT, PRRT, PCCT, PCRT, & @@ -331,10 +320,10 @@ END IF ! IF (LACTI) THEN ! - CALL LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,& - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & - PRCM, PRVT, PRCT, PRRT, & - PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) + CALL LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, & + PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & + PRCM, PRVT, PRCT, PRRT, & + PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) ! IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:)*PRHODJ(:,:,:),4,'HENU_BU_RTH') IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6,'HENU_BU_RRV') @@ -357,7 +346,7 @@ END IF ! LACTI ! --------------------- ! ! - CALL LIMA_WARM_COAL (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & + CALL LIMA_WARM_COAL (PTSTEP, KMI, & PRHODREF, ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & PRCT, PRRT, PCCT, PCRT, & PRCS, PRRS, PCCS, PCRS, & @@ -372,12 +361,12 @@ END IF ! LACTI ! IF (ORAIN) THEN ! - CALL LIMA_WARM_EVAP (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PRHODREF, PEXNREF, PPABST, ZT, & - ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & - PRVT, PRCT, PRRT, PCRT, & - PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, & - PEVAP3D ) + CALL LIMA_WARM_EVAP (PTSTEP, KMI, & + PRHODREF, PEXNREF, PPABST, ZT, & + ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & + PRVT, PRCT, PRRT, PCRT, & + PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, & + PEVAP3D ) ! IF (LBUDGET_RV) CALL BUDGET (PRVS(:,:,:)*PRHODJ(:,:,:),6 ,'REVA_BU_RRV') IF (LBUDGET_RC) CALL BUDGET (PRCS(:,:,:)*PRHODJ(:,:,:),7 ,'REVA_BU_RRC') diff --git a/src/MNH/lima_warm_coal.f90 b/src/MNH/lima_warm_coal.f90 index db696298c..727062763 100644 --- a/src/MNH/lima_warm_coal.f90 +++ b/src/MNH/lima_warm_coal.f90 @@ -3,7 +3,7 @@ ! ########################## ! INTERFACE - SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & + SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI, & PRHODREF, ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & PRCT, PRRT, PCCT, PCRT, & PRCS, PRRS, PCCS, PCRS, & @@ -12,11 +12,6 @@ INTERFACE REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density ! @@ -41,7 +36,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ END INTERFACE END MODULE MODI_LIMA_WARM_COAL ! ############################################################################# - SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & + SUBROUTINE LIMA_WARM_COAL (PTSTEP, KMI, & PRHODREF, ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & PRCT, PRRT, PCCT, PCRT, & PRCS, PRRS, PCCS, PCRS, & @@ -118,11 +113,6 @@ IMPLICIT NONE REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density ! diff --git a/src/MNH/lima_warm_evap.f90 b/src/MNH/lima_warm_evap.f90 index 09a90d093..a4881ffb3 100644 --- a/src/MNH/lima_warm_evap.f90 +++ b/src/MNH/lima_warm_evap.f90 @@ -3,21 +3,16 @@ ! ########################## ! INTERFACE - SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PRHODREF, PEXNREF, PPABST, ZT, & - ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & - PRVT, PRCT, PRRT, PCRT, & - PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, & + SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI, & + PRHODREF, PEXNREF, PPABST, ZT, & + ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & + PRVT, PRCT, PRRT, PCRT, & + PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, & PEVAP3D) ! REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function @@ -47,14 +42,14 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PEVAP3D ! Rain evap profile END SUBROUTINE LIMA_WARM_EVAP END INTERFACE END MODULE MODI_LIMA_WARM_EVAP -! ############################################################################# - SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT, & - PRHODREF, PEXNREF, PPABST, ZT, & - ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & - PRVT, PRCT, PRRT, PCRT, & - PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, & +! ################################################################ + SUBROUTINE LIMA_WARM_EVAP (PTSTEP, KMI, & + PRHODREF, PEXNREF, PPABST, ZT, & + ZWLBDC3, ZWLBDC, ZWLBDR3, ZWLBDR, & + PRVT, PRCT, PRRT, PCRT, & + PRVS, PRCS, PRRS, PCCS, PCRS, PTHS, & PEVAP3D) -! ############################################################################# +! ################################################################ ! !! !! PURPOSE @@ -93,11 +88,6 @@ IMPLICIT NONE REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90 index 165ac242d..7415ceda0 100644 --- a/src/MNH/lima_warm_nucl.f90 +++ b/src/MNH/lima_warm_nucl.f90 @@ -3,10 +3,10 @@ ! ########################## ! INTERFACE - SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,& - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & - PRCM, PRVT, PRCT, PRRT, & - PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) + SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, & + PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & + PRCM, PRVT, PRCT, PRRT, & + PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) ! LOGICAL, INTENT(IN) :: OACTIT ! Switch to activate the ! activation by radiative @@ -14,11 +14,6 @@ LOGICAL, INTENT(IN) :: OACTIT ! Switch to activate the REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the output FM file ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function @@ -46,12 +41,12 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNAS ! CCN C. activated source END SUBROUTINE LIMA_WARM_NUCL END INTERFACE END MODULE MODI_LIMA_WARM_NUCL -! ############################################################################# - SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, HFMFILE, HLUOUT, OCLOSE_OUT,& - PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & - PRCM, PRVT, PRCT, PRRT, & - PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) -! ############################################################################# +! ####################################################################### + SUBROUTINE LIMA_WARM_NUCL (OACTIT, PTSTEP, KMI, & + PRHODREF, PEXNREF, PPABST, ZT, ZTM, PW_NU, & + PRCM, PRVT, PRCT, PRRT, & + PTHS, PRVS, PRCS, PCCS, PNFS, PNAS ) +! ####################################################################### ! !! !! PURPOSE @@ -119,11 +114,6 @@ LOGICAL, INTENT(IN) :: OACTIT ! Switch to activate the REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the output FM file ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF ! Reference Exner function diff --git a/src/MNH/lima_warm_sedim.f90 b/src/MNH/lima_warm_sedim.f90 index fc67bd955..33c399c81 100644 --- a/src/MNH/lima_warm_sedim.f90 +++ b/src/MNH/lima_warm_sedim.f90 @@ -4,7 +4,6 @@ ! INTERFACE SUBROUTINE LIMA_WARM_SEDIM (OSEDC, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODREF, PPABST, ZT, & ZWLBDC, & PRCT, PRRT, PCCT, PCRT, & @@ -18,11 +17,6 @@ INTEGER, INTENT(IN) :: KSPLITR ! Number of small time ste REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density @@ -50,7 +44,6 @@ END INTERFACE END MODULE MODI_LIMA_WARM_SEDIM ! ##################################################################### SUBROUTINE LIMA_WARM_SEDIM (OSEDC, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODREF, PPABST, ZT, & ZWLBDC, & PRCT, PRRT, PCCT, PCRT, & @@ -118,11 +111,6 @@ INTEGER, INTENT(IN) :: KSPLITR ! Number of small time ste REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of - ! the tput FM fileoutp ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 23a9bf6d5..67536d145 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -280,7 +280,7 @@ USE MODD_LUNIT USE MODD_GRID, ONLY: XLONORI,XLATORI USE MODD_SERIES, ONLY: LSERIES USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI -USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX +USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX,TFILE_DUMMY ! USE MODD_SUB_MODEL_n USE MODD_GET_n @@ -420,9 +420,7 @@ INTEGER :: ILUOUT ! Logical unit number for the output listing INTEGER :: IIU,IJU,IKU ! array size in first, second and third dimensions INTEGER :: IIB,IIE,IJB,IJE,IKB,IKE ! index values for the physical subdomain INTEGER :: JSV,JRR ! Loop index for scalar and moist variables -CHARACTER (LEN=28) :: YFMFILE ! name of the OUTPUT FM-file CHARACTER (LEN=28) :: YDADFILE ! name of the corresponding DAD model OUTPUT FM-file -CHARACTER (LEN=32) :: YDESFM ! name of the desfm part of this FM-file INTEGER :: INBVAR ! number of HALO2_lls to allocate INTEGER :: IRESP ! return code in FM routines INTEGER :: IINFO_ll ! return code of parallel routine @@ -528,6 +526,9 @@ TYPE(TFILEDATA),POINTER :: TZBAKFILE, TZOUTFILE ! TYPE(TFILEDATA),SAVE :: TZDIACFILE !------------------------------------------------------------------------------- ! +TZBAKFILE=> NULL() +TZOUTFILE=> NULL() +! !* 0. MICROPHYSICAL SCHEME ! ------------------- SELECT CASE(CCLOUD) @@ -603,8 +604,7 @@ IF (KTCOUNT == 1) THEN ! CALL IO_FILE_OPEN_ll(TDIAFILE,CLUOUT,IRESP) ! - YDESFM=TRIM(TDIAFILE%CNAME)//'.des' - CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT) + CALL WRITE_DESFM_n(IMI,TRIM(TDIAFILE%CNAME)//'.des',CLUOUT) CALL WRITE_LFIFMN_FORDIACHRO_n(TDIAFILE) ! !* 1.4 Initialization of the list of fields for the halo updates @@ -902,25 +902,21 @@ IF (CSURF=='EXTE') CALL GOTO_SURFEX(IMI) ! ZTIME1 = ZTIME2 ! -YFMFILE=' ' IF (IBAK < NBAK_NUMB ) THEN IF (KTCOUNT == TBACKUPN(IBAK+1)%NSTEP) THEN IBAK=IBAK+1 GCLOSE_OUT=.TRUE. ! TZBAKFILE => TBACKUPN(IBAK)%TFILE - YFMFILE = TZBAKFILE%CNAME YDADFILE = TBACKUPN(IBAK)%CDADFILENAME IVERB = TZBAKFILE%NLFIVERB ! CALL IO_FILE_OPEN_ll(TZBAKFILE,CLUOUT,IRESP) ! - YDESFM=ADJUSTL(ADJUSTR(YFMFILE)//'.des') - ! - CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT) + CALL WRITE_DESFM_n(IMI,TRIM(TZBAKFILE%CNAME)//'.des',CLUOUT) CALL IO_WRITE_HEADER_NC4(TBACKUPN(IBAK)%TFILE,CLUOUT) CALL WRITE_LFIFM_n(TBACKUPN(IBAK)%TFILE,YDADFILE) - COUTFMFILE = YFMFILE + COUTFMFILE = TZBAKFILE%CNAME CALL MNHWRITE_ZS_DUMMY_n(TZBAKFILE) IF (CSURF=='EXTE') THEN TFILE_SURFEX => TZBAKFILE @@ -934,7 +930,7 @@ IF (IBAK < NBAK_NUMB ) THEN CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM) IF (IVERB>=5) THEN WRITE(UNIT=ILUOUT,FMT=*) '************************************' - WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(YFMFILE),' backup' + WRITE(UNIT=ILUOUT,FMT=*) '*** Lagrangian variables refreshed after ',TRIM(TZBAKFILE%CNAME),' backup' WRITE(UNIT=ILUOUT,FMT=*) '************************************' END IF END IF @@ -943,7 +939,13 @@ IF (IBAK < NBAK_NUMB ) THEN CALL INI_MEAN_FIELD END IF ! + ELSE + !Necessary to have a 'valid' CNAME when calling some subroutines + TZBAKFILE => TFILE_DUMMY END IF +ELSE + !Necessary to have a 'valid' CNAME when calling some subroutines + TZBAKFILE => TFILE_DUMMY END IF ! IF (IOUT < NOUT_NUMB ) THEN @@ -1297,10 +1299,10 @@ XT_RELAX = XT_RELAX + ZTIME2 - ZTIME1 & ! ZTIME1 = ZTIME2 ! -!!Was called if MNH_NCWRIT: CALL WRITE_PHYS_PARAM(YFMFILE) -CALL PHYS_PARAM_n(KTCOUNT,YFMFILE, GCLOSE_OUT, & - XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL, & - XT_DRAG,XT_TURB,XT_TRACER, & +!!Was called if MNH_NCWRIT: CALL WRITE_PHYS_PARAM(TZBAKFILE%CNAME) +CALL PHYS_PARAM_n(KTCOUNT,TZBAKFILE, GCLOSE_OUT, & + XT_RAD,XT_SHADOWS,XT_DCONV,XT_GROUND,XT_MAFL, & + XT_DRAG,XT_TURB,XT_TRACER, & XT_CHEM,ZTIME,GMASKkids) ! IF (CDCONV/='NONE') THEN @@ -1444,14 +1446,14 @@ XTIME_LES_BU_PROCESS = 0. ! CALL MPPDB_CHECK3DM("before ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ",PRECISION,& & XUT, XVT, XWT, XTHT, XTKET,XRHODJ) - CALL ADVECTION_METSV ( CLUOUT, YFMFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, & - CMET_ADV_SCHEME, CSV_ADV_SCHEME, CCLOUD, NSPLIT, & - LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT, & - CLBCX, CLBCY, NRR, NSV, TDTCUR, XTSTEP, & - XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT, XPABST, & - XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY, & - XRTHS, XRRS, XRTKES, XRSVS, & - XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS ) + CALL ADVECTION_METSV ( CLUOUT, TZBAKFILE, GCLOSE_OUT,CUVW_ADV_SCHEME, & + CMET_ADV_SCHEME, CSV_ADV_SCHEME, CCLOUD, NSPLIT, & + LSPLIT_CFL, XSPLIT_CFL, LCFL_WRIT, & + CLBCX, CLBCY, NRR, NSV, TDTCUR, XTSTEP, & + XUT, XVT, XWT, XTHT, XRT, XTKET, XSVT, XPABST, & + XTHVREF, XRHODJ, XDXX, XDYY, XDZZ, XDZX, XDZY, & + XRTHS, XRRS, XRTKES, XRSVS, & + XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS ) CALL MPPDB_CHECK3DM("after ADVEC_METSV:XU/V/W/TH/TKE/T,XRHODJ ",PRECISION,& & XUT, XVT, XWT, XTHT, XTKET,XRHODJ) ! @@ -1533,7 +1535,7 @@ XT_ADVUVW = XT_ADVUVW + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCES !------------------------------------------------------------------------------- ! IF (NMODEL_CLOUD==IMI .AND. CTURBLEN_CLOUD/='NONE') THEN - CALL TURB_CLOUD_INDEX(XTSTEP,YFMFILE,CLUOUT, & + CALL TURB_CLOUD_INDEX(XTSTEP,TZBAKFILE,CLUOUT, & LTURB_DIAG,GCLOSE_OUT,NRRI, & XRRS,XRT,XRHODJ,XDXX,XDYY,XDZZ,XDZX,XDZY, & XCEI ) @@ -1644,7 +1646,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN CALL MNHGET_SURF_PARAM_n (PSEA=ZSEA(:,:),PTOWN=ZTOWN(:,:)) CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR, & NSPLITG, IMI, KTCOUNT, & - CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM, & + CLBCX,CLBCY,TZBAKFILE, CLUOUT, CRAD, CTURBDIM, & GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV,XTSTEP, & XZZ, XRHODJ, XRHODREF, XEXNREF, & XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM, & @@ -1661,7 +1663,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN ELSE CALL RESOLVED_CLOUD ( CCLOUD, CACTCCN, CSCONV, CMF_CLOUD, NRR, NSPLITR, & NSPLITG, IMI, KTCOUNT, & - CLBCX,CLBCY,YFMFILE, CLUOUT, CRAD, CTURBDIM, & + CLBCX,CLBCY,TZBAKFILE, CLUOUT, CRAD, CTURBDIM, & GCLOSE_OUT, LSUBG_COND,LSIGMAS,CSUBG_AUCV, & XTSTEP,XZZ, XRHODJ, XRHODREF, XEXNREF, & XPABST, XTHT,XRT,XSIGS,VSIGQSAT,XMFCONV,XTHM,XRCM, & diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90 index a646154c3..51f585ce3 100644 --- a/src/MNH/paspol.f90 +++ b/src/MNH/paspol.f90 @@ -9,19 +9,20 @@ INTERFACE ! SUBROUTINE PASPOL (PTSTEP, PSFSV, KLUOUT, KVERB, OCLOSE_OUT, & - HFMFILE, HLUOUT) + TPFILE, HLUOUT) +! +USE MODD_IO_ll, ONLY: TFILEDATA +! IMPLICIT NONE -REAL, INTENT(IN) :: PTSTEP ! Double timestep except - ! for the first time step (single one) -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSFSV ! surface flux of scalars -INTEGER, INTENT(IN) :: KLUOUT ! unit for output listing count -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: OCLOSE_OUT! conditional closure of the - ! OUTPUT FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n +! +REAL, INTENT(IN) :: PTSTEP ! Double timestep except + ! for the first time step (single one) +REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSFSV ! surface flux of scalars +INTEGER, INTENT(IN) :: KLUOUT ! unit for output listing count +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: OCLOSE_OUT ! conditional closure of the OUTPUT FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file +CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for model n ! END SUBROUTINE PASPOL ! @@ -30,7 +31,7 @@ END INTERFACE END MODULE MODI_PASPOL ! ######spl SUBROUTINE PASPOL (PTSTEP, PSFSV, KLUOUT, KVERB, OCLOSE_OUT, & - HFMFILE, HLUOUT) + TPFILE, HLUOUT) ! ############################################################ ! ! @@ -67,6 +68,7 @@ END MODULE MODI_PASPOL USE MODD_PARAMETERS USE MODD_NSV USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODE_GRIDPROJ USE MODD_PASPOL USE MODD_CTURB @@ -98,17 +100,14 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -REAL, INTENT(IN) :: PTSTEP ! Double timestep except - ! for the first time step (single one) -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSFSV ! surface flux of scalars -INTEGER, INTENT(IN) :: KLUOUT ! unit for output listing count -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: OCLOSE_OUT! conditional closure of the -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -! +REAL, INTENT(IN) :: PTSTEP ! Double timestep except + ! for the first time step (single one) +REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSFSV ! surface flux of scalars +INTEGER, INTENT(IN) :: KLUOUT ! unit for output listing count +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: OCLOSE_OUT ! conditional closure of the OUTPUT FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file +CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for model n ! !* 0.2 declarations of local variables ! @@ -146,6 +145,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTEMPO, ZSVT ! Work array INTEGER :: IGRID ! IGRID : grid indicator INTEGER :: ILENCH ! ILENCH : length of comment string ! +CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER(LEN=16) :: YRECFM ! Name of the article to be written CHARACTER(LEN=100):: YCOMMENT ! Comment string CHARACTER (LEN=2) :: YDIR ! Type of the data field @@ -161,6 +161,8 @@ INTEGER :: IRESP ! IRESP : return-code if a problem appears !* 0. Initialisation ! ! +YFMFILE = TPFILE%CNAME +! CALL GET_DIM_EXT_ll('B',IIU,IJU) CALL GET_PHYSICAL_ll (IIB,IJB,IIE,IJE) ! @@ -594,7 +596,7 @@ IF (OCLOSE_OUT) THEN WRITE(YRECFM,'(A3,I3.3)')'ATC',JSV+NSV_PPBEG-1 WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','ATC',JSV+NSV_PPBEG-1,' (1/M3) ' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZTEMPO,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZTEMPO,IGRID,ILENCH, & YCOMMENT,IRESP) END DO ENDIF diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index becf21fdf..a243c4440 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -9,14 +9,15 @@ ! INTERFACE ! - SUBROUTINE PHYS_PARAM_n(KTCOUNT,HFMFILE,OCLOSE_OUT, & + SUBROUTINE PHYS_PARAM_n(KTCOUNT,TPFILE,OCLOSE_OUT, & PRAD,PSHADOWS,PKAFR,PGROUND,PMAFL,PDRAG,PTURB,PTRACER,PCHEM, & PTIME_BU, OMASKkids ) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KTCOUNT ! temporal iteration count -CHARACTER (LEN=28),INTENT(IN) :: HFMFILE ! name of the synchronous - ! OUTPUT FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Synchronous output file LOGICAL, INTENT(IN) :: OCLOSE_OUT! conditional closure of the ! OUTPUT FM-file ! advection schemes @@ -34,7 +35,7 @@ END INTERFACE END MODULE MODI_PHYS_PARAM_n ! ! ###################################################################### - SUBROUTINE PHYS_PARAM_n(KTCOUNT,HFMFILE,OCLOSE_OUT, & + SUBROUTINE PHYS_PARAM_n(KTCOUNT,TPFILE,OCLOSE_OUT, & PRAD,PSHADOWS,PKAFR,PGROUND,PMAFL,PDRAG,PTURB,PTRACER,PCHEM, & PTIME_BU, OMASKkids ) ! ###################################################################### @@ -237,6 +238,7 @@ USE MODD_CST USE MODD_DYN USE MODD_CONF USE MODD_FRC +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_GRID USE MODD_NSV @@ -334,8 +336,7 @@ IMPLICIT NONE !* 0.1 declarations of arguments ! INTEGER, INTENT(IN) :: KTCOUNT ! temporal iteration count -CHARACTER (LEN=28),INTENT(IN) :: HFMFILE ! name of the synchronous - ! OUTPUT FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Synchronous output file LOGICAL, INTENT(IN) :: OCLOSE_OUT! conditional closure of the ! OUTPUT FM-file ! advection schemes @@ -720,7 +721,7 @@ CALL SUNPOS_n ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL ) XLWD(:,:,:)=0.0 XDTHRADSW(:,:,:)=0.0 XDTHRADLW(:,:,:)=0.0 - CALL RADIATIONS ( OCLOSE_OUT, HFMFILE, CLUOUT, & + CALL RADIATIONS ( OCLOSE_OUT, TPFILE, CLUOUT, & LCLEAR_SKY,GCLOUD_ONLY, NCLEARCOL_TM1,CEFRADL, CEFRADI,COPWSW,COPISW,& COPWLW,COPILW, XFUDG, & NDLON, NFLEV, NRAD_DIAG, NFLUX, NRAD, NAER,NSWB, NSTATM, NRAD_COLNBR,& @@ -1215,7 +1216,7 @@ END IF ! ZTIME1 = ZTIME2 ! -IF (LPASPOL) CALL PASPOL(XTSTEP, ZSFSV, ILUOUT, NVERB, OCLOSE_OUT, HFMFILE, CLUOUT ) +IF (LPASPOL) CALL PASPOL(XTSTEP, ZSFSV, ILUOUT, NVERB, OCLOSE_OUT, TPFILE, CLUOUT ) ! ! !* 4b. PASSIVE POLLUTANTS FOR MASS-FLUX SCHEME DIAGNOSTICS @@ -1350,7 +1351,7 @@ END IF CALL TURB(1,IKU,1,IMI,NRR, NRRL, NRRI, CLBCX, CLBCY, 1,NMODEL_CLOUD, & OCLOSE_OUT,LTURB_FLX,LTURB_DIAG,LSUBG_COND,LRMC01, & CTURBDIM,CTURBLEN,CTOM,CTURBLEN_CLOUD,CCLOUD,XIMPL, & - XTSTEP,HFMFILE,CLUOUT, & + XTSTEP,TPFILE,CLUOUT, & XDXX,XDYY,XDZZ,XDZX,XDZY,XZZ, & XDIRCOSXW,XDIRCOSYW,XDIRCOSZW,XCOSSLOPE,XSINSLOPE, & XRHODJ,XTHVREF,XRHODREF, & @@ -1400,11 +1401,11 @@ IF (CSCONV == 'EDKF') THEN CALL MPPDB_CHECK3D(ZEXN,"physparam.7::ZEXN",PRECISION) ! CALL SHALLOW_MF_PACK(NRR,NRRL,NRRI, CMF_UPDRAFT, CMF_CLOUD, LMIXUV, & - OCLOSE_OUT,LMF_FLX,HFMFILE,CLUOUT,ZTIME_LES_MF, & + OCLOSE_OUT,LMF_FLX,TPFILE,CLUOUT,ZTIME_LES_MF, & XIMPL_MF, XTSTEP, & XDZZ, XZZ, & XRHODJ, XRHODREF, XPABST, ZEXN, ZSFTH, ZSFRV, & - XTHT,XRT,XUT,XVT,XWT,XTKET,XSVT, & + XTHT,XRT,XUT,XVT,XWT,XTKET,XSVT, & XRTHS,XRRS,XRUS,XRVS,XRSVS, & ZSIGMF,XRC_MF, XRI_MF, XCF_MF, XWTHVMF) ! diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90 index 9fedcde5c..d7f5d9235 100644 --- a/src/MNH/prandtl.f90 +++ b/src/MNH/prandtl.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,& HTURBDIM, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF,PLOCPEXNM,PATHETA,PAMOIST, & PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, & @@ -27,6 +27,8 @@ INTERFACE PETHETA, PEMOIST ) ! ! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO @@ -38,8 +40,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some ! diagnostic fields in the syncronous FM-file CHARACTER*4 , INTENT(IN) :: HTURBDIM ! Kind of turbulence param. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY @@ -84,9 +85,9 @@ END MODULE MODI_PRANDTL ! ! ! ########################################################### - SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG, & + SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,& HTURBDIM, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF,PLOCPEXNM,PATHETA,PAMOIST, & PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, & @@ -201,6 +202,7 @@ END MODULE MODI_PRANDTL USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS ! USE MODI_GRADIENT_M @@ -226,8 +228,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some ! diagnostic fields in the syncronous FM-file CHARACTER*4 , INTENT(IN) :: HTURBDIM ! Kind of turbulence param. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY @@ -276,6 +277,7 @@ INTEGER :: IRESP ! Return code of FM routines INTEGER :: ILENG ! Length of the data field in LFIFM file INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file INTEGER:: ISV ! number of scalar variables @@ -285,6 +287,7 @@ INTEGER :: JLOOP REAL :: ZMINVAL ! --------------------------------------------------------------------------- ! +YFMFILE = TPFILE%CNAME ! !* 1. DEFAULT VALUES, 1D REDELSPERGER NUMBERS ! ---------------------------------------- @@ -528,35 +531,35 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_RED_TH1 (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PREDTH1,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PREDTH1,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the RED_R1 YRECFM ='RED_R1' YCOMMENT='X_Y_Z_RED_R1 (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PREDR1,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PREDR1,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the RED2_TH3 YRECFM ='RED2_TH3' YCOMMENT='X_Y_Z_RED2_TH3 (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2TH3,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRED2TH3,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the RED2_R3 YRECFM ='RED2_R3' YCOMMENT='X_Y_Z_RED2_R3 (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2R3,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRED2R3,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the RED2_THR3 YRECFM ='RED2_THR3' YCOMMENT='X_Y_Z_RED2_THR3 (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2THR3,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRED2THR3,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! !--------------------------------------------------------------------------- diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90 index 7b9798cb4..7587dd433 100644 --- a/src/MNH/radiations.f90 +++ b/src/MNH/radiations.f90 @@ -14,20 +14,21 @@ ! INTERFACE ! - SUBROUTINE RADIATIONS (OCLOSE_OUT,HFMFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY,& - KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW, & + SUBROUTINE RADIATIONS (OCLOSE_OUT,TPFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY, & + KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW, & PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB,KSTATM, & - KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & - PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & - PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT, & - PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ, & - PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW ) + KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & + PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & + PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT, & + PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ, & + PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW ) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! LOGICAL, INTENT(IN) :: OCLOSE_OUT! flag indicating that a FM ! file is opened during this ! time-step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OCLOUD_ONLY! flag for the cloud column @@ -81,7 +82,8 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! scalar variable ( C2R2 and C1R REAL, DIMENSION(:,:,:), POINTER :: POZON ! OZON field from clim. REAL, DIMENSION(:,:,:,:), POINTER :: PAER ! AERosols optical thickness from clim. REAL, DIMENSION(:,:,:,:), POINTER :: PDST_WL ! AERosols Extinction.by wavelength -REAL, DIMENSION(:,:,:,:), POINTER :: PAER_CLIM ! AERosols optical thickness from clim. ! note : the vertical dimension of +REAL, DIMENSION(:,:,:,:), POINTER :: PAER_CLIM ! AERosols optical thickness from clim. + ! note : the vertical dimension of ! these fields include the "radiation levels" ! above domain top ! @@ -110,16 +112,16 @@ END INTERFACE ! END MODULE MODI_RADIATIONS ! -! ####################################################################### - SUBROUTINE RADIATIONS (OCLOSE_OUT,HFMFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY,& - KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW, & +! ############################################################################ + SUBROUTINE RADIATIONS (OCLOSE_OUT,TPFILE,HLUOUT,OCLEAR_SKY,OCLOUD_ONLY, & + KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW, & PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB,KSTATM, & - KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & - PDIR_ALB, PSCA_ALB,PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & - PTHT, PRT, PPABST, POZON, PAER, PDST_WL, PAER_CLIM, PSVT, & - PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF, PRHODREF, PZZ, & - PRADEFF, PSWU, PSWD, PLWU,PLWD, PDTHRADSW, PDTHRADLW ) -! ####################################################################### + KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & + PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & + PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT, & + PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ, & + PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW ) +! ############################################################################ ! !!**** *RADIATIONS * - routine to call the SW and LW radiation calculations !! @@ -226,6 +228,7 @@ USE YOESW , ONLY : RTAUA ,RPIZA ,RCGA ! USE MODD_TIME USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_RAIN_ICE_DESCR USE MODD_NSV, ONLY : NSV_C2R2,NSV_C2R2BEG,NSV_C2R2END, & @@ -259,8 +262,7 @@ IMPLICIT NONE LOGICAL, INTENT(IN) :: OCLOSE_OUT! flag indicating that a FM ! file is opened during this ! time-step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OCLOUD_ONLY! flag for the cloud column @@ -606,6 +608,7 @@ INTEGER :: ILUOUT ! Logical unit number for output-listing INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL, DIMENSION(SIZE(PDTHRAD,1),SIZE(PDTHRAD,2),SIZE(PDTHRAD,3)) & @@ -627,6 +630,8 @@ INTEGER :: JAE ! loop on aerosol class !* 1. COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES ! ---------------------------------------------- ! +YFMFILE = TPFILE%CNAME +! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) ! this definition must be coherent with ! the one used in ini_radiations routine IKU = SIZE(PTHT,3) @@ -2588,7 +2593,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_DOWN (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2603,7 +2608,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_UP (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2618,7 +2623,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_LWF_DOWN (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2633,7 +2638,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_LWF_UP (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2648,7 +2653,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_LWF_NET (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2663,7 +2668,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_NET (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE DO JJ=IJB,IJE @@ -2676,7 +2681,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_DTRAD_LW (K/DAY)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE DO JJ=IJB,IJE @@ -2689,7 +2694,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_DTRAD_SW (K/DAY)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2701,7 +2706,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_RADSWD_VIS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2713,7 +2718,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_RADSWD_NIR' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2725,7 +2730,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_RADLWD' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! @@ -2744,7 +2749,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_DOWN_CS (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2759,7 +2764,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_UP_CS (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2774,7 +2779,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_LWF_DOWN (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2789,7 +2794,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_LWF_UP_CS (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2804,7 +2809,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_NET_CS (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2819,7 +2824,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SWF_NET_CS (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK-JPVEXT @@ -2834,7 +2839,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_DTRAD_SW_CS (K/DAY)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK-JPVEXT @@ -2849,7 +2854,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_DTRAD_LW_CS (K/DAY)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2861,7 +2866,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_RADSWD_VIS_CS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2873,7 +2878,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_RADSWD_NIR_CS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2885,7 +2890,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_RADLWD_CS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! @@ -2900,7 +2905,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_PLAN_ALB_VIS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2912,7 +2917,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_PLAN_ALB_NIR' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2924,7 +2929,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_PLAN_TRA_VIS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2936,7 +2941,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_PLAN_TRA_NIR' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2948,7 +2953,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_PLAN_ABS_VIS' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JJ=IJB,IJE DO JI=IIB,IIE @@ -2960,7 +2965,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_PLAN_ABS_NIR' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_2D,IGRID,ILENCH,YCOMMENT,IRESP) ! ! END IF @@ -2980,7 +2985,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_EFNEB_DOWN' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -2995,7 +3000,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_EFNEB_UP' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3010,7 +3015,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_FLWP' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3025,7 +3030,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_FIWP' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3040,7 +3045,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_RAD_microm' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3055,7 +3060,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_RAD_microm' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3070,7 +3075,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SW_NEB' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3085,7 +3090,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_LW_NEB' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! ! spectral bands IF (KSWB==6) THEN @@ -3106,17 +3111,17 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_OD_'//YBAND_NAME(JBAND) IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZTAUAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZTAUAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP) YRECFM = 'SSAAER_'//YBAND_NAME(JBAND) YCOMMENT = 'X_Y_Z_SSA_'//YBAND_NAME(JBAND) IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZPIZAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZPIZAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP) YRECFM = 'GAER_'//YBAND_NAME(JBAND) YCOMMENT = 'X_Y_Z_G_'//YBAND_NAME(JBAND) IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZCGAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZCGAZ(:,:,:,JBAND),IGRID,ILENCH,YCOMMENT,IRESP) ENDDO DO JBAND=1,KSWB @@ -3133,7 +3138,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_OTH_'//YBAND_NAME(JBAND) IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3148,7 +3153,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_SSA_'//YBAND_NAME(JBAND) IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! DO JK=IKB,IKE JKRAD = JK - JPVEXT @@ -3163,7 +3168,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_ASF_'//YBAND_NAME(JBAND) IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) END DO END IF ! @@ -3186,7 +3191,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_O3 Pa/Pa' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D,IGRID,ILENCH,YCOMMENT,IRESP) ! !cumulated optical thickness of aerosols !cumul begin from the top of the domain, not from the TOA ! @@ -3212,7 +3217,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_CUM_AER_OPT' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) ! ! sea DO JK=IKB,IKE @@ -3236,7 +3241,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_CUM_AER_OPT' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) ! ! desert DO JK=IKB,IKE @@ -3260,7 +3265,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_CUM_AER_OPT' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) ! ! urban DO JK=IKB,IKE @@ -3284,7 +3289,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_CUM_AER_OPT' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) ! ! Volcanoes DO JK=IKB,IKE @@ -3308,7 +3313,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_CUM_AER_OPT' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stratospheric background DO JK=IKB,IKE @@ -3332,7 +3337,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN YCOMMENT = 'X_Y_Z_CUM_AER_OPT' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,YDIR,ZSTORE_3D2,IGRID,ILENCH,YCOMMENT,IRESP) ENDIF END IF ! diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90 index 834f410cb..119979e14 100644 --- a/src/MNH/rain_c2r2_khko.f90 +++ b/src/MNH/rain_c2r2_khko.f90 @@ -12,9 +12,9 @@ ! ###################### ! INTERFACE - SUBROUTINE RAIN_C2R2_KHKO(HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, & + SUBROUTINE RAIN_C2R2_KHKO(HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, & KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, & + TPFILE, HLUOUT, OCLOSE_OUT, & PZZ, PRHODJ, & PRHODREF, PEXNREF, & PPABST, PTHT, PRVT, PRCT, & @@ -25,7 +25,7 @@ INTERFACE PSOLORG, PMI, HACTCCN, & PINDEP, PSUPSAT, PNACT ) ! -! +USE MODD_IO_ll, ONLY: TFILEDATA ! CHARACTER(LEN=*), INTENT(IN) :: HCLOUD ! kind of cloud @@ -40,7 +40,7 @@ INTEGER, INTENT(IN) :: KSPLITR ! Number of small time step ! integration for rain sedimendation REAL, INTENT(IN) :: PTSTEP ! Time step :XTSTEP in namelist INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of @@ -92,8 +92,8 @@ END SUBROUTINE RAIN_C2R2_KHKO END INTERFACE END MODULE MODI_RAIN_C2R2_KHKO ! ###################################################################### - SUBROUTINE RAIN_C2R2_KHKO (HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, & - KMI, HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, & + SUBROUTINE RAIN_C2R2_KHKO (HCLOUD,OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, & + KMI, TPFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, & PRHODREF, PEXNREF, & PPABST, PTHT, PRVT, PRCT, & PRRT, PTHM, PRCM, PPABSM, & @@ -226,6 +226,7 @@ END MODULE MODI_RAIN_C2R2_KHKO USE MODD_PARAMETERS USE MODD_CST USE MODD_CONF +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAM_C2R2 USE MODD_RAIN_C2R2_DESCR USE MODD_RAIN_C2R2_KHKO_PARAM @@ -262,7 +263,7 @@ INTEGER, INTENT(IN) :: KSPLITR ! Number of small time step ! integration for rain sedimendation REAL, INTENT(IN) :: PTSTEP ! Time step :XTSTEP in namelist INTEGER, INTENT(IN) :: KMI ! Model index -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OCLOSE_OUT ! Conditional closure of @@ -424,6 +425,7 @@ REAL :: ZFACT, JSV, ZMU, ZALPHA REAL, DIMENSION(:), ALLOCATABLE :: ZRTMIN REAL, DIMENSION(:), ALLOCATABLE :: ZCTMIN REAL :: ZTMP +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! Comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -434,6 +436,8 @@ CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file !* 1. COMPUTE THE SLOPE PARAMETERS ZLBDC,ZLBDR ! ---------------------------------------- ! +YFMFILE = TPFILE%CNAME +! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB=1+JPVEXT IKE=SIZE(PZZ,3) - JPVEXT @@ -602,7 +606,7 @@ INTEGER :: J1 ! YCOMMENT='X_Y_Z_ZCHEN' ! ILENCH=LEN(YCOMMENT) ! IGRID = 1 -! CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCHEN,IGRID,ILENCH,YCOMMENT,IRESP) +! CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCHEN,IGRID,ILENCH,YCOMMENT,IRESP) !END IF ! !------------------------------------------------------------------------------- @@ -880,7 +884,7 @@ IF ( OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_SMAX' ILENCH=LEN(YCOMMENT) IGRID = 1 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZZW1LOG,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZZW1LOG,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! !* 3.4 budget storage @@ -1898,19 +1902,19 @@ DO JN = 1 , KSPLITR YCOMMENT='X_Y_Z_SEDFLUXC' ILENCH=LEN(YCOMMENT) IGRID = 1 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWSEDC,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWSEDC,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='SEDFLUXR' YCOMMENT='X_Y_Z_SEDFLUXR' ILENCH=LEN(YCOMMENT) IGRID = 1 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWSEDR,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWSEDR,IGRID,ILENCH,YCOMMENT,IRESP) ! ! YRECFM ='SPEEDC' ! YCOMMENT='X_Y_Z_SPEEDC' ! ILENCH=LEN(YCOMMENT) ! IGRID = 1 -! CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PSPEEDC,IGRID,ILENCH,YCOMMENT,IRESP) +! CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PSPEEDC,IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO ! diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index e8e2f2bdc..a245c573b 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -10,7 +10,7 @@ INTERFACE SUBROUTINE RESOLVED_CLOUD ( HCLOUD, HACTCCN, HSCONV, HMF_CLOUD, & KRR, KSPLITR, KSPLITG, KMI, KTCOUNT, & - HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM, & + HLBCX, HLBCY, TPFILE, HLUOUT, HRAD, HTURBDIM, & OCLOSE_OUT, OSUBG_COND, OSIGMAS, HSUBG_AUCV, & PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF, & PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV, & @@ -19,12 +19,14 @@ INTERFACE PCIT, OSEDIC, OACTIT, OSEDC, OSEDI, & ORAIN, OWARM, OHHONI, OCONVHG, & PCF_MF,PRC_MF, PRI_MF, & - PINPRC,PINPRR,PINPRR3D, PEVAP3D, & - PINPRS,PINPRG,PINPRH, & + PINPRC,PINPRR,PINPRR3D, PEVAP3D, & + PINPRS,PINPRG,PINPRH, & PSOLORG,PMI, & PINDEP, PSUPSAT, PNACT, PNPRO,PSSPRO, & PSEA,PTOWN ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! CHARACTER(LEN=4), INTENT(IN) :: HCLOUD ! kind of cloud CHARACTER(LEN=4), INTENT(IN) :: HACTCCN ! kind of CCN activation scheme ! paramerization @@ -38,7 +40,7 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time step INTEGER, INTENT(IN) :: KMI ! Model index INTEGER, INTENT(IN) :: KTCOUNT ! Temporal loop counter CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY ! X and Y-direc. LBC type -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HRAD ! Radiation scheme name @@ -134,7 +136,7 @@ END MODULE MODI_RESOLVED_CLOUD ! ########################################################################## SUBROUTINE RESOLVED_CLOUD ( HCLOUD, HACTCCN, HSCONV, HMF_CLOUD, & KRR, KSPLITR, KSPLITG, KMI, KTCOUNT, & - HLBCX, HLBCY, HFMFILE, HLUOUT, HRAD, HTURBDIM, & + HLBCX, HLBCY, TPFILE, HLUOUT, HRAD, HTURBDIM, & OCLOSE_OUT, OSUBG_COND, OSIGMAS, HSUBG_AUCV, & PTSTEP, PZZ, PRHODJ, PRHODREF, PEXNREF, & PPABST, PTHT, PRT, PSIGS, PSIGQSAT, PMFCONV, & @@ -143,8 +145,8 @@ END MODULE MODI_RESOLVED_CLOUD PCIT, OSEDIC, OACTIT, OSEDC, OSEDI, & ORAIN, OWARM, OHHONI, OCONVHG, & PCF_MF,PRC_MF, PRI_MF, & - PINPRC,PINPRR,PINPRR3D, PEVAP3D, & - PINPRS,PINPRG,PINPRH, & + PINPRC,PINPRR,PINPRR3D, PEVAP3D, & + PINPRS,PINPRG,PINPRH, & PSOLORG,PMI, & PINDEP, PSUPSAT, PNACT, PNPRO,PSSPRO, & PSEA,PTOWN ) @@ -262,6 +264,7 @@ USE MODE_FM ! USE MODD_CONF USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_PARAM_ICE, ONLY : CSEDIM USE MODD_RAIN_ICE_DESCR @@ -311,7 +314,7 @@ INTEGER, INTENT(IN) :: KSPLITG ! Number of small time step INTEGER, INTENT(IN) :: KMI ! Model index INTEGER, INTENT(IN) :: KTCOUNT ! Temporal loop counter CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX,HLBCY ! X and Y-direc. LBC type -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n CHARACTER*4, INTENT(IN) :: HRAD ! Radiation scheme name @@ -815,7 +818,7 @@ SELECT CASE ( HCLOUD ) PZZ, PRHODJ, PRHODREF, PCLDFR, & PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3), PPABST, & PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & - PINPRR, PINPRR3D, PEVAP3D ) + PINPRR, PINPRR3D, PEVAP3D ) ! !* 5.2 Perform the saturation adjustment ! @@ -837,8 +840,8 @@ SELECT CASE ( HCLOUD ) !* 7.1 Compute the explicit microphysical sources ! ! - CALL RAIN_C2R2_KHKO ( HCLOUD, OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, PRHODREF, PEXNREF, & + CALL RAIN_C2R2_KHKO ( HCLOUD, OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & + TPFILE, HLUOUT, OCLOSE_OUT, PZZ, PRHODJ, PRHODREF, PEXNREF, & PPABST, PTHT, PRT(:,:,:,1), PRT(:,:,:,2), PRT(:,:,:,3), & PTHM, PRCM, PPABSM, & PW_ACT,PDTHRAD,PTHS, PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3), & @@ -846,21 +849,21 @@ SELECT CASE ( HCLOUD ) ZSVS(:,:,:,1), ZSVS(:,:,:,2), ZSVS(:,:,:,3), & PINPRC, PINPRR, PINPRR3D, PEVAP3D , & PSVT(:,:,:,:), PSOLORG, PMI, HACTCCN, & - PINDEP, PSUPSAT, PNACT ) + PINDEP, PSUPSAT, PNACT ) ! ! !* 7.2 Perform the saturation adjustment ! IF (LSUPSAT) THEN - CALL KHKO_NOTADJUST (KRR, KTCOUNT,HFMFILE, HLUOUT, HRAD, OCLOSE_OUT, & + CALL KHKO_NOTADJUST (KRR, KTCOUNT,TPFILE, HLUOUT, HRAD, OCLOSE_OUT, & PTSTEP, PRHODJ, PPABSM, PPABST, PRHODREF, PZZ, & PTHT,PRT(:,:,:,1),PRT(:,:,:,2),PRT(:,:,:,3), & PTHS,PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3), & ZSVS(:,:,:,2),ZSVS(:,:,:,1), & - ZSVS(:,:,:,4), PCLDFR, PSRCS , PNPRO,PSSPRO ) + ZSVS(:,:,:,4), PCLDFR, PSRCS , PNPRO,PSSPRO ) ! ELSE - CALL C2R2_ADJUST ( KRR,HFMFILE, HLUOUT, HRAD, & + CALL C2R2_ADJUST ( KRR,TPFILE, HLUOUT, HRAD, & HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP, & PRHODJ, PSIGS, PPABST, & PTHS=PTHS, PRVS=PRS(:,:,:,1), PRCS=PRS(:,:,:,2), & @@ -958,33 +961,33 @@ SELECT CASE ( HCLOUD ) ! CASE ('LIMA') ! - IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,& - PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST, & - PTHM, PRCM, & - PTHT, PRT, ZSVT, & - PTHS, PRS, ZSVS, & - PINPRC, PINPRR, PINPRR3D, PEVAP3D ) -! -IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ, & - PRHODREF, PEXNREF, PPABST, PW_ACT, & - PTHM, PPABSM, & - PTHT, PRT, ZSVT, & - PTHS, PRS, ZSVS, & + IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PW_ACT, PPABSM, PPABST, & + PTHM, PRCM, & + PTHT, PRT, ZSVT, & + PTHS, PRS, ZSVS, & + PINPRC, PINPRR, PINPRR3D, PEVAP3D ) +! +IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PW_ACT, & + PTHM, PPABSM, & + PTHT, PRT, ZSVT, & + PTHS, PRS, ZSVS, & PINPRS, PINPRG, PINPRH) ! -IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & - HFMFILE, HLUOUT, OCLOSE_OUT, KRR, PZZ, PRHODJ,& - PRHODREF, PEXNREF, PPABST, PW_ACT, & - PTHM, PPABSM, & - PTHT, PRT, ZSVT, & - PTHS, PRS, ZSVS ) +IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, & + KRR, PZZ, PRHODJ, & + PRHODREF, PEXNREF, PPABST, PW_ACT, & + PTHM, PPABSM, & + PTHT, PRT, ZSVT, & + PTHS, PRS, ZSVS ) ! ! !* 12.2 Perform the saturation adjustment ! -CALL LIMA_ADJUST(KRR, KMI, HFMFILE, HLUOUT, HRAD, & +CALL LIMA_ADJUST(KRR, KMI, TPFILE, HLUOUT, HRAD, & HTURBDIM, OCLOSE_OUT, OSUBG_COND, PTSTEP, & PRHODREF, PRHODJ, PEXNREF, PPABSM, PSIGS, PPABST, & PRT, PRS, ZSVT, ZSVS, & diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90 index 421a54d6b..8ebc554a5 100644 --- a/src/MNH/shallow_mf_pack.f90 +++ b/src/MNH/shallow_mf_pack.f90 @@ -10,40 +10,40 @@ INTERFACE ! ################################################################# SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI, & HMF_UPDRAFT, HMF_CLOUD, OMIXUV, & - OCLOSE_OUT,OMF_FLX,HFMFILE,HLUOUT,PTIME_LES, & + OCLOSE_OUT,OMF_FLX,TPFILE,HLUOUT,PTIME_LES, & PIMPL_MF, PTSTEP, & PDZZ, PZZ, & PRHODJ, PRHODREF, & PPABSM, PEXN, & PSFTH,PSFRV, & - PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM, & + PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM, & PRTHS,PRRS,PRUS,PRVS,PRSVS, & PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF ) ! ################################################################# !! +USE MODD_IO_ll, ONLY: TFILEDATA ! !* 1.1 Declaration of Arguments ! ! -INTEGER, INTENT(IN) :: KRR ! number of moist var. -INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. -INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT ! Type of Mass Flux Scheme +INTEGER, INTENT(IN) :: KRR ! number of moist var. +INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. +INTEGER, INTENT(IN) :: KRRI ! number of ice water var. +CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT! Type of Mass Flux Scheme ! 'NONE' if no parameterization -CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud - ! scheme -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous - ! file opening -LOGICAL, INTENT(IN) :: OMF_FLX ! switch to write the - ! MF fluxes in the synchronous FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n +CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud + ! scheme +LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum +LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous + ! file opening +LOGICAL, INTENT(IN) :: OMF_FLX ! switch to write the + ! MF fluxes in the synchronous FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file +CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for + ! model n REAL*8,DIMENSION(2), INTENT(OUT) :: PTIME_LES ! time spent in LES computations -REAL, INTENT(IN) :: PIMPL_MF ! degre of implicitness -REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep +REAL, INTENT(IN) :: PIMPL_MF ! degre of implicitness +REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height of flux point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! Metric coefficients @@ -59,7 +59,7 @@ REAL, DIMENSION(:,:,:,:),INTENT(IN):: PRM ! water var. at t-dt REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM,PVM,PWM ! wind components at t-dt REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKEM ! tke at t-dt -REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVM ! scalar variable a t-dt +REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVM ! scalar variable a t-dt REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS,PRVS,PRTHS ! Meso-NH sources REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS @@ -77,13 +77,13 @@ END MODULE MODI_SHALLOW_MF_PACK ! ################################################################# SUBROUTINE SHALLOW_MF_PACK(KRR,KRRL,KRRI, & HMF_UPDRAFT, HMF_CLOUD, OMIXUV, & - OCLOSE_OUT,OMF_FLX,HFMFILE,HLUOUT,PTIME_LES, & + OCLOSE_OUT,OMF_FLX,TPFILE,HLUOUT,PTIME_LES, & PIMPL_MF, PTSTEP, & PDZZ, PZZ, & PRHODJ, PRHODREF, & PPABSM, PEXN, & PSFTH,PSFRV, & - PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM, & + PTHM,PRM,PUM,PVM,PWM,PTKEM,PSVM, & PRTHS,PRRS,PRUS,PRVS,PRSVS, & PSIGMF,PRC_MF,PRI_MF,PCF_MF,PFLXZTHVMF ) ! ################################################################# @@ -122,6 +122,7 @@ END MODULE MODI_SHALLOW_MF_PACK USE MODD_PARAMETERS USE MODD_CST USE MODD_CONF +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_NSV USE MODD_PARAM_MFSHALL_n @@ -140,25 +141,24 @@ IMPLICIT NONE ! ! ! -INTEGER, INTENT(IN) :: KRR ! number of moist var. -INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. -INTEGER, INTENT(IN) :: KRRI ! number of ice water var. -CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT ! Type of Mass Flux Scheme +INTEGER, INTENT(IN) :: KRR ! number of moist var. +INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. +INTEGER, INTENT(IN) :: KRRI ! number of ice water var. +CHARACTER (LEN=4), INTENT(IN) :: HMF_UPDRAFT! Type of Mass Flux Scheme ! 'NONE' if no parameterization -CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud - ! scheme -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum -LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous - ! file opening -LOGICAL, INTENT(IN) :: OMF_FLX ! switch to write the - ! MF fluxes in the synchronous FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file -CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for - ! model n -REAL*8,DIMENSION(2), INTENT(OUT) :: PTIME_LES ! time spent in LES computations -REAL, INTENT(IN) :: PIMPL_MF ! degre of implicitness -REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep +CHARACTER (LEN=4), INTENT(IN) :: HMF_CLOUD ! Type of statistical cloud + ! scheme +LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum +LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for synchronous + ! file opening +LOGICAL, INTENT(IN) :: OMF_FLX ! switch to write the + ! MF fluxes in the synchronous FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file +CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for + ! model n +REAL*8,DIMENSION(2), INTENT(OUT) :: PTIME_LES ! time spent in LES computations +REAL, INTENT(IN) :: PIMPL_MF ! degre of implicitness +REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height of flux point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! Metric coefficients @@ -257,6 +257,7 @@ INTEGER :: JK,JRR,JSV ! Loop counters INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file !------------------------------------------------------------------------ @@ -283,6 +284,8 @@ ZUMM=MXF(PUM) ZVMM=MYF(PVM) ZWMM=MZF(1,IKU,1,PWM) ! +YFMFILE = TPFILE%CNAME +! !!! 2. Pack input variables ! DO JK=1,IKU @@ -388,20 +391,20 @@ IF ( OMF_FLX .AND. OCLOSE_OUT ) THEN ILENCH = LEN(YCOMMENT) IGRID = 4 ZWORK(:,:,:)=RESHAPE(ZFLXZTHMF (:,:),(/ IIU,IJU,IKU /) ) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) ! stores the conservative mixing ratio vertical flux YRECFM ='MF_RCONSW_FLX' YCOMMENT='X_Y_Z_MF_RCONSW_FLX (K*M/S)' ILENCH = LEN(YCOMMENT) IGRID = 4 ZWORK(:,:,:)=RESHAPE(ZFLXZRMF(:,:),(/ IIU,IJU,IKU /) ) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) ! stores the theta_v vertical flux YRECFM ='MF_THVW_FLX' YCOMMENT='X_Y_Z_MF_THVW_FLX (K*M/S)' ILENCH = LEN(YCOMMENT) IGRID = 4 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PFLXZTHVMF,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PFLXZTHVMF,IGRID,ILENCH,YCOMMENT,IRESP) IF (OMIXUV) THEN ! stores the U momentum vertical flux YRECFM ='MF_UW_FLX' @@ -409,14 +412,14 @@ IF ( OMF_FLX .AND. OCLOSE_OUT ) THEN ILENCH = LEN(YCOMMENT) IGRID = 4 ZWORK(:,:,:)=RESHAPE(ZFLXZUMF(:,:),(/ IIU,IJU,IKU /) ) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) ! stores the V momentum vertical flux YRECFM ='MF_VW_FLX' YCOMMENT='X_Y_Z_MF_VW_FLX (M2/S2)' ILENCH = LEN(YCOMMENT) IGRID = 4 ZWORK(:,:,:)=RESHAPE(ZFLXZVMF(:,:),(/ IIU,IJU,IKU /) ) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZWORK,IGRID,ILENCH,YCOMMENT,IRESP) ! END IF END IF diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90 index b07ae8d7f..d43f24667 100644 --- a/src/MNH/tke_eps_sources.f90 +++ b/src/MNH/tke_eps_sources.f90 @@ -17,9 +17,11 @@ INTERFACE PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ, & PTSTEP,PIMPL,PEXPL, & HTURBLEN,HTURBDIM, & - HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, & + TPFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, & PTP,PRTKES,PRTKESM, PRTHLS,PCOEF_DISS,PTR,PDISS ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO @@ -36,8 +38,7 @@ REAL, INTENT(IN) :: PEXPL, PIMPL ! Coef. temporal. disc. CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER*4, INTENT(IN) :: HTURBLEN ! kind of mixing length -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous @@ -67,7 +68,7 @@ END MODULE MODI_TKE_EPS_SOURCES PTRH,PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ, & PTSTEP,PIMPL,PEXPL, & HTURBLEN,HTURBDIM, & - HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, & + TPFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, & PTP,PRTKES,PRTKESM, PRTHLS,PCOEF_DISS,PTR,PDISS ) ! ################################################################## ! @@ -181,6 +182,7 @@ END MODULE MODI_TKE_EPS_SOURCES USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_BUDGET USE MODD_LES @@ -225,8 +227,7 @@ REAL, INTENT(IN) :: PEXPL, PIMPL ! Coef. temporal. disc. CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER*4, INTENT(IN) :: HTURBLEN ! kind of mixing length -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous @@ -267,6 +268,7 @@ INTEGER :: IIU,IJU,IKU ! array size in the 3 dimensions INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -279,6 +281,7 @@ NULLIFY(TZFIELDDISS_ll) !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME ! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IIU=SIZE(PTKEM,1) @@ -430,7 +433,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_DP (M**2/S**3)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PDP,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PDP,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the thermal production ! @@ -438,7 +441,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_TP (M**2/S**3)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTP,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PTP,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the whole turbulent transport ! @@ -446,7 +449,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_TR (M**2/S**3)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZTR,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZTR,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the dissipation of TKE ! @@ -455,7 +458,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN IGRID = 1 ILENCH=LEN(YCOMMENT) ZFLX(:,:,:) =-XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Storage in the LES configuration of the Dynamic Production of TKE and diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index ba6694e45..0d2dd3745 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -12,7 +12,7 @@ INTERFACE KSPLIT,KMODEL_CL, & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HCLOUD,PIMPL, & - PTSTEP,HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & + PTSTEP,TPFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE, & PRHODJ,PTHVREF,PRHODREF, & PSFTH,PSFRV,PSFSV,PSFU,PSFV, & @@ -23,6 +23,8 @@ INTERFACE PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,PRTKEMS,PSIGS,& PFLXZTHVMF,PWTH,PWRC,PWSV,PDYP,PTHP,PTR,PDISS,PLEM ) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index @@ -52,8 +54,7 @@ CHARACTER*4 , INTENT(IN) :: HTURBLEN_CL ! kind of cloud mixing len REAL, INTENT(IN) :: PIMPL ! degree of implicitness CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme REAL, INTENT(IN) :: PTSTEP ! timestep -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -140,7 +141,7 @@ END MODULE MODI_TURB SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,KSPLIT,KMODEL_CL, & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01, & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HCLOUD,PIMPL, & - PTSTEP,HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & + PTSTEP,TPFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE, & PRHODJ,PTHVREF,PRHODREF, & PSFTH,PSFRV,PSFSV,PSFU,PSFV, & @@ -350,6 +351,7 @@ USE MODD_CST USE MODD_CTURB USE MODD_CONF USE MODD_BUDGET +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_NSV ! @@ -410,8 +412,7 @@ CHARACTER*4 , INTENT(IN) :: HTURBLEN_CL ! kind of cloud mixing len REAL, INTENT(IN) :: PIMPL ! degree of implicitness CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme REAL, INTENT(IN) :: PTSTEP ! timestep -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -537,6 +538,7 @@ INTEGER :: JI,JJ ! loop counters INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL :: ZL0 ! Max. Mixing Length in Blakadar formula @@ -593,6 +595,8 @@ ALLOCATE ( & !* 1.PRELIMINARIES ! ------------- ! +YFMFILE = TPFILE%CNAME +! !* 1.1 Set the internal domains, ZEXPL ! ! @@ -685,13 +689,13 @@ IF (KRRL >=1) THEN YCOMMENT='X_Y_Z_ATHETA (M)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='AMOIST' YCOMMENT='X_Y_Z_AMOIST (M)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ELSE @@ -880,7 +884,7 @@ ZFTHR(:,:,:IKTB) = 0. CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX, & HTURBDIM,HTOM,PIMPL,ZEXPL, & - PTSTEP,HFMFILE,HLUOUT, & + PTSTEP,TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PCOSSLOPE,PSINSLOPE, & PRHODJ,PTHVREF, & @@ -928,7 +932,7 @@ IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4),9,'VTURB_BU_RRI') IF (HTURBDIM=='3DIM') THEN CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP, & HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & @@ -990,7 +994,7 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,ZLM,ZLEPS,ZDP,ZTRH, & PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ, & PTSTEP,PIMPL,ZEXPL, & HTURBLEN,HTURBDIM, & - HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, & + TPFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG, & ZTP,PRTKES,PRTKEMS,PRTHLS,ZCOEF_DISS,PTR,PDISS ) ! PDYP = ZDP @@ -1023,7 +1027,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_LM (M)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP) ! IF (KRR /= 0) THEN ! @@ -1033,7 +1037,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_THLM (KELVIN)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLT,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PTHLT,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the conservative mixing ratio ! @@ -1041,7 +1045,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_RNPM (KG/KG)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRT(:,:,:,1),IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PRT(:,:,:,1),IGRID,ILENCH, & YCOMMENT,IRESP) END IF END IF @@ -1636,7 +1640,7 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_LM CLEAR SKY (M)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP) ENDIF ! ! Amplification of the mixing length when the criteria are verified @@ -1656,13 +1660,13 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_COEF AMPL (-)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='LM_CLOUD' YCOMMENT='X_Y_Z_LM CLOUD (M)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP) ! ENDIF ! diff --git a/src/MNH/turb_cloud_index.f90 b/src/MNH/turb_cloud_index.f90 index fe6d17008..ee8eb7952 100644 --- a/src/MNH/turb_cloud_index.f90 +++ b/src/MNH/turb_cloud_index.f90 @@ -14,14 +14,15 @@ ! INTERFACE ! - SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,HFMFILE,HLUOUT, & + SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,TPFILE,HLUOUT, & OTURB_DIAG,OCLOSE_OUT,KRRI, & PRRS,PRM,PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY, & PCEI ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! REAL, INTENT(IN) :: PTSTEP ! Double Time step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some @@ -46,7 +47,7 @@ END INTERFACE END MODULE MODI_TURB_CLOUD_INDEX ! ! ####################### - SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,HFMFILE,HLUOUT, & + SUBROUTINE TURB_CLOUD_INDEX(PTSTEP,TPFILE,HLUOUT, & OTURB_DIAG,OCLOSE_OUT,KRRI, & PRRS,PRM,PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY, & PCEI ) @@ -90,6 +91,7 @@ END MODULE MODI_TURB_CLOUD_INDEX ! !------------------------------------------------------------------------------- ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS, ONLY: JPVEXT USE MODE_FMWRIT USE MODI_GRADIENT_M @@ -102,8 +104,7 @@ IMPLICIT NONE !* 0.1 declarations of arguments ! REAL, INTENT(IN) :: PTSTEP ! Double Time step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n LOGICAL, INTENT(IN) :: OTURB_DIAG ! switch to write some @@ -144,6 +145,7 @@ INTEGER, DIMENSION(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3)) :: IMASK_CLOUD INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -152,6 +154,8 @@ CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file !* 1. INITIALISATION ! -------------- ! +YFMFILE = TPFILE%CNAME +! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB = 1 + JPVEXT IKU = SIZE(PRM,3) @@ -261,49 +265,49 @@ IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_RVCI (kg/kg)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZRVCI,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZRVCI,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='GX_RVCI' YCOMMENT='X_Y_Z_GX_RVCI (kg/kg/m)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='GY_RVCI' YCOMMENT='X_Y_Z_GY_RVCI (kg/kg/m)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZG_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='GNORM_RVCI' YCOMMENT='X_Y_Z_NORM G (kg/kg/m)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZGNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZGNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='QX_RVCI' YCOMMENT='X_Y_Z_QX_RVCI (kg/kg/m)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,1),IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='QY_RVCI' YCOMMENT='X_Y_Z_QY_RVCI (kg/kg/m)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZQ_RVCI(:,:,:,2),IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='QNORM_RVCI' YCOMMENT='X_Y_Z_QNORM_RVCI (kg/kg/m)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZQNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZQNORM_RVCI,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM ='CEI' YCOMMENT='X_Y_Z_CEI (kg/kg/m/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PCEI,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',PCEI,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! END SUBROUTINE TURB_CLOUD_INDEX diff --git a/src/MNH/turb_hor.f90 b/src/MNH/turb_hor.f90 index 88426783a..eb1729439 100644 --- a/src/MNH/turb_hor.f90 +++ b/src/MNH/turb_hor.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR(KSPLT, KRR, KRRL, KRRI, PTSTEP, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & @@ -31,6 +31,8 @@ INTERFACE PDP,PTP,PSIGS, & PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS ) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KSPLT ! current split index INTEGER, INTENT(IN) :: KRR ! number of moist var. @@ -43,8 +45,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -118,7 +119,7 @@ END MODULE MODI_TURB_HOR ! ################################################################ SUBROUTINE TURB_HOR(KSPLT, KRR, KRRL, KRRI, PTSTEP, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & @@ -260,6 +261,7 @@ END MODULE MODI_TURB_HOR ! USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES ! @@ -296,8 +298,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -383,7 +384,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! CALL TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSXW,PDIRCOSYW, & @@ -399,7 +400,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS IF (KSPLT==1) & CALL TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PINV_PDXX,PINV_PDYY, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF, & @@ -415,7 +416,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! CALL TURB_HOR_DYN_CORR(KSPLT, PTSTEP, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDZZ, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSZW, & @@ -433,7 +434,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! CALL TURB_HOR_UV(KSPLT, & OCLOSE_OUT,OTURB_FLX, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSZW, & @@ -449,7 +450,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! CALL TURB_HOR_UW(KSPLT, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDZZ,PDZX, & PRHODJ,PTHVREF, & @@ -463,7 +464,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! CALL TURB_HOR_VW(KSPLT, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDYY,PDZZ,PDZY, & PRHODJ,PTHVREF, & @@ -478,7 +479,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSIGS ! CALL TURB_HOR_SV_FLUX(KSPLT, & OCLOSE_OUT,OTURB_FLX, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSXW,PDIRCOSYW, & diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 216f2f5d5..603704529 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -13,7 +13,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_DYN_CORR(KSPLT, PTSTEP, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDZZ, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSZW, & @@ -26,6 +26,8 @@ INTERFACE PDP,PTP, & PRUS,PRVS,PRWS ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KSPLT ! split process index REAL, INTENT(IN) :: PTSTEP ! timestep LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous @@ -33,8 +35,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file INTEGER, INTENT(IN) :: KRR ! number of moist var. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -85,7 +86,7 @@ END MODULE MODI_TURB_HOR_DYN_CORR ! ################################################################ SUBROUTINE TURB_HOR_DYN_CORR(KSPLT, PTSTEP, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDZZ, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSZW, & @@ -148,6 +149,7 @@ END MODULE MODI_TURB_HOR_DYN_CORR USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES USE MODD_NSV @@ -183,8 +185,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file INTEGER, INTENT(IN) :: KRR ! number of moist var. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -243,6 +244,7 @@ INTEGER :: IKB,IKE ! mass points of the domain INTEGER :: IKU INTEGER :: JSV ! scalar loop counter +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -274,6 +276,8 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF , ZDZZ ! !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ +YFMFILE = TPFILE%CNAME +! NULLIFY(TZFIELDS_ll) ! IKB = 1+JPVEXT @@ -389,7 +393,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_U_VAR ( (M/S)**2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Complete the U tendency @@ -479,7 +483,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_V_VAR ( (M/S)**2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Complete the V tendency @@ -560,7 +564,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_W_VAR ( (M/S)**2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Complete the W tendency diff --git a/src/MNH/turb_hor_splt.f90 b/src/MNH/turb_hor_splt.f90 index 43daa0ffd..c938ff3b5 100644 --- a/src/MNH/turb_hor_splt.f90 +++ b/src/MNH/turb_hor_splt.f90 @@ -15,7 +15,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP, & HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & @@ -29,6 +29,8 @@ INTERFACE PTRH, & PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS ) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KSPLIT ! number of time splitting INTEGER, INTENT(IN) :: KRR ! number of moist var. @@ -42,8 +44,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -112,7 +113,7 @@ END MODULE MODI_TURB_HOR_SPLT ! ################################################################ SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP, & HLBCX,HLBCY,OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & @@ -261,6 +262,7 @@ END MODULE MODI_TURB_HOR_SPLT USE MODD_CONF USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS ! ! @@ -288,8 +290,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -473,7 +474,7 @@ IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN ! compute the turbulent tendencies for the small time step CALL TURB_HOR(JSPLT, KRR, KRRL, KRRI, PTSTEP, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & @@ -614,7 +615,7 @@ ELSE ! CALL TURB_HOR(1, KRR, KRRL, KRRI, PTSTEP, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ, & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW, & PCOSSLOPE,PSINSLOPE, & diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90 index c60ad2b59..0ff2ace66 100644 --- a/src/MNH/turb_hor_sv_flux.f90 +++ b/src/MNH/turb_hor_sv_flux.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_SV_FLUX(KSPLT, & OCLOSE_OUT,OTURB_FLX, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSXW,PDIRCOSYW, & @@ -25,14 +25,14 @@ INTERFACE PSVM, & PRSVS ) ! - +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KSPLT ! split process index LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous ! file opening LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -67,7 +67,7 @@ END MODULE MODI_TURB_HOR_SV_FLUX ! ################################################################ SUBROUTINE TURB_HOR_SV_FLUX(KSPLT, & OCLOSE_OUT,OTURB_FLX, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSXW,PDIRCOSYW, & @@ -121,6 +121,7 @@ END MODULE MODI_TURB_HOR_SV_FLUX USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_NSV, ONLY : NSV_LGBEG,NSV_LGEND USE MODD_LES @@ -148,8 +149,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous ! file opening LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -191,6 +191,7 @@ INTEGER :: IKB,IKE ! mass points of the domain INTEGER :: JSV ! loop counter INTEGER :: ISV ! number of scalar var. +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF @@ -204,6 +205,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME +! IKB = 1+JPVEXT IKE = SIZE(PSVM,3)-JPVEXT IKU = SIZE(PSVM,3) @@ -257,7 +260,7 @@ DO JSV=1,ISV YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)' IGRID = 2 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (LLES_CALL .AND. KSPLT==1) THEN @@ -302,7 +305,7 @@ DO JSV=1,ISV YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)' IGRID = 3 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXY,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXY,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ELSE diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90 index 07f211706..9219d2832 100644 --- a/src/MNH/turb_hor_thermo_corr.f90 +++ b/src/MNH/turb_hor_thermo_corr.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PINV_PDXX,PINV_PDYY, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF, & @@ -25,7 +25,8 @@ INTERFACE PLOCPEXNM,PATHETA,PAMOIST,PSRCM, & PSIGS ) ! - +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. INTEGER, INTENT(IN) :: KRRI ! number of ice water var. @@ -35,8 +36,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -75,9 +75,9 @@ END INTERFACE ! END MODULE MODI_TURB_HOR_THERMO_CORR ! ################################################################ - SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI, & + SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PINV_PDXX,PINV_PDYY, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF, & @@ -130,6 +130,7 @@ END MODULE MODI_TURB_HOR_THERMO_CORR USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES ! @@ -164,8 +165,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -209,6 +209,7 @@ INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: IKB,IKE,IKU ! Index values for the Beginning and End ! mass points of the domain +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF @@ -221,6 +222,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME +! IKB = 1+JPVEXT IKE = SIZE(PTHLM,3)-JPVEXT IKU = SIZE(PTHLM,3) @@ -288,7 +291,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) & YCOMMENT='X_Y_Z_THL_HVAR (KELVIN**2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Storage in the LES configuration (addition to TURB_VER computation) @@ -370,7 +373,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) & YCOMMENT='X_Y_Z_THLR_HCOR (KELVIN*KG/KG)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Storage in the LES configuration (addition to TURB_VER computation) @@ -432,7 +435,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. OCLOSE_OUT ) & YCOMMENT='X_Y_Z_R_HVAR (KG/KG **2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Storage in the LES configuration (addition to TURB_VER computation) diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90 index c61b7e549..3b0c8944f 100644 --- a/src/MNH/turb_hor_thermo_flux.f90 +++ b/src/MNH/turb_hor_thermo_flux.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSXW,PDIRCOSYW, & @@ -26,7 +26,7 @@ INTERFACE PATHETA,PAMOIST,PSRCM,PFRAC_ICE, & PRTHLS,PRRS ) ! - +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KSPLT ! split process index INTEGER, INTENT(IN) :: KRR ! number of moist var. @@ -38,8 +38,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -84,7 +83,7 @@ END MODULE MODI_TURB_HOR_THERMO_FLUX ! ################################################################ SUBROUTINE TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,OSUBG_COND, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSXW,PDIRCOSYW, & @@ -139,6 +138,7 @@ END MODULE MODI_TURB_HOR_THERMO_FLUX USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES ! @@ -173,8 +173,7 @@ LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid ! condensation -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -225,6 +224,7 @@ INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: IKB,IKE,IKU ! Index values for the Beginning and End ! mass points of the domain +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF @@ -237,6 +237,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME +! IKB = 1+JPVEXT IKE = SIZE(PTHLM,3)-JPVEXT IKU = SIZE(PTHLM,3) @@ -332,7 +334,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_UTHL_FLX (KELVIN*M/S) ' IGRID = 2 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (KSPLT==1 .AND. LLES_CALL) THEN @@ -429,7 +431,7 @@ IF (KRR/=0) THEN YCOMMENT='X_Y_Z_UR_FLX (KG/KG * M/S) ' IGRID = 2 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (KSPLT==1 .AND. LLES_CALL) THEN @@ -471,7 +473,7 @@ END IF !! YRECFM ='UVPT_FLX' !! YCOMMENT='X_Y_Z_UVPT_FLX (KELVIN * M/S) ' !! IGRID = 2 -!! CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZVPTU,IGRID,ILENCH,YCOMMENT,IRESP) +!! CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZVPTU,IGRID,ILENCH,YCOMMENT,IRESP) !! END IF !!! !!ELSE @@ -568,7 +570,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_VTHL_FLX (KELVIN*M/S) ' IGRID = 3 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (KSPLT==1 .AND. LLES_CALL) THEN @@ -674,7 +676,7 @@ IF (KRR/=0) THEN YCOMMENT='X_Y_Z_VR_FLX (KG/KG * M/S) ' IGRID = 3 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (KSPLT==1 .AND. LLES_CALL) THEN @@ -720,7 +722,7 @@ END IF !! YRECFM ='VVPT_FLX' !! YCOMMENT='X_Y_Z_VVPT_FLX (KELVIN * M/S) ' !! IGRID = 3 -!! CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZVPTV,IGRID,ILENCH,YCOMMENT,IRESP) +!! CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZVPTV,IGRID,ILENCH,YCOMMENT,IRESP) !! END IF !!! !!ELSE diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90 index ead785843..589fdeb33 100644 --- a/src/MNH/turb_hor_uv.f90 +++ b/src/MNH/turb_hor_uv.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_UV(KSPLT, & OCLOSE_OUT,OTURB_FLX, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSZW, & @@ -27,14 +27,14 @@ INTERFACE PDP, & PRUS,PRVS ) ! - +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KSPLT ! split process index LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous ! file opening LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -82,7 +82,7 @@ END MODULE MODI_TURB_HOR_UV ! ################################################################ SUBROUTINE TURB_HOR_UV(KSPLT, & OCLOSE_OUT,OTURB_FLX, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PDIRCOSZW, & @@ -134,6 +134,7 @@ END MODULE MODI_TURB_HOR_UV USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES ! @@ -162,8 +163,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous ! file opening LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -218,6 +218,7 @@ INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: IKB,IKE,IKU ! Index values for the Beginning and End ! mass points of the domain +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -230,6 +231,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME +! IKB = 1+JPVEXT IKE = SIZE(PUM,3)-JPVEXT IKU = SIZE(PUM,3) @@ -293,7 +296,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YRECFM ='UV_FLX' YCOMMENT='X_Y_Z_UV_FLX ( (M/S) **2 ) ' IGRID = 5 - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90 index ef5ec34bd..e24c21c15 100644 --- a/src/MNH/turb_hor_uw.f90 +++ b/src/MNH/turb_hor_uw.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_UW(KSPLT, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDZZ,PDZX, & PRHODJ,PTHVREF, & @@ -25,7 +25,7 @@ INTERFACE PDP, & PRUS,PRWS ) ! - +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KSPLT ! split process index LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous @@ -33,8 +33,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file INTEGER, INTENT(IN) :: KRR ! number of moist var. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -71,7 +70,7 @@ END MODULE MODI_TURB_HOR_UW ! ################################################################ SUBROUTINE TURB_HOR_UW(KSPLT, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ, & PDXX,PDZZ,PDZX, & PRHODJ,PTHVREF, & @@ -126,6 +125,7 @@ END MODULE MODI_TURB_HOR_UW USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES USE MODD_NSV @@ -154,8 +154,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file INTEGER, INTENT(IN) :: KRR ! number of moist var. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -197,6 +196,7 @@ INTEGER :: IKB,IKE,IKU ! Index values for the Beginning and End ! mass points of the domain INTEGER :: JSV ! scalar loop counter +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -208,6 +208,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME +! IKB = 1+JPVEXT IKE = SIZE(PWM,3)-JPVEXT IKU = SIZE(PWM,3) @@ -239,7 +241,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_UW_HFLX ( (M/S) **2 ) ' IGRID = 6 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90 index 2918dfc39..511cddb92 100644 --- a/src/MNH/turb_hor_vw.f90 +++ b/src/MNH/turb_hor_vw.f90 @@ -16,7 +16,7 @@ INTERFACE ! SUBROUTINE TURB_HOR_VW(KSPLT, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDYY,PDZZ,PDZY, & PRHODJ,PTHVREF, & @@ -25,7 +25,7 @@ INTERFACE PDP, & PRVS,PRWS ) ! - +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KSPLT ! split process index LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous @@ -33,8 +33,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file INTEGER, INTENT(IN) :: KRR ! number of moist var. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -67,7 +66,7 @@ END MODULE MODI_TURB_HOR_VW ! ################################################################ SUBROUTINE TURB_HOR_VW(KSPLT, & OCLOSE_OUT,OTURB_FLX,KRR, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ, & PDYY,PDZZ,PDZY, & PRHODJ,PTHVREF, & @@ -122,6 +121,7 @@ END MODULE MODI_TURB_HOR_VW USE MODD_CST USE MODD_CONF USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES USE MODD_NSV @@ -152,8 +152,7 @@ LOGICAL, INTENT(IN) :: OCLOSE_OUT ! switch for syncronous LOGICAL, INTENT(IN) :: OTURB_FLX ! switch to write the ! turbulent fluxes in the syncronous FM-file INTEGER, INTENT(IN) :: KRR ! number of moist var. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name ! for model n ! @@ -194,6 +193,7 @@ INTEGER :: IKB,IKE,IKU ! Index values for the Beginning and End ! mass points of the domain INTEGER :: JSV ! scalar loop counter +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -205,6 +205,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +YFMFILE = TPFILE%CNAME +! IKB = 1+JPVEXT IKE = SIZE(PWM,3)-JPVEXT IKU = SIZE(PWM,3) @@ -243,7 +245,7 @@ IF ( OCLOSE_OUT .AND. OTURB_FLX ) THEN YCOMMENT='X_Y_Z_VW_HFLX ( (M/S) **2 ) ' IGRID = 7 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! compute the source for rho*V due to this residual flux ( the other part is diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90 index e4fb09672..d828ead7f 100644 --- a/src/MNH/turb_ver.f90 +++ b/src/MNH/turb_ver.f90 @@ -17,7 +17,7 @@ INTERFACE SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI, & OCLOSE_OUT,OTURB_FLX, & HTURBDIM,HTOM,PIMPL,PEXPL, & - PTSTEP, HFMFILE,HLUOUT, & + PTSTEP, TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PCOSSLOPE,PSINSLOPE, & PRHODJ,PTHVREF, & @@ -31,6 +31,8 @@ INTERFACE PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS, & PDP,PTP,PSIGS,PWTH,PWRC,PWSV ) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KRR ! number of moist var. INTEGER, INTENT(IN) :: KRRL ! number of liquid water var. @@ -44,8 +46,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! timestep -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -128,7 +129,7 @@ END MODULE MODI_TURB_VER SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX, & HTURBDIM,HTOM,PIMPL,PEXPL, & - PTSTEP, HFMFILE,HLUOUT, & + PTSTEP, TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PCOSSLOPE,PSINSLOPE, & PRHODJ,PTHVREF, & @@ -331,6 +332,7 @@ END MODULE MODI_TURB_VER ! USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES USE MODD_NSV, ONLY : NSV @@ -376,8 +378,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! timestep -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -486,6 +487,7 @@ REAL, ALLOCATABLE, DIMENSION(:,:,:,:) :: & INTEGER :: IRESP ! Return code of FM routines INTEGER :: IGRID ! C-grid indicator in LFIFM file INTEGER :: ILENCH ! Length of comment string in LFIFM file +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -527,6 +529,7 @@ ALLOCATE ( & ! !* 1. PRELIMINARIES ! ------------- +YFMFILE = TPFILE%CNAME ! PTP (:,:,:) = 0. PDP (:,:,:) = 0. @@ -541,7 +544,7 @@ IKE=KKU-JPVEXT_TURB*KKL ! CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_FLX, & HTURBDIM, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY, & PTHVREF,PLOCPEXNM,PATHETA,PAMOIST, & PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, & @@ -614,7 +617,7 @@ END IF CALL TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI, & OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM, & PIMPL,PEXPL,PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PRHODJ,PTHVREF, & PSFTHM,PSFRM,PSFTHP,PSFRP, & @@ -630,7 +633,7 @@ END IF CALL TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM, & PIMPL,PEXPL, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW, & PRHODJ,PTHVREF, & PSFTHM,PSFRM,PSFTHP,PSFRP, & @@ -659,7 +662,7 @@ END IF CALL TURB_VER_DYN_FLUX(KKA,KKU,KKL, & OCLOSE_OUT,OTURB_FLX,KRR, & HTURBDIM,PIMPL,PEXPL,PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PCOSSLOPE,PSINSLOPE, & PRHODJ, & @@ -679,7 +682,7 @@ IF (SIZE(PSVM,4)>0) & CALL TURB_VER_SV_FLUX(KKA,KKU,KKL, & OCLOSE_OUT,OTURB_FLX,HTURBDIM, & PIMPL,PEXPL,PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDZZ,PDIRCOSZW, & PRHODJ,PWM, & PSFSVM,PSFSVP, & @@ -689,7 +692,7 @@ CALL TURB_VER_SV_FLUX(KKA,KKU,KKL, & ! ! IF (SIZE(PSVM,4)>0 .AND. LLES_CALL) & -CALL TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & +CALL TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & PDZZ, & PTHLM,PRM,PTHVREF, & PLOCPEXNM,PATHETA,PAMOIST,PSRCM,ZPHI3,ZPSI3, & @@ -719,7 +722,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_PHI3 (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPHI3,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZPHI3,IGRID,ILENCH,YCOMMENT,IRESP) ! ! stores the Turbulent Schmidt number ! @@ -728,7 +731,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN IGRID = 4 ILENCH=LEN(YCOMMENT) ! - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPSI3,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZPSI3,IGRID,ILENCH,YCOMMENT,IRESP) ! ! ! stores the Turbulent Schmidt number for the scalar variables @@ -738,7 +741,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_'//YRECFM//' (0)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPSI_SV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZPSI_SV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90 index 3224c540b..1c9197f1b 100644 --- a/src/MNH/turb_ver_dyn_flux.f90 +++ b/src/MNH/turb_ver_dyn_flux.f90 @@ -17,7 +17,7 @@ INTERFACE OCLOSE_OUT,OTURB_FLX,KRR, & HTURBDIM,PIMPL,PEXPL, & PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PCOSSLOPE,PSINSLOPE, & PRHODJ, & @@ -27,6 +27,7 @@ INTERFACE PRUS,PRVS,PRWS, & PDP,PTP ) ! +USE MODD_IO_ll, ONLY: TFILEDATA ! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index @@ -40,8 +41,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! Double Time Step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -98,7 +98,7 @@ END MODULE MODI_TURB_VER_DYN_FLUX OCLOSE_OUT,OTURB_FLX,KRR, & HTURBDIM,PIMPL,PEXPL, & PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PCOSSLOPE,PSINSLOPE, & PRHODJ, & @@ -294,6 +294,7 @@ END MODULE MODI_TURB_VER_DYN_FLUX USE MODD_CONF USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES USE MODD_NSV @@ -330,8 +331,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! Double Time Step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -403,6 +403,7 @@ INTEGER :: IIB,IIE, & ! I index values for the Beginning and End INTEGER :: IKT ! array size in k direction INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain INTEGER :: JSV ! scalar loop counter +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1) :: ZCOEFFLXU, & @@ -418,6 +419,8 @@ REAL :: ZTIME1, ZTIME2 !* 1. PRELIMINARIES ! ------------- ! +YFMFILE = TPFILE%CNAME +! IIU=SIZE(PUM,1) IJU=SIZE(PUM,2) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) @@ -524,7 +527,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_UW_VFLX (M**2/S**2)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! first part of total momentum flux @@ -693,7 +696,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_VW_VFLX (M**2/S**2)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! second part of total momentum flux @@ -808,7 +811,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT .AND. HTURBDIM == '1DIM') THEN YCOMMENT='X_Y_Z_W_VVAR (M**2/S**2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! !---------------------------------------------------------------------------- diff --git a/src/MNH/turb_ver_sv_flux.f90 b/src/MNH/turb_ver_sv_flux.f90 index c3ec5d032..dbabf71d3 100644 --- a/src/MNH/turb_ver_sv_flux.f90 +++ b/src/MNH/turb_ver_sv_flux.f90 @@ -18,7 +18,7 @@ INTERFACE OCLOSE_OUT,OTURB_FLX,HTURBDIM, & PIMPL,PEXPL, & PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDZZ,PDIRCOSZW, & PRHODJ,PWM, & PSFSVM,PSFSVP, & @@ -26,6 +26,8 @@ INTERFACE PTKEM,PLM,PPSI_SV, & PRSVS,PWSV ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR @@ -37,8 +39,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! Double Time Step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -78,7 +79,7 @@ END MODULE MODI_TURB_VER_SV_FLUX OCLOSE_OUT,OTURB_FLX,HTURBDIM, & PIMPL,PEXPL, & PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDZZ,PDIRCOSZW, & PRHODJ,PWM, & PSFSVM,PSFSVP, & @@ -274,6 +275,7 @@ END MODULE MODI_TURB_VER_SV_FLUX ! USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_LES USE MODD_CONF @@ -309,8 +311,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! Double Time Step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -362,6 +363,7 @@ INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain INTEGER :: JSV ! loop counters INTEGER :: JK ! loop INTEGER :: ISV ! number of scalar var. +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -373,7 +375,8 @@ REAL :: ZCSVP = 4.0 ! constant for scalar flux presso-correlation (RS81) !* 1. PRELIMINARIES ! ------------- ! - +YFMFILE = TPFILE%CNAME +! IKB=KKA+JPVEXT_TURB*KKL IKE=KKU-JPVEXT_TURB*KKL IKT=SIZE(PSVM,3) @@ -457,7 +460,7 @@ DO JSV=1,ISV YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Storage in the LES configuration diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90 index e3f63e18f..be4c50886 100644 --- a/src/MNH/turb_ver_thermo_corr.f90 +++ b/src/MNH/turb_ver_thermo_corr.f90 @@ -17,7 +17,7 @@ INTERFACE SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI, & OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM, & PIMPL,PEXPL, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW, & PRHODJ,PTHVREF, & PSFTHM,PSFRM,PSFTHP,PSFRP, & @@ -30,6 +30,8 @@ INTERFACE PFWTH,PFWR,PFTH2,PFR2,PFTHR, & PTHLP,PRP,PSIGS ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR @@ -44,8 +46,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -119,7 +120,7 @@ END MODULE MODI_TURB_VER_THERMO_CORR SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR, KRRL, KRRI, & OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM, & PIMPL,PEXPL, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW, & PRHODJ,PTHVREF, & PSFTHM,PSFRM,PSFTHP,PSFRP, & @@ -319,6 +320,7 @@ END MODULE MODI_TURB_VER_THERMO_CORR ! USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_CONF USE MODD_LES @@ -358,8 +360,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the ! turbulence scheme CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -440,6 +441,7 @@ INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: IKB,IKE ! I index values for the Beginning and End ! mass points of the domain in the 3 direct. INTEGER :: I1,I2 ! For ZCOEFF allocation +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file REAL, DIMENSION(:,:,:),ALLOCATABLE :: ZCOEFF @@ -459,7 +461,8 @@ LOGICAL :: GFTHR ! flag to use w'th'r' !* 1. PRELIMINARIES ! ------------- ! - +YFMFILE = TPFILE%CNAME +! IKB=KKA+JPVEXT_TURB*KKL IKE=KKU-JPVEXT_TURB*KKL I1=MIN(KKA+JPVEXT_TURB*KKL,KKA+JPVEXT_TURB*KKL+2*KKL) @@ -587,7 +590,7 @@ END IF YCOMMENT='X_Y_Z_THL_VVAR (KELVIN**2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! and we store in LES configuration @@ -708,7 +711,7 @@ END IF YCOMMENT='X_Y_Z_THLRCONS_VCOR (KELVIN*KG/KG)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! and we store in LES configuration @@ -809,7 +812,7 @@ END IF YCOMMENT='X_Y_Z_RTOT_VVAR (KG/KG **2)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! and we store in LES configuration diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90 index 73c97baaf..72b8262d6 100644 --- a/src/MNH/turb_ver_thermo_flux.f90 +++ b/src/MNH/turb_ver_thermo_flux.f90 @@ -17,7 +17,7 @@ INTERFACE OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM, & PIMPL,PEXPL, & PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PRHODJ,PTHVREF, & PSFTHM,PSFRM,PSFTHP,PSFRP, & @@ -30,6 +30,8 @@ INTERFACE PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH, & PWTHV,PRTHLS,PRRS,PTHLP,PRP,PTP,PWTH,PWRC ) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=AR O @@ -45,8 +47,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! Double Time Step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -130,7 +131,7 @@ END MODULE MODI_TURB_VER_THERMO_FLUX OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM, & PIMPL,PEXPL, & PTSTEP, & - HFMFILE,HLUOUT, & + TPFILE,HLUOUT, & PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ, & PRHODJ,PTHVREF, & PSFTHM,PSFRM,PSFTHP,PSFRP, & @@ -336,6 +337,7 @@ END MODULE MODI_TURB_VER_THERMO_FLUX ! USE MODD_CST USE MODD_CTURB +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_CONF USE MODD_LES @@ -377,8 +379,7 @@ CHARACTER*4, INTENT(IN) :: HTURBDIM ! dimensionality of the CHARACTER*4, INTENT(IN) :: HTOM ! type of Third Order Moment REAL, INTENT(IN) :: PIMPL, PEXPL ! Coef. for temporal disc. REAL, INTENT(IN) :: PTSTEP ! Double Time Step -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! Name of the output - ! FM-file +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), INTENT(IN) :: HLUOUT ! Output-listing name for ! model n ! @@ -469,6 +470,7 @@ INTEGER :: IKB,IKE ! I index values for the Beginning and End ! mass points of the domain in the 3 direct. INTEGER :: IKT ! array size in k direction INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain +CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! @@ -486,6 +488,8 @@ LOGICAL :: GFTHR ! flag to use w'th'r' !* 1. PRELIMINARIES ! ------------- ! +YFMFILE = TPFILE%CNAME +! IKT =SIZE(PTHLM,3) IKTE =IKT-JPVEXT_TURB IKTB =1+JPVEXT_TURB @@ -620,7 +624,7 @@ IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN YCOMMENT='X_Y_Z_THW_FLX (K*M/S)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Contribution of the conservative temperature flux to the buoyancy flux @@ -792,7 +796,7 @@ IF (KRR /= 0) THEN YCOMMENT='X_Y_Z_RCONSW_FLX (KG*M/S/KG)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! Contribution of the conservative water flux to the Buoyancy flux @@ -868,7 +872,7 @@ IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN YCOMMENT='X_Y_Z_RCW_FLX (KG*M/S/KG)' IGRID = 4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! and we store in LES configuration this subgrid flux <w'rc'> diff --git a/src/MNH/uv_to_zonal_and_merid.f90 b/src/MNH/uv_to_zonal_and_merid.f90 index cdcc22678..f30f3ba30 100644 --- a/src/MNH/uv_to_zonal_and_merid.f90 +++ b/src/MNH/uv_to_zonal_and_merid.f90 @@ -8,28 +8,32 @@ MODULE MODI_UV_TO_ZONAL_AND_MERID ! ################################# INTERFACE UV_TO_ZONAL_AND_MERID - SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT) + SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PU ! input U component REAL, DIMENSION(:,:,:), INTENT(IN) :: PV ! input V component INTEGER, INTENT(IN) :: KGRID ! grid positions of components REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PZC ! output U component REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PMC ! output V component -CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), OPTIONAL, INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU ! Name of the U article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV ! Name of the V article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT ! Comment string ! END SUBROUTINE UV_TO_ZONAL_AND_MERID3D ! - SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT) + SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! REAL, DIMENSION(:,:), INTENT(IN) :: PU ! input U component REAL, DIMENSION(:,:), INTENT(IN) :: PV ! input V component INTEGER, INTENT(IN) :: KGRID ! grid positions of components REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PZC ! output U component REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PMC ! output V component -CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), OPTIONAL, INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU ! Name of the U article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV ! Name of the V article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT ! Comment string @@ -44,14 +48,16 @@ END MODULE MODI_UV_TO_ZONAL_AND_MERID ! ################################### INTERFACE ! - SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT) + SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PU ! input U component REAL, DIMENSION(:,:,:), INTENT(IN) :: PV ! input V component INTEGER, INTENT(IN) :: KGRID ! grid positions of components REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PZC ! output U component REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PMC ! output V component -CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), OPTIONAL, INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU ! Name of the U article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV ! Name of the V article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT ! Comment string @@ -61,7 +67,7 @@ END INTERFACE END MODULE MODI_UV_TO_ZONAL_AND_MERID3D ! ! ########################################## - SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT) + SUBROUTINE UV_TO_ZONAL_AND_MERID3D(PU,PV,KGRID,PZC,PMC, TPFILE,HRECU,HRECV,HCOMMENT) ! ########################################## ! !!**** *UV_TO_ZONAL_AND_MERID* - compute the zonal and meridien components @@ -100,6 +106,7 @@ END MODULE MODI_UV_TO_ZONAL_AND_MERID3D USE MODD_CONF USE MODD_CST USE MODD_GRID +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_DIM_n USE MODD_GRID_n @@ -119,7 +126,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PV ! input V component INTEGER, INTENT(IN) :: KGRID ! grid positions of components REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PZC ! output U component REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(OUT) :: PMC ! output V component -CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), OPTIONAL, INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU ! Name of the U article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV ! Name of the V article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT ! Comment string @@ -136,6 +143,7 @@ INTEGER :: IGRID ! grid indicator INTEGER :: IRESP ! return-code for the file routines INTEGER :: ILENCH ! length of comment string INTEGER :: ILUOUT ! logical unit for output listing +CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write !----------------------------------------------------------------- ! @@ -196,19 +204,20 @@ ELSE RETURN END IF ! -IF (PRESENT(HFMFILE)) THEN +IF (PRESENT(TPFILE)) THEN + YFMFILE = TPFILE%CNAME ILENCH=LEN(HCOMMENT) SELECT CASE (KGRID) CASE(23) IGRID=2 - CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP) IGRID=3 - CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP) CASE(11,0) IGRID=1 - CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC,IGRID,ILENCH,HCOMMENT,IRESP) IGRID=1 - CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC,IGRID,ILENCH,HCOMMENT,IRESP) END SELECT ELSE IF (PRESENT(PZC) .AND. PRESENT(PMC)) THEN PZC(:,:,:) = ZZC(:,:,:) @@ -226,7 +235,7 @@ END SUBROUTINE UV_TO_ZONAL_AND_MERID3D ! ! ! ########################################## - SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,HFMFILE,HRECU,HRECV,HCOMMENT) + SUBROUTINE UV_TO_ZONAL_AND_MERID2D(PU,PV,KGRID,PZC,PMC,TPFILE,HRECU,HRECV,HCOMMENT) ! ########################################## ! !!**** *UV_TO_ZONAL_AND_MERID* - compute the zonal and meridien components @@ -266,6 +275,7 @@ USE MODD_LUNIT_n USE MODI_UV_TO_ZONAL_AND_MERID3D USE MODE_FM USE MODE_FMWRIT +USE MODD_IO_ll, ONLY: TFILEDATA ! IMPLICIT NONE ! @@ -276,7 +286,7 @@ REAL, DIMENSION(:,:), INTENT(IN) :: PV ! input V component INTEGER, INTENT(IN) :: KGRID ! grid positions of components REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PZC ! output U component REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PMC ! output V component -CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), OPTIONAL, INTENT(IN) :: TPFILE ! Output file CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECU ! Name of the U article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HRECV ! Name of the V article CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HCOMMENT ! Comment string @@ -289,6 +299,7 @@ INTEGER :: IGRID ! grid indicator INTEGER :: IRESP ! return-code for the file routines INTEGER :: ILENCH ! length of comment string INTEGER :: ILUOUT ! logical unit for output listing +CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write ! !----------------------------------------------------------------- ! @@ -299,19 +310,20 @@ ZV3D(:,:,1)=PV(:,:) ! CALL UV_TO_ZONAL_AND_MERID3D(ZU3D,ZV3D,KGRID,PZC=ZZC3D,PMC=ZMC3D) ! -IF(PRESENT(HFMFILE)) THEN +IF(PRESENT(TPFILE)) THEN + YFMFILE = TPFILE%CNAME ILENCH=LEN(HCOMMENT) SELECT CASE (KGRID) CASE(23) IGRID=2 - CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) IGRID=3 - CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) CASE(11,0) IGRID=1 - CALL FMWRIT(HFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECU,CLUOUT,'XY',ZZC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) IGRID=1 - CALL FMWRIT(HFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,HRECV,CLUOUT,'XY',ZMC3D(:,:,1),IGRID,ILENCH,HCOMMENT,IRESP) END SELECT ELSE IF (PRESENT(PZC).AND.PRESENT(PMC)) THEN PZC(:,:)=ZZC3D(:,:,1) diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 911aa344f..8d9a8fe96 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -334,6 +334,8 @@ REAL,DIMENSION(:,:,:,:), ALLOCATABLE :: ZTMP1, ZTMP2, ZTMP3, ZTMP4 ! !* 0. ARRAYS BOUNDS INITIALIZATION ! +YFMFILE2 = TPFILE%CNAME +! CALL GET_DIM_EXT_ll ('B',IIU,IJU) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKU=NKMAX+2*JPVEXT @@ -705,7 +707,7 @@ IF (LVAR_RS) THEN IF (LWIND_ZM) THEN YCOMMENT='X_Y_Z_Zonal and Meridian components of horizontal wind (M/S)' CALL UV_TO_ZONAL_AND_MERID(XUT,XVT,23, & - HFMFILE=YFMFILE2,HRECU='UM_ZM',HRECV='VM_ZM',HCOMMENT=YCOMMENT) + TPFILE=TPFILE,HRECU='UM_ZM',HRECV='VM_ZM',HCOMMENT=YCOMMENT) END IF ! YRECFM='WT' @@ -2019,7 +2021,7 @@ IF (LVAR_LS) THEN IF (LWIND_ZM) THEN YCOMMENT='X_Y_Z_Large Scale Zonal and Meridian components of horizontal wind (M/S)' CALL UV_TO_ZONAL_AND_MERID(XLSUM,XLSVM,23, & - HFMFILE=YFMFILE2,HRECU='LSUM_ZM',HRECV='LSVM_ZM',HCOMMENT=YCOMMENT) + TPFILE=TPFILE,HRECU='LSUM_ZM',HRECV='LSVM_ZM',HCOMMENT=YCOMMENT) ENDIF ! YRECFM='LSWM' @@ -2354,7 +2356,7 @@ IF (LVORT) THEN IF (LWIND_ZM) THEN YCOMMENT='X_Y_Z_Zonal and Meridian components of horizontal vorticity (M/S)' CALL UV_TO_ZONAL_AND_MERID(ZWORK31,ZWORK32,23, & - HFMFILE=YFMFILE2,HRECU='UM1_ZM',HRECV='VM1_ZM',HCOMMENT=YCOMMENT) + TPFILE=TPFILE,HRECU='UM1_ZM',HRECV='VM1_ZM',HCOMMENT=YCOMMENT) ENDIF ! ! Vorticity z @@ -2568,7 +2570,7 @@ IF (LGEO .OR. LAGEO) THEN IF (LWIND_ZM) THEN YCOMMENT='X_Y_Z_Zonal and Meridian components of GEOstrophic wind (m/s)' CALL UV_TO_ZONAL_AND_MERID(ZWORK31,ZWORK32,23, & - HFMFILE=YFMFILE2,HRECU='UM88_ZM',HRECV='VM88_ZM',HCOMMENT=YCOMMENT) + TPFILE=TPFILE,HRECU='UM88_ZM',HRECV='VM88_ZM',HCOMMENT=YCOMMENT) ENDIF ! ! wm necessary to plot vertical cross sections of wind vectors @@ -2598,7 +2600,7 @@ IF (LGEO .OR. LAGEO) THEN IF (LWIND_ZM) THEN YCOMMENT='X_Y_Z_Zonal and Meridian components of AGEOstrophic wind (m/s)' CALL UV_TO_ZONAL_AND_MERID(ZWORK31,ZWORK32,23, & - HFMFILE=YFMFILE2,HRECU='UM89_ZM',HRECV='VM89_ZM',HCOMMENT=YCOMMENT) + TPFILE=TPFILE,HRECU='UM89_ZM',HRECV='VM89_ZM',HCOMMENT=YCOMMENT) ENDIF ! ! wm necessary to plot vertical cross sections of wind vectors diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 05827e476..4a5e8c322 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -12,11 +12,13 @@ ! ###################################### INTERFACE ! - SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(HFMFILE) + SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(TPFILE) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! !* 0.1 Declarations of arguments ! -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! END SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP ! @@ -25,7 +27,7 @@ END INTERFACE END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP ! ! ############################################## - SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(HFMFILE) + SUBROUTINE WRITE_LFIFM1_FOR_DIAG_SUPP(TPFILE) ! ############################################## ! !!**** *WRITE_LFIFM1_FOR_DIAG_SUPP* - write records in the diag file @@ -33,7 +35,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP !! PURPOSE !! ------- ! The purpose of this routine is to write in the file -! of name HFMFILE//'.lfi' with the FM routines. +! of name YFMFILE//'.lfi' with the FM routines. ! !!** METHOD !! ------ @@ -93,6 +95,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP ! USE MODE_ll USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_CONF_n USE MODD_CONF @@ -157,7 +160,7 @@ IMPLICIT NONE ! !* 0.1 Declarations of arguments ! -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file ! !* 0.2 Declarations of local variables ! @@ -166,6 +169,7 @@ INTEGER :: IRESP ! IRESP : return-code if a problem appears INTEGER :: IGRID ! IGRID : grid indicator INTEGER :: ILENCH ! ILENCH : length of comment string ! +CHARACTER(LEN=28) :: YFMFILE ! Name of FM-file to write CHARACTER(LEN=16) :: YRECFM ! Name of the article to be written CHARACTER(LEN=100):: YCOMMENT ! Comment string ! @@ -225,13 +229,13 @@ ZTEMP(:,:,:)=XTHT(:,:,:)*(XPABST(:,:,:)/ XP00) **(XRD/XCPD) ! YCOMMENT='X_Y_latitude (degree)' ! IGRID=1 ! ILENCH=LEN(YCOMMENT) -! CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP) +! CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP) ! ! ! YRECFM='LON' ! YCOMMENT='X_Y_longitude (degree)' ! IGRID=1 ! ILENCH=LEN(YCOMMENT) -! CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP) +! CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP) ! END IF ! #endif ! @@ -248,7 +252,7 @@ IF (NCONV_KF >= 0) THEN YCOMMENT = 'X_Y_Convective Available Potentiel Energy (J/kg)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCAPE,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCAPE,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'CLTOPCONV' ! top height (km) of ZWORK21(:,:)= 0. ! convective clouds @@ -260,7 +264,7 @@ IF (NCONV_KF >= 0) THEN YCOMMENT = 'X_Y_Top of Convective Cloud (km)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'CLBASCONV' ! base height (km) of ZWORK21(:,:)= 0. ! convective clouds @@ -272,7 +276,7 @@ IF (NCONV_KF >= 0) THEN YCOMMENT = 'X_Y_Base of Convective Cloud (km)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) ! END IF IF (NCONV_KF >= 1) THEN @@ -281,25 +285,25 @@ IF (NCONV_KF >= 1) THEN YCOMMENT = 'X_Y_Z_CONVective heating/cooling rate (K/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DRVCONV' YCOMMENT = 'X_Y_Z_CONVective R_v tendency (1/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DRCCONV' YCOMMENT = 'X_Y_Z_CONVective R_c tendency (1/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DRICONV' YCOMMENT = 'X_Y_Z_CONVective R_i tendency (1/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP) ! IF ( LCHTRANS .AND. NSV > 0 ) THEN IGRID=1 @@ -308,7 +312,7 @@ IF (NCONV_KF >= 1) THEN WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV WRITE(YCOMMENT,'(A6,A2,I3.3,A26)')'X_Y_Z_','SV',JSV,' CONVective tendency (1/s)' ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO ! microphysical C2R2 scheme scalar variables @@ -317,7 +321,7 @@ IF (NCONV_KF >= 1) THEN WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1)), & ' CONVective tendency (1/s)' ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO ! microphysical C3R5 scheme additional scalar variables @@ -326,7 +330,7 @@ IF (NCONV_KF >= 1) THEN WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1)), & ' CONVective tendency (1/s)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO ! electrical scalar variables @@ -335,7 +339,7 @@ IF (NCONV_KF >= 1) THEN WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)),& ' CONVective tendency (1/s)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO ! chemical scalar variables @@ -344,7 +348,7 @@ IF (NCONV_KF >= 1) THEN WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CNAMES(JSV-NSV_CHEMBEG+1)), & ' CONVective tendency (1/s)' ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO ! lagrangian variables @@ -353,7 +357,7 @@ IF (NCONV_KF >= 1) THEN WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CLGNAMES(JSV-NSV_LGBEG+1)), & ' CONVective tendency (1/s)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & IGRID,ILENCH,YCOMMENT,IRESP) END DO END IF @@ -365,25 +369,25 @@ IF (NCONV_KF >= 2) THEN YCOMMENT = 'X_Y_Liquid Precipitation Convective Flux (m/s)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPRLFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XPRLFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'PRSFLXCONV' YCOMMENT = 'X_Y_Solid Precipitation Convective Flux (m/s)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPRSFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XPRSFLXCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'UMFCONV' YCOMMENT = 'X_Y_Updraft Convective Mass Flux (kg/s m**2)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XUMFCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XUMFCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DMFCONV' YCOMMENT = 'X_Y_Downdraft Convective Mass Flux (kg/s m**2)' IGRID = 4 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDMFCONV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDMFCONV,IGRID,ILENCH,YCOMMENT,IRESP) ! END IF !------------------------------------------------------------------------------- @@ -439,7 +443,7 @@ IF (LCLD_COV .AND. LUSERC) THEN YCOMMENT='X_Y_Height of Explicit CLoud top (km)' IGRID=4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) ! ! Higher top of the different species of clouds ! @@ -470,20 +474,20 @@ IF (LCLD_COV .AND. LUSERC) THEN YCOMMENT='X_Y_Height of CLoud top (km)' IGRID=4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) ENDIF ! YRECFM='TCL' YCOMMENT='X_Y_Temperature of CLoud top (C)' IGRID=4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK22,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM='CLDFR' YCOMMENT='X_Y_Z_Cloud Fraction (0)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP) ! ! Visibility ! @@ -496,7 +500,7 @@ IF (LCLD_COV .AND. LUSERC) THEN YCOMMENT='X_Y_Z_VISI_HOR (m)' IGRID = 1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) DEALLOCATE(IWORK1,IWORK2,ICL_HE_ST,GMASK2,ZWORK22) END IF @@ -513,73 +517,73 @@ IF (NRAD_3D >= 0) THEN YCOMMENT = 'X_Y_Z_RADiative heating/cooling rate (K/s)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'FLALWD' YCOMMENT = 'X_Y_Downward Long Waves on FLAT surface (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DIRFLASWD' YCOMMENT = 'X_Y_DIRect Downward Short Waves on FLAT surface (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'SCAFLASWD' YCOMMENT = 'X_Y_SCAttered Downward Short Waves on FLAT surface (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DIRSRFSWD' YCOMMENT = 'X_Y_DIRect Downward Short Waves (W/M2)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'CLEARCOL_TM1' YCOMMENT = 'TRACE OF CLOUD' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'ZENITH' YCOMMENT = 'X_Y_ZENITH (RAD)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XZENITH,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XZENITH,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'AZIM' YCOMMENT = 'X_Y_AZIMuth (RAD)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XAZIM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XAZIM,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'DIR_ALB' YCOMMENT = 'X_Y_DIRect ALBedo (-)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'SCA_ALB' YCOMMENT = 'X_Y_SCAttered ALBedo (-)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'EMIS' YCOMMENT = 'X_Y_EMISsivity (-)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XEMIS,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XEMIS,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM = 'TSRAD' YCOMMENT = 'X_Y_RADiative Surface Temperature (K)' IGRID = 1 ILENCH = LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP) ! ELSE PRINT*,'YOU WANT DIAGNOSTICS RELATED TO RADIATION' @@ -597,7 +601,7 @@ IF (NRAD_3D >= 1) THEN IKRAD = JK - JPVEXT ZWORK31(:,:,JK)= XAER(:,:,IKRAD,3) END DO - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) !Dust optical depth ZWORK21(:,:)=0.0 DO JK=IKB,IKE @@ -611,7 +615,7 @@ IF (NRAD_3D >= 1) THEN YRECFM = 'DSTAOD2D' YCOMMENT = 'X_Y_DuST Aerosol Optical Depth (m)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) !Dust extinction (optical depth per km) YRECFM = 'DSTEXT' YCOMMENT = 'X_Y_Z_DuST EXTinction (1/km) ' @@ -620,7 +624,7 @@ IF (NRAD_3D >= 1) THEN IKRAD = JK - JPVEXT ZWORK31(:,:,JK)= XAER(:,:,IKRAD,3)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3 ENDDO - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) END IF IF (LSALT) THEN !Salt optical depth between two vertical levels @@ -632,7 +636,7 @@ IF (NRAD_3D >= 1) THEN IKRAD = JK - JPVEXT ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2) END DO - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) !Salt optical depth ZWORK21(:,:)=0.0 DO JK=IKB,IKE @@ -646,7 +650,7 @@ IF (NRAD_3D >= 1) THEN YRECFM = 'SLTAOD2D' YCOMMENT = 'X_Y_Salt Aerosol Optical Depth (m)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) !Salt extinction (optical depth per km) YRECFM = 'SLTEXT' YCOMMENT = 'X_Y_Z_Salt EXTinction (1/km) ' @@ -655,7 +659,7 @@ IF (NRAD_3D >= 1) THEN IKRAD = JK - JPVEXT ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3 ENDDO - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) END IF IF (LORILAM) THEN !Orilam anthropogenic optical depth between two vertical levels @@ -667,7 +671,7 @@ IF (NRAD_3D >= 1) THEN IKRAD = JK - JPVEXT ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4) END DO - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) !Orilam anthropogenic optical depth ZWORK21(:,:)=0.0 DO JK=IKB,IKE @@ -681,7 +685,7 @@ IF (NRAD_3D >= 1) THEN YRECFM = 'AERAOD2D' YCOMMENT = 'X_Y_Anthropogenic Aerosol Optical Depth (m)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) !Orilam anthropogenic extinction (optical depth per km) YRECFM = 'AEREXT' YCOMMENT = 'X_Y_Z_Anthropogenic EXTinction (1/km) ' @@ -690,7 +694,7 @@ IF (NRAD_3D >= 1) THEN IKRAD = JK - JPVEXT ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3 ENDDO - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) END IF END IF @@ -747,13 +751,13 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN YCOMMENT =TRIM(YNAM_SAT(JI))//' Infra-Red Brightness Temperature (K)' IGRID =1 ILENCH =LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZIRBT,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZIRBT,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM =TRIM(YNAM_SAT(JI))//'_WVBT' YCOMMENT =TRIM(YNAM_SAT(JI))//' Water-Vapor Brightness Temperature (K)' IGRID =1 ILENCH =LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWVBT,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWVBT,IGRID,ILENCH,YCOMMENT,IRESP) END DO DEALLOCATE(ZIRBT,ZWVBT) END IF @@ -768,12 +772,12 @@ IF (NRTTOVINFO(1,1) /= NUNDEF) THEN #ifdef MNH_RTTOV_8 CALL CALL_RTTOV8(NDLON, NFLEV, NSTATM, XEMIS, XTSRAD, XSTATM, XTHT, XRT, & XPABST, XZZ, XMFCONV, XCLDFR, XUT(:,:,IKB), XVT(:,:,IKB), & - LUSERI, NRTTOVINFO, HFMFILE ) + LUSERI, NRTTOVINFO, YFMFILE ) #else #ifdef MNH_RTTOV_11 CALL CALL_RTTOV11(NDLON, NFLEV, XEMIS, XTSRAD, XTHT, XRT, & XPABST, XZZ, XMFCONV, XCLDFR, XUT(:,:,IKB), XVT(:,:,IKB), & - LUSERI, NRTTOVINFO, HFMFILE ) + LUSERI, NRTTOVINFO, YFMFILE ) #else PRINT *, "RTTOV LIBRARY NOT AVAILABLE = ###CALL_RTTOV####" #endif @@ -820,18 +824,18 @@ IF (CSURF=='EXTE') THEN ! and, output ones are in MesoNH grid IF (.NOT. LCARTESIAN) THEN CALL UV_TO_ZONAL_AND_MERID(XCURRENT_ZON10M,XCURRENT_MER10M,IGRID, & - HFMFILE=HFMFILE,HRECU='UM10',HRECV='VM10',HCOMMENT=YCOMMENT) + TPFILE=TPFILE,HRECU='UM10',HRECV='VM10',HCOMMENT=YCOMMENT) ELSE YRECFM ='UM10' YCOMMENT ='X_Y_UM10 (m/s)' IGRID =1 ILENCH =LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_ZON10M,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_ZON10M,IGRID,ILENCH,YCOMMENT,IRESP) YRECFM ='VM10' YCOMMENT ='X_Y_VM10 (m/s)' IGRID =1 ILENCH =LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_MER10M,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_MER10M,IGRID,ILENCH,YCOMMENT,IRESP) ENDIF ! IF (SIZE(XTKET)>0) THEN @@ -842,14 +846,14 @@ IF (CSURF=='EXTE') THEN YCOMMENT ='X_Y_FF10MAX (m/s)' IGRID =1 ILENCH =LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END IF IF(ANY(XCURRENT_SFCO2/=XUNDEF))THEN YCOMMENT='CO2 flux (mg/m2/s)' ILENCH=LEN(YCOMMENT) YRECFM='SFCO2' IGRID=1 - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SFCO2,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SFCO2,IGRID,ILENCH, & YCOMMENT,IRESP) END IF ! @@ -858,7 +862,7 @@ IF (CSURF=='EXTE') THEN ILENCH=LEN(YCOMMENT) YRECFM='SW' IGRID=1 - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SW,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_SW,IGRID,ILENCH, & YCOMMENT,IRESP) END IF ! @@ -867,7 +871,7 @@ IF (CSURF=='EXTE') THEN ILENCH=LEN(YCOMMENT) YRECFM='LW' IGRID=1 - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_LW,IGRID,ILENCH, & + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCURRENT_LW,IGRID,ILENCH, & YCOMMENT,IRESP) END IF END IF @@ -920,7 +924,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_potential temperature '//TRIM(YPRES(JK))//'hPa (K)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ********************* ! Wind @@ -934,7 +938,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_U component of wind '//TRIM(YPRES(JK))//'hPa (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ZWORK31(:,:,:) = MYF(XVT(:,:,:)) @@ -946,7 +950,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_V component of wind '//TRIM(YPRES(JK))//'hPa (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ********************* ! Water Vapour Mixing Ratio @@ -959,7 +963,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_Vapor Mixing Ratio '//TRIM(YPRES(JK))//'hPa (g/kg)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ********************* ! Geopotential in meters @@ -973,7 +977,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_ALTitude '//TRIM(YPRES(JK))//'hPa (m)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! DEALLOCATE(ZWRES,ZPRES,ZWORK32,ZWORK33,ZWORK34) @@ -1021,7 +1025,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_pressure '//TRIM(YTH(JK))//'K (Pa)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ********************* ! Potential Vorticity @@ -1050,7 +1054,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_POtential VOrticity '//TRIM(YTH(JK))//'K (PVU)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ********************* ! Wind @@ -1063,7 +1067,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_U component of wind '//TRIM(YTH(JK))//'K (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! ZWORK31(:,:,:) = MYF(XVT(:,:,:)) @@ -1074,7 +1078,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) YCOMMENT='X_Y_V component of wind '//TRIM(YTH(JK))//'K (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! DEALLOCATE(ZWTH,ZTH,ZWORK32,ZWORK33,ZWORK34) @@ -1091,7 +1095,7 @@ IF (NEQ_BUDGET>0) THEN YRECFM=TRIM(CNAMES_BUDGET(JSV))//'_BUDGET' WRITE(YCOMMENT,'(A6,A5,A7,A8)')'X_Y_Z_',CNAMES_BUDGET(JSV),'_BUDGET','(ppp/s)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%XB_REAC(:,:,:,:),IGRID,ILENCH,& + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%XB_REAC(:,:,:,:),IGRID,ILENCH,& YCOMMENT,IRESP) END DO ! @@ -1099,7 +1103,7 @@ IF (NEQ_BUDGET>0) THEN YRECFM=TRIM(CNAMES_BUDGET(JSV))//'_CHREACLIST' WRITE(YCOMMENT,'(A5,A14)')CNAMES_BUDGET(JSV),'_REACTION_LIST' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%NB_REAC(:),IGRID,ILENCH,& + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XTCHEM(JSV)%NB_REAC(:),IGRID,ILENCH,& YCOMMENT,IRESP) END DO END IF @@ -1112,13 +1116,13 @@ IF (NEQ_PLT>0) THEN YRECFM=TRIM(CNAMES_PRODLOSST(JSV))//'_PROD' WRITE(YCOMMENT,'(A6,A8,A5,A8)')'X_Y_Z_',CNAMES_PRODLOSST(JSV),'_PROD','(ppp/s)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPROD(:,:,:,JSV),IGRID,ILENCH,& + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XPROD(:,:,:,JSV),IGRID,ILENCH,& YCOMMENT,IRESP) ! YRECFM=TRIM(CNAMES_PRODLOSST(JSV))//'_LOSS' WRITE(YCOMMENT,'(A6,A8,A5,A8)')'X_Y_Z_',CNAMES_PRODLOSST(JSV),'_LOSS','(ppp/s)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLOSS(:,:,:,JSV),IGRID,ILENCH,& + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLOSS(:,:,:,JSV),IGRID,ILENCH,& YCOMMENT,IRESP) END DO END IF -- GitLab