diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index cf54dacdd343c1bc9640b14b3956b6efeb9d3316..8846fbaf118e3b264d62e93e52dfe87340d5b50b 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -24,6 +24,10 @@ TYPE TFIELDPTR_L0D LOGICAL, POINTER :: DATA => NULL() END TYPE TFIELDPTR_L0D ! +TYPE TFIELDPTR_N0D + INTEGER, POINTER :: DATA => NULL() +END TYPE TFIELDPTR_N0D +! TYPE TFIELDPTR_N2D INTEGER,DIMENSION(:,:), POINTER :: DATA => NULL() END TYPE TFIELDPTR_N2D @@ -69,6 +73,7 @@ TYPE TFIELDDATA ! TYPE(TFIELDPTR_L0D),DIMENSION(:),ALLOCATABLE :: TFIELD_L0D !Pointer to the scalar logical fields (one per nested mesh) ! + TYPE(TFIELDPTR_N0D),DIMENSION(:),ALLOCATABLE :: TFIELD_N0D !Pointer to the scalar integer fields (one per nested mesh) TYPE(TFIELDPTR_N2D),DIMENSION(:),ALLOCATABLE :: TFIELD_N2D !Pointer to the integer 2D fields (one per nested mesh) ! TYPE(TFIELDPTR_X0D),DIMENSION(:),ALLOCATABLE :: TFIELD_X0D !Pointer to the scalar real fields (one per nested mesh) @@ -111,6 +116,10 @@ IF (PRESENT(KMODEL)) THEN ELSE IMODEL = NMODEL END IF +IF (IMODEL==0) CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_FIELD_LIST','allocating fields for zero models not allowed') +! +WRITE(YMSG,'("allocating fields for ",I4," models")') IMODEL +CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_LIST',YMSG) ! IDX = 1 ! @@ -1104,6 +1113,157 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RIMX' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RIMX' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Number of points in the lateral absorbing layer in the x direction' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 0 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_N0D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RIMY' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RIMY' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Number of points in the lateral absorbing layer in the y direction' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 0 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_N0D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'HORELAX_UVWTH' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: HORELAX_UVWTH' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Switch to activate the HOrizontal RELAXation' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPELOG +TFIELDLIST(IDX)%NDIMS = 0 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_L0D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'LBXUM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBXUM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBXU' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBXUM' +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 = 'LBXVM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBXVM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBX' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBXVM' +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 = 'LBXWM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBXWM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBX' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBXWM' +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 = 'LBYUM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBYUM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBY' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBYUM' +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 = 'LBYVM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBYVM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBYV' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBYVM' +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 = 'LBYWM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBYWM' +TFIELDLIST(IDX)%CUNITS = 'm s-1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBY' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBYWM' +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 = 'LBXTHM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBXTHM' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBX' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBXTHM' +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 = 'LBYTHM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBYTHM' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBY' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBYTHM' +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 = 'DRYMASST' TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DRYMASST' @@ -1333,6 +1493,7 @@ IDX = IDX+1 END IF ! CPROGRAM=MESONH ! ! +IF (CPROGRAM=='MESONH') THEN IF (CRAD /= 'NONE') THEN ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -1492,6 +1653,7 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) IDX = IDX+1 ! END IF !CRAD /= 'NONE' +END IF ! CPROGRAM=MESONH ! ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -1588,8 +1750,36 @@ END IF END SUBROUTINE FIND_FIELD_ID_FROM_MNHNAME ! ! +SUBROUTINE ALLOC_FIELD_SCALARS +! +USE MODD_DYN_n +! +CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS','called') +! +IF (LFIELDLIST_ISINIT) THEN + CALL PRINT_MSG(NVERB_FATAL,'GEN','ALLOC_FIELD_SCALARS','TFIELDLIST already initialized') +END IF +! +! +IF (.NOT.ASSOCIATED(NRIMX)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' NRIMX was not associated') + ALLOCATE(NRIMX) +END IF +IF (.NOT.ASSOCIATED(NRIMY)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' NRIMY was not associated') + ALLOCATE(NRIMY) +END IF +IF (.NOT.ASSOCIATED(LHORELAX_UVWTH)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' LHORELAX_UVWTH was not associated') + ALLOCATE(LHORELAX_UVWTH) +END IF +! +END SUBROUTINE ALLOC_FIELD_SCALARS +! +! SUBROUTINE INI_FIELD_SCALARS ! +USE MODD_DYN_n USE MODD_FIELD_n USE MODD_GRID_n USE MODD_TIME_n @@ -1599,6 +1789,11 @@ INTEGER :: IID,IRESP ! CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS','called') ! +IF (.NOT.LFIELDLIST_ISINIT) THEN + CALL PRINT_MSG(NVERB_FATAL,'GEN','FIND_FIELD_ID_FROM_MNHNAME','TFIELDLIST not yet initialized') +END IF +! +! IF (.NOT.ASSOCIATED(LSLEVE)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' LSLEVE was not associated') ALLOCATE(LSLEVE) @@ -1659,6 +1854,24 @@ IF (.NOT.ASSOCIATED(XDRYMASST)) THEN CALL FIND_FIELD_ID_FROM_MNHNAME('DRYMASST',IID,IRESP) TFIELDLIST(IID)%TFIELD_X0D(1)%DATA=>XDRYMASST END IF +IF (.NOT.ASSOCIATED(NRIMX)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' NRIMX was not associated') + ALLOCATE(NRIMX) +END IF +CALL FIND_FIELD_ID_FROM_MNHNAME('RIMX',IID,IRESP) +TFIELDLIST(IID)%TFIELD_N0D(1)%DATA=>NRIMX +IF (.NOT.ASSOCIATED(NRIMY)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' NRIMY was not associated') + ALLOCATE(NRIMY) +END IF +CALL FIND_FIELD_ID_FROM_MNHNAME('RIMY',IID,IRESP) +TFIELDLIST(IID)%TFIELD_N0D(1)%DATA=>NRIMY +IF (.NOT.ASSOCIATED(LHORELAX_UVWTH)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' LHORELAX_UVWTH was not associated') + ALLOCATE(LHORELAX_UVWTH) +END IF +CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_UVWTH',IID,IRESP) +TFIELDLIST(IID)%TFIELD_L0D(1)%DATA=>LHORELAX_UVWTH ! END SUBROUTINE INI_FIELD_SCALARS ! @@ -1670,6 +1883,7 @@ USE MODD_REF ! USE MODD_ADV_n USE MODD_CONF_n +USE MODD_DYN_n USE MODD_FIELD_n USE MODD_GRID_n USE MODD_LSFIELD_n @@ -1805,6 +2019,18 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('LSVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(K CALL FIND_FIELD_ID_FROM_MNHNAME('LSWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSWM CALL FIND_FIELD_ID_FROM_MNHNAME('LSTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSTHM IF(LUSERV) CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLSRVM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXUM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXVM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXWM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYUM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYUM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYVM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYVM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYWM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYWM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBXTHM +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYTHM',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XLBYTHM +! +! MODD_DYN_n variables +! +!***NONE*** ! ! MODD_ADV_n variables ! @@ -1846,6 +2072,7 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D( ! ! MODD_RADIATIONS_n variables ! +IF (CPROGRAM=='MESONH') THEN IF (CRAD /= 'NONE') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('DTHRAD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA => XDTHRAD CALL FIND_FIELD_ID_FROM_MNHNAME('FLALWD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XFLALWD @@ -1860,6 +2087,7 @@ IF (CRAD /= 'NONE') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XEMIS CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XTSRAD END IF +END IF ! ! MODD_PRECIP_n variables ! @@ -1960,6 +2188,14 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('LSVM', IID,IRESP); XLSVM => TFIELDLIST(IID)%TF CALL FIND_FIELD_ID_FROM_MNHNAME('LSWM', IID,IRESP); XLSWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('LSTHM',IID,IRESP); XLSTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA IF(LUSERV) CALL FIND_FIELD_ID_FROM_MNHNAME('LSRVM',IID,IRESP); XLSRVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXUM', IID,IRESP); XLBXUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXVM', IID,IRESP); XLBXVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXWM', IID,IRESP); XLBXWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYUM', IID,IRESP); XLBYUM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYVM', IID,IRESP); XLBYVM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYWM', IID,IRESP); XLBYWM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBXTHM',IID,IRESP); XLBXTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('LBYTHM',IID,IRESP); XLBYTHM => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('DRYMASST',IID,IRESP) IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN @@ -1969,6 +2205,32 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA)) THEN END IF XDRYMASST => TFIELDLIST(IID)%TFIELD_X0D(KTO)%DATA ! +! MODD_DYN_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('RIMX',IID,IRESP) +IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',& + 'TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) + ALLOCATE(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA) +END IF +NRIMX => TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA +! +CALL FIND_FIELD_ID_FROM_MNHNAME('RIMY',IID,IRESP) +IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',& + 'TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) + ALLOCATE(TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA) +END IF +NRIMY => TFIELDLIST(IID)%TFIELD_N0D(KTO)%DATA +! +CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_UVWTH',IID,IRESP) +IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','FIELDLIST_GOTO_MODEL',& + 'TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA was not associated for '//TFIELDLIST(IID)%CMNHNAME) + ALLOCATE(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA) +END IF +LHORELAX_UVWTH => TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA +! ! MODD_ADV_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('TKEMS',IID,IRESP); XRTKEMS=>TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA @@ -2077,6 +2339,7 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); XWTHVMF => TFIELDLIST(IID)% ! ! MODD_RADIATIONS_n variables ! +IF (CPROGRAM=='MESONH') THEN IF (CRAD /= 'NONE') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('DTHRAD', IID,IRESP); XDTHRAD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('FLALWD', IID,IRESP); XFLALWD => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA @@ -2091,6 +2354,7 @@ IF (CRAD /= 'NONE') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); XEMIS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD', IID,IRESP); XTSRAD => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA END IF +END IF ! ! MODD_PRECIP_n variables ! diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90 index f98cf0960f2bd6ca01c180ac5ce43d4a536972c9..22875c5e9dbf109dee6d0f0649a2c0466b192f0f 100644 --- a/src/MNH/init_mnh.f90 +++ b/src/MNH/init_mnh.f90 @@ -169,6 +169,10 @@ CALL INI_NEB !* 2. READ AND UPDATE DESCRIPTOR FILES ! -------------------------------- ! +IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG ' .OR. CPROGRAM=='SPEC ' .OR. CPROGRAM=='MESONH') THEN + CALL ALLOC_FIELD_SCALARS() +END IF +! DO JMI=1,JPMODELMAX CALL GOTO_MODEL(JMI) CALL INI_SEG_n(JMI,YLUOUT(JMI),YINIFILE(JMI),YINIFILEPGD(JMI),ZTSTEP_ALL) @@ -218,7 +222,6 @@ END IF IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG ' .OR. CPROGRAM=='SPEC ' .OR. CPROGRAM=='MESONH') THEN CALL INI_FIELD_SCALARS() END IF - ! DO JMI=1,NMODEL YSURF_CUR => YSURF_LIST(JMI) diff --git a/src/MNH/modd_dynn.f90 b/src/MNH/modd_dynn.f90 index e0fb84bf7f2fd2c439a00a2cadda69b907d771a5..7e56e33e8a78cb4362d9112845194156c44cb6a4 100644 --- a/src/MNH/modd_dynn.f90 +++ b/src/MNH/modd_dynn.f90 @@ -116,7 +116,7 @@ TYPE DYN_t LOGICAL :: LVE_RELAX_GRD ! switch to activate the VErtical RELAXation ! ! switch to activate the HOrizontal RELAXation - LOGICAL :: LHORELAX_UVWTH +! LOGICAL :: LHORELAX_UVWTH ! LOGICAL :: LHORELAX_RV, LHORELAX_RC, LHORELAX_RR, LHORELAX_RI LOGICAL :: LHORELAX_RS, LHORELAX_RG, LHORELAX_RH @@ -141,7 +141,7 @@ TYPE DYN_t LOGICAL, DIMENSION(:),POINTER :: LHORELAX_SV =>NULL() ! REAL :: XRIMKMAX ! Max. value of the horiz. relaxation coeff. - INTEGER :: NRIMX,NRIMY! Number of points in the lateral absorbing +! INTEGER :: NRIMX,NRIMY! Number of points in the lateral absorbing ! layer in the x and y directions ! sizes of the West-east total LB area INTEGER :: NSIZELBX_ll,NSIZELBXU_ll ! for T,V,W and u @@ -310,7 +310,7 @@ XALKBAS=>DYN_MODEL(KTO)%XALKBAS XALKWBAS=>DYN_MODEL(KTO)%XALKWBAS LVE_RELAX=>DYN_MODEL(KTO)%LVE_RELAX LVE_RELAX_GRD=>DYN_MODEL(KTO)%LVE_RELAX_GRD -LHORELAX_UVWTH=>DYN_MODEL(KTO)%LHORELAX_UVWTH +!LHORELAX_UVWTH=>DYN_MODEL(KTO)%LHORELAX_UVWTH !Done in FIELDLIST_GOTO_MODEL LHORELAX_RV=>DYN_MODEL(KTO)%LHORELAX_RV LHORELAX_RC=>DYN_MODEL(KTO)%LHORELAX_RC LHORELAX_RR=>DYN_MODEL(KTO)%LHORELAX_RR @@ -336,8 +336,8 @@ LHORELAX_SVFF=>DYN_MODEL(KTO)%LHORELAX_SVFF LHORELAX_SVCS=>DYN_MODEL(KTO)%LHORELAX_SVCS LHORELAX_SV=>DYN_MODEL(KTO)%LHORELAX_SV XRIMKMAX=>DYN_MODEL(KTO)%XRIMKMAX -NRIMX=>DYN_MODEL(KTO)%NRIMX -NRIMY=>DYN_MODEL(KTO)%NRIMY +!NRIMX=>DYN_MODEL(KTO)%NRIMX !Done in FIELDLIST_GOTO_MODEL +!NRIMY=>DYN_MODEL(KTO)%NRIMY !Done in FIELDLIST_GOTO_MODEL NSIZELBX_ll=>DYN_MODEL(KTO)%NSIZELBX_ll NSIZELBXU_ll=>DYN_MODEL(KTO)%NSIZELBXU_ll NSIZELBXTKE_ll=>DYN_MODEL(KTO)%NSIZELBXTKE_ll diff --git a/src/MNH/modd_lsfieldn.f90 b/src/MNH/modd_lsfieldn.f90 index 5a2d83e04b7f2d847089fb4473f3fd512c354527..424cdd727d9ab174196d59a68ceb99bf5d7f0896 100644 --- a/src/MNH/modd_lsfieldn.f90 +++ b/src/MNH/modd_lsfieldn.f90 @@ -70,8 +70,8 @@ TYPE LSFIELD_t ! Large scale variables for horizontal lbc ! ! larger scales values at X-dir lateral boundaries at time t-dt - REAL, DIMENSION(:,:,:), POINTER :: XLBXUM=>NULL(),XLBXVM=>NULL(),XLBXWM=>NULL() - REAL, DIMENSION(:,:,:), POINTER :: XLBXTHM=>NULL() +! REAL, DIMENSION(:,:,:), POINTER :: XLBXUM=>NULL(),XLBXVM=>NULL(),XLBXWM=>NULL() +! REAL, DIMENSION(:,:,:), POINTER :: XLBXTHM=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLBXTKEM=>NULL() REAL, DIMENSION(:,:,:,:), POINTER :: XLBXRM=>NULL(), XLBXSVM=>NULL() ! larger scales tendency at X-dir lateral boundaries @@ -81,8 +81,8 @@ TYPE LSFIELD_t REAL, DIMENSION(:,:,:,:), POINTER :: XLBXRS=>NULL(), XLBXSVS=>NULL() ! ! larger scales values at Y-dir lateral boundaries at time t-dt - REAL, DIMENSION(:,:,:), POINTER :: XLBYUM=>NULL(),XLBYVM=>NULL(),XLBYWM=>NULL() - REAL, DIMENSION(:,:,:), POINTER :: XLBYTHM=>NULL() +! REAL, DIMENSION(:,:,:), POINTER :: XLBYUM=>NULL(),XLBYVM=>NULL(),XLBYWM=>NULL() +! REAL, DIMENSION(:,:,:), POINTER :: XLBYTHM=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLBYTKEM=>NULL() REAL, DIMENSION(:,:,:,:), POINTER :: XLBYRM=>NULL(), XLBYSVM=>NULL() ! larger scales tendency at Y-dir lateral boundaries @@ -152,10 +152,10 @@ LSFIELD_MODEL(KFROM)%XLSVS=>XLSVS LSFIELD_MODEL(KFROM)%XLSWS=>XLSWS LSFIELD_MODEL(KFROM)%XLSTHS=>XLSTHS LSFIELD_MODEL(KFROM)%XLSRVS=>XLSRVS -LSFIELD_MODEL(KFROM)%XLBXUM=>XLBXUM -LSFIELD_MODEL(KFROM)%XLBXVM=>XLBXVM -LSFIELD_MODEL(KFROM)%XLBXWM=>XLBXWM -LSFIELD_MODEL(KFROM)%XLBXTHM=>XLBXTHM +!LSFIELD_MODEL(KFROM)%XLBXUM=>XLBXUM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLBXVM=>XLBXVM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLBXWM=>XLBXWM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLBXTHM=>XLBXTHM !Done in FIELDLIST_GOTO_MODEL LSFIELD_MODEL(KFROM)%XLBXTKEM=>XLBXTKEM LSFIELD_MODEL(KFROM)%XLBXRM=>XLBXRM LSFIELD_MODEL(KFROM)%XLBXSVM=>XLBXSVM @@ -166,10 +166,10 @@ LSFIELD_MODEL(KFROM)%XLBXTHS=>XLBXTHS LSFIELD_MODEL(KFROM)%XLBXTKES=>XLBXTKES LSFIELD_MODEL(KFROM)%XLBXRS=>XLBXRS LSFIELD_MODEL(KFROM)%XLBXSVS=>XLBXSVS -LSFIELD_MODEL(KFROM)%XLBYUM=>XLBYUM -LSFIELD_MODEL(KFROM)%XLBYVM=>XLBYVM -LSFIELD_MODEL(KFROM)%XLBYWM=>XLBYWM -LSFIELD_MODEL(KFROM)%XLBYTHM=>XLBYTHM +!LSFIELD_MODEL(KFROM)%XLBYUM=>XLBYUM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLBYVM=>XLBYVM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLBYWM=>XLBYWM !Done in FIELDLIST_GOTO_MODEL +!LSFIELD_MODEL(KFROM)%XLBYTHM=>XLBYTHM !Done in FIELDLIST_GOTO_MODEL LSFIELD_MODEL(KFROM)%XLBYTKEM=>XLBYTKEM LSFIELD_MODEL(KFROM)%XLBYRM=>XLBYRM LSFIELD_MODEL(KFROM)%XLBYSVM=>XLBYSVM @@ -208,10 +208,10 @@ XLSVS=>LSFIELD_MODEL(KTO)%XLSVS XLSWS=>LSFIELD_MODEL(KTO)%XLSWS XLSTHS=>LSFIELD_MODEL(KTO)%XLSTHS XLSRVS=>LSFIELD_MODEL(KTO)%XLSRVS -XLBXUM=>LSFIELD_MODEL(KTO)%XLBXUM -XLBXVM=>LSFIELD_MODEL(KTO)%XLBXVM -XLBXWM=>LSFIELD_MODEL(KTO)%XLBXWM -XLBXTHM=>LSFIELD_MODEL(KTO)%XLBXTHM +!XLBXUM=>LSFIELD_MODEL(KTO)%XLBXUM !Done in FIELDLIST_GOTO_MODEL +!XLBXVM=>LSFIELD_MODEL(KTO)%XLBXVM !Done in FIELDLIST_GOTO_MODEL +!XLBXWM=>LSFIELD_MODEL(KTO)%XLBXWM !Done in FIELDLIST_GOTO_MODEL +!XLBXTHM=>LSFIELD_MODEL(KTO)%XLBXTHM !Done in FIELDLIST_GOTO_MODEL XLBXTKEM=>LSFIELD_MODEL(KTO)%XLBXTKEM XLBXRM=>LSFIELD_MODEL(KTO)%XLBXRM XLBXSVM=>LSFIELD_MODEL(KTO)%XLBXSVM @@ -222,10 +222,10 @@ XLBXTHS=>LSFIELD_MODEL(KTO)%XLBXTHS XLBXTKES=>LSFIELD_MODEL(KTO)%XLBXTKES XLBXRS=>LSFIELD_MODEL(KTO)%XLBXRS XLBXSVS=>LSFIELD_MODEL(KTO)%XLBXSVS -XLBYUM=>LSFIELD_MODEL(KTO)%XLBYUM -XLBYVM=>LSFIELD_MODEL(KTO)%XLBYVM -XLBYWM=>LSFIELD_MODEL(KTO)%XLBYWM -XLBYTHM=>LSFIELD_MODEL(KTO)%XLBYTHM +!XLBYUM=>LSFIELD_MODEL(KTO)%XLBYUM !Done in FIELDLIST_GOTO_MODEL +!XLBYVM=>LSFIELD_MODEL(KTO)%XLBYVM !Done in FIELDLIST_GOTO_MODEL +!XLBYWM=>LSFIELD_MODEL(KTO)%XLBYWM !Done in FIELDLIST_GOTO_MODEL +!XLBYTHM=>LSFIELD_MODEL(KTO)%XLBYTHM XLBYTKEM=>LSFIELD_MODEL(KTO)%XLBYTKEM XLBYRM=>LSFIELD_MODEL(KTO)%XLBYRM XLBYSVM=>LSFIELD_MODEL(KTO)%XLBYSVM diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 17bdf5bba002902959a890bcfa76bbf774d9765f..ffa22a9ef6081c2e1233a321889e14d2afbe76d3 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -646,6 +646,8 @@ CALL INI_NEB ! !* 2.1 For variables in DESFM file ! +CALL ALLOC_FIELD_SCALARS() +! CALL DEFAULT_DESFM_n(1) ! CSURF = "NONE" diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index ba202ec021959ab332f5544c087aa48fa7b54448..1fbf2b90d48272a98752c0516a286cc3cd3608df 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -557,6 +557,8 @@ ZTIME1 = ZSTART CALL VERSION CPROGRAM='REAL ' ! +CALL ALLOC_FIELD_SCALARS() +! CALL DEFAULT_DESFM_n(1) NRR=1 ! diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index d017f3d117b8f7e9e0c6547703c0ed1ce5845404..41f8029cbc3f5aca47240f9016397515e42428d8 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -14,8 +14,11 @@ ! INTERFACE ! -SUBROUTINE WRITE_LB_n(HFMFILE) -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +SUBROUTINE WRITE_LB_n(TPFILE) +! +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics END SUBROUTINE WRITE_LB_n ! END INTERFACE @@ -25,7 +28,7 @@ END MODULE MODI_WRITE_LB_n ! ! ! ############################## - SUBROUTINE WRITE_LB_n(HFMFILE) + SUBROUTINE WRITE_LB_n(TPFILE) ! ############################## ! !!**** *WRITE_LFIFM_n* - routine to write LB fields in the LFIFM file @@ -33,7 +36,7 @@ END MODULE MODI_WRITE_LB_n !! PURPOSE !! ------- ! The purpose of this routine is to write LB fields in the -! HFMFILE//'.lfi' with the FM routines. +! YFMFILE//'.lfi' with the FM routines. ! !!** METHOD !! ------ @@ -116,14 +119,15 @@ USE MODD_SALT USE MODI_DUSTLFI_n USE MODI_SALTLFI_n USE MODD_PARAMETERS, ONLY: JPHEXT - - +USE MODD_IO_ll, ONLY: TFILEDATA +USE MODE_FIELD, ONLY: TFIELDDATA +! ! IMPLICIT NONE ! !* 0.1 Declarations of arguments ! -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics ! !* 0.2 Declarations of local variables ! @@ -132,6 +136,7 @@ INTEGER :: IRESP ! IRESP : return-code for fmwrit INTEGER :: IGRID ! IGRID : grid indicator CHARACTER (LEN=2) :: YDIR ! Type of the data field 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 ! @@ -139,7 +144,7 @@ INTEGER :: IRR ! Index for moist variables INTEGER :: JRR,JSV ! loop index for moist and scalar variables ! LOGICAL :: GHORELAX_R, GHORELAX_SV ! global hor. relax. informations -INTEGER :: IRIMX,IRIMY,IRIMXU,IRIMYV ! size of the RIM zone +INTEGER :: IRIMX,IRIMY ! size of the RIM zone CHARACTER (LEN=1), DIMENSION (7) :: YC ! array with the prefix of the moist variables LOGICAL, DIMENSION (7) :: GUSER ! array with the use indicator of the moist variables REAL, DIMENSION(SIZE(XLBXSVM, 1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZRHODREFX @@ -149,123 +154,50 @@ INTEGER :: JK INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX INTEGER :: IMI ! Current model index CHARACTER(LEN=2) :: INDICE ! to index CCN and IFN fields of LIMA scheme +TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------- ! !* 1. SOME INITIALIZATIONS ! -------------------- ! -IMI = GET_CURRENT_MODEL_INDEX() - CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) ! +IMI = GET_CURRENT_MODEL_INDEX() +! +YFMFILE = TPFILE%CNAME ! ! 2. WRITE THE DIMENSION OF LB FIELDS ! -------------------------------- -IGRID=1 -YDIR='--' -YCOMMENT='' -ILENCH=LEN(YCOMMENT) -! -YRECFM = 'RIMX' -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NRIMX,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM = 'RIMY' -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NRIMY,IGRID,ILENCH,YCOMMENT,IRESP) ! +CALL IO_WRITE_FIELD(TPFILE,'RIMX',CLUOUT,IRESP,NRIMX) +CALL IO_WRITE_FIELD(TPFILE,'RIMY',CLUOUT,IRESP,NRIMY) ! !* 3. BASIC VARIABLES ! -------------- ! -YRECFM = 'HORELAX_UVWTH' -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_UVWTH,IGRID,ILENCH,YCOMMENT,IRESP) -! -! -! compute the size of riming zone -IRIMX =(NSIZELBX_ll-2*JPHEXT)/2 -IRIMXU=(NSIZELBXU_ll-2*JPHEXT)/2 -IRIMY =(NSIZELBY_ll-2*JPHEXT)/2 -IRIMYV=(NSIZELBYV_ll-2*JPHEXT)/2 +CALL IO_WRITE_FIELD(TPFILE,'HORELAX_UVWTH',CLUOUT,IRESP,LHORELAX_UVWTH) ! !gathering and writing of the LB fields -IF(NSIZELBXU_ll /= 0) THEN - YRECFM='LBXUM' - YCOMMENT='2_Y_Z_LBXUM (M/S)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBXU",XLBXUM,IRIMXU,NSIZELBXU_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBY_ll /= 0) THEN - YRECFM='LBYUM' - YCOMMENT='X_2_Z_LBYUM (M/S)' - IGRID=2 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYUM,IRIMY,NSIZELBY_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBX_ll /= 0) THEN - YRECFM='LBXVM' - YCOMMENT='2_Y_Z_LBXVM (M/S)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXVM,IRIMX,NSIZELBX_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBYV_ll /= 0) THEN - YRECFM='LBYVM' - YCOMMENT='X_2_Z_LBYVM (M/S)' - IGRID=3 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBYV",XLBYVM,IRIMYV,NSIZELBYV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBX_ll /= 0) THEN - YRECFM='LBXWM' - YCOMMENT='2_Y_Z_LBXWM (M/S)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXWM,IRIMX,NSIZELBX_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBY_ll /= 0) THEN - YRECFM='LBYWM' - YCOMMENT='X_2_Z_LBYWM (M/S)' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYWM,IRIMY,NSIZELBY_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBX_ll /= 0) THEN - YRECFM='LBXTHM' - YCOMMENT='2_Y_Z_LBXTHM (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXTHM,IRIMX,NSIZELBX_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -IF(NSIZELBY_ll /= 0) THEN - YRECFM='LBYTHM' - YCOMMENT='X_2_Z_LBYTHM (K)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYTHM,IRIMY,NSIZELBY_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! +IF(NSIZELBXU_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXUM', CLUOUT,NSIZELBXU_ll,IRESP,XLBXUM) +IF(NSIZELBX_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXVM', CLUOUT,NSIZELBX_ll, IRESP,XLBXVM) +IF(NSIZELBX_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXWM', CLUOUT,NSIZELBX_ll, IRESP,XLBXWM) +IF(NSIZELBY_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYUM', CLUOUT,NSIZELBY_ll, IRESP,XLBYUM) +IF(NSIZELBYV_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYVM', CLUOUT,NSIZELBYV_ll,IRESP,XLBYVM) +IF(NSIZELBY_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYWM', CLUOUT,NSIZELBY_ll, IRESP,XLBYWM) +IF(NSIZELBX_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXTHM',CLUOUT,NSIZELBX_ll, IRESP,XLBXTHM) +IF(NSIZELBY_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYTHM',CLUOUT,NSIZELBY_ll, IRESP,XLBYTHM) ! !* 4 LB-TKE ! ------ ! +IGRID=1 +YDIR='--' +YCOMMENT='' +ILENCH=LEN(YCOMMENT) +! IF(CTURB/='NONE') THEN YRECFM = 'HORELAX_TKE' - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_TKE,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_TKE,IGRID,ILENCH,YCOMMENT,IRESP) ! IRIMX =(NSIZELBXTKE_ll-2*JPHEXT)/2 IRIMY =(NSIZELBYTKE_ll-2*JPHEXT)/2 @@ -275,7 +207,7 @@ IF(CTURB/='NONE') THEN YCOMMENT='2_Y_Z_LBXTKEM (M**2/S**2)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXTKEM,IRIMX,NSIZELBXTKE_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXTKEM,IRIMX,NSIZELBXTKE_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -284,7 +216,7 @@ IF(CTURB/='NONE') THEN YCOMMENT='X_2_Z_LBYTKEM (M**2/S**2)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYTKEM,IRIMY,NSIZELBYTKE_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYTKEM,IRIMY,NSIZELBYTKE_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END IF @@ -301,7 +233,7 @@ IF (NRR >=1) THEN YRECFM = 'HORELAX_R' YCOMMENT=' ' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_R,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_R,IGRID,ILENCH,YCOMMENT,IRESP) ! GUSER(:)=(/LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH/) YC(:)=(/"V","C","R","I","S","G","H"/) @@ -316,7 +248,7 @@ IF (NRR >=1) THEN YRECFM= 'LBXR'//YC(JRR)//'M' YCOMMENT= '2_Y_Z_LBXR'//YC(JRR)//'M (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXRM(:,:,:,IRR),IRIMX,NSIZELBXR_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXRM(:,:,:,IRR),IRIMX,NSIZELBXR_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -324,7 +256,7 @@ IF (NRR >=1) THEN YRECFM= 'LBYR'//YC(JRR)//'M' YCOMMENT= '2_Y_Z_LBYR'//YC(JRR)//'M (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYRM(:,:,:,IRR),IRIMY,NSIZELBYR_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYRM(:,:,:,IRR),IRIMY,NSIZELBYR_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END IF @@ -340,7 +272,7 @@ IF (NSV >=1) THEN YCOMMENT=' ' ILENCH=LEN(YCOMMENT) GHORELAX_SV=ANY ( LHORELAX_SV ) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_SV,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_SV,IGRID,ILENCH,YCOMMENT,IRESP) IGRID=1 IRIMX =(NSIZELBXSV_ll-2*JPHEXT)/2 IRIMY =(NSIZELBYSV_ll-2*JPHEXT)/2 @@ -349,7 +281,7 @@ IF (NSV >=1) THEN WRITE(YRECFM,'(A6,I3.3)')'LBXSVM',JSV WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -357,7 +289,7 @@ IF (NSV >=1) THEN WRITE(YRECFM,'(A6,I3.3)')'LBYSVM',JSV WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -366,7 +298,7 @@ IF (NSV >=1) THEN YRECFM='LBX_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/M3)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -374,7 +306,7 @@ IF (NSV >=1) THEN YRECFM='LBY_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/M3)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -383,7 +315,7 @@ IF (NSV >=1) THEN YRECFM='LBX_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/M3)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -391,7 +323,7 @@ IF (NSV >=1) THEN YRECFM='LBY_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/M3)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -405,7 +337,7 @@ IF (NSV >=1) THEN YRECFM='LBX_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -413,7 +345,7 @@ IF (NSV >=1) THEN YRECFM='LBY_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -424,7 +356,7 @@ IF (NSV >=1) THEN YRECFM='LBX_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -432,7 +364,7 @@ IF (NSV >=1) THEN YRECFM='LBY_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -445,7 +377,7 @@ IF (NSV >=1) THEN YRECFM='LBX_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -453,7 +385,7 @@ IF (NSV >=1) THEN YRECFM='LBY_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -489,7 +421,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1))) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -497,7 +429,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1))) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -507,7 +439,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -515,7 +447,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -528,7 +460,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1))) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -536,7 +468,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1))) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -546,7 +478,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1))) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -554,7 +486,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1))) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -564,7 +496,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_LINOX' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -572,7 +504,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_LINOX' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -631,14 +563,14 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on border points in X direction IF(NSIZELBYSV_ll /= 0) THEN YRECFM = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on points in Y direction @@ -655,14 +587,14 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on border points in X direction IF(NSIZELBYSV_ll /= 0) THEN YRECFM = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on points in Y direction ENDDO ! Loop on moments @@ -677,7 +609,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -685,7 +617,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -695,7 +627,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -703,7 +635,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -766,14 +698,14 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on border points in X direction IF(NSIZELBYSV_ll /= 0) THEN YRECFM = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on points in Y direction @@ -790,14 +722,14 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(YPSALT_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on border points in X direction IF(NSIZELBYSV_ll /= 0) THEN YRECFM = 'LBY_'//TRIM(YPSALT_INI(ISV_NAME_IDX)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) ENDIF !Check on points in Y direction @@ -812,7 +744,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -820,7 +752,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -830,7 +762,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -838,7 +770,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -852,7 +784,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (M)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -860,7 +792,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (M)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -870,7 +802,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_PP' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -878,7 +810,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_PP' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -889,7 +821,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_CS' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -897,7 +829,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_CS' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO @@ -908,7 +840,7 @@ IF (NSV >=1) THEN YRECFM = 'LBX_FF' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBX_FF',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF ! @@ -916,7 +848,7 @@ IF (NSV >=1) THEN YRECFM = 'LBY_FF' WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBY_FF',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(HFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& + CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& & IGRID,ILENCH,YCOMMENT,IRESP) END IF END DO diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 45b8d12ca9fb11daca2e2643a2c159f20b003bad..61b48cd675385ad6f47e945187489ead4efbdd00 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -320,8 +320,8 @@ INTEGER :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds ! CHARACTER(LEN=2) :: INDICE INTEGER :: I +TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------- -TYPE(TFIELDDATA) :: TZFIELD ! !* 0. Initialization ! @@ -1347,7 +1347,7 @@ CALL IO_WRITE_FIELD(TPFILE,'LSWM', CLUOUT,IRESP,XLSWM) CALL IO_WRITE_FIELD(TPFILE,'LSTHM',CLUOUT,IRESP,XLSTHM) IF (LUSERV) CALL IO_WRITE_FIELD(TPFILE,'LSRVM',CLUOUT,IRESP,XLSRVM) ! -CALL WRITE_LB_n(YFMFILE) +CALL WRITE_LB_n(TPFILE) ! ! CALL IO_WRITE_FIELD(TPFILE,'DRYMASST',CLUOUT,IRESP,XDRYMASST)