From f943a483fbf410bb4e5e71ed599bd48f530c603f Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 22 Dec 2023 14:37:32 +0100 Subject: [PATCH] Philippe 22/12/2023: IO: allow more flexible filenames (CEXP and CSEG are a lot bigger and are trimmed) + use NFILENAMELGTMAX for all files --- src/LIB/SURCOUCHE/src/mode_io_field_write.f90 | 29 +++---- .../SURCOUCHE/src/mode_io_manage_struct.f90 | 2 +- src/MNH/ch_read_chem.f90 | 3 +- src/MNH/compare_dad.f90 | 16 ++-- src/MNH/compute_spectre.f90 | 4 +- src/MNH/default_desfmn.f90 | 2 +- src/MNH/diag.f90 | 14 ++-- src/MNH/flash_geom_elec.f90 | 2 +- src/MNH/ini_modeln.f90 | 38 ++++++---- src/MNH/ini_segn.f90 | 23 +++--- src/MNH/ini_size_spawn.f90 | 13 +--- src/MNH/ini_sizen.f90 | 23 +++--- src/MNH/ini_spectren.f90 | 11 +-- src/MNH/init_ground_paramn.f90 | 10 ++- src/MNH/init_mnh.f90 | 2 +- src/MNH/latlon_to_xy.f90 | 8 +- src/MNH/mesonh.f90 | 15 ++-- src/MNH/mnh2lpdm_ech.f90 | 2 +- src/MNH/mnh2lpdm_ini.f90 | 4 +- src/MNH/mnhclose_aux_io_surf.f90 | 15 ++-- src/MNH/mnhend_io_surfn.f90 | 4 +- src/MNH/mnhopen_aux_io_surf.f90 | 20 ++--- src/MNH/mnhopen_namelist.f90 | 19 +++-- src/MNH/modd_ch_mnhcn.f90 | 14 ++-- src/MNH/modd_ch_model0d.f90 | 19 ++--- src/MNH/modd_conf.f90 | 8 +- src/MNH/modd_eol_shared_io.f90 | 12 +-- src/MNH/modd_firen.f90 | 6 +- src/MNH/modd_hurr_conf.f90 | 14 ++-- src/MNH/modd_io_surf_mnh.f90 | 8 +- src/MNH/modd_lma_simulator.f90 | 5 +- src/MNH/modd_lunitn.f90 | 22 ++---- src/MNH/modd_mnh2lpdm.f90 | 15 ++-- src/MNH/modd_parameters.f90 | 28 ++++++- src/MNH/modd_spawn.f90 | 13 ++-- src/MNH/modd_sto_file.f90 | 14 ++-- src/MNH/modn_ch_mnhcn.f90 | 7 +- src/MNH/modn_firen.f90 | 3 +- src/MNH/modn_lunitn.f90 | 26 +++---- src/MNH/open_file_mnh.f90 | 31 ++++---- src/MNH/open_nestpgd_files.f90 | 44 +++++------ src/MNH/open_prc_files.f90 | 76 ++++++++++--------- src/MNH/prep_ideal_case.f90 | 22 ++++-- src/MNH/prep_nest_pgd.f90 | 12 +-- src/MNH/prep_pgd.f90 | 21 ++--- src/MNH/prep_real_case.f90 | 16 ++-- src/MNH/prep_surf_mnh.f90 | 19 ++--- src/MNH/prep_surfex.f90 | 23 +++--- src/MNH/read_all_data_grib_case.f90 | 37 ++++----- src/MNH/read_all_data_mesonh_case.f90 | 25 +++--- src/MNH/read_asc_latpress.f90 | 29 +++---- src/MNH/read_ascp.f90 | 25 +++--- src/MNH/read_cams_data_netcdf_case.f90 | 35 ++++----- src/MNH/read_chem_data_cams_case.f90 | 41 +++++----- src/MNH/read_chem_data_mozart_case.f90 | 37 ++++----- src/MNH/read_chem_data_netcdf_case.f90 | 35 ++++----- src/MNH/read_exsegn.f90 | 15 ++-- src/MNH/read_exspa.f90 | 70 ++++++++--------- src/MNH/read_grid_time_mesonh_case.f90 | 22 +++--- src/MNH/read_hgrid.f90 | 25 +++--- src/MNH/read_hgridn.f90 | 23 +++--- src/MNH/read_lima_data_netcdf_case.f90 | 37 ++++----- src/MNH/read_pre_idea_namn.f90 | 3 +- src/MNH/resolved_elecn.f90 | 12 +-- src/MNH/series_cloud_elec.f90 | 3 +- src/MNH/set_advfrc.f90 | 18 ++--- src/MNH/set_relfrc.f90 | 18 ++--- src/MNH/set_subdomain.f90 | 4 +- src/MNH/spawn_model2.f90 | 34 +++++---- src/MNH/spawn_surf.f90 | 23 +++--- src/MNH/spawning.f90 | 4 +- src/MNH/spectre.f90 | 9 ++- src/MNH/spectre_arome.f90 | 2 +- src/MNH/write_lfifm1_for_diag.f90 | 19 +++-- src/MNH/write_ts1d.f90 | 8 +- src/MNH/xy_to_latlon.f90 | 6 +- src/MNH/zoom_pgd.f90 | 14 ++-- 77 files changed, 724 insertions(+), 666 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 index 6eed332ee..af05775a2 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 @@ -30,7 +30,7 @@ MODULE MODE_IO_FIELD_WRITE TYPECHAR, TYPEDATE, TYPEINT, TYPELOG, TYPEREAL USE MODD_IO, ONLY: TFILEDATA, TOUTBAK USE MODD_MPIF - use modd_parameters, only: NMNHNAMELGTMAX + use modd_parameters, only: NFILENAMELGTMAX, NMNHNAMELGTMAX use modd_precision, only: MNHINT_MPI, MNHREAL_MPI, MNHTIME use mode_field, only: Find_field_id_from_mnhname @@ -537,7 +537,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -621,6 +621,7 @@ end subroutine IO_Ndimlist_reduce ! END SUBROUTINE IO_Field_write_byname_X1 + SUBROUTINE IO_Field_write_byfield_X1( TPFILE, TPFIELD, PFIELD, KRESP, koffset ) USE MODD_IO, ONLY: GSMONOPROC, ISP ! @@ -640,7 +641,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -770,7 +771,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -1027,7 +1028,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -1492,7 +1493,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -1704,7 +1705,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -1875,7 +1876,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -2078,7 +2079,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -2190,7 +2191,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -2369,7 +2370,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -2546,7 +2547,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -2844,7 +2845,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=2) :: YDIR ! field form INTEGER :: IERR @@ -3293,7 +3294,7 @@ end subroutine IO_Ndimlist_reduce ! !* 0.2 Declarations of local variables ! - CHARACTER(LEN=28) :: YFILEM ! FM-file name + CHARACTER(LEN=NFILENAMELGTMAX) :: YFILEM ! FM-file name CHARACTER(LEN=NMNHNAMELGTMAX) :: YRECFM ! name of the article to write CHARACTER(LEN=4) :: YLBTYPE ! 'LBX','LBXU','LBY' or 'LBYV' INTEGER :: IRIM ! size of the LB area diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 index adcb35682..8fcc8e304 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 @@ -50,7 +50,7 @@ USE MODD_DYN, ONLY : XSEGLEN USE MODD_DYN_n, ONLY : DYN_MODEL use modd_field, only: tfieldlist USE MODD_IO_SURF_MNH,ONLY : IO_SURF_MNH_MODEL -USE MODD_NESTING, ONLY : CDAD_NAME,NDAD +USE MODD_NESTING, ONLY : NDAD USE MODD_NSV, ONLY: NSV USE MODD_OUT_n, ONLY : OUT_MODEL USE MODD_VAR_ll, ONLY : IP diff --git a/src/MNH/ch_read_chem.f90 b/src/MNH/ch_read_chem.f90 index 29a166440..be8779075 100644 --- a/src/MNH/ch_read_chem.f90 +++ b/src/MNH/ch_read_chem.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2023 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. @@ -90,7 +90,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HFILE ! name of the file to be read from character(len=10) :: yval1, yval2 character(len=256) :: yioerrmsg CHARACTER(LEN=32) :: YVARNAME -CHARACTER(LEN=80) :: YINPUT INTEGER :: ILU ! unit number for IO integer :: iresp INTEGER :: JI, JJ, IIN diff --git a/src/MNH/compare_dad.f90 b/src/MNH/compare_dad.f90 index 983eb5188..37692798d 100644 --- a/src/MNH/compare_dad.f90 +++ b/src/MNH/compare_dad.f90 @@ -11,9 +11,11 @@ INTERFACE ! SUBROUTINE COMPARE_DAD (HDADINIFILE,HDADSPAFILE,KRESP) ! -CHARACTER (LEN=*), INTENT(IN) :: HDADINIFILE ! Name of true DAD FM file -CHARACTER (LEN=*), INTENT(IN) :: HDADSPAFILE ! Name of Replaced DAD FM file -INTEGER, INTENT(OUT) :: KRESP ! logical switch +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX + +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADINIFILE ! Name of true DAD FM file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADSPAFILE ! Name of Replaced DAD FM file +INTEGER, INTENT(OUT) :: KRESP ! logical switch ! END SUBROUTINE COMPARE_DAD ! @@ -69,7 +71,7 @@ USE MODD_CONF use modd_field, only: tfieldmetadata, tfieldlist USE MODD_IO, ONLY: TFILEDATA USE MODD_LUNIT_n, ONLY: TLUOUT -USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, NMNHNAMELGTMAX +USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, NFILENAMELGTMAX, NMNHNAMELGTMAX ! use mode_field, only: Find_field_id_from_mnhname USE MODE_IO_FILE, only: IO_File_close, IO_File_open @@ -82,9 +84,9 @@ IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -CHARACTER (LEN=*), INTENT(IN) :: HDADINIFILE ! Name of true DAD FM file -CHARACTER (LEN=*), INTENT(IN) :: HDADSPAFILE ! Name of Replaced DAD FM file -INTEGER, INTENT(OUT) :: KRESP +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADINIFILE ! Name of true DAD FM file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADSPAFILE ! Name of Replaced DAD FM file +INTEGER, INTENT(OUT) :: KRESP ! logical switch ! ! !* 0.2 Declarations of local variables : diff --git a/src/MNH/compute_spectre.f90 b/src/MNH/compute_spectre.f90 index 9d5237cac..91a45b31a 100644 --- a/src/MNH/compute_spectre.f90 +++ b/src/MNH/compute_spectre.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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. @@ -123,7 +123,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZANB ! wavenumbers vector REAL, DIMENSION(:,:), ALLOCATABLE :: ZLGO ! wavelengths and adimensionned wavenumbers vector REAL, DIMENSION(:,:), ALLOCATABLE :: ZAP ! normalized wavenumbers vector INTEGER :: JLOGIMIN ! size of wavenumber format -CHARACTER(LEN=80) :: YOUTFILE ! outfile's name +CHARACTER(LEN=NFILENAMELGTMAX) :: YOUTFILE ! outfile's name REAL :: ZDEL ! needed for the initialization of REAL :: ZANGLE ! the arrays used by the FFT REAL, DIMENSION(:), ALLOCATABLE :: ZTRIGSX ! arrays of sin or cos values for the FFT along x diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index 9ccf63878..091e1faa0 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -316,7 +316,7 @@ TYPE(TFILEDATA) TFILENAM ! Empty file to satisfy interface of PHYEX_init r ! ! CINIFILE='INIFILE' CINIFILEPGD='' !Necessary to keep this line to prevent problems with spawning -CCPLFILE(:)=' ' +CCPLFILE(:)='' ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index acbfb2365..c37f6136c 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -173,9 +173,9 @@ IMPLICIT NONE ! !* 0.1 declarations of local variables ! -CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file -CHARACTER (LEN=28), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file -CHARACTER (LEN=5) :: YSUFFIX ! character string for the OUTPUT FM-file number +CHARACTER (LEN=NFILENAMELGTMAX), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file +CHARACTER (LEN=NFILENAMELGTMAX), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file +CHARACTER (LEN=NDIAGSUFFIXLGTMAX) :: YSUFFIX ! character string for the OUTPUT FM-file number CHARACTER (LEN=4) :: YRAD ! initial flag to call to radiation schemes CHARACTER (LEN=4) :: YDCONV ! initial flag to call to deep convection schemes CHARACTER (LEN=4) :: YTURB ! initial flag to call to turbulence schemes @@ -350,11 +350,11 @@ XSNRMIN=0 LDIAG(:)=.FALSE. XDIAG(:)=XUNDEF ! -YINIFILE(:) = ' ' -YINIFILEPGD(:) = ' ' +YINIFILE(:) = '' +YINIFILEPGD(:) = '' YSUFFIX='_DIAG' ! -CFILES(:) = ' ' +CFILES(:) = '' NSTART_SUPP(:) = NUNDEF ! LLIDAR=.FALSE. @@ -435,7 +435,7 @@ ENDIF ! INPRAR = 24 +2*(4+NRR+NSV) ! -CALL IO_File_add2list(TOUTDATAFILE,TRIM(CINIFILE)//YSUFFIX,'MNHDIAG','WRITE',KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB) +CALL IO_File_add2list(TOUTDATAFILE,TRIM(CINIFILE)//TRIM(YSUFFIX),'MNHDIAG','WRITE',KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB) ! CALL SECOND_MNH2(ZTIME2) ZSTART=ZTIME2-ZTIME1 diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90 index 0155cc832..35187a762 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -117,7 +117,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n ! ------------ ! USE MODD_ARGSLIST_ll, ONLY: LIST_ll -USE MODD_CONF, ONLY: CEXP, LCARTESIAN +USE MODD_CONF, ONLY: LCARTESIAN USE MODD_CST, ONLY: XAVOGADRO, XMD USE MODD_DYN_n, ONLY: XDXHATM, XDYHATM, NSTOP USE MODD_ELEC_DESCR diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 4277d47e8..6f2fa0cb9 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -505,7 +505,7 @@ INTEGER :: JSV ! Loop index INTEGER :: IRESP ! Return code of FM routines INTEGER :: ILUOUT ! Logical unit number of output-listing CHARACTER(LEN=6) :: YNUM -CHARACTER(LEN=28) :: YNAME +CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME INTEGER :: IIU ! Upper dimension in x direction (local) INTEGER :: IJU ! Upper dimension in y direction (local) INTEGER :: IIU_ll ! Upper dimension in x direction (global) @@ -1890,9 +1890,18 @@ IF (KMI == 1) THEN CALL PRINT_MSG( NVERB_FATAL, 'IO', 'INI_MODEL_n', 'NFILE_NUM_MAX is too large' ) END IF - DO IMI = 1 , NMODEL - WRITE(IO_SURF_MNH_MODEL(IMI)%COUTFILE,'(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG)) - WRITE( YNAME, '(A,".",I1,".",A)' ) CEXP, IMI, TRIM(ADJUSTL(CSEG)) // '.' // TRIM(YNUM) + DO IMI = 1, NMODEL + IF ( NMODELNUMLGTMAX == 1 ) THEN + IF ( NMODEL > 9 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>9 and NMODELNUMLGTMAX=1' ) + WRITE( IO_SURF_MNH_MODEL(IMI)%COUTFILE, '( A, ".", I1, ".", A) ' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG)) + WRITE( YNAME, '( A, ".", I1, ".", A )' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG)) // '.' // TRIM(YNUM) + ELSE IF ( NMODELNUMLGTMAX == 2 ) THEN + IF ( NMODEL > 99 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>99 and NMODELNUMLGTMAX=2' ) + WRITE( IO_SURF_MNH_MODEL(IMI)%COUTFILE, '( A, ".", I2, ".", A) ' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG)) + WRITE( YNAME, '( A, ".", I2, ".", A )' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG)) // '.' // TRIM(YNUM) + ELSE + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODELNUMLGTMAX>2 not implemented' ) + END IF CALL IO_File_add2list(LUNIT_MODEL(IMI)%TDIAFILE,YNAME,'MNHDIACHRONIC','WRITE', & HDIRNAME=CIO_DIR, & KLFINPRAR=INT(50,KIND=LFIINT),KLFITYPE=1,KLFIVERB=NVERB, & @@ -1902,14 +1911,15 @@ IF (KMI == 1) THEN TDIAFILE => LUNIT_MODEL(KMI)%TDIAFILE !Necessary because no call to GOTO_MODEL before needing it ! IF (CPROGRAM=='MESONH') THEN - IF ( NDAD(KMI) == 1) CDAD_NAME(KMI) = CEXP//'.1.'//CSEG - IF ( NDAD(KMI) == 2) CDAD_NAME(KMI) = CEXP//'.2.'//CSEG - IF ( NDAD(KMI) == 3) CDAD_NAME(KMI) = CEXP//'.3.'//CSEG - IF ( NDAD(KMI) == 4) CDAD_NAME(KMI) = CEXP//'.4.'//CSEG - IF ( NDAD(KMI) == 5) CDAD_NAME(KMI) = CEXP//'.5.'//CSEG - IF ( NDAD(KMI) == 6) CDAD_NAME(KMI) = CEXP//'.6.'//CSEG - IF ( NDAD(KMI) == 7) CDAD_NAME(KMI) = CEXP//'.7.'//CSEG - IF ( NDAD(KMI) == 8) CDAD_NAME(KMI) = CEXP//'.8.'//CSEG + IF ( NMODELNUMLGTMAX == 1 ) THEN + IF ( NDAD(KMI) > 9 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>9 and NMODELNUMLGTMAX=1' ) + WRITE( CDAD_NAME(KMI), '( A, ".", I1, ".", A) ' ) TRIM(CEXP), NDAD(KMI), TRIM(ADJUSTL(CSEG)) + ELSE IF ( NMODELNUMLGTMAX == 2 ) THEN + IF ( NDAD(KMI) > 99 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>99 and NMODELNUMLGTMAX=2' ) + WRITE( CDAD_NAME(KMI), '( A, ".", I2, ".", A) ' ) TRIM(CEXP), NDAD(KMI), TRIM(ADJUSTL(CSEG)) + ELSE + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODELNUMLGTMAX>2 not implemented' ) + END IF END IF END IF ! @@ -2629,7 +2639,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ')) THEN CALL IO_File_open(TINIFILEPGD,KRESP=IRESP) LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD + WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",TRIM(CINIFILEPGD) WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNITn" !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') @@ -2672,7 +2682,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN CALL IO_File_open(TINIFILEPGD,KRESP=IRESP) LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD IF (IRESP/=0) THEN - WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD + WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",TRIM(CINIFILEPGD) WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNIT2_SPA" !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90 index 9d78f2b66..e086a5757 100644 --- a/src/MNH/ini_segn.f90 +++ b/src/MNH/ini_segn.f90 @@ -11,12 +11,13 @@ INTERFACE ! SUBROUTINE INI_SEG_n(KMI,TPINIFILE,HINIFILEPGD,PTSTEP_ALL) ! -USE MODD_IO, ONLY : TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -INTEGER, INTENT(IN) :: KMI !Model index -TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPINIFILE !Initial file -CHARACTER (LEN=28), INTENT(OUT) :: HINIFILEPGD -REAL,DIMENSION(:), INTENT(INOUT) :: PTSTEP_ALL ! Time STEP of ALL models +INTEGER, INTENT(IN) :: KMI !Model index +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPINIFILE !Initial file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILEPGD +REAL,DIMENSION(:), INTENT(INOUT) :: PTSTEP_ALL ! Time STEP of ALL models ! END SUBROUTINE INI_SEG_n ! @@ -202,15 +203,15 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -INTEGER, INTENT(IN) :: KMI !Model index -TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPINIFILE !Initial file -CHARACTER (LEN=28), INTENT(OUT) :: HINIFILEPGD -REAL,DIMENSION(:), INTENT(INOUT) :: PTSTEP_ALL ! Time STEP of ALL models +INTEGER, INTENT(IN) :: KMI !Model index +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPINIFILE !Initial file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILEPGD +REAL,DIMENSION(:), INTENT(INOUT) :: PTSTEP_ALL ! Time STEP of ALL models ! !* 0.1 declarations of local variables ! LOGICAL :: GFOUND ! Return code when searching namelist -CHARACTER (LEN=28) :: YINIFILE ! name of initial file +CHARACTER (LEN=NFILENAMELGTMAX) :: YINIFILE ! name of initial file CHARACTER (LEN=2) :: YMI ! string for model index INTEGER :: ILUOUT ! Logical unit number ! associated with TLUOUT @@ -461,7 +462,7 @@ CALL READ_EXSEG_n(KMI,TZFILE_DES,YCONF,GFLAT,GUSERV,GUSERC, & IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG ' .OR. CPROGRAM=='SPEC ' & .OR. CPROGRAM=='REAL ') THEN CINIFILE_n = YINIFILE - CCPLFILE(:) = ' ' + CCPLFILE(:) = '' NMODEL=1 LSTEADYLS=.TRUE. END IF diff --git a/src/MNH/ini_size_spawn.f90 b/src/MNH/ini_size_spawn.f90 index 3695fe140..eecc496a5 100644 --- a/src/MNH/ini_size_spawn.f90 +++ b/src/MNH/ini_size_spawn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1999-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1999-2023 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. @@ -121,20 +121,11 @@ INTEGER :: ILUOUT ! Logical unit number for the output listing ! CHARACTER (LEN=5) :: YPRESOPT ! Pressure solver option of model 1 INTEGER :: IITR ! Iterations of pressure solver of model 1 -CHARACTER (LEN=28) :: YMY_NAME, YDAD_NAME +CHARACTER (LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME CHARACTER (LEN=2) :: YSTORAGE_TYPE INTEGER :: IID, IMI ! -!$20140602 -INTEGER :: IIU, IJU INTEGER :: IINFO_ll ! return code of // routines -INTEGER :: NIMAX, NJMAX -CHARACTER(LEN=28), DIMENSION(JPMODELMAX) :: CPGD ! name of input pgd files -LOGICAL, DIMENSION(JPMODELMAX) :: L1D_ALL ! Flag for 1D conf. for each PGD -LOGICAL, DIMENSION(JPMODELMAX) :: L2D_ALL ! Flag for 2D conf. for each PGD -LOGICAL, DIMENSION(JPMODELMAX) :: LPACK_ALL! Flag for packing conf. for each PGD -INTEGER :: IDIMX, IDIMY, IIB, IJB, IIE, IJE -!$ REAL :: ZLATOR, ZLONOR, ZXHATM, ZYHATM INTEGER :: IIMAX_ll,IJMAX_ll TYPE(TFIELDMETADATA) :: TZFIELD diff --git a/src/MNH/ini_sizen.f90 b/src/MNH/ini_sizen.f90 index 4e3425caf..11b319a27 100644 --- a/src/MNH/ini_sizen.f90 +++ b/src/MNH/ini_sizen.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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. @@ -11,11 +11,12 @@ INTERFACE ! SUBROUTINE INI_SIZE_n( KMI, TPINIFILE, HINIFILEPGD ) ! -USE MODD_IO, ONLY : TFILEDATA +USE MODD_IO, ONLY : TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -INTEGER, INTENT(IN) :: KMI !Model Index -TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE !Initial file -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD +INTEGER, INTENT(IN) :: KMI !Model Index +TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE !Initial file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! END SUBROUTINE INI_SIZE_n ! @@ -108,10 +109,10 @@ USE MODD_DIM_n, ONLY: NIMAX_ll, NJMAX_ll, NKMAX USE MODD_DYN, ONLY: LCORIO USE MODD_IO, ONLY: GSMONOPROC, TFILEDATA USE MODD_LBC_n, ONLY: CLBCX, CLBCY -USE MODD_LUNIT_n, ONLY: CINIFILE, CINIFILEPGD, TLUOUT +USE MODD_LUNIT_n, ONLY: CINIFILEPGD, TLUOUT USE MODD_NESTING, ONLY: CMY_NAME, CDAD_NAME, NDAD, NDXRATIO_ALL, NDYRATIO_ALL, & NXOR_ALL, NYOR_ALL, NXEND_ALL,NYEND_ALL -USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPHEXT,JPVEXT +USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPHEXT, JPVEXT, NFILENAMELGTMAX USE MODD_REF, ONLY: LCOUPLES ! USE MODE_IO, ONLY: IO_Pack_set @@ -125,9 +126,9 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -INTEGER, INTENT(IN) :: KMI !Model Index -TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE !Initial file -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD +INTEGER, INTENT(IN) :: KMI !Model Index +TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE !Initial file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! !* 0.2 declarations of local variables ! @@ -168,7 +169,7 @@ IF ( KMI > 1 ) THEN IF ( LCOUPLES ) THEN IF ( KMI == 2 ) THEN CMY_NAME(NDAD(KMI)) = CDAD_NAME(KMI) - WRITE(UNIT=ILUOUT,FMT=*) 'NDAD',NDAD(KMI),'changed in '//TRIM(CMY_NAME(NDAD(KMI)))//TRIM(CDAD_NAME(KMI)),KMI + WRITE(UNIT=ILUOUT,FMT=*) 'NDAD', NDAD(KMI), ' changed in ' // TRIM(CMY_NAME(NDAD(KMI))) // TRIM(CDAD_NAME(KMI)), KMI END IF END IF IF ( TRIM(CDAD_NAME(KMI)) /= TRIM(CMY_NAME(NDAD(KMI))) ) THEN diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90 index b6e605ecc..d89539dda 100644 --- a/src/MNH/ini_spectren.f90 +++ b/src/MNH/ini_spectren.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2015-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2015-2023 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. @@ -73,7 +73,7 @@ USE MODD_GRID_n USE MODD_IO, ONLY: TFILEDATA USE MODD_LBC_n, only: CLBCX, CLBCY USE MODD_LSFIELD_n -USE MODD_LUNIT_n, ONLY: COUTFILE, TLUOUT +USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_MEAN_FIELD USE MODD_MEAN_FIELD_n USE MODD_METRICS_n @@ -882,13 +882,6 @@ IF ( KMI > 1) THEN DPTR_XLBXTKEM,DPTR_XLBYTKEM, & DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM ) END IF -! -! -!* 16. BUILT THE GENERIC OUTPUT NAME -! ---------------------------- -! -WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG)) - !------------------------------------------------------------------------------- ! !* 17. INITIALIZE THE PARAMETERS FOR THE DYNAMICS diff --git a/src/MNH/init_ground_paramn.f90 b/src/MNH/init_ground_paramn.f90 index 25f0c8cea..2125d9dcf 100644 --- a/src/MNH/init_ground_paramn.f90 +++ b/src/MNH/init_ground_paramn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2023 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. @@ -90,7 +90,7 @@ USE MODD_TYPE_DATE, ONLY : DATE_TIME ! USE MODD_TYPE_DATE_SURF, ONLY : DATE_SURF=>DATE ! -USE MODD_PARAMETERS, ONLY : XUNDEF, JPVEXT +USE MODD_PARAMETERS, ONLY : NFILENAMELGTMAX, XUNDEF, JPVEXT ! USE MODI_INIT_SURF_ATM_N ! @@ -147,6 +147,8 @@ INTEGER :: IID,IRESP TYPE (DATE_TIME), POINTER :: TZTCUR=>NULL() TYPE (DATE_TIME) :: TZDATE ! +CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE +CHARACTER(LEN=6) :: YATMFILETYPE CHARACTER(LEN=6), DIMENSION(:), ALLOCATABLE :: YSV_SURF ! name of the scalar variables ! sent to SURFEX TYPE(SURF_ATM_TURB_t) :: AT ! atmospheric turbulence parameters @@ -221,6 +223,8 @@ ELSE ALLOCATE(YSV_SURF(ISV)) YSV_SURF(:) = HSV(:) ENDIF +YATMFILE = '' +YATMFILETYPE = '' CALL INIT_SURF_ATM_n(YSURF_CUR,'MESONH',HINIT, & ILU,ISV,SIZE(PSW_BANDS), & YSV_SURF,ZCO2,ZRHODREF, & @@ -228,7 +232,7 @@ CALL INIT_SURF_ATM_n(YSURF_CUR,'MESONH',HINIT, & ZEMIS,ZTSRAD,ZTSURF, & TZTCUR%nyear, TZTCUR%nmonth, & TZTCUR%nday, TZTCUR%xtime, & - TDATE_END,AT,' ',' ', & + TDATE_END,AT,YATMFILE,YATMFILETYPE, & 'OK' ) ! PDIR_ALB = XUNDEF diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90 index ad6ea75eb..e230430d6 100644 --- a/src/MNH/init_mnh.f90 +++ b/src/MNH/init_mnh.f90 @@ -106,7 +106,7 @@ IMPLICIT NONE !* 0.1 Local variables ! INTEGER :: JMI ! Loop index -CHARACTER(LEN=28),DIMENSION(JPMODELMAX) :: YINIFILEPGD +CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(JPMODELMAX) :: YINIFILEPGD INTEGER :: ILUOUT0,IRESP ! Logical unit number for ! output-listing common ! to all models and return diff --git a/src/MNH/latlon_to_xy.f90 b/src/MNH/latlon_to_xy.f90 index 6694937f5..a6eed5e59 100644 --- a/src/MNH/latlon_to_xy.f90 +++ b/src/MNH/latlon_to_xy.f90 @@ -95,10 +95,10 @@ IMPLICIT NONE !* 0.2 Declaration of variables ! ------------------------ ! -CHARACTER(LEN=28) :: YINIFILE ! name of input FM file -CHARACTER(LEN=28) :: YNAME ! true name of input FM file -CHARACTER(LEN=28) :: YDAD ! name of dad of input FM file -CHARACTER(LEN=2) :: YSTORAGE_TYPE +CHARACTER(LEN=NFILENAMELGTMAX) :: YINIFILE ! name of input FM file +CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME ! true name of input FM file +CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD ! name of dad of input FM file +CHARACTER(LEN=2) :: YSTORAGE_TYPE INTEGER :: INAM ! Logical unit for namelist file INTEGER :: ILUOUT0 ! Logical unit for output file. INTEGER :: IRESP ! Return-code if problem eraised. diff --git a/src/MNH/mesonh.f90 b/src/MNH/mesonh.f90 index e7af3e588..d59b56a99 100644 --- a/src/MNH/mesonh.f90 +++ b/src/MNH/mesonh.f90 @@ -84,8 +84,9 @@ ! ------------ ! #ifdef CPLOASIS - USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD, IP - USE MODD_SFX_OASIS, ONLY : LOASIS, LOASIS_GRID +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +USE MODD_SFX_OASIS, ONLY : LOASIS, LOASIS_GRID +USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD, IP #endif ! USE MODD_CONF, only: CPROGRAM, NMODEL @@ -113,9 +114,9 @@ USE MODE_MODELN_HANDLER ! ! #ifdef CPLOASIS - USE MODI_SFX_OASIS_INIT - USE MODI_MNH_OASIS_GRID - USE MODI_MNH_OASIS_DEFINE +USE MODI_MNH_OASIS_DEFINE +USE MODI_MNH_OASIS_GRID +USE MODI_SFX_OASIS_INIT #endif ! USE MODE_MPPDB @@ -137,8 +138,8 @@ TYPE(DATE_TIME) :: TZDTMODELN ! Date/time of current model compu TYPE(TFILEPTR), DIMENSION(:), ALLOCATABLE :: TZBAKFILES ! Array of pointers to backup files ! #ifdef CPLOASIS - CHARACTER(LEN=28) :: CNAMELIST - LOGICAL :: L_MASTER +CHARACTER(LEN=NFILENAMELGTMAX) :: CNAMELIST +LOGICAL :: L_MASTER #endif ! !------------------------------------------------------------------------------- diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90 index a916c8922..46a16fa5e 100644 --- a/src/MNH/mnh2lpdm_ech.f90 +++ b/src/MNH/mnh2lpdm_ech.f90 @@ -52,7 +52,7 @@ TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPMETEOFILE ! !* 0.3 Variables locales. ! -CHARACTER(LEN=100) :: YFTURB ! Stockage champs de turbulence. +CHARACTER(LEN=NFILENAMELGTMAX) :: YFTURB ! Stockage champs de turbulence. INTEGER :: IFTURB INTEGER :: IFMTO,IREP INTEGER :: ICURAA,ICURMM,ICURJJ ! Date courante. diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90 index 526bdd08a..fa1ee9187 100644 --- a/src/MNH/mnh2lpdm_ini.f90 +++ b/src/MNH/mnh2lpdm_ini.f90 @@ -66,8 +66,8 @@ TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPDATEFILE ! !* 0.3 Variables locales. ! -CHARACTER(LEN=28) :: YNAME,YDAD ! Noms du FM et de son papa. -CHARACTER(LEN=2) :: YSTORAGE ! Type de variable. +CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME, YDAD ! Noms du FM et de son papa. +CHARACTER(LEN=2) :: YSTORAGE ! Type de variable. ! REAL :: ZECHEANCE1,ZECHEANCE2 ! dist temp date modele - date courante INTEGER :: IHHMDL,IMNMDL,ISSMDL ! h - mn - s du model diff --git a/src/MNH/mnhclose_aux_io_surf.f90 b/src/MNH/mnhclose_aux_io_surf.f90 index ba818000a..9a5ae99ca 100644 --- a/src/MNH/mnhclose_aux_io_surf.f90 +++ b/src/MNH/mnhclose_aux_io_surf.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2023 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. @@ -9,8 +9,10 @@ INTERFACE SUBROUTINE MNHCLOSE_AUX_IO_SURF(HFILE,HFILETYPE) ! -CHARACTER(LEN=28), INTENT(IN), OPTIONAL :: HFILE ! file to close -CHARACTER(LEN=6), INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX + +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN), OPTIONAL :: HFILE ! file to close +CHARACTER(LEN=6), INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close ! END SUBROUTINE MNHCLOSE_AUX_IO_SURF @@ -57,6 +59,7 @@ END MODULE MODI_MNHCLOSE_AUX_IO_SURF ! ------------ ! USE MODD_IO_SURF_MNH, ONLY: TPINFILE, CACTION, NMASK_ALL, NMASK +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! USE MODE_IO_FILE, only: IO_File_close USE MODE_ll @@ -66,15 +69,13 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -CHARACTER(LEN=28), INTENT(IN), OPTIONAL :: HFILE ! file to close -CHARACTER(LEN=6), INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN), OPTIONAL :: HFILE ! file to close +CHARACTER(LEN=6), INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close ! !* 0.2 Declarations of local variables ! ------------------------------- ! -INTEGER :: IRESP ! return-code if a problem appears -! !------------------------------------------------------------------------------- ! IF (CACTION=='OPEN ') THEN diff --git a/src/MNH/mnhend_io_surfn.f90 b/src/MNH/mnhend_io_surfn.f90 index 6a1d1c034..2836f7870 100644 --- a/src/MNH/mnhend_io_surfn.f90 +++ b/src/MNH/mnhend_io_surfn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2023 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. @@ -72,7 +72,7 @@ INTEGER :: IRESP ! return-code if a problem appears ! CACTION=' ' ! -COUTFILE = ' ' +COUTFILE = '' TPINFILE => NULL() ! DEALLOCATE(NMASK) diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90 index 2d0888f45..a2da1c413 100644 --- a/src/MNH/mnhopen_aux_io_surf.f90 +++ b/src/MNH/mnhopen_aux_io_surf.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2023 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. @@ -9,9 +9,11 @@ INTERFACE SUBROUTINE MNHOPEN_AUX_IO_SURF(HFILE,HFILETYPE,HMASK) ! -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! file name -CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! main program -CHARACTER(LEN=6), INTENT(IN) :: HMASK +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! file name +CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! main program +CHARACTER(LEN=6), INTENT(IN) :: HMASK ! END SUBROUTINE MNHOPEN_AUX_IO_SURF ! @@ -69,7 +71,7 @@ USE MODD_IO_SURF_MNH, ONLY: TOUT, TPINFILE, COUTFILE, NMASK_ALL, CMASK, NIU NMASK, NIU, NJU, NIB, NJB, NIE, NJE USE MODD_LUNIT, ONLY: TPGDFILE, TLUOUT0, TOUTDATAFILE USE MODD_LUNIT_n, ONLY: TLUOUT -USE MODD_PARAMETERS, ONLY: JPHEXT +USE MODD_PARAMETERS, ONLY: JPHEXT, NFILENAMELGTMAX ! USE MODE_IO_FIELD_READ, only: IO_Field_read USE MODE_IO_FILE, ONLY: IO_File_open @@ -85,9 +87,9 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! file name -CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! main program -CHARACTER(LEN=6), INTENT(IN) :: HMASK +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! file name +CHARACTER(LEN=6), INTENT(IN) :: HFILETYPE ! main program +CHARACTER(LEN=6), INTENT(IN) :: HMASK ! !* 0.2 Declarations of local variables ! ------------------------------- @@ -98,7 +100,7 @@ INTEGER :: IIMAX ! number of points in X direction INTEGER :: IJMAX ! number of points in Y direction ! ! -CHARACTER(LEN=28) :: YFILE,YPGDFILE ! file names +CHARACTER(LEN=NFILENAMELGTMAX) :: YFILE, YPGDFILE ! file names INTEGER :: ILU ! 1D physical dimension of XCOVER INTEGER :: ILUOUT REAL, DIMENSION(:), ALLOCATABLE :: ZFULL ! total cover diff --git a/src/MNH/mnhopen_namelist.f90 b/src/MNH/mnhopen_namelist.f90 index 81716add4..d84590952 100644 --- a/src/MNH/mnhopen_namelist.f90 +++ b/src/MNH/mnhopen_namelist.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2004-2023 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. @@ -9,9 +9,11 @@ INTERFACE SUBROUTINE MNHOPEN_NAMELIST(HPROGRAM,KLUNAM,HFILE) ! -CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! main program -INTEGER, INTENT(OUT) :: KLUNAM ! logical unit of namelist -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! ASCII file to open +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX + +CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! main program +INTEGER, INTENT(OUT) :: KLUNAM ! logical unit of namelist +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! ASCII file to open ! END SUBROUTINE MNHOPEN_NAMELIST ! @@ -56,6 +58,7 @@ END MODULE MODI_MNHOPEN_NAMELIST ! USE MODD_CONF, ONLY: CPROGRAM USE MODD_IO_NAM, ONLY: TNAM +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! USE MODE_IO_FILE, ONLY: IO_File_open USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list @@ -67,9 +70,9 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! main program -INTEGER, INTENT(OUT) :: KLUNAM ! logical unit of namelist -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! ASCII file to open +CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! main program +INTEGER, INTENT(OUT) :: KLUNAM ! logical unit of namelist +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! ASCII file to open ! !* 0.2 Declarations of local variables ! ------------------------------- @@ -78,7 +81,7 @@ INTEGER :: IRESP ! IRESP : return-code if a problem appears ! at the open of the file in LFI routines INTEGER :: IMI ! model index ! -CHARACTER(LEN=28) :: YNAM ! name of namelist +CHARACTER(LEN=NFILENAMELGTMAX) :: YNAM ! name of namelist !------------------------------------------------------------------------------- ! !* reading of namelist diff --git a/src/MNH/modd_ch_mnhcn.f90 b/src/MNH/modd_ch_mnhcn.f90 index 457860e9d..6ee24c190 100644 --- a/src/MNH/modd_ch_mnhcn.f90 +++ b/src/MNH/modd_ch_mnhcn.f90 @@ -46,7 +46,7 @@ ! !* 0. DECLARATIONS ! ----------------- -USE MODD_PARAMETERS, ONLY: JPMODELMAX +USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX IMPLICIT NONE TYPE CH_MNHC_t @@ -98,7 +98,7 @@ TYPE CH_MNHC_t CHARACTER(LEN=10) :: CCH_SCHEME ! name of chemical scheme ! - CHARACTER(LEN=80) :: CCHEM_INPUT_FILE + CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE ! name of general ! purpose ASCII input file (handeled by CH_OPEN_INPUT) ! @@ -125,7 +125,7 @@ TYPE CH_MNHC_t !* photolysis rates (TUV) ! LOGICAL :: LCH_TUV_ONLINE ! switch online/lookup table - CHARACTER(LEN=80) :: CCH_TUV_LOOKUP ! name of lookup table file + CHARACTER(LEN=NFILENAMELGTMAX) :: CCH_TUV_LOOKUP ! name of lookup table file CHARACTER(LEN=4) :: CCH_TUV_CLOUDS ! method for calculating the ! impact of clouds on radiation ! "FOUQ" (model clouds, only 1-D) @@ -151,7 +151,7 @@ TYPE CH_MNHC_t ! REAL :: XCH_TS1D_TSTEP ! time between two call to write_ts1d CHARACTER(LEN=80) :: CCH_TS1D_COMMENT ! comment for write_ts1d - CHARACTER(LEN=80) :: CCH_TS1D_FILENAME ! filename for write_ts1d files + CHARACTER(LEN=NFILENAMELGTMAX) :: CCH_TS1D_FILENAME ! filename for write_ts1d files ! !* total production/loss for chemical species ! @@ -176,12 +176,12 @@ LOGICAL, POINTER :: LCH_RET_ICE=>NULL() REAL, POINTER :: XCH_PHINIT=>NULL() REAL, POINTER :: XRTMIN_AQ=>NULL() CHARACTER(LEN=10), POINTER :: CCH_SCHEME=>NULL() -CHARACTER(LEN=80), POINTER :: CCHEM_INPUT_FILE=>NULL() +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CCHEM_INPUT_FILE=>NULL() CHARACTER(LEN=10), POINTER :: CCH_TDISCRETIZATION=>NULL() INTEGER, POINTER :: NCH_SUBSTEPS=>NULL() LOGICAL, POINTER :: LCH_CONV_LINOX=>NULL() LOGICAL, POINTER :: LCH_TUV_ONLINE=>NULL() -CHARACTER(LEN=80), POINTER :: CCH_TUV_LOOKUP=>NULL() +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CCH_TUV_LOOKUP=>NULL() CHARACTER(LEN=4), POINTER :: CCH_TUV_CLOUDS=>NULL() REAL, POINTER :: XCH_TUV_ALBNEW=>NULL() REAL, POINTER :: XCH_TUV_DOBNEW=>NULL() @@ -190,7 +190,7 @@ CHARACTER(LEN=3), POINTER :: CCH_VEC_METHOD=>NULL() INTEGER, POINTER :: NCH_VEC_LENGTH=>NULL() REAL, POINTER :: XCH_TS1D_TSTEP=>NULL() CHARACTER(LEN=80), POINTER :: CCH_TS1D_COMMENT=>NULL() -CHARACTER(LEN=80), POINTER :: CCH_TS1D_FILENAME=>NULL() +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CCH_TS1D_FILENAME=>NULL() CHARACTER(LEN=1024), POINTER :: CSPEC_PRODLOSS=>NULL() CHARACTER(LEN=1024), POINTER :: CSPEC_BUDGET=>NULL() diff --git a/src/MNH/modd_ch_model0d.f90 b/src/MNH/modd_ch_model0d.f90 index 8eb553ae6..7f43b4d41 100644 --- a/src/MNH/modd_ch_model0d.f90 +++ b/src/MNH/modd_ch_model0d.f90 @@ -43,7 +43,8 @@ !* 0. DECLARATIONS ! ----------------- ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! IMPLICIT NONE SAVE @@ -63,15 +64,15 @@ REAL :: XTNEXTMETEO ! time of next meteo update ! !* 0.2 file names, formats and I/O channels ! -CHARACTER(len=128) :: CINITFILE = "CHCONTROL1.nam" ! name of initial value file -CHARACTER(len=128) :: CMETEOFILE = "CHCONTROL1.nam" ! meteo update file +CHARACTER(len=NFILENAMELGTMAX) :: CINITFILE = "CHCONTROL1.nam" ! name of initial value file +CHARACTER(len=NFILENAMELGTMAX) :: CMETEOFILE = "CHCONTROL1.nam" ! meteo update file TYPE(TFILEDATA),POINTER :: TMETEOFILE => NULL() ! meteo update file ! -CHARACTER(len=128) :: COUTFILE = "BOX.OUT" ! name of final output file -CHARACTER(len=128) :: CRESULTFILE = "BOX.RESULT" ! regular output file -CHARACTER(len=128) :: CDIAGFILE = "BOX.DIAG" ! diagnostics output file +CHARACTER(len=NFILENAMELGTMAX) :: COUTFILE = "BOX.OUT" ! name of final output file +CHARACTER(len=NFILENAMELGTMAX) :: CRESULTFILE = "BOX.RESULT" ! regular output file +CHARACTER(len=NFILENAMELGTMAX) :: CDIAGFILE = "BOX.DIAG" ! diagnostics output file ! -CHARACTER(len=80) :: CRUNID = "no runid specified" ! runid for output file +CHARACTER(len=NFILENAMELGTMAX) :: CRUNID = "no runid specified" ! runid for output file CHARACTER(len=40) :: CRESULTFORMAT = "(5E16.8)" ! Format for results CHARACTER(len=40) :: CDIAGFORMAT = "(5E16.8)" ! Format for diagnostics ! @@ -85,7 +86,7 @@ INTEGER :: NVERB = 5 ! verbosity level: 0 (lowest) <= NVERB <= 10 (highest) !* 0.4 parameters for TUV ! LOGICAL :: LCH_TUV_ONLINE = .TRUE. ! switch online/lookup table -CHARACTER(len=80) :: CCH_TUV_LOOKUP = "PHOTO.TUV39" ! name of lookup table file +CHARACTER(len=NFILENAMELGTMAX) :: CCH_TUV_LOOKUP = "PHOTO.TUV39" ! name of lookup table file CHARACTER(len=4) :: CCH_TUV_CLOUDS = "NONE" ! method for calculating the ! impact of clouds on radiation ! "FOUQ" (model clouds, only 1-D) @@ -101,5 +102,5 @@ REAL :: XCH_TUV_TUPDATE = 600. ! update frequency for TUV (in seconds) ! LOGICAL :: LCH_SURFACE0D = .FALSE. ! switch to activate surface fluxes ! -CHARACTER(LEN=80) :: CCHEM_INPUT_FILE +CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE END MODULE MODD_CH_MODEL0D diff --git a/src/MNH/modd_conf.f90 b/src/MNH/modd_conf.f90 index ea493d3a3..07a3ebd50 100644 --- a/src/MNH/modd_conf.f90 +++ b/src/MNH/modd_conf.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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. @@ -53,6 +53,8 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_PARAMETERS, ONLY: NEXPNAMELGTMAX, NSEGNAMELGTMAX +! IMPLICIT NONE ! CHARACTER (LEN=5),SAVE :: CCONF ! Configuration of models @@ -82,8 +84,8 @@ INTEGER,SAVE :: NVERB ! Level of informations on output-listing ! 0 for minimum of prints ! 5 for intermediate level of prints ! 10 for maximum of prints -CHARACTER (LEN=5),SAVE :: CEXP ! Experiment name -CHARACTER (LEN=5),SAVE :: CSEG ! name of segment +CHARACTER (LEN=NEXPNAMELGTMAX), SAVE :: CEXP ! Experiment name +CHARACTER (LEN=NSEGNAMELGTMAX), SAVE :: CSEG ! name of segment LOGICAL,SAVE :: LFORCING ! Logical for forcing sources ! .TRUE. = add forcing sources ! .FALSE. = no forcing fields diff --git a/src/MNH/modd_eol_shared_io.f90 b/src/MNH/modd_eol_shared_io.f90 index a80dd1fa8..ab3c6db63 100644 --- a/src/MNH/modd_eol_shared_io.f90 +++ b/src/MNH/modd_eol_shared_io.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2020-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2020-2023 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. @@ -30,6 +30,8 @@ !! !----------------------------------------------------------------------------- ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! IMPLICIT NONE ! !* 1. INPUTS VAR @@ -37,10 +39,10 @@ IMPLICIT NONE ! ! --- Namelistis NAM_EOL_ADNR/NAM_EOL_ALM --- ! * .csv files -CHARACTER(LEN=100) :: CFARM_CSVDATA ! Farm file to read -CHARACTER(LEN=100) :: CTURBINE_CSVDATA ! Turbine file to read -CHARACTER(LEN=100) :: CBLADE_CSVDATA ! Blade file to read -CHARACTER(LEN=100) :: CAIRFOIL_CSVDATA ! Airfoil file to read +CHARACTER(LEN=NFILENAMELGTMAX) :: CFARM_CSVDATA ! Farm file to read +CHARACTER(LEN=NFILENAMELGTMAX) :: CTURBINE_CSVDATA ! Turbine file to read +CHARACTER(LEN=NFILENAMELGTMAX) :: CBLADE_CSVDATA ! Blade file to read +CHARACTER(LEN=NFILENAMELGTMAX) :: CAIRFOIL_CSVDATA ! Airfoil file to read ! * flags CHARACTER(LEN=3) :: CINTERP ! Interpolation method for wind speed LOGICAL :: LTIPLOSSG ! Flag to apply Glauert's tip loss correction diff --git a/src/MNH/modd_firen.f90 b/src/MNH/modd_firen.f90 index 8ca8ff9b1..8d4e776e0 100644 --- a/src/MNH/modd_firen.f90 +++ b/src/MNH/modd_firen.f90 @@ -33,7 +33,7 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAMETERS, ONLY: JPMODELMAX +USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX USE MODD_PRECISION, ONLY: MNHTIME IMPLICIT NONE @@ -89,7 +89,7 @@ TYPE TFIRE_t CHARACTER(LEN=7) :: CFIRE_CPL_MODE ! Coupling mode (default 2WAYCPL) - CHARACTER(LEN=28) :: CBMAPFILE ! BMap file for FIR2ATM mode (default INIFILE) + CHARACTER(LEN=NFILENAMELGTMAX) :: CBMAPFILE ! BMap file for FIR2ATM mode (default INIFILE) LOGICAL :: LINTERPWIND ! Flag for wind interpolation LOGICAL :: LSGBAWEIGHT ! Flag for use of weighted average method for SubGrid Burning Area computation @@ -179,7 +179,7 @@ CHARACTER(LEN=11), POINTER :: CPROPAG_MODEL => NULL() CHARACTER(LEN=3), POINTER :: CHEAT_FLUX_MODEL => NULL() CHARACTER(LEN=3), POINTER :: CLATENT_FLUX_MODEL => NULL() CHARACTER(LEN=7), POINTER :: CFIRE_CPL_MODE => NULL() -CHARACTER(LEN=28), POINTER :: CBMAPFILE => NULL() +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CBMAPFILE => NULL() LOGICAL, POINTER :: LINTERPWIND => NULL() LOGICAL, POINTER :: LSGBAWEIGHT => NULL() INTEGER, POINTER :: NFIRE_WENO_ORDER => NULL() diff --git a/src/MNH/modd_hurr_conf.f90 b/src/MNH/modd_hurr_conf.f90 index 8c4cafcdb..2466c3b1a 100644 --- a/src/MNH/modd_hurr_conf.f90 +++ b/src/MNH/modd_hurr_conf.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2001-2023 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! ##################### MODULE MODD_HURR_CONF ! ##################### @@ -50,6 +45,7 @@ ! !* 0. DECLARATIONS ! ------------ +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! IMPLICIT NONE ! @@ -85,6 +81,6 @@ REAL ,SAVE :: XMAX ! altitude where the tangentiel wind vanishe REAL ,SAVE :: XANGCONV0 ! Convergence angle near the surface REAL ,SAVE :: XANGCONV1000! Convergence angle at 1000m altitude REAL ,SAVE :: XANGCONV2000! Convergence angle at 2000m altitude -CHARACTER(LEN=28),SAVE :: CDADATMFILE ! Name of the dad of HATMFILE -CHARACTER(LEN=28),SAVE :: CDADBOGFILE ! Name of the dad of CINIFILE +CHARACTER(LEN=NFILENAMELGTMAX),SAVE :: CDADATMFILE ! Name of the dad of HATMFILE +CHARACTER(LEN=NFILENAMELGTMAX),SAVE :: CDADBOGFILE ! Name of the dad of CINIFILE END MODULE MODD_HURR_CONF diff --git a/src/MNH/modd_io_surf_mnh.f90 b/src/MNH/modd_io_surf_mnh.f90 index 635f6b6ed..dbe471a5f 100644 --- a/src/MNH/modd_io_surf_mnh.f90 +++ b/src/MNH/modd_io_surf_mnh.f90 @@ -32,8 +32,8 @@ ! !* 0. DECLARATIONS ! -USE MODD_IO, ONLY: TFILEDATA -USE MODD_PARAMETERS, ONLY: JPMODELMAX +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX IMPLICIT NONE @@ -41,7 +41,7 @@ INTEGER :: NHALO = 0 TYPE IO_SURF_MNH_t TYPE(TFILEDATA),POINTER :: TPINFILE => NULL() ! Input FM-file - CHARACTER(LEN=28) :: COUTFILE ! Name of the output FM-file + CHARACTER(LEN=NFILENAMELGTMAX) :: COUTFILE ! Name of the output FM-file TYPE(TFILEDATA),POINTER :: TOUT => NULL() ! Output_listing file CHARACTER(LEN=6) :: CMASK INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL() ! 1D mask to read only interesting surface @@ -65,7 +65,7 @@ TYPE(IO_SURF_MNH_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: IO_SURF_MNH_MODEL !!!!!!!!!!!!!!!!!!!! LOCAL VARIABLE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! TYPE(TFILEDATA) ,POINTER :: TPINFILE => NULL() ! Input FM-file -CHARACTER(LEN=28) ,POINTER :: COUTFILE =>NULL() ! Name of the output FM-file +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: COUTFILE =>NULL() ! Name of the output FM-file TYPE(TFILEDATA) ,POINTER :: TOUT => NULL() ! Output_listing file CHARACTER(LEN=6) ,POINTER :: CMASK =>NULL() INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL() ! 1D mask to read only interesting surface diff --git a/src/MNH/modd_lma_simulator.f90 b/src/MNH/modd_lma_simulator.f90 index 2946c6df9..1fbca6376 100644 --- a/src/MNH/modd_lma_simulator.f90 +++ b/src/MNH/modd_lma_simulator.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2023 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. @@ -35,6 +35,7 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX USE MODD_TYPE_DATE ! IMPLICIT NONE @@ -47,7 +48,7 @@ LOGICAL, SAVE :: LLMA=.FALSE.! Flag to record LMA-like ! simulation REAL, SAVE :: XDTLMA ! Time length of a LMA record TYPE (DATE_TIME), SAVE :: TDTLMA ! Date and Time of LMA file -CHARACTER (LEN=31), SAVE :: CLMA_FILE ! File name +CHARACTER (LEN=NFILENAMELGTMAX), SAVE :: CLMA_FILE ! File name ! !* storage monitoring ! diff --git a/src/MNH/modd_lunitn.f90 b/src/MNH/modd_lunitn.f90 index 4ac4a5c31..f6e786804 100644 --- a/src/MNH/modd_lunitn.f90 +++ b/src/MNH/modd_lunitn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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. @@ -43,24 +43,20 @@ ! ! USE MODD_IO, ONLY: TFILEDATA, TPTR2FILE -USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPCPLFILEMAX +USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPCPLFILEMAX, NFILENAMELGTMAX IMPLICIT NONE TYPE LUNIT_t ! - CHARACTER(LEN=28) :: CINIFILE = 'INIFILE' ! Name of the input FM-file + CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE = 'INIFILE' ! Name of the input FM-file TYPE(TFILEDATA),POINTER :: TINIFILE => NULL() ! input FM-file - CHARACTER(LEN=28) :: CINIFILEPGD = '' ! Name of the PGD associated to input FM-file + CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILEPGD = '' ! Name of the PGD associated to input FM-file TYPE(TFILEDATA),POINTER :: TINIFILEPGD => NULL() ! PGD associated to input FM-file - CHARACTER(LEN=24) :: COUTFILE = '' ! Generic name of the output FM-files TYPE(TFILEDATA),POINTER :: TDIAFILE => NULL() ! diachronic output file TYPE(TFILEDATA),POINTER :: TLUOUT => NULL() ! output_listing file -!JUAN - CHARACTER(LEN=28),DIMENSION(:),POINTER :: CCPLFILE =>NULL() ! Names of the - ! coupling FM-files + CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), POINTER :: CCPLFILE =>NULL() ! Names of the coupling FM-files TYPE(TPTR2FILE),DIMENSION(:),POINTER :: TCPLFILE => NULL() ! Coupling files -!JUAN ! END TYPE LUNIT_t @@ -68,14 +64,13 @@ TYPE(LUNIT_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: LUNIT_MODEL LOGICAL , DIMENSION(JPMODELMAX), SAVE :: LUNIT_FIRST_CALL = .TRUE. CHARACTER(LEN=4),SAVE :: CMASK_SURFEX='PREP' ! -CHARACTER(LEN=28), POINTER :: CINIFILE=>NULL() +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CINIFILE=>NULL() TYPE(TFILEDATA), POINTER :: TINIFILE => NULL() -CHARACTER(LEN=28), POINTER :: CINIFILEPGD =>NULL() +CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CINIFILEPGD =>NULL() TYPE(TFILEDATA), POINTER :: TINIFILEPGD => NULL() -CHARACTER(LEN=24), POINTER :: COUTFILE=>NULL() TYPE(TFILEDATA), POINTER :: TDIAFILE=>NULL() TYPE(TFILEDATA), POINTER :: TLUOUT=>NULL() -CHARACTER(LEN=28),DIMENSION(:), POINTER :: CCPLFILE=>NULL() +CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), POINTER :: CCPLFILE=>NULL() TYPE(TPTR2FILE), DIMENSION(:), POINTER :: TCPLFILE=>NULL() CONTAINS @@ -103,7 +98,6 @@ CINIFILE=>LUNIT_MODEL(KTO)%CINIFILE TINIFILE=>LUNIT_MODEL(KTO)%TINIFILE CINIFILEPGD=>LUNIT_MODEL(KTO)%CINIFILEPGD TINIFILEPGD=>LUNIT_MODEL(KTO)%TINIFILEPGD -COUTFILE=>LUNIT_MODEL(KTO)%COUTFILE TDIAFILE=>LUNIT_MODEL(KTO)%TDIAFILE TLUOUT=>LUNIT_MODEL(KTO)%TLUOUT CCPLFILE=>LUNIT_MODEL(KTO)%CCPLFILE diff --git a/src/MNH/modd_mnh2lpdm.f90 b/src/MNH/modd_mnh2lpdm.f90 index b8c053397..f09af209e 100644 --- a/src/MNH/modd_mnh2lpdm.f90 +++ b/src/MNH/modd_mnh2lpdm.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2023 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. @@ -17,14 +17,19 @@ !* FICHIERS ET NAMELISTS. ! ---------------------- ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +IMPLICIT NONE +! INTEGER,PARAMETER :: JPMNHMAX = 30 ! Nombre max de fichiers FM. +! INTEGER,SAVE :: NBMNH ! Nombre reel de fichiers FM. INTEGER,SAVE :: IGRILLE ! numero de la grille Meso-nh ! -CHARACTER(LEN=50), SAVE, DIMENSION(JPMNHMAX) :: CFMTO ! Nom des fichiers METEO. -CHARACTER(LEN=50), SAVE :: CFGRI ! Nom du fichier GRILLE. -CHARACTER(LEN=50), SAVE :: CFDAT ! Nom du fichier DATE. -CHARACTER(LEN=28), SAVE, DIMENSION(JPMNHMAX) :: CFMNH ! Noms des FM. +CHARACTER(LEN=NFILENAMELGTMAX), SAVE, DIMENSION(JPMNHMAX) :: CFMTO ! Nom des fichiers METEO. +CHARACTER(LEN=NFILENAMELGTMAX), SAVE :: CFGRI ! Nom du fichier GRILLE. +CHARACTER(LEN=NFILENAMELGTMAX), SAVE :: CFDAT ! Nom du fichier DATE. +CHARACTER(LEN=NFILENAMELGTMAX), SAVE, DIMENSION(JPMNHMAX) :: CFMNH ! Noms des FM. ! CHARACTER(len=10), SAVE :: CTURBPARAM="ISOTROPE" ! ISOTROPE ou HANNA ! diff --git a/src/MNH/modd_parameters.f90 b/src/MNH/modd_parameters.f90 index 390c17fe4..0e378863e 100644 --- a/src/MNH/modd_parameters.f90 +++ b/src/MNH/modd_parameters.f90 @@ -76,8 +76,9 @@ INTEGER, PARAMETER :: NNEGUNDEF = -999 ! default value for undefined or unused ! ! field (negative value guaranteed) INTEGER, PARAMETER :: JPDUMMY = 20 ! Size of dummy array ! + INTEGER, PARAMETER :: JPOUTVARMAX = 192 ! Maximum allowed number of variables in an output file -! + INTEGER, PARAMETER :: NBUNAMELGTMAX = 32 ! Maximum length of a budget name INTEGER, PARAMETER :: NCOMMENTLGTMAX = 100 ! Maximum length of a comment INTEGER, PARAMETER :: NMNHNAMELGTMAX = 32 ! Maximum length of a MNH variable name @@ -87,8 +88,31 @@ INTEGER, PARAMETER :: NUNITLGTMAX = 40 ! Maximum length of the canonical un INTEGER, PARAMETER :: NSENSORNAMELGTMAX = 10 ! Maximum length for the name of a sensor (aircraft, balloon, station, profiler...) +! Filename: maximum length +! Structure: +! CEXP.m.CSEG(.OUT).nnn(nnn)(diagsuffix)(.Zzzz).extension +! +! CEXP: experiment name +! m: model number +! CESG: segment name +! .OUT: if filetype is MNHOUTPUT +! nnn(nnn): index of the output/backup (3 to 6 digits) +! diagsuffix: suffix added for files created with DIAG from backup files (never for output files) +! Zzzz: level number for Z-split files (3 digits) +! extension: suffix of the filename (nc, des...) +INTEGER, PARAMETER :: NEXPNAMELGTMAX = 32 ! should be at least 5 +INTEGER, PARAMETER :: NMODELNUMLGTMAX = 1 ! should be at least 1 +INTEGER, PARAMETER :: NSEGNAMELGTMAX = 32 ! should be at least 5 +INTEGER, PARAMETER :: NFILENUMLGTMAX = 6 ! should be at least 3 +INTEGER, PARAMETER :: NDIAGSUFFIXLGTMAX = 5 ! should be at least 5 +INTEGER, PARAMETER :: NZSPLITNUMLGTMAX = 3 ! should be at least 3 +INTEGER, PARAMETER :: NEXTNAMELGTMAX = 3 ! should be at least 3 +! NFILENAMELGTMAX: maximum length name for a file. Remark: used for any file (even if not with the previous structure) +! Length should be at least 50 to respect constraints on all filenames +INTEGER, PARAMETER :: NFILENAMELGTMAX = NEXPNAMELGTMAX + 1 + NMODELNUMLGTMAX + 1 + NSEGNAMELGTMAX & + + 1 + NFILENUMLGTMAX + 2 + NZSPLITNUMLGTMAX + 1 + NEXTNAMELGTMAX & + + MAX (4,NDIAGSUFFIXLGTMAX ) ! 4 is for .OUT INTEGER, PARAMETER :: NDIRNAMELGTMAX = 512 ! Maximum length of a directory name -INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name (must be at least NFILENAMELGTMAXLFI) INTEGER, PARAMETER :: NFILENAMELGTMAXLFI = 28 ! Maximum length of a file name in LFI file (this is necessary ! to keep backward compatibility), MUST BE 28 ! diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90 index 6efedc643..2fa01ed4e 100644 --- a/src/MNH/modd_spawn.f90 +++ b/src/MNH/modd_spawn.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1999-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1999-2023 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ################# @@ -39,6 +39,7 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX USE MODD_TYPE_DATE ! IMPLICIT NONE @@ -50,17 +51,15 @@ INTEGER,SAVE :: NXSIZE,NYSIZE ! number of model 1 grid points in x and y-d INTEGER,SAVE :: NXOR, NYOR ! horizontal position (i,j) of the INTEGER,SAVE :: NXEND,NYEND ! ORigin and END of model 2 relative to model 1 ! -CHARACTER (LEN=28) :: CDOMAIN ! input fm-file for grid definition +CHARACTER (LEN=NFILENAMELGTMAX) :: CDOMAIN ! input fm-file for grid definition ! LOGICAL :: LBAL_ONLY ! logical switch for spawning 1 with ! balance calculation only and ! no modification of the model definition ! v.s its DAD except the DAD name ! -CHARACTER (LEN=28) :: CDADINIFILE ! DAD fm-file for initial file - ! if LBAL_ONLY=T -CHARACTER (LEN=28) :: CDADSPAFILE ! DAD fm-file for spawning file - ! if LBAL_ONLY=T +CHARACTER (LEN=NFILENAMELGTMAX) :: CDADINIFILE ! DAD fm-file for initial file if LBAL_ONLY=T +CHARACTER (LEN=NFILENAMELGTMAX) :: CDADSPAFILE ! DAD fm-file for spawning file if LBAL_ONLY=T ! ! Pointers to the data of the mesh #1 REAL,DIMENSION(:), SAVE,POINTER :: XXHAT1 => NULL() diff --git a/src/MNH/modd_sto_file.f90 b/src/MNH/modd_sto_file.f90 index 50ffb8cfe..0278b8e0e 100644 --- a/src/MNH/modd_sto_file.f90 +++ b/src/MNH/modd_sto_file.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! Modifications: @@ -9,8 +9,12 @@ ! ######spl MODULE MODD_STO_FILE !################ -CHARACTER (LEN=28), SAVE :: CFILES(100) ! names of the files to be treated -INTEGER , SAVE :: NSTART_SUPP(100) ! supplementary starts - ! for the lagrangian trajectories + +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX + +SAVE + +CHARACTER(LEN=NFILENAMELGTMAX) :: CFILES(100) ! names of the files to be treated +INTEGER :: NSTART_SUPP(100) ! supplementary starts for the lagrangian trajectories ! END MODULE MODD_STO_FILE diff --git a/src/MNH/modn_ch_mnhcn.f90 b/src/MNH/modn_ch_mnhcn.f90 index e695fa536..c16105315 100644 --- a/src/MNH/modn_ch_mnhcn.f90 +++ b/src/MNH/modn_ch_mnhcn.f90 @@ -60,6 +60,7 @@ USE MODD_CH_MNHC_n, ONLY: & CCH_TS1D_FILENAME_n => CCH_TS1D_FILENAME, & CSPEC_PRODLOSS_n => CSPEC_PRODLOSS, & CSPEC_BUDGET_n => CSPEC_BUDGET +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! IMPLICIT NONE ! @@ -73,11 +74,11 @@ LOGICAL :: LCH_PH lOGICAL :: LCH_RET_ICE REAL :: XCH_PHINIT REAL :: XRTMIN_AQ -CHARACTER(LEN=80) :: CCHEM_INPUT_FILE +CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE CHARACTER(LEN=10) :: CCH_TDISCRETIZATION INTEGER :: NCH_SUBSTEPS LOGICAL :: LCH_TUV_ONLINE -CHARACTER(len=80) :: CCH_TUV_LOOKUP +CHARACTER(len=NFILENAMELGTMAX) :: CCH_TUV_LOOKUP CHARACTER(len=4) :: CCH_TUV_CLOUDS REAL :: XCH_TUV_ALBNEW REAL :: XCH_TUV_DOBNEW @@ -86,7 +87,7 @@ CHARACTER(len=3) :: CCH_VEC_METHOD INTEGER :: NCH_VEC_LENGTH REAL :: XCH_TS1D_TSTEP CHARACTER(len=80) :: CCH_TS1D_COMMENT -CHARACTER(len=80) :: CCH_TS1D_FILENAME +CHARACTER(len=NFILENAMELGTMAX) :: CCH_TS1D_FILENAME CHARACTER(LEN=1024) :: CSPEC_PRODLOSS CHARACTER(LEN=1024) :: CSPEC_BUDGET ! diff --git a/src/MNH/modn_firen.f90 b/src/MNH/modn_firen.f90 index 6b7ffe0a0..37d6e04e9 100644 --- a/src/MNH/modn_firen.f90 +++ b/src/MNH/modn_firen.f90 @@ -64,6 +64,7 @@ USE MODD_FIRE_n, ONLY: & XWLIMUTMAX_n => XWLIMUTMAX, & NWINDSLOPECPLMODE_n => NWINDSLOPECPLMODE, & NNBSMOKETRACER_n => NNBSMOKETRACER +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX IMPLICIT NONE @@ -72,7 +73,7 @@ CHARACTER(LEN=11) :: CPROPAG_MODEL ! Fire propagation model (default SANT CHARACTER(LEN=3) :: CHEAT_FLUX_MODEL ! Sensible heat flux injection model (default CST) CHARACTER(LEN=3) :: CLATENT_FLUX_MODEL ! latent heat flux injection model (default CST) CHARACTER(LEN=7) :: CFIRE_CPL_MODE ! Coupling mode (default 2WAYCPL) -CHARACTER(LEN=28) :: CBMAPFILE ! BMap file for FIR2ATM mode (default INIFILE) +CHARACTER(LEN=NFILENAMELGTMAX) :: CBMAPFILE ! BMap file for FIR2ATM mode (default INIFILE) LOGICAL :: LINTERPWIND ! Flag for wind interpolation LOGICAL :: LSGBAWEIGHT ! Flag for use of weighted average method for SubGrid Burning Area computation INTEGER :: NFIRE_WENO_ORDER ! Weno order (1,3,5) diff --git a/src/MNH/modn_lunitn.f90 b/src/MNH/modn_lunitn.f90 index cb95d4c67..019714869 100644 --- a/src/MNH/modn_lunitn.f90 +++ b/src/MNH/modn_lunitn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 modn 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ################### MODULE MODN_LUNIT_n ! ################### @@ -43,17 +38,18 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAMETERS, ONLY : JPCPLFILEMAX -USE MODD_LUNIT_n, ONLY: & - CINIFILE_n => CINIFILE, & - CINIFILEPGD_n => CINIFILEPGD, & - CCPLFILE_n => CCPLFILE +USE MODD_PARAMETERS, ONLY: JPCPLFILEMAX, NFILENAMELGTMAX +USE MODD_LUNIT_n, ONLY: CINIFILE_n => CINIFILE, & + CINIFILEPGD_n => CINIFILEPGD, & + CCPLFILE_n => CCPLFILE ! IMPLICIT NONE ! -CHARACTER(LEN=28),SAVE :: CINIFILE -CHARACTER(LEN=28),SAVE :: CINIFILEPGD -CHARACTER(LEN=28),SAVE,DIMENSION(JPCPLFILEMAX) :: CCPLFILE +SAVE +! +CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE +CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILEPGD +CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(JPCPLFILEMAX) :: CCPLFILE ! NAMELIST/NAM_LUNITn/CINIFILE,CINIFILEPGD,CCPLFILE ! diff --git a/src/MNH/open_file_mnh.f90 b/src/MNH/open_file_mnh.f90 index 4a0539ec7..93343bb4a 100644 --- a/src/MNH/open_file_mnh.f90 +++ b/src/MNH/open_file_mnh.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2023 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. @@ -9,12 +9,14 @@ INTERFACE SUBROUTINE OPEN_FILE_MNH(KUNIT,HFILE,HFORM,HACTION,HACCESS,KRECL) ! -INTEGER, INTENT(OUT):: KUNIT ! logical unit -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! file to open -CHARACTER(LEN=11), INTENT(IN) :: HFORM ! type of file -CHARACTER(LEN=9), INTENT(IN) :: HACTION ! action -CHARACTER(LEN=6), INTENT(IN) :: HACCESS ! access type -INTEGER, INTENT(IN) :: KRECL ! record length +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +INTEGER, INTENT(OUT):: KUNIT ! logical unit +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! file to open +CHARACTER(LEN=11), INTENT(IN) :: HFORM ! type of file +CHARACTER(LEN=9), INTENT(IN) :: HACTION ! action +CHARACTER(LEN=6), INTENT(IN) :: HACCESS ! access type +INTEGER, INTENT(IN) :: KRECL ! record length ! END SUBROUTINE OPEN_FILE_MNH ! @@ -58,6 +60,7 @@ END MODULE MODI_OPEN_FILE_MNH ! ------------ ! USE MODD_IO_NAM, ONLY: TFILE +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! USE MODE_IO_FILE, ONLY: IO_File_open USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list @@ -68,18 +71,16 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -INTEGER, INTENT(OUT):: KUNIT ! logical unit -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! file to open -CHARACTER(LEN=11), INTENT(IN) :: HFORM ! type of file -CHARACTER(LEN=9), INTENT(IN) :: HACTION ! action -CHARACTER(LEN=6), INTENT(IN) :: HACCESS ! access type -INTEGER, INTENT(IN) :: KRECL ! record length +INTEGER, INTENT(OUT):: KUNIT ! logical unit +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! file to open +CHARACTER(LEN=11), INTENT(IN) :: HFORM ! type of file +CHARACTER(LEN=9), INTENT(IN) :: HACTION ! action +CHARACTER(LEN=6), INTENT(IN) :: HACCESS ! access type +INTEGER, INTENT(IN) :: KRECL ! record length ! !* 0.2 Declarations of local variables ! ------------------------------- ! -INTEGER :: IRESP -! !------------------------------------------------------------------------------- ! CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILE_MNH','called for '//TRIM(HFILE)) diff --git a/src/MNH/open_nestpgd_files.f90 b/src/MNH/open_nestpgd_files.f90 index 555d5cbc1..07692c010 100644 --- a/src/MNH/open_nestpgd_files.f90 +++ b/src/MNH/open_nestpgd_files.f90 @@ -109,17 +109,15 @@ INTEGER :: IRESP ! return-code if problems eraised INTEGER :: ILUOUT0 ! logical unit for listing file LOGICAL :: GFOUND ! Return code when searching namelist ! -CHARACTER(LEN=28) :: HPRE_NEST_PGD ! name of namelist file -INTEGER :: IPRE_NEST_PGD ! logical unit of namelist file -! -CHARACTER(LEN=28),DIMENSION(JPMODELMAX) :: YPGD ! name of the pgd file for each model -CHARACTER(LEN=28) :: YLUOUT ! name of output listing file for each model -CHARACTER(LEN=2) :: YNEST ! to define the output pgd file names -CHARACTER(LEN=28) :: YPGD1, YPGD2, YPGD3, YPGD4, & - YPGD5, YPGD6, YPGD7, YPGD8 -! ! name of all pgd files -! ! in the namelist -CHARACTER(LEN=100) :: YMSG +CHARACTER(LEN=NFILENAMELGTMAX) :: YPRE_NEST_PGD ! name of namelist file +INTEGER :: IPRE_NEST_PGD ! logical unit of namelist file +! +CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(JPMODELMAX) :: YPGD ! name of the pgd file for each model +CHARACTER(LEN=NFILENAMELGTMAX) :: YLUOUT ! name of output listing file for each model +CHARACTER(LEN=2) :: YNEST ! to define the output pgd file names +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD1, YPGD2, YPGD3, YPGD4, & + YPGD5, YPGD6, YPGD7, YPGD8 + ! name of all pgd files in the namelist INTEGER :: IDAD ! father of one model INTEGER :: JPGD ! loop counter LOGICAL :: GADD ! @@ -149,7 +147,7 @@ TZPRE_NEST_PGD => NULL() !* 1. SET DEFAULT NAMES ! ----------------- ! -HPRE_NEST_PGD='PRE_NEST_PGD1.nam' +YPRE_NEST_PGD='PRE_NEST_PGD1.nam' ! !------------------------------------------------------------------------------- ! @@ -168,7 +166,7 @@ ILUOUT0=TLUOUT0%NLU !* 3. OPENNING OF PRE_NEST_PGD1.nam ! ----------------------------- ! -CALL IO_File_add2list(TZPRE_NEST_PGD,TRIM(HPRE_NEST_PGD),'NML','READ') +CALL IO_File_add2list(TZPRE_NEST_PGD,TRIM(YPRE_NEST_PGD),'NML','READ') CALL IO_File_open(TZPRE_NEST_PGD) IPRE_NEST_PGD = TZPRE_NEST_PGD%NLU !reading of NAM_CONFZ @@ -189,14 +187,14 @@ END IF !* 4. READING OF THE OTHER FILE NAMES ! ------------------------------- ! -YPGD1=' ' -YPGD2=' ' -YPGD3=' ' -YPGD4=' ' -YPGD5=' ' -YPGD6=' ' -YPGD7=' ' -YPGD8=' ' +YPGD1='' +YPGD2='' +YPGD3='' +YPGD4='' +YPGD5='' +YPGD6='' +YPGD7='' +YPGD8='' NDAD(:)=0 GADD=.TRUE. ! @@ -257,8 +255,8 @@ DO JPGD=1,JPMODELMAX ! IF ( (IDAD<1 .OR. IDAD>JPMODELMAX) .AND. (JPGD>1) ) THEN !callabortstop - WRITE(YMSG,*) 'No father indicated for model ',JPGD,' in namelist NAM_PGD',JPGD - CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_NESTPGD_FILES',YMSG) + WRITE( CMNHMSG(1), * ) 'No father indicated for model ', JPGD, ' in namelist NAM_PGD', JPGD + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'OPEN_NESTPGD_FILES' ) END IF ! IF (GADD) THEN diff --git a/src/MNH/open_prc_files.f90 b/src/MNH/open_prc_files.f90 index 056eb30ae..d388a6088 100644 --- a/src/MNH/open_prc_files.f90 +++ b/src/MNH/open_prc_files.f90 @@ -14,20 +14,22 @@ INTERFACE HPGDFILE,TPPGDFILE, & HCAMSFILE,HCAMSFILETYPE) ! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(OUT) :: HATMFILE ! name of the input atmospheric file -CHARACTER(LEN=6), INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file -TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPATMFILE ! physiographic data file -CHARACTER(LEN=28), INTENT(OUT) :: HCHEMFILE ! name of the input chemical file -CHARACTER(LEN=6), INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file -CHARACTER(LEN=28), INTENT(OUT) :: HSURFFILE ! name of the input surface file -CHARACTER(LEN=6), INTENT(OUT) :: HSURFFILETYPE! type of the input surface file -CHARACTER(LEN=28), INTENT(OUT) :: HPGDFILE ! name of the physiographic data file -TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPGDFILE ! physiographic data file -CHARACTER(LEN=28), INTENT(OUT) :: HCAMSFILE ! name of the input CAMS file -CHARACTER(LEN=6), INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HATMFILE ! name of the input atmospheric file +CHARACTER(LEN=6), INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPATMFILE ! physiographic data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCHEMFILE ! name of the input chemical file +CHARACTER(LEN=6), INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSURFFILE ! name of the input surface file +CHARACTER(LEN=6), INTENT(OUT) :: HSURFFILETYPE! type of the input surface file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HPGDFILE ! name of the physiographic data file +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPPGDFILE ! physiographic data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCAMSFILE ! name of the input CAMS file +CHARACTER(LEN=6), INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file +! END SUBROUTINE OPEN_PRC_FILES END INTERFACE END MODULE MODI_OPEN_PRC_FILES @@ -112,6 +114,7 @@ USE MODD_CONF_n USE MODD_IO, ONLY: TFILE_OUTPUTLISTING, TFILEDATA USE MODD_LUNIT USE MODD_LUNIT_n, CINIFILE_n=>CINIFILE , CINIFILEPGD_n=>CINIFILEPGD +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! ! USE MODE_IO, only: IO_Config_set @@ -130,18 +133,18 @@ IMPLICIT NONE !* 0.1 Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(OUT) :: HATMFILE ! name of the input atmospheric file -CHARACTER(LEN=6), INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file -TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPATMFILE ! physiographic data file -CHARACTER(LEN=28), INTENT(OUT) :: HCHEMFILE ! name of the input chemical file -CHARACTER(LEN=6), INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file -CHARACTER(LEN=28), INTENT(OUT) :: HSURFFILE ! name of the input surface file -CHARACTER(LEN=6), INTENT(OUT) :: HSURFFILETYPE! type of the input surface file -CHARACTER(LEN=28), INTENT(OUT) :: HPGDFILE ! name of the physiographic data file -TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPGDFILE ! physiographic data file -CHARACTER(LEN=28), INTENT(OUT) :: HCAMSFILE ! name of the input CAMS file -CHARACTER(LEN=6), INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HATMFILE ! name of the input atmospheric file +CHARACTER(LEN=6), INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPATMFILE ! physiographic data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCHEMFILE ! name of the input chemical file +CHARACTER(LEN=6), INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSURFFILE ! name of the input surface file +CHARACTER(LEN=6), INTENT(OUT) :: HSURFFILETYPE! type of the input surface file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HPGDFILE ! name of the physiographic data file +TYPE(TFILEDATA), POINTER, INTENT(OUT) :: TPPGDFILE ! physiographic data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCAMSFILE ! name of the input CAMS file +CHARACTER(LEN=6), INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -151,9 +154,8 @@ INTEGER :: IPRE_REAL1 ! logical unit for file PRE_REAL1 INTEGER :: ILUOUT0 ! logical unit for listing file LOGICAL :: GFOUND ! Return code when searching namelist INTEGER :: ILEN -CHARACTER(LEN=28) :: YFILE ! -CHARACTER(LEN=28) :: CINIFILE ! re-declaration of this model variable for namelist +CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE ! re-declaration of this model variable for namelist ! !* 0.3 Declaration of namelists ! ------------------------ @@ -166,13 +168,13 @@ NAMELIST/NAM_FILE_NAMES/ HATMFILE,HATMFILETYPE,HCHEMFILE,HCHEMFILETYPE, & !* 1. SET DEFAULT NAMES ! ----------------- ! -HATMFILE=' ' +HATMFILE='' HATMFILETYPE='MESONH' -HCHEMFILE=' ' +HCHEMFILE='' HCHEMFILETYPE='MESONH' -HSURFFILE=' ' +HSURFFILE='' HSURFFILETYPE='MESONH' -HCAMSFILE=' ' +HCAMSFILE='' HCAMSFILETYPE='NETCDF' ! !------------------------------------------------------------------------------- @@ -220,7 +222,7 @@ CALL POSNAM( TPPRE_REAL1FILE, 'NAM_FILE_NAMES', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_FILE_NAMES) CINIFILE_n = CINIFILE ! -WRITE(ILUOUT0,*) 'HATMFILE= ', HATMFILE +WRITE(ILUOUT0,*) 'HATMFILE= ', TRIM(HATMFILE) ! IF (HCHEMFILE==HATMFILE) HCHEMFILE='' IF (LEN_TRIM(HCHEMFILE)>0 .AND. HATMFILETYPE/='GRIBEX') THEN @@ -228,15 +230,15 @@ IF (LEN_TRIM(HCHEMFILE)>0 .AND. HATMFILETYPE/='GRIBEX') THEN CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_PRC_FILES',& 'Additional CHEMical file is only possible when ATMospheric file is of GRIBEX type') END IF -WRITE(ILUOUT0,*) 'HCHEMFILE=', HCHEMFILE +WRITE(ILUOUT0,*) 'HCHEMFILE=', TRIM(HCHEMFILE) ! -WRITE(ILUOUT0,*) 'HCAMSFILE=', HCAMSFILE +WRITE(ILUOUT0,*) 'HCAMSFILE=', TRIM(HCAMSFILE) ! IF ( LEN_TRIM( HSURFFILE ) == 0 ) THEN HSURFFILE = HATMFILE HSURFFILETYPE = HATMFILETYPE END IF -WRITE(ILUOUT0,*) 'HSURFFILE=', HSURFFILE +WRITE(ILUOUT0,*) 'HSURFFILE=', TRIM(HSURFFILE) ! CINIFILEPGD_n = HPGDFILE IF (LEN_TRIM(HPGDFILE)==0) THEN @@ -262,7 +264,7 @@ ELSE END IF END IF ! -WRITE(ILUOUT0,*) 'HPGDFILE= ', HPGDFILE +WRITE(ILUOUT0,*) 'HPGDFILE= ', TRIM(HPGDFILE) !------------------------------------------------------------------------------- ! !* 6. INPUT ATMOSPHERIC FILE diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 25eac5bc1..4198be8d1 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -536,7 +536,7 @@ REAL,DIMENSION(:,:,:),ALLOCATABLE :: XCORIOZ ! Coriolis parameter (this ! file is used : ! INTEGER :: JSV ! loop index on scalar var. -CHARACTER(LEN=28) :: CPGD_FILE=' ' ! Physio-Graphic Data file name +CHARACTER(LEN=NFILENAMELGTMAX) :: CPGD_FILE='' ! Physio-Graphic Data file name LOGICAL :: LREAD_ZS = .TRUE., & ! switch to use orography ! coming from the PGD file LREAD_GROUND_PARAM = .TRUE. ! switch to use soil parameters @@ -545,7 +545,9 @@ LOGICAL :: LREAD_ZS = .TRUE., & ! switch to use orography INTEGER :: NSLEVE =12 ! number of iteration for smooth orography REAL :: XSMOOTH_ZS = XUNDEF ! optional uniform smooth orography for SLEVE coordinate -CHARACTER(LEN=28) :: YPGD_NAME, YPGD_DAD_NAME ! general information +CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE +CHARACTER(LEN=6) :: YATMFILETYPE +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME, YPGD_DAD_NAME ! general information CHARACTER(LEN=2) :: YPGD_TYPE ! INTEGER :: IINFO_ll ! return code of // routines @@ -736,17 +738,17 @@ IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN IF ( CPGD_FILE /= CINIFILEPGD) THEN WRITE(NLUOUT,FMT=*) ' WARNING : in PRE_IDEA1.nam, in NAM_LUNITn you& - & have CINIFILEPGD= ',CINIFILEPGD + & have CINIFILEPGD= ',TRIM(CINIFILEPGD) WRITE(NLUOUT,FMT=*) ' whereas in NAM_REAL_PGD you have CPGD_FILE = '& - ,CPGD_FILE + ,TRIM(CPGD_FILE) WRITE(NLUOUT,FMT=*) ' ' - WRITE(NLUOUT,FMT=*) ' CINIFILEPGD HAS BEEN SET TO ',CPGD_FILE + WRITE(NLUOUT,FMT=*) ' CINIFILEPGD HAS BEEN SET TO ',TRIM(CPGD_FILE) CINIFILEPGD=CPGD_FILE END IF IF ( IJPHEXT .NE. JPHEXT ) THEN WRITE(NLUOUT,FMT=*) ' PREP_IDEAL_CASE : JPHEXT in PRE_IDEA1.nam/NAM_CONF_PRE ( or default value )& & JPHEXT=',JPHEXT - WRITE(NLUOUT,FMT=*) ' different from PGD files=', CINIFILEPGD,' value JPHEXT=',IJPHEXT + WRITE(NLUOUT,FMT=*) ' different from PGD files=', TRIM(CINIFILEPGD),' value JPHEXT=',IJPHEXT WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','') !WRITE(NLUOUT,FMT=*) ' JPHEXT HAS BEEN SET TO ', IJPHEXT @@ -1824,8 +1826,10 @@ IF (CSURF =='EXTE') THEN TPGDFILE => TINIFILEPGD ELSE ! ... or read from file. + YATMFILE = '' + YATMFILETYPE = '' CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD', & - ' ', ' ', & + YATMFILE, YATMFILETYPE, & TDTCUR%nyear, TDTCUR%nmonth, & TDTCUR%nday, TDTCUR%xtime ) ! @@ -1861,7 +1865,9 @@ IF (CSURF =='EXTE') THEN !* writing of all surface fields TOUTDATAFILE => TINIFILE TFILE_SURFEX => TINIFILE - CALL PREP_SURF_MNH(' ',' ') + YATMFILE = '' + YATMFILETYPE = '' + CALL PREP_SURF_MNH( YATMFILE, YATMFILETYPE ) NULLIFY(TFILE_SURFEX) ELSE CSURF = "NONE" diff --git a/src/MNH/prep_nest_pgd.f90 b/src/MNH/prep_nest_pgd.f90 index 3a60cde0d..7f57b0c9e 100644 --- a/src/MNH/prep_nest_pgd.f90 +++ b/src/MNH/prep_nest_pgd.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2023 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. @@ -148,7 +148,9 @@ INTEGER, DIMENSION(JPMODELMAX) :: NYSIZE ! in x and y-directions INTEGER :: ILUOUT0 INTEGER :: IINFO_ll ! return code of // routines INTEGER :: JPGD ! loop control -CHARACTER(LEN=28) :: YMY_NAME,YDAD_NAME +CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE +CHARACTER(LEN=6) :: YATMFILETYPE +CHARACTER(LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME CHARACTER(LEN=2) :: YSTORAGE_TYPE LOGICAL, DIMENSION(JPMODELMAX) :: L1D_ALL ! Flag for 1D conf. for each PGD LOGICAL, DIMENSION(JPMODELMAX) :: L2D_ALL ! Flag for 2D conf. for each PGD @@ -309,9 +311,9 @@ DO JPGD=1,NMODEL TPGDFILE => TZFILEPGD(JPGD)%TZFILE CALL GOTO_MODEL(JPGD) CALL GOTO_SURFEX(JPGD) - CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD', & - ' ',' ',& - NUNDEF,NUNDEF,NUNDEF,XUNDEF ) + YATMFILE = '' + YATMFILETYPE = '' + CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD', YATMFILE, YATMFILETYPE, NUNDEF, NUNDEF, NUNDEF, XUNDEF ) END IF END DO ! diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90 index 172959a98..d4fcc6dcb 100644 --- a/src/MNH/prep_pgd.f90 +++ b/src/MNH/prep_pgd.f90 @@ -88,7 +88,7 @@ USE MODD_CONF, ONLY : CPROGRAM, L1D, L2D, LPACK, LCARTESIAN USE MODD_CONF_n,ONLY : CSTORAGE_TYPE USE MODD_LUNIT, ONLY : TLUOUT0 USE MODD_LUNIT_n,ONLY : LUNIT_MODEL -USE MODD_PARAMETERS, ONLY : XUNDEF +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX, XUNDEF USE MODD_IO, only: TFILEDATA, TFILE_OUTPUTLISTING, TFILE_SURFEX use modd_precision, only: LFIINT USE MODD_IO_SURF_MNH, ONLY : NHALO @@ -137,9 +137,9 @@ INTEGER :: IRESP ! return code for I/O INTEGER :: ILUOUT0 INTEGER :: ILUNAM LOGICAL :: GFOUND -CHARACTER(LEN=28) :: YDAD =' ' ! name of dad of input FM file -CHARACTER(LEN=28) :: CPGDFILE ='PGDFILE' ! name of the output file -CHARACTER(LEN=100) :: YMSG +CHARACTER(LEN=NFILENAMELGTMAX) :: CPGDFILE = 'PGDFILE' ! name of the output file +CHARACTER(LEN=NFILENAMELGTMAX) :: YFILE +CHARACTER(LEN=6) :: YFILETYPE INTEGER :: NZSFILTER=1 ! number of iteration for filter for fine orography INTEGER :: NLOCZSFILTER=3 ! number of iteration for filter of local fine orography LOGICAL :: LHSLOP=.FALSE. ! filtering of local slopes higher than XHSLOP @@ -185,9 +185,8 @@ CALL IO_File_add2list(TZNMLFILE,'PRE_PGD1.nam','NML','READ') CALL IO_File_open(TZNMLFILE,KRESP=IRESP) ILUNAM = TZNMLFILE%NLU IF (IRESP.NE.0 ) THEN - WRITE(YMSG,*) 'file PRE_PGD1.nam not found, IRESP=', IRESP - !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_PGD',YMSG) + WRITE( CMNHMSG(1), * ) 'file PRE_PGD1.nam not found, IRESP=', IRESP + CALL PRINT_MSG( NVERB_FATAL, 'IO', 'PREP_PGD' ) ENDIF !JUAN @@ -235,8 +234,10 @@ CALL INI_CST !* Initializes the grid ! -------------------- ! -CALL PGD_GRID_SURF_ATM(YSURF_CUR%UG, YSURF_CUR%U,YSURF_CUR%GCP,'MESONH',& - ' ',' ',.FALSE.,HDIR='-') +YFILE = '' +YFILETYPE = '' +CALL PGD_GRID_SURF_ATM( YSURF_CUR%UG, YSURF_CUR%U, YSURF_CUR%GCP, 'MESONH', & + YFILE, YFILETYPE, .FALSE., HDIR='-' ) ! CALL EXTEND_GRID_ON_HALO('MESONH',YSURF_CUR%UG, YSURF_CUR%U,& YSURF_CUR%UG%G%NGRID_PAR, YSURF_CUR%UG%G%XGRID_PAR) @@ -245,7 +246,7 @@ CALL EXTEND_GRID_ON_HALO('MESONH',YSURF_CUR%UG, YSURF_CUR%U,& !* Initializes all physiographic fields ! ------------------------------------ ! -CALL PGD_SURF_ATM(YSURF_CUR,'MESONH',' ',' ',.FALSE.) +CALL PGD_SURF_ATM( YSURF_CUR, 'MESONH', YFILE, YFILETYPE, .FALSE. ) ! ! !* 3. Writes the physiographic fields diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 064d1c6be..8e1a7322e 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -508,22 +508,22 @@ IMPLICIT NONE !* 0.1 Declaration of local variables ! ------------------------------ ! -CHARACTER(LEN=28) :: YATMFILE ! name of the Atmospheric file +CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE ! name of the Atmospheric file CHARACTER(LEN=6) :: YATMFILETYPE! type of the Atmospheric file -CHARACTER(LEN=28) :: YCHEMFILE ! name of the Chemical file +CHARACTER(LEN=NFILENAMELGTMAX) :: YCHEMFILE ! name of the Chemical file CHARACTER(LEN=6) :: YCHEMFILETYPE! type of the Chemical file !UP*PT -!CHARACTER(LEN=28) :: YCAMSFILE ! name of the input CAMS file +!CHARACTER(LEN=NFILENAMELGTMAX) :: YCAMSFILE ! name of the input CAMS file !CHARACTER(LEN=6) :: YCAMSFILETYPE! type of the input CAMS file -CHARACTER(LEN=28) :: YLIMAFILE ! name of the input MACC file +CHARACTER(LEN=NFILENAMELGTMAX) :: YLIMAFILE ! name of the input MACC file CHARACTER(LEN=6) :: YLIMAFILETYPE! type of the input MACC file !UP*PT -CHARACTER(LEN=28) :: YSURFFILE ! name of the Surface file +CHARACTER(LEN=NFILENAMELGTMAX) :: YSURFFILE ! name of the Surface file CHARACTER(LEN=6) :: YSURFFILETYPE! type of the Surface file -CHARACTER(LEN=28) :: YPGDFILE ! name of the physiographic data +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGDFILE ! name of the physiographic data ! ! file ! -CHARACTER(LEN=28) :: YDAD_NAME ! true name of the atmospheric file +CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD_NAME ! true name of the atmospheric file ! !* other variables ! @@ -1404,7 +1404,7 @@ IF (LEN_TRIM(YDAD_NAME)>0) THEN WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) ' ------------------------------------------------------------' WRITE(ILUOUT0,*) '| Nesting allowed |' - WRITE(ILUOUT0,*) '| DAD_NAME="',YDAD_NAME,'" |' + WRITE(ILUOUT0,*) '| DAD_NAME="',TRIM(YDAD_NAME),'" |' WRITE(ILUOUT0,*) ' ------------------------------------------------------------' WRITE(ILUOUT0,*) ' ' ELSE diff --git a/src/MNH/prep_surf_mnh.f90 b/src/MNH/prep_surf_mnh.f90 index 3a58a6b2f..7618a6310 100644 --- a/src/MNH/prep_surf_mnh.f90 +++ b/src/MNH/prep_surf_mnh.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2004-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2004-2023 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. @@ -9,9 +9,11 @@ INTERFACE SUBROUTINE PREP_SURF_MNH(HATMFILE,HATMFILETYPE,OINIFILEOPEN) ! -CHARACTER(LEN=28),INTENT(IN) :: HATMFILE ! name of the Atmospheric file -CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file -LOGICAL, OPTIONAL,INTENT(IN) :: OINIFILEOPEN! Open the INI file here (or not) +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HATMFILE ! name of the Atmospheric file +CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE ! type of the Atmospheric file +LOGICAL, OPTIONAL, INTENT(IN) :: OINIFILEOPEN ! Open the INI file here (or not) ! END SUBROUTINE PREP_SURF_MNH ! @@ -51,6 +53,7 @@ USE MODD_IO_SURF_MNH, ONLY : COUTFILE USE MODD_LUNIT, ONLY : TLUOUT0, TOUTDATAFILE USE MODD_LUNIT_n, ONLY : CINIFILE, TINIFILE USE MODD_MNH_SURFEX_n +USE MODD_PARAMETERS, ONLY : NFILENAMELGTMAX USE MODD_TIME_n, ONLY : TDTCUR ! USE MODE_IO_FILE, ONLY: IO_File_open @@ -66,17 +69,15 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -CHARACTER(LEN=28),INTENT(IN) :: HATMFILE ! name of the Atmospheric file -CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file -LOGICAL, OPTIONAL,INTENT(IN) :: OINIFILEOPEN! Open the INI file here (or not) +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HATMFILE ! name of the Atmospheric file +CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE ! type of the Atmospheric file +LOGICAL, OPTIONAL, INTENT(IN) :: OINIFILEOPEN ! Open the INI file here (or not) ! !* 0.2 Declarations of local variables ! ------------------------------- ! TYPE (PREP_CTL) :: YLCTL ! -CHARACTER(LEN=28) :: YPGDFILE =' ' ! name of the pgd file -CHARACTER(LEN=6) :: YPGDFILETYPE =' ' ! type of the pgd file INTEGER :: ILUOUT0 ! logical unit for listing file CHARACTER(LEN=6) :: YATMFILETYPE ! type of the Atmospheric file !------------------------------------------------------------------ diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90 index 749c59844..922d5d3da 100644 --- a/src/MNH/prep_surfex.f90 +++ b/src/MNH/prep_surfex.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2004-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2004-2023 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. @@ -40,7 +40,7 @@ USE MODD_IO, ONLY : TFILEDATA, TFILE_SURFEX USE MODD_LUNIT, ONLY : TPGDFILE, TLUOUT0 USE MODD_LUNIT_n, ONLY : CINIFILE, TINIFILE USE MODD_MNH_SURFEX_n -USE MODD_PARAMETERS, ONLY : JPMODELMAX,JPHEXT,JPVEXT, NUNDEF, XUNDEF +USE MODD_PARAMETERS, ONLY : JPMODELMAX,JPHEXT,JPVEXT, NFILENAMELGTMAX, NUNDEF, XUNDEF USE MODD_TIME_n, ONLY : TDTCUR ! use mode_field, only: Ini_field_list, Ini_field_scalars @@ -66,16 +66,15 @@ IMPLICIT NONE !* 0.1 Declaration of local variables ! ------------------------------ ! -CHARACTER(LEN=28) :: YATMFILE ! name of the Atmospheric file -CHARACTER(LEN=6) :: YATMFILETYPE ! type of the Atmospheric file -CHARACTER(LEN=28) :: YCHEMFILE ! name of the Chemical file (not used) -CHARACTER(LEN=6) :: YCHEMFILETYPE ! type of the Chemical file (not used) -CHARACTER(LEN=28) :: YCAMSFILE ! name of the input CAMS file -CHARACTER(LEN=6) :: YCAMSFILETYPE ! type of the input CAMS file -CHARACTER(LEN=28) :: YSURFFILE ! name of the Surface file (not used) -CHARACTER(LEN=6) :: YSURFFILETYPE ! type of the Surface file (not used) -CHARACTER(LEN=28) :: YPGDFILE ! name of the physiographic data -! ! file +CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE ! name of the Atmospheric file +CHARACTER(LEN=6) :: YATMFILETYPE ! type of the Atmospheric file +CHARACTER(LEN=NFILENAMELGTMAX) :: YCHEMFILE ! name of the Chemical file (not used) +CHARACTER(LEN=6) :: YCHEMFILETYPE ! type of the Chemical file (not used) +CHARACTER(LEN=NFILENAMELGTMAX) :: YCAMSFILE ! name of the input CAMS file +CHARACTER(LEN=6) :: YCAMSFILETYPE ! type of the input CAMS file +CHARACTER(LEN=NFILENAMELGTMAX) :: YSURFFILE ! name of the Surface file (not used) +CHARACTER(LEN=6) :: YSURFFILETYPE ! type of the Surface file (not used) +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGDFILE ! name of the physiographic data file ! !* file management variables and counters ! diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index af2db5f9e..288544b8c 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2023 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. @@ -10,15 +10,16 @@ INTERFACE SUBROUTINE READ_ALL_DATA_GRIB_CASE(HFILE,TPPRE_REAL1,HGRIB,TPPGDFILE, & PTIME_HORI,KVERB,ODUMMY_REAL ) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -CHARACTER(LEN=4), INTENT(IN) :: HFILE ! which file ('ATM0','ATM1' or 'CHEM') -TYPE(TFILEDATA),POINTER,INTENT(INOUT) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HGRIB ! name of the GRIB file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +CHARACTER(LEN=4), INTENT(IN) :: HFILE ! which file ('ATM0','ATM1' or 'CHEM') +TYPE(TFILEDATA), POINTER, INTENT(INOUT) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HGRIB ! name of the GRIB file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations ! END SUBROUTINE READ_ALL_DATA_GRIB_CASE ! @@ -191,13 +192,13 @@ IMPLICIT NONE !* 0.1. Declaration of arguments ! ------------------------ ! -CHARACTER(LEN=4), INTENT(IN) :: HFILE ! which file ('ATM0','ATM1' or 'CHEM') -TYPE(TFILEDATA),POINTER,INTENT(INOUT) :: TPPRE_REAL1! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HGRIB ! name of the GRIB file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +CHARACTER(LEN=4), INTENT(IN) :: HFILE ! which file ('ATM0','ATM1' or 'CHEM') +TYPE(TFILEDATA), POINTER, INTENT(INOUT) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HGRIB ! name of the GRIB file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -216,8 +217,8 @@ INTEGER :: JLOOP1,JLOOP2 ! | INTEGER :: JLOOP3,JLOOP4 ! | INTEGER :: JLOOP ! | ! Variables used by the PGD reader -CHARACTER(LEN=28) :: YPGD_NAME ! not used - dummy argument -CHARACTER(LEN=28) :: YPGD_DAD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_DAD_NAME ! not used - dummy argument CHARACTER(LEN=2) :: YPGD_TYPE ! not used - dummy argument ! PGD Grib definition variables INTEGER :: INO ! Number of points of the grid diff --git a/src/MNH/read_all_data_mesonh_case.f90 b/src/MNH/read_all_data_mesonh_case.f90 index 2a1e021c2..f9c741227 100644 --- a/src/MNH/read_all_data_mesonh_case.f90 +++ b/src/MNH/read_all_data_mesonh_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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. @@ -10,12 +10,13 @@ INTERFACE SUBROUTINE READ_ALL_DATA_MESONH_CASE(TZPRE_REAL1,HFMFILE,TPPGDFILE, & HDAD_NAME ) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -TYPE(TFILEDATA),POINTER, INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! name of the Mesonh input file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -CHARACTER(LEN=*), INTENT(INOUT) :: HDAD_NAME ! true name of the Mesonh input file +TYPE(TFILEDATA), POINTER, INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFMFILE ! name of the Mesonh input file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(INOUT) :: HDAD_NAME ! true name of the Mesonh input file ! END SUBROUTINE READ_ALL_DATA_MESONH_CASE ! @@ -158,10 +159,10 @@ IMPLICIT NONE !* 0.1 Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER, INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! name of the Mesonh input file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -CHARACTER(LEN=*), INTENT(INOUT) :: HDAD_NAME ! true name of the Mesonh input file +TYPE(TFILEDATA), POINTER, INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFMFILE ! name of the Mesonh input file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(INOUT) :: HDAD_NAME ! true name of the Mesonh input file ! ! !* 0.2 Declaration of local variables @@ -181,8 +182,8 @@ INTEGER :: IYOR_LS ! J shift between PGD file and LS atmospheric file INTEGER :: IRESP ! return-code if problems occured INTEGER :: ILUOUT0 ! logical unit for file TLUOUT0 ! -CHARACTER(LEN=28) :: YPGD_NAME, YPGD_DAD_NAME -CHARACTER(LEN=28) :: YOUTFILE +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME, YPGD_DAD_NAME +CHARACTER(LEN=NFILENAMELGTMAX) :: YOUTFILE CHARACTER(LEN=2) :: YPGD_TYPE ! !* temporary namelist configuration variables diff --git a/src/MNH/read_asc_latpress.f90 b/src/MNH/read_asc_latpress.f90 index af67b3397..568f381af 100644 --- a/src/MNH/read_asc_latpress.f90 +++ b/src/MNH/read_asc_latpress.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2023 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. @@ -11,12 +11,14 @@ INTERFACE PRVFRC) ! -CHARACTER(LEN=28), INTENT(IN) :: HFILENAME ! Name of the field file. -INTEGER , INTENT(IN) :: KLEV -REAL , DIMENSION(:) , INTENT(OUT) :: PLAT -REAL , DIMENSION(:) , INTENT(OUT) :: PLEV -REAL , DIMENSION(:,:) , INTENT(OUT) :: PTHFRC -REAL , DIMENSION(:,:) , INTENT(OUT) :: PRVFRC +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILENAME ! Name of the field file. +INTEGER, INTENT(IN) :: KLEV +REAL, DIMENSION(:), INTENT(OUT) :: PLAT +REAL, DIMENSION(:), INTENT(OUT) :: PLEV +REAL, DIMENSION(:,:), INTENT(OUT) :: PTHFRC +REAL, DIMENSION(:,:), INTENT(OUT) :: PRVFRC ! ! END SUBROUTINE READ_ASC_LATPRESS @@ -51,6 +53,7 @@ END MODULE MODI_READ_ASC_LATPRESS !* 0. DECLARATION ! ----------- ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! use mode_tools_ll, only: GET_INDICE_ll ! @@ -59,12 +62,12 @@ IMPLICIT NONE !* 0.1 Declaration of arguments ! ------------------------ ! -CHARACTER(LEN=28), INTENT(IN) :: HFILENAME ! Name of the field file. -INTEGER , INTENT(IN) :: KLEV -REAL , DIMENSION(:) , INTENT(OUT) :: PLAT -REAL , DIMENSION(:) , INTENT(OUT) :: PLEV -REAL , DIMENSION(:,:) , INTENT(OUT) :: PTHFRC -REAL , DIMENSION(:,:) , INTENT(OUT) :: PRVFRC +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILENAME ! Name of the field file. +INTEGER, INTENT(IN) :: KLEV +REAL, DIMENSION(:), INTENT(OUT) :: PLAT +REAL, DIMENSION(:), INTENT(OUT) :: PLEV +REAL, DIMENSION(:,:), INTENT(OUT) :: PTHFRC +REAL, DIMENSION(:,:), INTENT(OUT) :: PRVFRC ! !* 0.2 Declaration of local variables ! ------------------------------ diff --git a/src/MNH/read_ascp.f90 b/src/MNH/read_ascp.f90 index e5490ed54..a7dc454db 100644 --- a/src/MNH/read_ascp.f90 +++ b/src/MNH/read_ascp.f90 @@ -1,8 +1,8 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 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. - +!----------------------------------------------------------------- ! ######################## MODULE MODI_READ_ASCP ! ######################## @@ -10,10 +10,12 @@ INTERFACE SUBROUTINE READ_ASCP(HFILENAME,KLEV,PTHDF,PRVF) ! -CHARACTER(LEN=28), INTENT(IN) :: HFILENAME ! Name of the field file. -INTEGER , INTENT(IN) :: KLEV -REAL , DIMENSION(:) , INTENT(OUT) :: PTHDF -REAL , DIMENSION(:) , INTENT(OUT) :: PRVF +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILENAME ! Name of the field file. +INTEGER, INTENT(IN) :: KLEV +REAL, DIMENSION(:), INTENT(OUT) :: PTHDF +REAL, DIMENSION(:), INTENT(OUT) :: PRVF ! ! END SUBROUTINE READ_ASCP @@ -48,18 +50,17 @@ END MODULE MODI_READ_ASCP ! ----------- ! ! - - +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! IMPLICIT NONE ! !* 0.1 Declaration of arguments ! ------------------------ ! -CHARACTER(LEN=28), INTENT(IN) :: HFILENAME ! Name of the field file. -INTEGER , INTENT(IN) :: KLEV -REAL , DIMENSION(:) , INTENT(OUT) :: PTHDF -REAL , DIMENSION(:) , INTENT(OUT) :: PRVF +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILENAME ! Name of the field file. +INTEGER, INTENT(IN) :: KLEV +REAL, DIMENSION(:), INTENT(OUT) :: PTHDF +REAL, DIMENSION(:), INTENT(OUT) :: PRVF ! ! !* 0.2 Declaration of local variables diff --git a/src/MNH/read_cams_data_netcdf_case.f90 b/src/MNH/read_cams_data_netcdf_case.f90 index ec6421713..188a72bb5 100644 --- a/src/MNH/read_cams_data_netcdf_case.f90 +++ b/src/MNH/read_cams_data_netcdf_case.f90 @@ -10,14 +10,15 @@ INTERFACE SUBROUTINE READ_CAMS_DATA_NETCDF_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, & PTIME_HORI,KVERB,ODUMMY_REAL ) ! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields END SUBROUTINE READ_CAMS_DATA_NETCDF_CASE ! END INTERFACE @@ -137,12 +138,12 @@ IMPLICIT NONE !* 0.1. Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -151,8 +152,8 @@ INTEGER :: ILUOUT0 ! Unit used for output msg. INTEGER :: JJ ! Dummy counters INTEGER :: JLOOP1 ! Variables used by the PGD reader -CHARACTER(LEN=28) :: YPGD_NAME ! not used - dummy argument -CHARACTER(LEN=28) :: YPGD_DAD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_DAD_NAME ! not used - dummy argument CHARACTER(LEN=2) :: YPGD_TYPE ! not used - dummy argument ! PGD Grib definition variables INTEGER :: INO ! Number of points of the grid @@ -558,7 +559,7 @@ DEALLOCATE (zmmr_sulfaer) ! DEALLOCATE (ZWORK) ! -WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully' +WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully' WRITE (ILUOUT0,'(A,A4,A)') 'CAMS mixing ratios are interpolated horizontally' ! ! diff --git a/src/MNH/read_chem_data_cams_case.f90 b/src/MNH/read_chem_data_cams_case.f90 index 3a1c62dff..8c94fd54d 100644 --- a/src/MNH/read_chem_data_cams_case.f90 +++ b/src/MNH/read_chem_data_cams_case.f90 @@ -10,15 +10,16 @@ INTERFACE SUBROUTINE READ_CHEM_DATA_CAMS_CASE(TPPRE_REAL1,HFILE,TPPGDFILE,PTIME_HORI, & KVERB,ODUMMY_REAL,OUSECHEM ) ! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields -LOGICAL, INTENT(IN) :: OUSECHEM ! flag to initialize chemistry +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +LOGICAL, INTENT(IN) :: OUSECHEM ! flag to initialize chemistry END SUBROUTINE READ_CHEM_DATA_CAMS_CASE ! END INTERFACE @@ -148,13 +149,13 @@ IMPLICIT NONE !* 0.1. Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields -LOGICAL, INTENT(IN) :: OUSECHEM ! flag to initialize chemistry +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +LOGICAL, INTENT(IN) :: OUSECHEM ! flag to initialize chemistry ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -166,8 +167,8 @@ INTEGER :: JLOOP1 ! INTEGER :: JN ! conter of dust/SS modes INTEGER :: JNCHEM, JNAER ! conters of chemical species in BASIC ! Variables used by the PGD reader -CHARACTER(LEN=28) :: YPGD_NAME ! not used - dummy argument -CHARACTER(LEN=28) :: YPGD_DAD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_DAD_NAME ! not used - dummy argument CHARACTER(LEN=2) :: YPGD_TYPE ! not used - dummy argument ! PGD Grib definition variables INTEGER :: INO ! Number of points of the grid @@ -587,7 +588,7 @@ XSV_LS(:,:,:,:) = 0. !* 2.5 read chem. variables and convert them into MNH variables ! IF (OUSECHEM) THEN - WRITE (ILUOUT0,'(A,A4,A)') ' | Reading CAMS species (ppp) from ',HFILE,'file' + WRITE (ILUOUT0,'(A,A4,A)') ' | Reading CAMS species (ppp) from ',TRIM(HFILE),'file' ! ! read CAMS species from the file CAM1.nam ! @@ -1061,7 +1062,7 @@ IF (ALLOCATED(mmr_seasalt1)) DEALLOCATE(mmr_seasalt1) IF (ALLOCATED(mmr_seasalt2)) DEALLOCATE(mmr_seasalt2) IF (ALLOCATED(mmr_seasalt3)) DEALLOCATE(mmr_seasalt3) ! -WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully' +WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully' ! CONTAINS diff --git a/src/MNH/read_chem_data_mozart_case.f90 b/src/MNH/read_chem_data_mozart_case.f90 index 2dfdb0e70..c949b8993 100644 --- a/src/MNH/read_chem_data_mozart_case.f90 +++ b/src/MNH/read_chem_data_mozart_case.f90 @@ -10,14 +10,15 @@ INTERFACE SUBROUTINE READ_CHEM_DATA_MOZART_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, & PTIME_HORI,KVERB,ODUMMY_REAL ) ! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields END SUBROUTINE READ_CHEM_DATA_MOZART_CASE ! END INTERFACE @@ -137,12 +138,12 @@ IMPLICIT NONE !* 0.1. Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the MOZART file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -153,8 +154,8 @@ INTEGER :: JI,JJ,JK ! Dummy counters INTEGER :: JLOOP1 ! | INTEGER :: JNCHEM, JNAER ! conters of chemical species in BASIC ! Variables used by the PGD reader -CHARACTER(LEN=28) :: YPGD_NAME ! not used - dummy argument -CHARACTER(LEN=28) :: YPGD_DAD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_DAD_NAME ! not used - dummy argument CHARACTER(LEN=2) :: YPGD_TYPE ! not used - dummy argument ! PGD Grib definition variables INTEGER :: INO ! Number of points of the grid @@ -445,7 +446,7 @@ enddo ALLOCATE (XSV_LS(IIU,IJU,levlen,NSV)) XSV_LS(:,:,:,:) = 0. ! - WRITE (ILUOUT0,'(A,A4,A)') ' | Reading MOZART species (ppp) from ',HFILE,' file' + WRITE (ILUOUT0,'(A,A4,A)') ' | Reading MOZART species (ppp) from ',TRIM(HFILE),' file' where (ZLONOUT(:) < 0.) ZLONOUT(:) = ZLONOUT(:) + 360. ! @@ -764,7 +765,7 @@ DEALLOCATE (vartemp3dbis) DEALLOCATE (vartemp3dter) DEALLOCATE (vartemp3dquater) ! -WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully' +WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully' ! ! CONTAINS diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90 index f55fe1f28..d85350a3f 100644 --- a/src/MNH/read_chem_data_netcdf_case.f90 +++ b/src/MNH/read_chem_data_netcdf_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2012-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2012-2023 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. @@ -10,14 +10,15 @@ INTERFACE SUBROUTINE READ_CHEM_DATA_NETCDF_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, & PTIME_HORI,KVERB,ODUMMY_REAL ) ! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields END SUBROUTINE READ_CHEM_DATA_NETCDF_CASE ! END INTERFACE @@ -136,12 +137,12 @@ IMPLICIT NONE !* 0.1. Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -152,8 +153,8 @@ INTEGER :: JI,JJ,JK ! Dummy counters INTEGER :: JLOOP1 ! | INTEGER :: JNCHEM, JNAER ! conters of chemical species in BASIC ! Variables used by the PGD reader -CHARACTER(LEN=28) :: YPGD_NAME ! not used - dummy argument -CHARACTER(LEN=28) :: YPGD_DAD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_DAD_NAME ! not used - dummy argument CHARACTER(LEN=2) :: YPGD_TYPE ! not used - dummy argument ! PGD Grib definition variables INTEGER :: INO ! Number of points of the grid diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index 8cc0cc0c4..95a1c0e42 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -23,7 +23,8 @@ INTERFACE HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC, & HEQNSYS,PTSTEP_ALL,HINIFILEPGD ) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! INTEGER, INTENT(IN) :: KMI ! Model index TYPE(TFILEDATA), INTENT(IN) :: TPEXSEGFILE ! EXSEG file @@ -72,7 +73,7 @@ CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme CHARACTER (LEN=4), INTENT(IN) :: HELEC ! Kind of electrical scheme CHARACTER (LEN=*), INTENT(IN) :: HEQNSYS! type of equations' system REAL,DIMENSION(:), INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD ! name of PGD file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file ! END SUBROUTINE READ_EXSEG_n ! @@ -472,7 +473,7 @@ CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme CHARACTER (LEN=4), INTENT(IN) :: HELEC ! Kind of electrical scheme CHARACTER (LEN=*), INTENT(IN) :: HEQNSYS! type of equations' system REAL,DIMENSION(:), INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD ! name of PGD file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file ! !* 0.2 declarations of local variables ! @@ -493,7 +494,7 @@ ILUSEG = TPEXSEGFILE%NLU ILUOUT = TLUOUT%NLU ! CALL INIT_NAM_LUNITN -CCPLFILE(:)=" " +CCPLFILE(:)='' CALL INIT_NAM_CONFN CALL INIT_NAM_DYNN CALL INIT_NAM_ADVN @@ -2464,7 +2465,7 @@ IF (KMI == 1) THEN DO JI=JCI,JPCPLFILEMAX-1 CCPLFILE(JI)=CCPLFILE(JI+1) END DO - CCPLFILE(JPCPLFILEMAX)=' ' + CCPLFILE(JPCPLFILEMAX)='' END IF END IF END DO @@ -3059,8 +3060,8 @@ END IF IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN IF ( CINIFILEPGD/=HINIFILEPGD ) THEN WRITE(UNIT=ILUOUT,FMT=9001) KMI - WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',CINIFILEPGD - WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',HINIFILEPGD + WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',TRIM(CINIFILEPGD) + WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',TRIM(HINIFILEPGD) WRITE(ILUOUT,FMT=*) ' Please check your Namelist ' WRITE(ILUOUT,FMT=*) ' For example, you may have specified the un-nested PGD file instead of the nested PGD file ' WRITE(ILUOUT,FMT=*) diff --git a/src/MNH/read_exspa.f90 b/src/MNH/read_exspa.f90 index dd261a9bc..2c5617b3d 100644 --- a/src/MNH/read_exspa.f90 +++ b/src/MNH/read_exspa.f90 @@ -13,11 +13,13 @@ INTERFACE KXOR,KYOR,KXSIZE,KYSIZE,KDXRATIO,KDYRATIO,& OBAL_ONLY,HDOMAIN,HSPAFILE,HSPANBR, & HDADINIFILE,HDADSPAFILE,HSONFILE) + +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! !* 0.1 Dummy arguments ! -CHARACTER (LEN=28), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file -CHARACTER (LEN=28), INTENT(OUT) :: HINIFILEPGD +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILEPGD INTEGER, INTENT(OUT) :: KXOR ! horizontal position (i,j) of the ORigin INTEGER, INTENT(OUT) :: KYOR ! of the model 2 domain, relative to model 1 INTEGER, INTENT(OUT) :: KDXRATIO ! x and y-direction resolution RATIO @@ -25,19 +27,15 @@ INTEGER, INTENT(OUT) :: KDYRATIO ! between model 2 and model 1 INTEGER, INTENT(OUT) :: KXSIZE ! number of model 1 grid points in x and y-directions INTEGER, INTENT(OUT) :: KYSIZE ! in the model 2 physical domain ! -CHARACTER (LEN=28), INTENT(OUT) :: HDOMAIN ! input fm-file for grid definition -CHARACTER (LEN=28), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file -CHARACTER (LEN= 2), INTENT(OUT) :: HSPANBR ! NumBeR associated to the SPAwned file -CHARACTER (LEN=28), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file -CHARACTER (LEN=28), INTENT(OUT) :: HDADINIFILE ! name of the initial dad file - ! of the model 1 only for - ! spawning 1 with GBAL_ONLY -CHARACTER (LEN=28), INTENT(OUT) :: HDADSPAFILE ! name of the dad file of the - ! model 2 only for spawning 1 - ! with GBAL_ONLY -LOGICAL, INTENT(OUT) :: OBAL_ONLY ! compute anelastique balance - ! without change in the file - ! definition +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDOMAIN ! input fm-file for grid definition +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file +CHARACTER (LEN= 2), INTENT(OUT) :: HSPANBR ! NumBeR associated to the SPAwned file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADINIFILE ! name of the initial dad file of the model 1 only for + ! spawning 1 with GBAL_ONLY +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADSPAFILE ! name of the dad file of the model 2 only for spawning 1 + ! with GBAL_ONLY +LOGICAL, INTENT(OUT) :: OBAL_ONLY ! compute anelastic balance without change in the file definition ! END SUBROUTINE READ_EXSPA ! @@ -118,8 +116,8 @@ IMPLICIT NONE ! !* 0.1 Dummy arguments ! -CHARACTER (LEN=28), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file -CHARACTER (LEN=28), INTENT(OUT) :: HINIFILEPGD +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILEPGD INTEGER, INTENT(OUT) :: KXOR ! horizontal position (i,j) of the ORigin INTEGER, INTENT(OUT) :: KYOR ! of the model 2 domain, relative to model 1 INTEGER, INTENT(OUT) :: KDXRATIO ! x and y-direction resolution RATIO @@ -127,19 +125,15 @@ INTEGER, INTENT(OUT) :: KDYRATIO ! between model 2 and model 1 INTEGER, INTENT(OUT) :: KXSIZE ! number of model 1 grid points in x and y-directions INTEGER, INTENT(OUT) :: KYSIZE ! in the model 2 physical domain ! -CHARACTER (LEN=28), INTENT(OUT) :: HDOMAIN ! input fm-file for grid definition -CHARACTER (LEN=28), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file -CHARACTER (LEN= 2), INTENT(OUT) :: HSPANBR ! NumBeR associated to the SPAwned file -CHARACTER (LEN=28), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file -CHARACTER (LEN=28), INTENT(OUT) :: HDADINIFILE ! name of the initial dad file - ! of the model 1 only for - ! spawning 1 with GBAL_ONLY -CHARACTER (LEN=28), INTENT(OUT) :: HDADSPAFILE ! name of the dad file of the - ! model 2 only for spawning 1 - ! with GBAL_ONLY -LOGICAL, INTENT(OUT) :: OBAL_ONLY ! compute anelastique balance - ! without change in the file - ! definition +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDOMAIN ! input fm-file for grid definition +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file +CHARACTER (LEN= 2), INTENT(OUT) :: HSPANBR ! NumBeR associated to the SPAwned file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADINIFILE ! name of the initial dad file of the model 1 only for + ! spawning 1 with GBAL_ONLY +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADSPAFILE ! name of the dad file of the model 2 only for spawning 1 + ! with GBAL_ONLY +LOGICAL, INTENT(OUT) :: OBAL_ONLY ! compute anelastic balance without change in the file definition ! ! !* 0.2 Local variables @@ -158,15 +152,15 @@ INTEGER :: IDYRATIO ! between model 2 and model 1 INTEGER :: IXSIZE,IYSIZE ! number of model 1 grid points in x and y-directions ! in the model 2 physical domain LOGICAL :: GBAL_ONLY ! compute only anelastique balance -CHARACTER(LEN=28) :: YDOMAIN ! input fm-file for grid definition -CHARACTER(LEN=28) :: YSPAFILE ! possible name of the output FM-file -CHARACTER(LEN= 2) :: YSPANBR ! NumBeR associated to the SPAwned file -CHARACTER(LEN=28) :: YDADINIFILE ! Name of dad model for model 1 -CHARACTER(LEN=28) :: YDADSPAFILE ! Name of dad model for model 2 -CHARACTER(LEN=28) :: CINIFILE ! re-declaration because of namelist -CHARACTER(LEN=28) :: CINIFILEPGD ! re-declaration because of namelist +CHARACTER(LEN=NFILENAMELGTMAX) :: YDOMAIN ! input fm-file for grid definition +CHARACTER(LEN=NFILENAMELGTMAX) :: YSPAFILE ! possible name of the output FM-file +CHARACTER(LEN= 2) :: YSPANBR ! NumBeR associated to the SPAwned file +CHARACTER(LEN=NFILENAMELGTMAX) :: YDADINIFILE ! Name of dad model for model 1 +CHARACTER(LEN=NFILENAMELGTMAX) :: YDADSPAFILE ! Name of dad model for model 2 +CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE ! re-declaration because of namelist +CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILEPGD ! re-declaration because of namelist -CHARACTER (LEN=28) :: YSONFILE = ' ' ! Name of SON input file +CHARACTER (LEN=NFILENAMELGTMAX) :: YSONFILE = '' ! Name of SON input file TYPE(TFILEDATA),POINTER :: TZNMLFILE ! Namelist file ! !* 0.3 Namelist declarations diff --git a/src/MNH/read_grid_time_mesonh_case.f90 b/src/MNH/read_grid_time_mesonh_case.f90 index c6446d4ee..51b1d1c98 100644 --- a/src/MNH/read_grid_time_mesonh_case.f90 +++ b/src/MNH/read_grid_time_mesonh_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-2023 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. @@ -9,10 +9,12 @@ MODULE MODI_READ_GRID_TIME_MESONH_CASE INTERFACE SUBROUTINE READ_GRID_TIME_MESONH_CASE(HFMFILE,KXOR_LS,KYOR_LS,HDAD_NAME) ! -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! name of the input Mesonh file -INTEGER , INTENT(OUT):: KXOR_LS ! I and J shifts between PGD file -INTEGER , INTENT(OUT):: KYOR_LS ! and LS atmospheric file -CHARACTER(LEN=*), INTENT(OUT):: HDAD_NAME! dad name of the FM file +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFMFILE ! name of the input Mesonh file +INTEGER, INTENT(OUT) :: KXOR_LS ! I and J shifts between PGD file +INTEGER, INTENT(OUT) :: KYOR_LS ! and LS atmospheric file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! dad name of the FM file !! END SUBROUTINE READ_GRID_TIME_MESONH_CASE END INTERFACE @@ -108,10 +110,10 @@ IMPLICIT NONE ! !* 0.1 Declaration of arguments ! ------------------------ -CHARACTER(LEN=*), INTENT(IN) :: HFMFILE ! name of the input Mesonh file -INTEGER , INTENT(OUT):: KXOR_LS ! I and J shifts between PGD file -INTEGER , INTENT(OUT):: KYOR_LS ! and LS atmospheric file -CHARACTER(LEN=*), INTENT(OUT):: HDAD_NAME! dad name of the FM file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFMFILE ! name of the input Mesonh file +INTEGER, INTENT(OUT) :: KXOR_LS ! I and J shifts between PGD file +INTEGER, INTENT(OUT) :: KYOR_LS ! and LS atmospheric file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! dad name of the FM file ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -129,7 +131,7 @@ REAL :: ZLON0_LS ! reference longitude REAL :: ZRPK_LS ! parameter for projection REAL :: ZBETA_LS ! angle of rotation of the domain ! -CHARACTER(LEN=28) :: YMY_NAME, YDAD_NAME +CHARACTER(LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME CHARACTER(LEN=2) :: YTYPE ! ! 0.2.2 local variables linking PGD and atm.MESONH files diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90 index 30a92650b..00e0d4635 100644 --- a/src/MNH/read_hgrid.f90 +++ b/src/MNH/read_hgrid.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-2023 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. @@ -9,13 +9,14 @@ INTERFACE SUBROUTINE READ_HGRID(KMI,TPFMFILE,HMY_NAME,HDAD_NAME,HSTORAGE_TYPE) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -INTEGER, INTENT(IN) :: KMI ! model index -TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n -CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME ! True Name of FM-file -CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME ! Name of father -CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE +INTEGER, INTENT(IN) :: KMI ! model index +TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME ! True Name of FM-file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! Name of father +CHARACTER(LEN=2), INTENT(OUT) :: HSTORAGE_TYPE ! END SUBROUTINE READ_HGRID END INTERFACE @@ -103,11 +104,11 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -INTEGER, INTENT(IN) :: KMI ! model index -TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n -CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME ! True Name of FM-file -CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME ! Name of father -CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE +INTEGER, INTENT(IN) :: KMI ! model index +TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME ! True Name of FM-file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! Name of father +CHARACTER(LEN=2), INTENT(OUT) :: HSTORAGE_TYPE ! ! !* 0.2 declarations of local variables diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90 index 1ac466b48..10253dccb 100644 --- a/src/MNH/read_hgridn.f90 +++ b/src/MNH/read_hgridn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1996-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-2023 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. @@ -10,12 +10,13 @@ INTERFACE SUBROUTINE READ_HGRID_n(TPFMFILE,HMY_NAME,HDAD_NAME,HSTORAGE_TYPE) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n -CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME ! True Name of FM-file -CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME ! Name of father -CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE +TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME ! True Name of FM-file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! Name of father +CHARACTER(LEN=2), INTENT(OUT) :: HSTORAGE_TYPE ! END SUBROUTINE READ_HGRID_n ! @@ -85,7 +86,7 @@ USE MODD_GRID USE MODD_GRID_n USE MODD_IO, ONLY: TFILEDATA USE MODD_LUNIT_n -USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, JPMODELMAX +USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, JPMODELMAX, NFILENAMELGTMAX ! use mode_field, only: Find_field_id_from_mnhname USE MODE_GRIDPROJ @@ -100,10 +101,10 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n -CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME ! True Name of FM-file -CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME ! Name of father -CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE +TYPE(TFILEDATA), INTENT(IN) :: TPFMFILE ! file n +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME ! True Name of FM-file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! Name of father +CHARACTER(LEN=2), INTENT(OUT) :: HSTORAGE_TYPE ! !* 0.2 declarations of local variables ! diff --git a/src/MNH/read_lima_data_netcdf_case.f90 b/src/MNH/read_lima_data_netcdf_case.f90 index 35fd628b8..b5c5e0da8 100644 --- a/src/MNH/read_lima_data_netcdf_case.f90 +++ b/src/MNH/read_lima_data_netcdf_case.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2012-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2012-2023 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. @@ -10,14 +10,15 @@ INTERFACE SUBROUTINE READ_LIMA_DATA_NETCDF_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, & PTIME_HORI,KVERB,ODUMMY_REAL ) ! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields END SUBROUTINE READ_LIMA_DATA_NETCDF_CASE ! END INTERFACE @@ -137,12 +138,12 @@ IMPLICIT NONE !* 0.1. Declaration of arguments ! ------------------------ ! -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file -CHARACTER(LEN=28), INTENT(IN) :: HFILE ! name of the NETCDF file -TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file -REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations -INTEGER, INTENT(IN) :: KVERB ! verbosity level -LOGICAL, INTENT(IN) :: ODUMMY_REAL! flag to interpolate dummy fields +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE ! name of the NETCDF file +TYPE(TFILEDATA), INTENT(IN) :: TPPGDFILE ! physiographic data file +REAL, INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations +INTEGER, INTENT(IN) :: KVERB ! verbosity level +LOGICAL, INTENT(IN) :: ODUMMY_REAL ! flag to interpolate dummy fields ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -151,8 +152,8 @@ INTEGER :: ILUOUT0 ! Unit used for output msg. INTEGER :: JJ ! Dummy counters INTEGER :: JLOOP1 ! Variables used by the PGD reader -CHARACTER(LEN=28) :: YPGD_NAME ! not used - dummy argument -CHARACTER(LEN=28) :: YPGD_DAD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME ! not used - dummy argument +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_DAD_NAME ! not used - dummy argument CHARACTER(LEN=2) :: YPGD_TYPE ! not used - dummy argument ! PGD Grib definition variables INTEGER :: INO ! Number of points of the grid @@ -563,7 +564,7 @@ DEALLOCATE (zmmr_sulfaer) ! DEALLOCATE (ZWORK) ! -WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully' +WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully' WRITE (ILUOUT0,'(A,A4,A)') 'CAMS mixing ratios are interpolated horizontally' ! ! diff --git a/src/MNH/read_pre_idea_namn.f90 b/src/MNH/read_pre_idea_namn.f90 index 3a63a6b67..b80718cde 100644 --- a/src/MNH/read_pre_idea_namn.f90 +++ b/src/MNH/read_pre_idea_namn.f90 @@ -30,6 +30,7 @@ USE MODD_DYN_n, ONLY: CPRESOPT_n=>CPRESOPT,NITR_n=>NITR,XRELAX_n=>XRELAX, & USE MODD_IO, ONLY: TFILEDATA USE MODD_LBC_n, ONLY: CLBCX_n=>CLBCX,CLBCY_n=>CLBCY USE MODD_PARAM_n, ONLY: CSURF_n=>CSURF +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX USE MODE_POS @@ -51,7 +52,7 @@ REAL :: XRELAX CHARACTER(LEN=4), DIMENSION(2) :: CLBCX,CLBCY CHARACTER(LEN=5) :: CSURF LOGICAL :: LCH_INIT_FIELD -CHARACTER(LEN=80) :: CCHEM_INPUT_FILE +CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE INTEGER :: ILUPRE ! diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90 index 1874d5e7e..5855cd906 100644 --- a/src/MNH/resolved_elecn.f90 +++ b/src/MNH/resolved_elecn.f90 @@ -151,7 +151,7 @@ USE MODE_ll USE MODD_CONF, ONLY : CEXP, CSEG USE MODD_CST USE MODD_IO, ONLY : TFILEDATA, TFILE_DUMMY -USE MODD_PARAMETERS, ONLY : JPVEXT +USE MODD_PARAMETERS, ONLY : JPVEXT, NFILENAMELGTMAX USE MODD_PARAM_LIMA, ONLY : NMOM_C, NMOM_R, NMOM_I, NMOM_S, NMOM_G, NMOM_H USE MODD_ELEC_DESCR USE MODD_ELEC_n @@ -232,7 +232,7 @@ LOGICAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: GATTACH ! mask for ! TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange -CHARACTER (LEN=32) :: YASCFILE +CHARACTER (LEN=NFILENAMELGTMAX) :: YASCFILE ! CHARACTER (LEN=18) :: YNAME LOGICAL :: GLMA_FILE @@ -324,7 +324,7 @@ END IF ! IF (KTCOUNT == 1 .AND. IPROC == 0) THEN IF (LFLASH_GEOM) THEN - YASCFILE = CEXP//"_"//CSEG//"_fgeom_diag.asc" + YASCFILE = TRIM(CEXP) // "_" // TRIM(CSEG) // "_fgeom_diag.asc" TZFILE_FGEOM_DIAG => NULL() CALL IO_File_add2list(TZFILE_FGEOM_DIAG,YASCFILE,'TXT','WRITE') CALL IO_File_open(TZFILE_FGEOM_DIAG,HPOSITION='APPEND',HSTATUS='UNKNOWN') @@ -349,7 +349,7 @@ IF (KTCOUNT == 1 .AND. IPROC == 0) THEN FLUSH(UNIT=ILU) ! IF (LSAVE_COORD) THEN - YASCFILE = CEXP//"_fgeom_coord.asc" + YASCFILE = TRIM(CEXP) // "_fgeom_coord.asc" TZFILE_FGEOM_COORD => NULL() CALL IO_File_add2list(TZFILE_FGEOM_COORD,YASCFILE,'TXT','WRITE') CALL IO_File_open(TZFILE_FGEOM_COORD,HPOSITION='APPEND',HSTATUS='UNKNOWN') @@ -368,7 +368,7 @@ IF (KTCOUNT == 1 .AND. IPROC == 0) THEN END IF ! IF (LSERIES_ELEC) THEN - YASCFILE = CEXP//"_series_cloud_elec.asc" + YASCFILE = TRIM(CEXP) // "_series_cloud_elec.asc" TZFILE_SERIES_CLOUD_ELEC => NULL() CALL IO_File_add2list(TZFILE_SERIES_CLOUD_ELEC,YASCFILE,'TXT','WRITE') CALL IO_File_open(TZFILE_SERIES_CLOUD_ELEC,HPOSITION='APPEND',HSTATUS='UNKNOWN') @@ -428,7 +428,7 @@ IF (LFLASH_GEOM .AND. LLMA) THEN INT(TDTLMA%xtime/3600.),INT(REAL(MOD(INT(TDTLMA%xtime),3600))/60.), & MOD(INT(TDTLMA%xtime),60), '_', INT(XDTLMA) TDTLMA%xtime = MOD(TDTLMA%xtime + XDTLMA,86400.) - CLMA_FILE = CEXP//"_SIMLMA_"//YNAME//".dat" + CLMA_FILE = TRIM(CEXP) // "_SIMLMA_" // YNAME // ".dat" ! IF ( IPROC .EQ. 0 ) THEN TZFILE_LMA => NULL() diff --git a/src/MNH/series_cloud_elec.f90 b/src/MNH/series_cloud_elec.f90 index 1eb1e4e48..e92875be3 100644 --- a/src/MNH/series_cloud_elec.f90 +++ b/src/MNH/series_cloud_elec.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2010-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2023 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. @@ -90,7 +90,6 @@ END MODULE MODI_SERIES_CLOUD_ELEC ! 0. DECLARATIONS ! ------------ ! -USE MODD_CONF, ONLY: CEXP USE MODD_CST USE MODD_DYN_n, ONLY: XDXHATM, XDYHATM USE MODD_ELEC_DESCR diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90 index eac8ea7b8..b2d3a3891 100644 --- a/src/MNH/set_advfrc.f90 +++ b/src/MNH/set_advfrc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2023 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. @@ -87,7 +87,7 @@ USE MODD_GRID USE MODD_GRID_n USE MODD_IO, ONLY: TFILEDATA USE MODD_LUNIT_n, ONLY: TLUOUT -USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT +USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, NFILENAMELGTMAX USE MODD_REF ! USE MODE_DATETIME @@ -122,8 +122,8 @@ REAL :: ZDZ1SDH, ZDZ2SDH, ZDZSDH INTEGER :: JKLEV ! REAL :: ZZGROUNDF ! height and Pressure at ground -CHARACTER(LEN=48) :: CFNAM_MEANVAR_ADV -CHARACTER(LEN=48) :: CFNAM_ADV +CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_MEANVAR_ADV +CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_ADV ! REAL, DIMENSION(:), ALLOCATABLE:: ZHEIGHTMF,ZHEIGHTF,ZTHVUF REAL, DIMENSION(:), ALLOCATABLE:: ZTHDF,ZRVF,ZPRESS_ADV,ZTHVF @@ -211,8 +211,8 @@ DO JKT = 1,NADVFRC TDTADVFRC(JKT)%nday, & TDTADVFRC(JKT)%xtime ! ; Read filenames - READ(ILUPRE,*) CFNAM_MEANVAR_ADV - READ(ILUPRE,*) CFNAM_ADV + READ(ILUPRE,*) YFNAM_MEANVAR_ADV + READ(ILUPRE,*) YFNAM_ADV ! ! print*," ! 3.2 READ AND INTERPOLATE FORCING" @@ -222,13 +222,13 @@ print*," ! 3.2 READ AND INTERPOLATE FORCING" print*,"YADV=",YADV IF (YADV=='ZADV2D') THEN print*,"call READ_ASC_LATPRESS" - CALL READ_ASC_LATPRESS(CFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZHEIGHTF(:),ZTHFRC(:,:,JKT), & + CALL READ_ASC_LATPRESS(YFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZHEIGHTF(:),ZTHFRC(:,:,JKT), & ZRVFRC(:,:,JKT)) print*,"apres READ_ASC_LATPRESS" ELSE IF (YADV=='PADV2D') THEN - CALL READ_ASCP(CFNAM_MEANVAR_ADV,NPRESSLEV_ADV,ZTHDF,ZRVF) + CALL READ_ASCP(YFNAM_MEANVAR_ADV,NPRESSLEV_ADV,ZTHDF,ZRVF) !! 3.2.1 Case ADV forcing on pressure levels - CALL READ_ASC_LATPRESS(CFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZPRESS_ADV,ZTHFRC(:,:,JKT), & + CALL READ_ASC_LATPRESS(YFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZPRESS_ADV,ZTHFRC(:,:,JKT), & ZRVFRC(:,:,JKT)) ! ZTHVF(:) = ZTHDF(:) * (1.+ZRVSRD*ZRVF(:))/(1.+ZRVF(:)) diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90 index 857e92ede..8c25690dd 100644 --- a/src/MNH/set_relfrc.f90 +++ b/src/MNH/set_relfrc.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2023 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. @@ -86,7 +86,7 @@ USE MODD_GRID USE MODD_GRID_n USE MODD_IO, ONLY: TFILEDATA USE MODD_LUNIT_n -USE MODD_PARAMETERS, ONLY: JPHEXT +USE MODD_PARAMETERS, ONLY: JPHEXT, NFILENAMELGTMAX USE MODD_REF USE MODD_RELFRC_n ! @@ -122,8 +122,8 @@ REAL :: ZDZ1SDH, ZDZ2SDH, ZDZSDH INTEGER :: JKLEV ! REAL :: ZZGROUNDF ! height and Pressure at ground -CHARACTER(LEN=48) :: CFNAM_MEANVAR_REL -CHARACTER(LEN=28) :: CFNAM_REL +CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_MEANVAR_REL +CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_REL ! REAL, DIMENSION(:), ALLOCATABLE:: ZHEIGHTMFR,ZHEIGHTFR,ZTHVUFR,ZTHVUF REAL, DIMENSION(:), ALLOCATABLE:: ZPRESS_REL @@ -218,8 +218,8 @@ DO JKT = 1,NRELFRC TDTRELFRC(JKT)%nday, & TDTRELFRC(JKT)%xtime ! ; Read filenames - READ(ILUPRE,*) CFNAM_MEANVAR_REL - READ(ILUPRE,*) CFNAM_REL + READ(ILUPRE,*) YFNAM_MEANVAR_REL + READ(ILUPRE,*) YFNAM_REL ! ! @@ -232,8 +232,8 @@ DO JKT = 1,NRELFRC IF (YREL=='PREL2D') THEN - CALL READ_ASCP(CFNAM_MEANVAR_REL,NPRESSLEV_REL,ZTHDFR,ZRVFR) - CALL READ_ASC_LATPRESS(CFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZPRESS_REL,ZTHREL(:,:,JKT), & + CALL READ_ASCP(YFNAM_MEANVAR_REL,NPRESSLEV_REL,ZTHDFR,ZRVFR) + CALL READ_ASC_LATPRESS(YFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZPRESS_REL,ZTHREL(:,:,JKT), & ZRVREL(:,:,JKT)) ! ZTHVFR(:) = ZTHDFR(:) * (1.+ZRVSRD*ZRVFR(:))/(1.+ZRVFR(:)) @@ -250,7 +250,7 @@ DO JKT = 1,NRELFRC ! ! ELSE IF (YREL=='ZREL2D') THEN - CALL READ_ASC_LATPRESS(CFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZHEIGHTFR(:),ZTHREL(:,:,JKT), & + CALL READ_ASC_LATPRESS(YFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZHEIGHTFR(:),ZTHREL(:,:,JKT), & ZRVREL(:,:,JKT)) END IF diff --git a/src/MNH/set_subdomain.f90 b/src/MNH/set_subdomain.f90 index 60105c54d..6eb29a07a 100644 --- a/src/MNH/set_subdomain.f90 +++ b/src/MNH/set_subdomain.f90 @@ -117,7 +117,7 @@ INTEGER, INTENT(OUT):: KDYRATIO ! DYRATIO compared to Dad file, if an !* 0.2 Declaration of local variables ! ------------------------------ ! -CHARACTER(LEN=28) :: YDADFILE ! name of atmospheric file father (if any) +CHARACTER(LEN=NFILENAMELGTMAX) :: YDADFILE ! name of atmospheric file father (if any) INTEGER :: ILUNAM ! logical unit for namelist file HNAMELIST INTEGER :: ILUOUT0 ! logical unit for listing file INTEGER :: IRESP ! return-code if problems araised @@ -220,7 +220,7 @@ WRITE(ILUOUT0,*) 'given or computed NYOR = ',NYOR ! --------------------------------------------- ! CALL IO_Field_read(TPATMFILE,'DAD_NAME',YDADFILE,IRESP) -IF ( IRESP /= 0 ) YDADFILE=' ' +IF ( IRESP /= 0 ) YDADFILE='' ! IF (LEN_TRIM(YDADFILE)/=0) THEN CALL IO_Field_read(TPATMFILE,'DXRATIO',KDXRATIO,IRESP) diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90 index c9c9c5774..39c8b4b70 100644 --- a/src/MNH/spawn_model2.f90 +++ b/src/MNH/spawn_model2.f90 @@ -13,19 +13,21 @@ INTERFACE HCHEM_INPUT_FILE,HSPAFILE,HSPANBR, & HSONFILE,HINIFILE,HINIFILEPGD,OSPAWN_SURF ) ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KSV_USER ! Number of Users Scalar Variables CHARACTER (LEN=4), INTENT(IN) :: HTURB ! Kind of turbulence parameterization CHARACTER (LEN=4), INTENT(IN) :: HSURF ! Kind of surface parameterization CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of cloud parameterization ! model 2 physical domain -CHARACTER (LEN=*), INTENT(IN) :: HSPAFILE ! possible name of the output FM-file -CHARACTER (LEN=*), INTENT(IN) :: HSPANBR ! NumBeR associated to the SPAwned file -CHARACTER (LEN=*), INTENT(IN) :: HSONFILE ! name of the input FM-file SON -CHARACTER (LEN=80), INTENT(IN) :: HCHEM_INPUT_FILE -CHARACTER (LEN=*), INTENT(IN) :: HINIFILE ! Input file -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD ! Input pgd file -LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSPAFILE ! possible name of the output FM-file +CHARACTER (LEN=*), INTENT(IN) :: HSPANBR ! NumBeR associated to the SPAwned file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSONFILE ! name of the input FM-file SON +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HCHEM_INPUT_FILE +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE ! Input file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! Input pgd file +LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields ! END SUBROUTINE SPAWN_MODEL2 ! @@ -313,13 +315,13 @@ INTEGER, INTENT(IN) :: KSV_USER ! Number of Users Scalar Varia CHARACTER (LEN=4), INTENT(IN) :: HTURB ! Kind of turbulence parameterization CHARACTER (LEN=4), INTENT(IN) :: HSURF ! Kind of surface parameterization CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of cloud parameterization -CHARACTER (LEN=*), INTENT(IN) :: HSPAFILE ! possible name of the output FM-file -CHARACTER (LEN=*), INTENT(IN) :: HSPANBR ! NumBeR associated to the SPAwned file -CHARACTER (LEN=*), INTENT(IN) :: HSONFILE ! name of the input FM-file SON -CHARACTER (LEN=80), INTENT(IN) :: HCHEM_INPUT_FILE -CHARACTER (LEN=*), INTENT(IN) :: HINIFILE ! Input file -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD ! Input pgd file -LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSPAFILE ! possible name of the output FM-file +CHARACTER (LEN=*), INTENT(IN) :: HSPANBR ! NumBeR associated to the SPAwned file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSONFILE ! name of the input FM-file SON +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HCHEM_INPUT_FILE +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE ! Input file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! Input pgd file +LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields ! !* 0.1.3 Declarations of local variables : ! @@ -380,7 +382,7 @@ INTEGER :: IJE1 ! indice J End in y direction ! Logical for no common domain between the 2 sons or no input son LOGICAL :: GNOSON = .TRUE. REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK3D ! working array -CHARACTER(LEN=28) :: YDAD_SON +CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD_SON !$ INTEGER :: IINFO_ll TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL() ! list of fields to exchange @@ -640,7 +642,7 @@ END IF !* 3.5 model 2 configuration in MODD_NESTING to be written !* on the FM-file to allow nesting or coupling ! -CCPLFILE(:) = ' ' +CCPLFILE(:) = '' LSTEADYLS=.TRUE. ! NDXRATIO_ALL(:) = 0 diff --git a/src/MNH/spawn_surf.f90 b/src/MNH/spawn_surf.f90 index c0d05321c..96db05fed 100644 --- a/src/MNH/spawn_surf.f90 +++ b/src/MNH/spawn_surf.f90 @@ -11,13 +11,13 @@ INTERFACE ! SUBROUTINE SPAWN_SURF (HINIFILE, HINIFILEPGD, TPOUTDATAFILE, OSPAWN_SURF) ! -USE MODD_IO, ONLY: TFILEDATA - +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -CHARACTER (LEN=*), INTENT(IN) :: HINIFILE ! Input file -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPOUTDATAFILE -LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE ! Input file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPOUTDATAFILE +LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields ! END SUBROUTINE SPAWN_SURF ! @@ -79,7 +79,8 @@ USE MODD_IO, ONLY : TFILEDATA USE MODD_IO_SURF_MNH, ONLY : COUTFILE USE MODD_LUNIT, ONLY : TPGDFILE, TOUTDATAFILE USE MODD_MNH_SURFEX_n -USE MODD_NESTING, ONLY : CMY_NAME, CDAD_NAME +USE MODD_NESTING, ONLY : CMY_NAME +USE MODD_PARAMETERS, ONLY : NFILENAMELGTMAX USE MODD_PARAM_n, ONLY : CSURF USE MODD_TIME_n, ONLY : TDTCUR ! @@ -102,10 +103,10 @@ IMPLICIT NONE ! !* 0.1.2 Declarations of dummy arguments : ! -CHARACTER (LEN=*), INTENT(IN) :: HINIFILE ! Input file -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD -TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPOUTDATAFILE -LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE ! Input file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD +TYPE(TFILEDATA), POINTER, INTENT(IN) :: TPOUTDATAFILE +LOGICAL, INTENT(IN) :: OSPAWN_SURF ! flag to spawn surface fields ! !* 0.1.3 Declarations of local variables : ! diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90 index d073818d1..cb65a0c98 100644 --- a/src/MNH/spawning.f90 +++ b/src/MNH/spawning.f90 @@ -142,8 +142,8 @@ IMPLICIT NONE !* 0.3 Local variables ! ! -CHARACTER (LEN=28) :: YSONFILE = ' ' ! possible name of SON input FM-file -CHARACTER (LEN=28) :: YSPAFILE = ' ' ! possible name of the output FM-file +CHARACTER (LEN=NFILENAMELGTMAX) :: YSONFILE = '' ! possible name of SON input FM-file +CHARACTER (LEN=NFILENAMELGTMAX) :: YSPAFILE = '' ! possible name of the output FM-file CHARACTER (LEN= 2) :: YSPANBR = '00' ! NumBeR associated to the SPAwned file INTEGER :: IINFO_ll ! return code of // routines INTEGER :: IRESP ! Return codes in FM routines diff --git a/src/MNH/spectre.f90 b/src/MNH/spectre.f90 index a6801f1de..9b21c596d 100644 --- a/src/MNH/spectre.f90 +++ b/src/MNH/spectre.f90 @@ -30,6 +30,7 @@ USE MODD_IO, only: TFILEDATA USE MODD_LUNIT_n USE MODD_TIME_n USE MODD_DIM_ll +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX USE MODD_SPECTRE ! USE MODI_SPECTRE_MESONH @@ -52,8 +53,8 @@ IMPLICIT NONE ! !* 0.1 declarations of local variables ! -CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file -CHARACTER (LEN=50) :: YOUTFILE ! names of the OUTPUT FM-file +CHARACTER (LEN=NFILENAMELGTMAX), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file +CHARACTER (LEN=NFILENAMELGTMAX) :: YOUTFILE ! names of the OUTPUT FM-file INTEGER :: IRESP ! return code in FM routines INTEGER :: ILUOUT0 ! Logical unit number for the output listing INTEGER :: ILUNAM ! Logical unit numbers for the namelist file @@ -87,7 +88,7 @@ CPROGRAM='SPEC ' CALL IO_Init() ! ! initialization -YINIFILE(:) = ' ' +YINIFILE(:) = '' CTYPEFILE = 'MESONH' LSPECTRE_U = .FALSE. LSPECTRE_V = .FALSE. @@ -101,7 +102,7 @@ LSPECTRE_LSTH = .FALSE. LSPECTRE_LSRV = .FALSE. LSMOOTH = .FALSE. LZOOM = .FALSE. -YOUTFILE = ' ' +YOUTFILE = '' LSTAT = .FALSE. NI=750 NJ=720 diff --git a/src/MNH/spectre_arome.f90 b/src/MNH/spectre_arome.f90 index c51947280..39928aaaa 100644 --- a/src/MNH/spectre_arome.f90 +++ b/src/MNH/spectre_arome.f90 @@ -46,7 +46,7 @@ REAL,INTENT(IN) :: PDELTAX,PDELTAY CHARACTER(LEN=5) :: YFIELDSP REAL,DIMENSION(:,:,:),ALLOCATABLE:: ZWORK ! work array REAL,DIMENSION(:,:,:),ALLOCATABLE:: ZWORK1 ! work array -CHARACTER (LEN=32) :: YFILE ! file to open +CHARACTER (LEN=NFILENAMELGTMAX) :: YFILE ! file to open REAL :: ZLATB, ZLONB INTEGER :: ILU INTEGER :: JJJ,III,JERR diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 96a3954b2..abea790b2 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -9,11 +9,11 @@ MODULE MODI_WRITE_LFIFM1_FOR_DIAG INTERFACE SUBROUTINE WRITE_LFIFM1_FOR_DIAG(TPFILE,HDADFILE) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! -TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! outpput data file -CHARACTER(LEN=28), INTENT(IN) :: HDADFILE ! corresponding FM-file name of - ! its DAD model +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! outpput data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADFILE ! corresponding FM-file name of its DAD model ! END SUBROUTINE WRITE_LFIFM1_FOR_DIAG END INTERFACE @@ -187,7 +187,7 @@ USE MODD_METRICS_n, ONLY: XDXX, XDYY, XDZX, XDZY, XDZZ USE MODD_MPIF USE MODD_NESTING, ONLY: NDXRATIO_ALL, NDYRATIO_ALL, NXOR_ALL, NYOR_ALL USE MODD_NSV -USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, XUNDEF +USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, NFILENAMELGTMAX, XUNDEF USE MODD_PARAM_LIMA_COLD, ONLY: CLIMA_COLD_CONC USE MODD_PARAM_LIMA, ONLY: NMOD_CCN, NMOD_IFN, NMOD_IMM, NINDICE_CCN_IMM, & LSCAV, LLIMA_DIAG, NMOM_S, NMOM_G, NMOM_H @@ -243,16 +243,15 @@ IMPLICIT NONE ! !* 0.1 Declarations of arguments ! -TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! outpput data file -CHARACTER(LEN=28), INTENT(IN) :: HDADFILE ! corresponding FM-file name of - ! its DAD model +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! outpput data file +CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADFILE ! corresponding FM-file name of its DAD model ! !* 0.2 Declarations of local variables ! INTEGER :: IRESP ! return-code for the file routines ! -CHARACTER(LEN=3) :: YFRC ! to mark the time of the forcing -CHARACTER(LEN=31) :: YFGRI ! file name for GPS stations +CHARACTER(LEN=3) :: YFRC ! to mark the time of the forcing +CHARACTER(LEN=NFILENAMELGTMAX) :: YFGRI ! file name for GPS stations ! INTEGER :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds ! diff --git a/src/MNH/write_ts1d.f90 b/src/MNH/write_ts1d.f90 index 4ffad8b5f..f077da063 100644 --- a/src/MNH/write_ts1d.f90 +++ b/src/MNH/write_ts1d.f90 @@ -117,7 +117,7 @@ USE MODD_PARAM_n, ONLY: CRAD ! Kind of radiation parameterizatio USE MODD_RADIATIONS_n, ONLY: XDTHRAD ! radiative heating/cooling rate USE MODD_CH_JVALUES_n, ONLY: XJVALUES ! Jvalues and USE MODD_CH_INIT_JVALUES, ONLY:JPJVMAX ! their number -USE MODD_PARAMETERS, ONLY: XUNDEF +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX, XUNDEF USE MODD_DIAG_FLAG, ONLY: LCHEMDIAG, XCHEMLAT, XCHEMLON IMPLICIT NONE @@ -130,8 +130,8 @@ IMPLICIT NONE REAL :: ZTIME LOGICAL, SAVE :: GSFIRSTCALL = .TRUE. INTEGER, SAVE :: ISIO1D ! IO-channel -CHARACTER(LEN=80), SAVE :: YSIO1DDEF ! name of def-file -CHARACTER(LEN=80), SAVE :: YSIO1DDAT ! name of dat-file +CHARACTER(LEN=NFILENAMELGTMAX), SAVE :: YSIO1DDEF ! name of def-file +CHARACTER(LEN=NFILENAMELGTMAX), SAVE :: YSIO1DDAT ! name of dat-file CHARACTER(LEN=40) :: YFORM = "(E15.8)" ! data output format INTEGER, SAVE :: ISCOUNT = 0 ! timestep counter INTEGER :: JK, JL, JN ! loop counter @@ -212,7 +212,7 @@ DO JN=1,NBPROF END IF CCH_TS1D_FILENAME = ADJUSTR(YCLATLON) // ":" // YCYEAR // YCMONTH // YCDAY // "-" // YCTIME - CCH_TS1D_COMMENT = "Fichier issu de " // CINIFILE + CCH_TS1D_COMMENT = "Fichier issu de " // TRIM(CINIFILE) YSIO1DDEF = "def." // ADJUSTL(CCH_TS1D_FILENAME) YSIO1DDAT = "dat." // ADJUSTL(CCH_TS1D_FILENAME) diff --git a/src/MNH/xy_to_latlon.f90 b/src/MNH/xy_to_latlon.f90 index d544a9607..82a431d88 100644 --- a/src/MNH/xy_to_latlon.f90 +++ b/src/MNH/xy_to_latlon.f90 @@ -91,9 +91,9 @@ IMPLICIT NONE !* 0.2 Declaration of variables ! ------------------------ ! -CHARACTER(LEN=28) :: YINIFILE ! name of input FM file -CHARACTER(LEN=28) :: YNAME ! true name of input FM file -CHARACTER(LEN=28) :: YDAD ! name of dad of input FM file +CHARACTER(LEN=NFILENAMELGTMAX) :: YINIFILE ! name of input FM file +CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME ! true name of input FM file +CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD ! name of dad of input FM file CHARACTER(LEN=2) :: YSTORAGE_TYPE INTEGER :: INAM ! Logical unit for namelist file INTEGER :: ILUOUT0 ! Logical unit for output file. diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90 index efd60bdd8..bc1dca1d2 100644 --- a/src/MNH/zoom_pgd.f90 +++ b/src/MNH/zoom_pgd.f90 @@ -51,7 +51,7 @@ USE MODD_CONF, ONLY : CPROGRAM, L1D, L2D, LPACK USE MODD_IO, only: TFILE_OUTPUTLISTING, TFILEDATA USE MODD_LUNIT, ONLY : TLUOUT0, TOUTDATAFILE -USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX +USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX, NFILENAMELGTMAX USE MODD_PARAM_n, ONLY : CSURF USE MODD_DIM_n, ONLY : NIMAX, NJMAX USE MODD_CONF_n, ONLY : CSTORAGE_TYPE @@ -94,12 +94,12 @@ INTEGER :: IRESP ! return code for I/O INTEGER :: ILUOUT0 INTEGER :: ILUNAM INTEGER :: IINFO_ll -CHARACTER(LEN=28) :: CPGDFILE ! name of the PGD file -CHARACTER(LEN=28) :: YZOOMFILE ! name of the output file -CHARACTER(LEN=2) :: YZOOMNBR -CHARACTER(LEN=28) :: YMY_NAME,YDAD_NAME -CHARACTER(LEN=28) :: YPGDFILE -CHARACTER(LEN=2) :: YSTORAGE_TYPE +CHARACTER(LEN=NFILENAMELGTMAX) :: CPGDFILE ! name of the PGD file +CHARACTER(LEN=NFILENAMELGTMAX) :: YZOOMFILE ! name of the output file +CHARACTER(LEN=2) :: YZOOMNBR +CHARACTER(LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME +CHARACTER(LEN=NFILENAMELGTMAX) :: YPGDFILE +CHARACTER(LEN=2) :: YSTORAGE_TYPE LOGICAL :: GFOUND INTEGER :: IXOR_DAD,IYOR_DAD ! compared to Dad file, if any INTEGER :: IXOR,IYOR ! given or computed -- GitLab