diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90 index 3c610aa2dc2a886f685abefa9cc48220ec04099e..710de1454964a505ade0a3a53b6829ce23474ee2 100644 --- a/src/MNH/ini_lb.f90 +++ b/src/MNH/ini_lb.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2021 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -151,10 +151,8 @@ USE MODD_IO, ONLY: TFILEDATA USE MODD_LG, ONLY: CLGNAMES USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_NSV -USE MODD_PARAMETERS, ONLY: JPHEXT,NMNHNAMELGTMAX -USE MODD_PARAM_LIMA -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES +USE MODD_PARAMETERS, ONLY: JPHEXT, NMNHNAMELGTMAX +USE MODD_PARAM_LIMA, ONLY: NMOD_CCN, NMOD_IFN USE MODD_PARAM_n USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES USE MODD_SALT @@ -224,14 +222,14 @@ INTEGER :: JSV,JRR ! Loop index for MOIST AND INTEGER :: IRR ! counter for moist variables INTEGER :: IRESP INTEGER :: ILUOUT ! Logical unit number associated with TLUOUT -LOGICAL :: GHORELAX_UVWTH ! switch for the horizontal relaxation for U,V,W,TH in the FM file +LOGICAL :: GHORELAX_UVWTH ! switch for the horizontal relaxation for U,V,W,TH in the FM file LOGICAL :: GHORELAX_TKE ! switch for the horizontal relaxation for tke in the FM file LOGICAL :: GHORELAX_R, GHORELAX_SV ! switch for the horizontal relaxation ! for moist and scalar variables CHARACTER (LEN= LEN(HGETRVM)), DIMENSION (7) :: YGETRXM ! Arrays with the get indicators ! for the moist variables CHARACTER (LEN=1), DIMENSION (7) :: YC ! array with the prefix of the moist variables -CHARACTER(LEN=2) :: INDICE ! to index CCN and IFN fields of LIMA scheme +CHARACTER(LEN=NMNHNAMELGTMAX) :: YMNHNAME_BASE TYPE(TFIELDMETADATA) :: TZFIELD !------------------------------------------------------------------------------- ! @@ -676,120 +674,131 @@ END IF ! LIMA: CCN and IFN scalar variables ! IF (CCLOUD=='LIMA' ) THEN - IF (NSV_LIMA_CCN_FREE+NMOD_CCN-1 >= NSV_LIMA_CCN_FREE) THEN - TZFIELD%CSTDNAME = '' - TZFIELD%CUNITS = 'kg-1' - TZFIELD%CDIR = '' - TZFIELD%NGRID = 1 - TZFIELD%NTYPE = TYPEREAL - TZFIELD%NDIMS = 3 - TZFIELD%LTIMEDEP = .TRUE. - ! - DO JSV = NSV_LIMA_CCN_FREE,NSV_LIMA_CCN_FREE+NMOD_CCN-1 - SELECT CASE(HGETSVM(JSV)) - CASE ('READ') - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_FREE + 1) - IF ( KSIZELBXSV_ll /= 0 ) THEN - TZFIELD%CMNHNAME = 'LBX_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) - TZFIELD%CLBTYPE = 'LBX' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV - CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DX,IRIMX,PLBXSVM(:,:,:,JSV),IRESP) - IF ( SIZE(PLBXSVM,1) /= 0 ) THEN - IF (IRESP/=0) THEN - IF (PRESENT(PLBXSVMM)) THEN - PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV) - WRITE(ILUOUT,*) 'CCN PLBXSVM will be initialized to 0' - ELSE + DO JSV = NSV_LIMA_CCN_FREE, NSV_LIMA_CCN_FREE + NMOD_CCN - 1 + SELECT CASE(HGETSVM(JSV)) + CASE ('READ') + TZFIELD = TSVLIST(JSV) + TZFIELD%CDIR = '' + YMNHNAME_BASE = TRIM( TZFIELD%CMNHNAME ) + + IF ( KSIZELBXSV_ll /= 0 .AND. SIZE(PLBXSVM,1) /= 0 ) THEN + TZFIELD%CMNHNAME = 'LBX_' // TRIM( YMNHNAME_BASE ) + + IF ( TPINIFILE%NMNHVERSION(1) < 5 & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) < 5 ) & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) == 5 .AND. TPINIFILE%NMNHVERSION(3) < 1 ) ) THEN + CALL OLD_CMNHNAME_GENERATE_INTERN( TZFIELD%CMNHNAME ) + END IF + + TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV + TZFIELD%CLBTYPE = 'LBX' + + CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DX,IRIMX,PLBXSVM(:,:,:,JSV),IRESP) + + IF (IRESP/=0) THEN + IF (PRESENT(PLBXSVMM)) THEN + PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV) + WRITE(ILUOUT,*) 'CCN PLBXSVM will be initialized to 0' + ELSE !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize CCN PLBXSVM') - ENDIF - END IF - END IF + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize CCN PLBXSVM') + ENDIF END IF - ! - IF (KSIZELBYSV_ll /= 0 ) THEN - TZFIELD%CMNHNAME = 'LBY_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) - TZFIELD%CLBTYPE = 'LBY' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV - CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DY,IRIMY,PLBYSVM(:,:,:,JSV),IRESP) - IF ( SIZE(PLBYSVM,1) /= 0 ) THEN - IF (IRESP/=0) THEN - IF (PRESENT(PLBYSVMM)) THEN - PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV) - WRITE(ILUOUT,*) 'CCN PLBYSVM will be initialized to 0' - ELSE + END IF + ! + IF (KSIZELBYSV_ll /= 0 .AND. SIZE(PLBYSVM,1) /= 0 ) THEN + TZFIELD%CMNHNAME = 'LBY_' // TRIM( YMNHNAME_BASE ) + + IF ( TPINIFILE%NMNHVERSION(1) < 5 & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) < 5 ) & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) == 5 .AND. TPINIFILE%NMNHVERSION(3) < 1 ) ) THEN + CALL OLD_CMNHNAME_GENERATE_INTERN( TZFIELD%CMNHNAME ) + END IF + + TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV + TZFIELD%CLBTYPE = 'LBY' + + CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DY,IRIMY,PLBYSVM(:,:,:,JSV),IRESP) + IF (IRESP/=0) THEN + IF (PRESENT(PLBYSVMM)) THEN + PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV) + WRITE(ILUOUT,*) 'CCN PLBYSVM will be initialized to 0' + ELSE !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize CCN PLBYSVM') - ENDIF - END IF - END IF + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize CCN PLBYSVM') + ENDIF END IF - CASE('INIT') - IF ( SIZE(PLBXSVM,1) /= 0 ) PLBXSVM(:,:,:,JSV) = 0. - IF ( SIZE(PLBYSVM,1) /= 0 ) PLBYSVM(:,:,:,JSV) = 0. - END SELECT - END DO - END IF + END IF + CASE('INIT') + IF ( SIZE(PLBXSVM,1) /= 0 ) PLBXSVM(:,:,:,JSV) = 0. + IF ( SIZE(PLBYSVM,1) /= 0 ) PLBYSVM(:,:,:,JSV) = 0. + END SELECT + END DO ! - IF (NSV_LIMA_IFN_FREE+NMOD_IFN-1 >= NSV_LIMA_IFN_FREE) THEN - TZFIELD%CSTDNAME = '' - TZFIELD%CUNITS = 'kg-1' - TZFIELD%CDIR = '' - TZFIELD%NGRID = 1 - TZFIELD%NTYPE = TYPEREAL - TZFIELD%NDIMS = 3 - TZFIELD%LTIMEDEP = .TRUE. - ! - DO JSV = NSV_LIMA_IFN_FREE,NSV_LIMA_IFN_FREE+NMOD_IFN-1 - SELECT CASE(HGETSVM(JSV)) - CASE ('READ') - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1) - IF ( KSIZELBXSV_ll /= 0 ) THEN - TZFIELD%CMNHNAME = 'LBX_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) - TZFIELD%CLBTYPE = 'LBX' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV - CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DX,IRIMX,PLBXSVM(:,:,:,JSV),IRESP) - IF ( SIZE(PLBXSVM,1) /= 0 ) THEN - IF (IRESP/=0) THEN - IF (PRESENT(PLBXSVMM)) THEN - PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV) - WRITE(ILUOUT,*) 'IFN PLBXSVM will be initialized to 0' - ELSE + DO JSV = NSV_LIMA_IFN_FREE,NSV_LIMA_IFN_FREE+NMOD_IFN-1 + SELECT CASE(HGETSVM(JSV)) + CASE ('READ') + TZFIELD = TSVLIST(JSV) + TZFIELD%CDIR = '' + YMNHNAME_BASE = TRIM( TZFIELD%CMNHNAME ) + + IF ( KSIZELBXSV_ll /= 0 .AND. SIZE(PLBXSVM,1) /= 0 ) THEN + TZFIELD%CMNHNAME = 'LBX_' // TRIM( YMNHNAME_BASE ) + + IF ( TPINIFILE%NMNHVERSION(1) < 5 & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) < 5 ) & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) == 5 .AND. TPINIFILE%NMNHVERSION(3) < 1 ) ) THEN + CALL OLD_CMNHNAME_GENERATE_INTERN( TZFIELD%CMNHNAME ) + END IF + + TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV + TZFIELD%CLBTYPE = 'LBX' + + CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DX,IRIMX,PLBXSVM(:,:,:,JSV),IRESP) + IF (IRESP/=0) THEN + IF (PRESENT(PLBXSVMM)) THEN + PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV) + WRITE(ILUOUT,*) 'IFN PLBXSVM will be initialized to 0' + ELSE !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize IFN') - ENDIF - END IF - END IF + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize IFN') + ENDIF END IF - ! - IF (KSIZELBYSV_ll /= 0 ) THEN - TZFIELD%CMNHNAME = 'LBY_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) - TZFIELD%CLBTYPE = 'LBY' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV - CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DY,IRIMY,PLBYSVM(:,:,:,JSV),IRESP) - IF ( SIZE(PLBYSVM,1) /= 0 ) THEN - IF (IRESP/=0) THEN - IF (PRESENT(PLBYSVMM)) THEN - PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV) - WRITE(ILUOUT,*) 'IFN PLBYSVM will be initialized to 0' - ELSE + END IF + ! + IF (KSIZELBYSV_ll /= 0 .AND. SIZE(PLBYSVM,1) /= 0 ) THEN + TZFIELD%CMNHNAME = 'LBY_' // TRIM( YMNHNAME_BASE ) + + IF ( TPINIFILE%NMNHVERSION(1) < 5 & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) < 5 ) & + .OR. ( TPINIFILE%NMNHVERSION(1) == 5 .AND. TPINIFILE%NMNHVERSION(2) == 5 .AND. TPINIFILE%NMNHVERSION(3) < 1 ) ) THEN + CALL OLD_CMNHNAME_GENERATE_INTERN( TZFIELD%CMNHNAME ) + END IF + + TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV + TZFIELD%CLBTYPE = 'LBY' + + CALL IO_Field_read_lb(TPINIFILE,TZFIELD,IL3DY,IRIMY,PLBYSVM(:,:,:,JSV),IRESP) + IF (IRESP/=0) THEN + IF (PRESENT(PLBYSVMM)) THEN + PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV) + WRITE(ILUOUT,*) 'IFN PLBYSVM will be initialized to 0' + ELSE !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize IFN') - ENDIF - END IF - END IF + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize IFN') + ENDIF END IF - CASE('INIT') - IF ( SIZE(PLBXSVM,1) /= 0 ) PLBXSVM(:,:,:,JSV) = 0. - IF ( SIZE(PLBYSVM,1) /= 0 ) PLBYSVM(:,:,:,JSV) = 0. - END SELECT - END DO - END IF -ENDIF + END IF + CASE('INIT') + IF ( SIZE(PLBXSVM,1) /= 0 ) PLBXSVM(:,:,:,JSV) = 0. + IF ( SIZE(PLBYSVM,1) /= 0 ) PLBYSVM(:,:,:,JSV) = 0. + END SELECT + END DO +END IF ! ELEC scalar variables IF (NSV_ELECEND>=NSV_ELECBEG) THEN TZFIELD%CSTDNAME = '' @@ -1634,4 +1643,29 @@ IF (OLSOURCE) THEN ! ENDIF ! +CONTAINS + + SUBROUTINE OLD_CMNHNAME_GENERATE_INTERN( YMNHNAME ) + + CHARACTER(LEN=*), INTENT(INOUT) :: YMNHNAME + + INTEGER :: IPOS + INTEGER :: JI + + !Try to generate CMNHNAME with old format + !In the old format, an indice of 2 numbers was written after the name but without trimming it + IPOS = SCAN( YMNHNAME, '0123456789' ) + + !Unmodified part YMNHNAME(1:IPOS-1) = YMNHNAME(1:IPOS-1) + + !Move number part at the new end + IF ( 4+JPSVNAMELGTMAX+2 > LEN( YMNHNAME ) ) & + CALL PRINT_MSG(NVERB_FATAL,'GEN','OLD_CMNHNAME_GENERATE_INTERN','CMNHNAME too small') + YMNHNAME(4+JPSVNAMELGTMAX+1 : 4+JPSVNAMELGTMAX+2) = YMNHNAME(IPOS : IPOS+1) + DO JI = IPOS, 4+JPSVNAMELGTMAX + YMNHNAME(JI:JI) = ' ' + END DO + + END SUBROUTINE OLD_CMNHNAME_GENERATE_INTERN + END SUBROUTINE INI_LB diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90 index 90b6c3552c829da0b0a3390bd3f0604241f2998e..12df351b513d4d821214585e9e073541d3dc385f 100644 --- a/src/MNH/read_field.f90 +++ b/src/MNH/read_field.f90 @@ -289,10 +289,6 @@ USE MODD_NSV USE MODD_OCEANH USE MODD_PARAM_C2R2, ONLY: LSUPSAT ! -USE MODD_PARAM_LIMA , ONLY: NMOD_CCN, LSCAV, LAERO_MASS, & - NMOD_IFN, NMOD_IMM, NINDICE_CCN_IMM, LHHONI -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES, CAERO_MASS USE MODD_PARAM_n, ONLY: CSCONV USE MODD_PASPOL USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES @@ -420,7 +416,6 @@ INTEGER :: IIUP,IJUP ! size of working window arrays INTEGER :: JT ! loop index LOGICAL :: GLSOURCE ! switch for the source term (for ini_ls and ini_lb) LOGICAL :: ZLRECYCL ! switch if turbulence recycling is activated -CHARACTER(LEN=2) :: INDICE CHARACTER(LEN=3) :: YFRC ! To mark the different forcing dates CHARACTER(LEN=15) :: YVAL REAL, DIMENSION(KIU,KJU,KKU) :: ZWORK ! to compute supersaturation @@ -891,70 +886,12 @@ END IF ! ! LIMA variables ! -DO JSV = NSV_LIMA_BEG,NSV_LIMA_END +DO JSV = NSV_LIMA_BEG, NSV_LIMA_END SELECT CASE(HGETSVT(JSV)) CASE ('READ') - TZFIELD%CSTDNAME = '' - WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV - TZFIELD%CDIR = 'XY' - TZFIELD%CUNITS = 'kg-1' - TZFIELD%NGRID = 1 - TZFIELD%NTYPE = TYPEREAL - TZFIELD%NDIMS = 3 - TZFIELD%LTIMEDEP = .TRUE. -! Nc - IF (JSV .EQ. NSV_LIMA_NC) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(1))//'T' - END IF -! Nr - IF (JSV .EQ. NSV_LIMA_NR) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(2))//'T' - END IF -! N CCN free - IF (JSV .GE. NSV_LIMA_CCN_FREE .AND. JSV .LT. NSV_LIMA_CCN_ACTI) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_FREE + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(3))//INDICE//'T' - END IF -! N CCN acti - IF (JSV .GE. NSV_LIMA_CCN_ACTI .AND. JSV .LT. NSV_LIMA_CCN_ACTI + NMOD_CCN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_ACTI + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(4))//INDICE//'T' - END IF -! Scavenging - IF (JSV .EQ. NSV_LIMA_SCAVMASS) THEN - TZFIELD%CMNHNAME = TRIM(CAERO_MASS(1))//'T' - TZFIELD%CUNITS = 'kg kg-1' - END IF -! Ni - IF (JSV .EQ. NSV_LIMA_NI) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(1))//'T' - END IF -! N IFN free - IF (JSV .GE. NSV_LIMA_IFN_FREE .AND. JSV .LT. NSV_LIMA_IFN_NUCL) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(2))//INDICE//'T' - END IF -! N IFN nucl - IF (JSV .GE. NSV_LIMA_IFN_NUCL .AND. JSV .LT. NSV_LIMA_IFN_NUCL + NMOD_IFN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_NUCL + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T' - END IF -! N IMM nucl - IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_IMM_NUCL + 1)) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' - END IF -! Hom. freez. of CCN - IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(5))//'T' - END IF -! -! Super saturation - IF (JSV .EQ. NSV_LIMA_SPRO) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(5))//'T' - END IF -! - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + TZFIELD = TSVLIST(JSV) + TZFIELD%CMNHNAME = TRIM( TZFIELD%CMNHNAME ) // 'T' + TZFIELD%CLONGNAME = TRIM( TZFIELD%CMNHNAME ) CALL IO_Field_read(TPINIFILE,TZFIELD,PSVT(:,:,:,JSV)) CASE ('INIT') PSVT(:,:,:,JSV) = 0. diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90 index 360cb0e0ef851b75f9e4ccb6affb4050f17ff07a..e774f4c61864e960c916a893ff34226bad0a95b8 100644 --- a/src/MNH/spawn_field2.f90 +++ b/src/MNH/spawn_field2.f90 @@ -182,10 +182,6 @@ USE MODD_LUNIT_n, ONLY: LUNIT_MODEL,TLUOUT USE MODD_NSV USE MODD_REF_n, ONLY: REF_MODEL USE MODD_PARAMETERS -USE MODD_PARAM_LIMA, ONLY: NMOD_CCN, NMOD_IFN, NMOD_IMM, NINDICE_CCN_IMM,& - LSCAV, LAERO_MASS, LHHONI -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES, CAERO_MASS USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES USE MODD_RELFRC_n USE MODD_SALT, ONLY: CSALTNAMES @@ -278,7 +274,6 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRT1 LOGICAL :: GUSERV ! CHARACTER(LEN=15) :: YVAL -CHARACTER(LEN=2) :: INDICE TYPE(TFIELDMETADATA) :: TZFIELD ! !------------------------------------------------------------------------------- @@ -880,69 +875,12 @@ IF (PRESENT(TPSONFILE)) THEN ! ! LIMA variables ! - DO JSV = NSV_LIMA_BEG,NSV_LIMA_END - TZFIELD%CSTDNAME = '' - WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV - TZFIELD%CDIR = 'XY' - TZFIELD%CUNITS = 'kg-1' - TZFIELD%NGRID = 1 - TZFIELD%NTYPE = TYPEREAL - TZFIELD%NDIMS = 3 - TZFIELD%LTIMEDEP = .TRUE. - ! Nc - IF (JSV .EQ. NSV_LIMA_NC) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(1))//'T' - END IF - ! Nr - IF (JSV .EQ. NSV_LIMA_NR) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(2))//'T' - END IF - ! N CCN free - IF (JSV .GE. NSV_LIMA_CCN_FREE .AND. JSV .LT. NSV_LIMA_CCN_ACTI) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_FREE + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(3))//INDICE//'T' - END IF - ! N CCN acti - IF (JSV .GE. NSV_LIMA_CCN_ACTI .AND. JSV .LT. NSV_LIMA_CCN_ACTI + NMOD_CCN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_ACTI + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(4))//INDICE//'T' - END IF - ! Scavenging - IF (JSV .EQ. NSV_LIMA_SCAVMASS) THEN - TZFIELD%CMNHNAME = TRIM(CAERO_MASS(1))//'T' - TZFIELD%CUNITS = 'kg kg-1' - END IF - ! Ni - IF (JSV .EQ. NSV_LIMA_NI) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(1))//'T' - END IF - ! N IFN free - IF (JSV .GE. NSV_LIMA_IFN_FREE .AND. JSV .LT. NSV_LIMA_IFN_NUCL) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(2))//INDICE//'T' - END IF - ! N IFN nucl - IF (JSV .GE. NSV_LIMA_IFN_NUCL .AND. JSV .LT. NSV_LIMA_IFN_NUCL + NMOD_IFN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_NUCL + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T' - END IF - ! N IMM nucl - IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_IMM_NUCL + 1)) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' - END IF - ! Hom. freez. of CCN - IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(5))//'T' - END IF - ! Supersaturation - IF (JSV .EQ. NSV_LIMA_SPRO) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(5))//'T' - END IF - ! time t - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + DO JSV = NSV_LIMA_BEG, NSV_LIMA_END + TZFIELD = TSVLIST(JSV) + TZFIELD%CMNHNAME = TRIM( TZFIELD%CMNHNAME ) // 'T' + TZFIELD%CLONGNAME = TRIM( TZFIELD%CMNHNAME ) CALL IO_Field_read(TPSONFILE,TZFIELD,ZWORK3D,IRESP) - IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:) + IF ( IRESP == 0 ) PSVT(KIB2:KIE2, KJB2:KJE2, :, JSV) = ZWORK3D(KIB1:KIE1, KJB1:KJE1, :) END DO ! ! ELEC Scalar Variables diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90 index cd693d89c60852c4af091a60c56add3aabd12771..a8dc25cb4964fa80b436fbc16c173c260fe86a99 100644 --- a/src/MNH/write_aircraft_balloon.f90 +++ b/src/MNH/write_aircraft_balloon.f90 @@ -98,9 +98,6 @@ USE MODD_DUST, ONLY: CDUSTNAMES, LDUST, NMODE_DST USE MODD_SALT, ONLY: CSALTNAMES USE MODD_NSV USE MODD_DIAG_IN_RUN -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES, CAERO_MASS -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES -USE MODD_PARAM_LIMA , ONLY: NINDICE_CCN_IMM,NMOD_CCN,NMOD_IFN,NMOD_IMM ! USE MODE_MODELN_HANDLER USE MODE_DUST_PSD @@ -214,7 +211,6 @@ INTEGER :: JRR ! loop counter INTEGER :: JSV ! loop counter INTEGER :: JPT ! loop counter INTEGER :: IKU, IK -CHARACTER(LEN=2) :: INDICE INTEGER :: JLOOP type(tbudiachrometadata) :: tzbudiachro type(tfieldmetadata_base), dimension(:), allocatable :: tzfields @@ -435,39 +431,13 @@ IF (SIZE(TPFLYER%SV,2)>=1) THEN ! LIMA variables DO JSV=NSV_LIMA_BEG,NSV_LIMA_END JPROC = JPROC+1 - YUNIT (JPROC) = 'kg-1' - YCOMMENT (JPROC) = ' ' - IF (JSV==NSV_LIMA_NC) YTITLE(JPROC)=TRIM(CLIMA_WARM_NAMES(1))//'T' - IF (JSV==NSV_LIMA_NR) YTITLE(JPROC)=TRIM(CLIMA_WARM_NAMES(2))//'T' - IF (JSV .GE. NSV_LIMA_CCN_FREE .AND. JSV .LT. NSV_LIMA_CCN_ACTI) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_FREE + 1) - YTITLE(JPROC)=TRIM(CLIMA_WARM_NAMES(3))//INDICE//'T' - ENDIF - IF (JSV .GE. NSV_LIMA_CCN_ACTI .AND. JSV .LT. NSV_LIMA_CCN_ACTI + NMOD_CCN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_ACTI + 1) - YTITLE(JPROC)=TRIM(CLIMA_WARM_NAMES(4))//INDICE//'T' - ENDIF - IF (JSV .EQ. NSV_LIMA_SCAVMASS) THEN - YTITLE(JPROC)=TRIM(CAERO_MASS(1))//'T' - YUNIT (JPROC) = 'kg kg-1' - ENDIF - IF (JSV==NSV_LIMA_NI) YTITLE(JPROC)=TRIM(CLIMA_COLD_NAMES(1))//'T' - IF (JSV .GE. NSV_LIMA_IFN_FREE .AND. JSV .LT. NSV_LIMA_IFN_NUCL) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1) - YTITLE(JPROC)=TRIM(CLIMA_COLD_NAMES(2))//INDICE//'T' - ENDIF - IF (JSV .GE. NSV_LIMA_IFN_NUCL .AND. JSV .LT. NSV_LIMA_IFN_NUCL + NMOD_IFN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_NUCL + 1) - YTITLE(JPROC)=TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T' - ENDIF - IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_IMM_NUCL + 1)) - YTITLE(JPROC)=TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' - ENDIF - IF (JSV .EQ. NSV_LIMA_HOM_HAZE) YTITLE(JPROC)=TRIM(CLIMA_COLD_NAMES(5))//'T' - IF (JSV .EQ. NSV_LIMA_SPRO) YTITLE(JPROC)=TRIM(CLIMA_WARM_NAMES(5))//'T' + + YTITLE(JPROC) = TRIM( TSVLIST(JSV)%CMNHNAME ) + YUNIT(JPROC) = TRIM( TSVLIST(JSV)%CUNITS ) + YCOMMENT(JPROC) = ' ' + ZWORK6 (1,1,1,:,1,JPROC) = TPFLYER%SV(:,JSV) - END DO + END DO ! electrical scalar variables DO JSV = NSV_ELECBEG,NSV_ELECEND JPROC = JPROC+1 diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index 001d85f1d874f645bc10f208aed0dfd6fe6ed42c..4b612a21e7ab6b1956fbfbf15030283fdd636f40 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -91,7 +91,7 @@ USE MODD_LUNIT_n USE MODD_PARAM_n USE MODD_TURB_n USE MODD_NSV -USE MODD_PARAM_LIMA +USE MODD_PARAM_LIMA, ONLY: NMOD_CCN, NMOD_IFN USE MODD_PARAM_n ! USE MODE_IO_FIELD_WRITE, only: IO_Field_write, IO_Field_write_lb @@ -105,8 +105,6 @@ USE MODD_ICE_C1R3_DESCR, ONLY: C1R3NAMES USE MODD_CH_M9_n, ONLY: CNAMES, CICNAMES USE MODD_LG, ONLY: CLGNAMES USE MODD_ELEC_DESCR, ONLY: CELECNAMES -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES USE MODD_CH_AEROSOL USE MODD_CH_AERO_n USE MODI_CH_AER_REALLFI_n @@ -119,9 +117,9 @@ USE MODD_DUST USE MODD_SALT USE MODI_DUSTLFI_n USE MODI_SALTLFI_n -USE MODD_PARAMETERS, ONLY: JPHEXT +USE MODD_PARAMETERS, ONLY: JPHEXT, NMNHNAMELGTMAX USE MODD_IO, ONLY: TFILEDATA -use modd_field, only: tfieldmetadata, TYPELOG, TYPEREAL +use modd_field, only: tfieldmetadata, NMNHDIM_UNKNOWN, TYPELOG, TYPEREAL ! ! IMPLICIT NONE @@ -145,14 +143,13 @@ REAL, DIMENSION(SIZE(XLBXSVM, 1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZRHODR REAL, DIMENSION(SIZE(XLBYSVM, 1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)) :: ZRHODREFY INTEGER :: JK INTEGER :: IMI ! Current model index -CHARACTER(LEN=2) :: INDICE ! to index CCN and IFN fields of LIMA scheme INTEGER :: I INTEGER :: ILBX,ILBY INTEGER :: IIB, IIE, IJB, IJE, IKB, IKE INTEGER :: IIU, IJU, IKU REAL, DIMENSION(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3)) :: ZLBXZZ REAL, DIMENSION(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3)) :: ZLBYZZ -CHARACTER(LEN=100) :: YMSG +CHARACTER(LEN=NMNHNAMELGTMAX) :: YMNHNAME_BASE TYPE(TFIELDMETADATA) :: TZFIELD !------------------------------------------------------------------------------- ! @@ -372,48 +369,48 @@ IF (NSV >=1) THEN ! LIMA: CCN and IFN scalar variables ! IF (CCLOUD=='LIMA' ) THEN - TZFIELD%CSTDNAME = '' - TZFIELD%CUNITS = 'kg-1' - TZFIELD%CDIR = '' - TZFIELD%NGRID = 1 - TZFIELD%NTYPE = TYPEREAL - TZFIELD%NDIMS = 3 - TZFIELD%LTIMEDEP = .TRUE. - ! DO JSV = NSV_LIMA_CCN_FREE,NSV_LIMA_CCN_FREE+NMOD_CCN-1 - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_FREE + 1) + TZFIELD = TSVLIST(JSV) + TZFIELD%CDIR = '' + TZFIELD%NDIMLIST(:) = NMNHDIM_UNKNOWN + YMNHNAME_BASE = TRIM( TZFIELD%CMNHNAME ) + ! IF(NSIZELBXSV_ll /= 0) THEN - TZFIELD%CMNHNAME = 'LBX_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + TZFIELD%CMNHNAME = 'LBX_' // TRIM( YMNHNAME_BASE ) + TZFIELD%CLONGNAME = 'LBX_' // TRIM( YMNHNAME_BASE ) + WRITE( TZFIELD%CCOMMENT, '( A6, A6, I3.3 ) ' ) '2_Y_Z_', 'LBXSVM', JSV TZFIELD%CLBTYPE = 'LBX' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV CALL IO_Field_write_lb(TPFILE,TZFIELD,NSIZELBXSV_ll,XLBXSVM(:,:,:,JSV)) END IF ! IF(NSIZELBYSV_ll /= 0) THEN - TZFIELD%CMNHNAME = 'LBY_'//TRIM(UPCASE(CLIMA_WARM_NAMES(3))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + TZFIELD%CMNHNAME = 'LBY_' // TRIM( YMNHNAME_BASE ) + TZFIELD%CLONGNAME = 'LBY_' // TRIM( YMNHNAME_BASE ) + WRITE( TZFIELD%CCOMMENT, '( A6, A6, I3.3 ) ' ) 'X_2_Z_', 'LBYSVM', JSV TZFIELD%CLBTYPE = 'LBY' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV CALL IO_Field_write_lb(TPFILE,TZFIELD,NSIZELBYSV_ll,XLBYSVM(:,:,:,JSV)) END IF END DO ! DO JSV = NSV_LIMA_IFN_FREE,NSV_LIMA_IFN_FREE+NMOD_IFN-1 - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1) + TZFIELD = TSVLIST(JSV) + TZFIELD%CDIR = '' + TZFIELD%NDIMLIST(:) = NMNHDIM_UNKNOWN + YMNHNAME_BASE = TRIM( TZFIELD%CMNHNAME ) + ! IF(NSIZELBXSV_ll /= 0) THEN - TZFIELD%CMNHNAME = 'LBX_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + TZFIELD%CMNHNAME = 'LBX_' // TRIM( YMNHNAME_BASE ) + TZFIELD%CLONGNAME = 'LBX_' // TRIM( YMNHNAME_BASE ) + WRITE( TZFIELD%CCOMMENT, '( A6, A6, I3.3 ) ' ) '2_Y_Z_', 'LBXSVM', JSV TZFIELD%CLBTYPE = 'LBX' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'2_Y_Z_','LBXSVM',JSV CALL IO_Field_write_lb(TPFILE,TZFIELD,NSIZELBXSV_ll,XLBXSVM(:,:,:,JSV)) END IF ! IF(NSIZELBYSV_ll /= 0) THEN - TZFIELD%CMNHNAME = 'LBY_'//TRIM(UPCASE(CLIMA_COLD_NAMES(2))//INDICE) - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + TZFIELD%CMNHNAME = 'LBY_' // TRIM( YMNHNAME_BASE ) + TZFIELD%CLONGNAME = 'LBY_' // TRIM( YMNHNAME_BASE ) + WRITE( TZFIELD%CCOMMENT, '( A6, A6, I3.3 ) ' ) 'X_2_Z_', 'LBYSVM', JSV TZFIELD%CLBTYPE = 'LBY' - WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3)')'X_2_Z_','LBYSVM',JSV CALL IO_Field_write_lb(TPFILE,TZFIELD,NSIZELBYSV_ll,XLBYSVM(:,:,:,JSV)) END IF END DO diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 6b1823d8c1db42bcae9b04371e35a3811c66edee..2fdcafd4435bf4a12d4c7d9d395c7b2fb8507aa9 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -244,10 +244,7 @@ USE MODD_PAST_FIELD_n USE MODD_ADV_n, ONLY: CUVW_ADV_SCHEME,XRTKEMS,CTEMP_SCHEME,LSPLIT_CFL USE MODD_ELEC_FLASH ! -USE MODD_PARAM_LIMA , ONLY: NMOD_CCN, LSCAV, LAERO_MASS, & - NMOD_IFN, NMOD_IMM, NINDICE_CCN_IMM, LHHONI -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES, CAERO_MASS -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES +USE MODD_PARAM_LIMA, ONLY: LSCAV, LAERO_MASS USE MODD_LIMA_PRECIP_SCAVENGING_n ! USE MODE_IO_FILE, only: IO_File_close @@ -332,7 +329,6 @@ INTEGER :: IKRAD INTEGER :: JI,JJ,JK ! loop index INTEGER :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds ! -CHARACTER(LEN=2) :: INDICE INTEGER :: IID TYPE(TFIELDMETADATA) :: TZFIELD !------------------------------------------------------------------------------- @@ -965,73 +961,11 @@ IF (NSV >=1) THEN ! ! microphysical LIMA variables ! - IF (NSV_LIMA_END>=NSV_LIMA_BEG) THEN - TZFIELD%CSTDNAME = '' - TZFIELD%CDIR = 'XY' - TZFIELD%NGRID = 1 - TZFIELD%NTYPE = TYPEREAL - TZFIELD%NDIMS = 3 - TZFIELD%LTIMEDEP = .TRUE. - END IF - ! - DO JSV = NSV_LIMA_BEG,NSV_LIMA_END - ! - TZFIELD%CUNITS = 'kg-1' - WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV - ! -! Nc - IF (JSV .EQ. NSV_LIMA_NC) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(1))//'T' - END IF -! Nr - IF (JSV .EQ. NSV_LIMA_NR) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(2))//'T' - END IF -! N CCN free - IF (JSV .GE. NSV_LIMA_CCN_FREE .AND. JSV .LT. NSV_LIMA_CCN_ACTI) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_FREE + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(3))//INDICE//'T' - END IF -! N CCN acti - IF (JSV .GE. NSV_LIMA_CCN_ACTI .AND. JSV .LT. NSV_LIMA_CCN_ACTI + NMOD_CCN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_CCN_ACTI + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(4))//INDICE//'T' - END IF -! Scavenging - IF (JSV .EQ. NSV_LIMA_SCAVMASS) THEN - TZFIELD%CMNHNAME = TRIM(CAERO_MASS(1))//'T' - TZFIELD%CUNITS = 'kg kg-1' - END IF -! Ni - IF (JSV .EQ. NSV_LIMA_NI) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(1))//'T' - END IF -! N IFN free - IF (JSV .GE. NSV_LIMA_IFN_FREE .AND. JSV .LT. NSV_LIMA_IFN_NUCL) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_FREE + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(2))//INDICE//'T' - END IF -! N IFN nucl - IF (JSV .GE. NSV_LIMA_IFN_NUCL .AND. JSV .LT. NSV_LIMA_IFN_NUCL + NMOD_IFN) THEN - WRITE(INDICE,'(I2.2)')(JSV - NSV_LIMA_IFN_NUCL + 1) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T' - END IF -! N IMM nucl - IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_IMM_NUCL + 1)) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' - END IF -! Hom. freez. of CCN - IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(5))//'T' - END IF - ! -! Supersaturation - IF (JSV .EQ. NSV_LIMA_SPRO) THEN - TZFIELD%CMNHNAME = TRIM(CLIMA_WARM_NAMES(5))//'T' - END IF - ! - TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) + DO JSV = NSV_LIMA_BEG, NSV_LIMA_END + + TZFIELD = TSVLIST(JSV) + TZFIELD%CMNHNAME = TRIM( TZFIELD%CMNHNAME ) // 'T' + TZFIELD%CLONGNAME = TRIM( TZFIELD%CMNHNAME ) CALL IO_Field_write(TPFILE,TZFIELD,XSVT(:,:,:,JSV)) ! JSA=JSA+1 diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90 index 13d9e1a8e69c53c793ad68cb07f01c1c795a2189..482a677130e2b5165b7d982b4abd74215d731834 100644 --- a/src/MNH/write_profilern.f90 +++ b/src/MNH/write_profilern.f90 @@ -21,16 +21,18 @@ ! ########################### MODULE MODE_WRITE_PROFILER_n ! ########################### -! + +use modd_parameters, only: NCOMMENTLGTMAX, NMNHNAMELGTMAX, NUNITLGTMAX + implicit none private public :: WRITE_PROFILER_n -CHARACTER(LEN=100), DIMENSION(:), ALLOCATABLE :: CCOMMENT ! comment string -CHARACTER(LEN=100), DIMENSION(:), ALLOCATABLE :: CTITLE ! title -CHARACTER(LEN=100), DIMENSION(:), ALLOCATABLE :: CUNIT ! physical unit +CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), ALLOCATABLE :: CCOMMENT ! comment string +CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), ALLOCATABLE :: CTITLE ! title +CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), ALLOCATABLE :: CUNIT ! physical unit REAL, DIMENSION(:,:,:,:,:,:), ALLOCATABLE :: XWORK6 ! contains temporal serie @@ -92,9 +94,6 @@ USE MODD_IO, ONLY: TFILEDATA USE MODD_LG, ONLY: CLGNAMES USE MODD_NSV USE MODD_PARAMETERS, ONLY: XUNDEF -USE MODD_PARAM_LIMA, ONLY: NINDICE_CCN_IMM,NMOD_CCN,NMOD_IFN,NMOD_IMM -USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_NAMES -USE MODD_PARAM_LIMA_WARM, ONLY: CLIMA_WARM_NAMES, CAERO_MASS USE MODD_PARAM_n, ONLY: CRAD USE MODD_PROFILER_n USE MODD_RADIATIONS_n, ONLY: NAER @@ -111,9 +110,9 @@ INTEGER, INTENT(IN) :: KI ! !* 0.2 declaration of local variables for diachro ! -character(len=2) :: yidx -character(len=100) :: ycomment -character(len=100) :: yname +character(len=NCOMMENTLGTMAX) :: ycomment +character(len=NMNHNAMELGTMAX) :: yname +character(len=NUNITLGTMAX) :: yunits CHARACTER(LEN=:), allocatable :: YGROUP ! group title INTEGER :: IKU INTEGER :: IPROC ! number of variables records @@ -207,35 +206,10 @@ if ( Size( tprofiler%sv, 4 ) > 0 ) then end do ! LIMA variables do jsv = nsv_lima_beg, nsv_lima_end - if ( jsv == nsv_lima_nc ) then - yname = Trim( clima_warm_names(1) ) // 'T' - else if ( jsv == nsv_lima_nr ) then - yname = Trim( clima_warm_names(2) ) // 'T' - else if ( jsv >= nsv_lima_ccn_free .and. jsv < nsv_lima_ccn_free + nmod_ccn ) then - Write( yidx, '( i2.2 )' ) jsv - nsv_lima_ccn_free + 1 - yname = Trim( clima_warm_names(3) ) // yidx // 'T' - else if ( jsv >= nsv_lima_ccn_acti .and. jsv < nsv_lima_ccn_acti + nmod_ccn ) then - Write( yidx, '( i2.2 )' ) jsv - nsv_lima_ccn_acti + 1 - yname = Trim( clima_warm_names(4) ) // yidx // 'T' - else if ( jsv == nsv_lima_scavmass ) then - yname = Trim( caero_mass(1) ) // 'T' - else if ( jsv == nsv_lima_ni ) then - yname = Trim( clima_cold_names(1) ) // 'T' - else if ( jsv >= nsv_lima_ifn_free .and. jsv < nsv_lima_ifn_free + nmod_ifn ) then - Write( yidx, '( i2.2 )' ) jsv - nsv_lima_ifn_free + 1 - yname = Trim( clima_cold_names(2) ) // yidx // 'T' - else if ( jsv >= nsv_lima_ifn_nucl .and. jsv < nsv_lima_ifn_nucl + nmod_ifn ) then - Write( yidx, '( i2.2 )' ) jsv - nsv_lima_ifn_nucl + 1 - yname = Trim( clima_cold_names(3) ) // yidx // 'T' - else if ( jsv >= nsv_lima_imm_nucl .and. jsv < nsv_lima_imm_nucl + nmod_imm ) then - write( yidx, '( i2.2 )' ) nindice_ccn_imm(jsv - nsv_lima_imm_nucl + 1) - yname = Trim( clima_cold_names(4) ) // yidx // 'T' - else if ( jsv == nsv_lima_hom_haze ) then - yname = Trim( clima_cold_names(5) ) // 'T' - else if ( jsv == nsv_lima_spro ) then - yname = Trim( clima_warm_names(5) ) // 'T' - end if - call Add_profile( yname, '', 'kg-1', tprofiler%sv(:,:,:,jsv) ) + yname = Trim( tsvlist(jsv)%cmnhname ) + yunits = Trim( tsvlist(jsv)%cunits ) + ycomment = '' + call Add_profile( yname, ycomment, yunits, tprofiler%sv(:,:,:,jsv) ) end do ! electrical scalar variables do jsv = nsv_elecbeg, nsv_elecend