diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 8846fbaf118e3b264d62e93e52dfe87340d5b50b..9e361758f9f2bacdc899da99d8f38934dbf23672 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -1264,6 +1264,47 @@ ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'HORELAX_TKE' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: HORELAX_TKE' +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 = 'LBXTKEM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBXTKEM' +TFIELDLIST(IDX)%CUNITS = 'm2 s-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBX' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBXTKEM' +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 = 'LBYTKEM' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: LBYTKEM' +TFIELDLIST(IDX)%CUNITS = 'm2 s-2' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CLBTYPE = 'LBY' +TFIELDLIST(IDX)%CCOMMENT = '2_Y_Z_LBYTKEM' +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' @@ -1773,6 +1814,10 @@ 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 +IF (.NOT.ASSOCIATED(LHORELAX_TKE)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','ALLOC_FIELD_SCALARS',' LHORELAX_TKE was not associated') + ALLOCATE(LHORELAX_TKE) +END IF ! END SUBROUTINE ALLOC_FIELD_SCALARS ! @@ -1800,72 +1845,85 @@ IF (.NOT.ASSOCIATED(LSLEVE)) THEN CALL FIND_FIELD_ID_FROM_MNHNAME('SLEVE',IID,IRESP) TFIELDLIST(IID)%TFIELD_L0D(1)%DATA=>LSLEVE END IF +! IF (.NOT.ASSOCIATED(XLEN1)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' XLEN1 was not associated') ALLOCATE(XLEN1) CALL FIND_FIELD_ID_FROM_MNHNAME('LEN1',IID,IRESP) TFIELDLIST(IID)%TFIELD_X0D(1)%DATA=>XLEN1 END IF +! IF (.NOT.ASSOCIATED(XLEN2)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' XLEN2 was not associated') ALLOCATE(XLEN2) CALL FIND_FIELD_ID_FROM_MNHNAME('LEN2',IID,IRESP) TFIELDLIST(IID)%TFIELD_X0D(1)%DATA=>XLEN2 END IF +! IF (.NOT.ASSOCIATED(TDTMOD)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' TDTMOD was not associated') ALLOCATE(TDTMOD) CALL FIND_FIELD_ID_FROM_MNHNAME('DTMOD',IID,IRESP) TFIELDLIST(IID)%TFIELD_T0D(1)%DATA=>TDTMOD END IF +! IF (.NOT.ASSOCIATED(TDTCUR)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' TDTCUR was not associated') ALLOCATE(TDTCUR) CALL FIND_FIELD_ID_FROM_MNHNAME('DTCUR',IID,IRESP) TFIELDLIST(IID)%TFIELD_T0D(1)%DATA=>TDTCUR END IF +! IF (.NOT.ASSOCIATED(TDTRAD_FULL)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' TDTRAD_FULL was not associated') ALLOCATE(TDTRAD_FULL) CALL FIND_FIELD_ID_FROM_MNHNAME('DTRAD_FULL',IID,IRESP) TFIELDLIST(IID)%TFIELD_T0D(1)%DATA=>TDTRAD_FULL END IF +! IF (.NOT.ASSOCIATED(TDTRAD_CLONLY)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' TDTRAD_CLONLY was not associated') ALLOCATE(TDTRAD_CLONLY) CALL FIND_FIELD_ID_FROM_MNHNAME('DTRAD_CLLY',IID,IRESP) TFIELDLIST(IID)%TFIELD_T0D(1)%DATA=>TDTRAD_CLONLY END IF +! IF (.NOT.ASSOCIATED(TDTDCONV)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' TDTDCONV was not associated') ALLOCATE(TDTDCONV) CALL FIND_FIELD_ID_FROM_MNHNAME('DTDCONV',IID,IRESP) TFIELDLIST(IID)%TFIELD_T0D(1)%DATA=>TDTDCONV END IF +! IF (.NOT.ASSOCIATED(CSURF)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' CSURF was not associated') ALLOCATE(CHARACTER(LEN=4) :: CSURF) CALL FIND_FIELD_ID_FROM_MNHNAME('SURF',IID,IRESP) TFIELDLIST(IID)%TFIELD_C0D(1)%DATA=>CSURF END IF +! IF (.NOT.ASSOCIATED(XDRYMASST)) THEN CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' XDRYMASST was not associated') ALLOCATE(XDRYMASST) 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) @@ -1873,6 +1931,13 @@ END IF CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_UVWTH',IID,IRESP) TFIELDLIST(IID)%TFIELD_L0D(1)%DATA=>LHORELAX_UVWTH ! +IF (.NOT.ASSOCIATED(LHORELAX_TKE)) THEN + CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_SCALARS',' LHORELAX_TKE was not associated') + ALLOCATE(LHORELAX_TKE) +END IF +CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_TKE',IID,IRESP) +TFIELDLIST(IID)%TFIELD_L0D(1)%DATA=>LHORELAX_TKE +! END SUBROUTINE INI_FIELD_SCALARS ! ! @@ -2231,6 +2296,14 @@ IF (.NOT.ASSOCIATED(TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA)) THEN END IF LHORELAX_UVWTH => TFIELDLIST(IID)%TFIELD_L0D(KTO)%DATA ! +CALL FIND_FIELD_ID_FROM_MNHNAME('HORELAX_TKE',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_TKE => 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 diff --git a/src/MNH/modd_dynn.f90 b/src/MNH/modd_dynn.f90 index 7e56e33e8a78cb4362d9112845194156c44cb6a4..204f1396eefc12cca4e16d38cc7dae3b87a8cf17 100644 --- a/src/MNH/modd_dynn.f90 +++ b/src/MNH/modd_dynn.f90 @@ -121,7 +121,7 @@ TYPE DYN_t LOGICAL :: LHORELAX_RV, LHORELAX_RC, LHORELAX_RR, LHORELAX_RI LOGICAL :: LHORELAX_RS, LHORELAX_RG, LHORELAX_RH ! - LOGICAL :: LHORELAX_TKE +! LOGICAL :: LHORELAX_TKE ! LOGICAL :: LHORELAX_SVC2R2 LOGICAL :: LHORELAX_SVC1R3 @@ -318,7 +318,7 @@ LHORELAX_RI=>DYN_MODEL(KTO)%LHORELAX_RI LHORELAX_RS=>DYN_MODEL(KTO)%LHORELAX_RS LHORELAX_RG=>DYN_MODEL(KTO)%LHORELAX_RG LHORELAX_RH=>DYN_MODEL(KTO)%LHORELAX_RH -LHORELAX_TKE=>DYN_MODEL(KTO)%LHORELAX_TKE +!LHORELAX_TKE=>DYN_MODEL(KTO)%LHORELAX_TKE !Done in FIELDLIST_GOTO_MODEL LHORELAX_SVC2R2=>DYN_MODEL(KTO)%LHORELAX_SVC2R2 LHORELAX_SVC1R3=>DYN_MODEL(KTO)%LHORELAX_SVC1R3 LHORELAX_SVLIMA=>DYN_MODEL(KTO)%LHORELAX_SVLIMA diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index 41f8029cbc3f5aca47240f9016397515e42428d8..f46ada8da769760f13afe05a53299c8bb06c245e 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -120,7 +120,7 @@ USE MODI_DUSTLFI_n USE MODI_SALTLFI_n USE MODD_PARAMETERS, ONLY: JPHEXT USE MODD_IO_ll, ONLY: TFILEDATA -USE MODE_FIELD, ONLY: TFIELDDATA +USE MODE_FIELD, ONLY: TFIELDDATA,TYPELOG,TYPEREAL ! ! IMPLICIT NONE @@ -196,29 +196,10 @@ YCOMMENT='' ILENCH=LEN(YCOMMENT) ! IF(CTURB/='NONE') THEN - YRECFM = 'HORELAX_TKE' - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LHORELAX_TKE,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'HORELAX_TKE',CLUOUT,IRESP,LHORELAX_TKE) ! - IRIMX =(NSIZELBXTKE_ll-2*JPHEXT)/2 - IRIMY =(NSIZELBYTKE_ll-2*JPHEXT)/2 - - IF(NSIZELBXTKE_ll /= 0) THEN - YRECFM='LBXTKEM' - YCOMMENT='2_Y_Z_LBXTKEM (M**2/S**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXTKEM,IRIMX,NSIZELBXTKE_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF -! - IF(NSIZELBYTKE_ll /= 0) THEN - YRECFM='LBYTKEM' - YCOMMENT='X_2_Z_LBYTKEM (M**2/S**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYTKEM,IRIMY,NSIZELBYTKE_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF + IF(NSIZELBXTKE_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBXTKEM',CLUOUT,NSIZELBXTKE_ll,IRESP,XLBXTKEM) + IF(NSIZELBYTKE_ll /= 0) CALL IO_WRITE_FIELD_LB(TPFILE,'LBYTKEM',CLUOUT,NSIZELBYTKE_ll,IRESP,XLBYTKEM) END IF ! ! @@ -226,43 +207,57 @@ END IF ! ----- ! IF (NRR >=1) THEN - IGRID=1 GHORELAX_R = LHORELAX_RV .OR. LHORELAX_RC .OR. LHORELAX_RR .OR. & LHORELAX_RI .OR. LHORELAX_RS .OR. LHORELAX_RG .OR. & LHORELAX_RH - YRECFM = 'HORELAX_R' - YCOMMENT=' ' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,GHORELAX_R,IGRID,ILENCH,YCOMMENT,IRESP) +! + TZFIELD%CMNHNAME = 'HORELAX_R' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: HORELAX_R' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Switch to activate the HOrizontal RELAXation' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPELOG + TZFIELD%NDIMS = 0 +! + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,GHORELAX_R) ! GUSER(:)=(/LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH/) YC(:)=(/"V","C","R","I","S","G","H"/) - IRIMX =(NSIZELBXR_ll-2*JPHEXT)/2 - IRIMY =(NSIZELBYR_ll-2*JPHEXT)/2 IRR=0 +! + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = '--' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 ! Loop on moist variables DO JRR=1,7 IF (GUSER(JRR)) THEN IRR=IRR+1 IF(NSIZELBXR_ll /= 0) THEN - YRECFM= 'LBXR'//YC(JRR)//'M' - YCOMMENT= '2_Y_Z_LBXR'//YC(JRR)//'M (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXRM(:,:,:,IRR),IRIMX,NSIZELBXR_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LBXR'//YC(JRR)//'M' + TZFIELD%CLONGNAME = 'MesoNH: LBXR'//YC(JRR)//'M' + TZFIELD%CLBTYPE = 'LBX' + TZFIELD%CCOMMENT = '2_Y_Z_LBXR'//YC(JRR)//'M' + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXR_ll,IRESP,XLBXRM(:,:,:,IRR)) END IF ! IF(NSIZELBYR_ll /= 0) THEN - YRECFM= 'LBYR'//YC(JRR)//'M' - YCOMMENT= '2_Y_Z_LBYR'//YC(JRR)//'M (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYRM(:,:,:,IRR),IRIMY,NSIZELBYR_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LBYR'//YC(JRR)//'M' + TZFIELD%CLONGNAME = 'MesoNH: LBYR'//YC(JRR)//'M' + TZFIELD%CLBTYPE = 'LBY' + TZFIELD%CCOMMENT = '2_Y_Z_LBYR'//YC(JRR)//'M' + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXR_ll,IRESP,XLBYRM(:,:,:,IRR)) END IF END IF END DO END IF ! +TZFIELD%CLBTYPE = 'NONE' !Just to be careful +! !* 7 LB-SV ! ----- !