diff --git a/src/LIB/MPIvide/mpivide.c b/src/LIB/MPIvide/mpivide.c index eebe91b71a8e3178634fb98688f9118c8325037b..70139b5ea4fee4020ce6986207fbb66b924f8a0a 100644 --- a/src/LIB/MPIvide/mpivide.c +++ b/src/LIB/MPIvide/mpivide.c @@ -1,11 +1,12 @@ /* -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. */ /* Modifications : P. Wautelet 19/11/2021: add function findtypesize + improve/add support for 32 and 64 bits variables + add mpi_reduce + J. Escobar 22/09/2022: add MPI_Sendrecv */ #include <stdio.h> @@ -158,6 +159,20 @@ int *__ierr; *__ierr = 0; } +#pragma weak mpi_sendrecv__ = mpi_sendrecv +#pragma weak mpi_sendrecv_ = mpi_sendrecv +void mpi_sendrecv(void *sendbuf, int *sendcounts, int *sendtype, int *dest , int *sendtag , + void *recvbuf, int *recvcounts, int *recvtype, int *source, int *recvtag , + int *comm, int *__ierr) +{ + int size; + + disppass("sendrecv"); + size = findtypesize(*sendtype); + memcpy(recvbuf, sendbuf, (*recvcounts)*size); + + *__ierr = 0; +} #pragma weak mpi_alltoallv__ = mpi_alltoallv #pragma weak mpi_alltoallv_ = mpi_alltoallv diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 index 7a763a67522b523f8c5ddee29f6449c4b89e3697..5a387ac24a205b5977d6801463847c8e880b7ca1 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 @@ -19,6 +19,7 @@ ! P. Wautelet 04/12/2020: add IO_Field_create and IO_Ndimlist_reduce subroutines ! P. Wautelet 07/12/2020: add support for partial write of fields (optional argument: koffset, not all subroutines, no LFI spport) ! P. Wautelet 14/01/2021: add IO_Field_write_byname_N4 and IO_Field_write_byfield_N4 subroutines +! P. Wautelet 07/04/2023: correct IO_Field_user_write examples !----------------------------------------------------------------- #define MNH_SCALARS_IN_SPLITFILES 0 @@ -3049,6 +3050,7 @@ end subroutine IO_Ndimlist_reduce ! CALL IO_Format_write_select(TPFILE,GLFI,GNC4) ! +!PW: transferer ce traitement LFI dans les subroutines LFI (en creer 1 pour les HFIELD) IF(GLFI) THEN ILE=LEN(HFIELD) IP=SIZE(HFIELD) @@ -4223,9 +4225,10 @@ END DO END SUBROUTINE IO_Fieldlist_write -SUBROUTINE IO_Field_user_write(TPOUTPUT) +SUBROUTINE IO_Field_user_write( TPOUTPUT ) ! #if 0 +! IMPORTANT: uncomment the previous line (set to '#if 1') if you want to use the next lines USE MODD_DYN_n, ONLY: XTSTEP USE MODD_FIELD_n, ONLY: XUT, XVT, XRT, XTHT, XSVT USE MODD_PARAMETERS, ONLY: JPVEXT @@ -4239,86 +4242,93 @@ TYPE(TOUTBAK), INTENT(IN) :: TPOUTPUT !Output structure TYPE(TFIELDMETADATA) :: TZFIELD ! #if 0 -INTEGER :: IKB +! IMPORTANT: uncomment the previous line (set to '#if 1') if you want to use the next lines ! +INTEGER :: IKB + IKB=JPVEXT+1 -! -TZFIELD%CMNHNAME = 'UTLOW' -TZFIELD%CSTDNAME = 'x_wind' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'm s-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_U component of wind at lowest physical level' -TZFIELD%NGRID = 2 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XUT(:,:,IKB)) -! -TZFIELD%CMNHNAME = 'VTLOW' -TZFIELD%CSTDNAME = 'y_wind' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'm s-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_V component of wind at lowest physical level' -TZFIELD%NGRID = 3 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XVT(:,:,IKB)) -! -TZFIELD%CMNHNAME = 'THTLOW' -TZFIELD%CSTDNAME = 'air_potential_temperature' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'K' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_potential temperature at lowest physical level' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XTHT(:,:,IKB)) -! -TZFIELD%CMNHNAME = 'RVTLOW' -!TZFIELD%CSTDNAME = 'humidity_mixing_ratio' !ratio of the mass of water vapor to the mass of dry air -TZFIELD%CSTDNAME = 'specific_humidity' !mass fraction of water vapor in (moist) air -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'kg kg-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_Vapor mixing Ratio at lowest physical level' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XRT(:,:,IKB,1)) -! -TZFIELD%CMNHNAME = 'ACPRRSTEP' -TZFIELD%CSTDNAME = 'rainfall_amount' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'kg m-2' -TZFIELD%CDIR = '' -TZFIELD%CCOMMENT = 'X_Y_ACcumulated Precipitation Rain Rate during timestep' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 2 -TZFIELD%LTIMEDEP = .TRUE. + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'UTLOW', & + CLONGNAME = '', & + CSTDNAME = 'x_wind', & + CUNITS = 'm s-1', & + CDIR = 'XY', & + CCOMMENT = 'X-component of wind at lowest physical level', & + NGRID = 2, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XUT(:,:,IKB) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'VTLOW', & + CLONGNAME = '', & + CSTDNAME = 'y_wind', & + CUNITS = 'm s-1', & + CDIR = 'XY', & + CCOMMENT = 'Y-component of wind at lowest physical level', & + NGRID = 3, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XVT(:,:,IKB) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'THTLOW', & + CLONGNAME = '', & + CSTDNAME = 'air_potential_temperature', & + CUNITS = 'K', & + CDIR = 'XY', & + CCOMMENT = 'potential temperature at lowest physical level', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XTHT(:,:,IKB) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'RVTLOW', & + CLONGNAME = '', & + ! CSTDNAME = 'humidity_mixing_ratio', & !ratio of the mass of water vapor to the mass of dry air + CSTDNAME = 'specific_humidity', & !mass fraction of water vapor in (moist) air + CUNITS = 'kg kg-1', & + CDIR = 'XY', & + CCOMMENT = 'Vapor mixing Ratio at lowest physical level', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XRT(:,:,IKB,1) ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'ACPRRSTEP', & + CLONGNAME = '', & + CSTDNAME = 'rainfall_amount', & + CUNITS = 'kg m-2', & + CDIR = 'XY', & + CCOMMENT = 'ACcumulated Precipitation Rain Rate during timestep', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) !XACPRR is multiplied by 1000. to convert from m to kg m-2 (water density is assumed to be 1000 kg m-3) -CALL IO_Field_write(TPOUTPUT%TFILE,TZFIELD,XINPRR*XTSTEP*1.0E3) -! -TZFIELD%CMNHNAME = 'SVT001' -TZFIELD%CSTDNAME = 'concentration in scalar variable' -TZFIELD%CLONGNAME = '' -TZFIELD%CUNITS = 'kg kg-1' -TZFIELD%CDIR = 'XY' -TZFIELD%CCOMMENT = 'X_Y_Z_concentration in scalar variable' -TZFIELD%NGRID = 1 -TZFIELD%NTYPE = TYPEREAL -TZFIELD%NDIMS = 3 -TZFIELD%LTIMEDEP = .TRUE. -CALL IO_WRITE_FIELD(TPOUTPUT%TFILE,TZFIELD,XSVT(:,:,:,1)) -! +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XINPRR*XTSTEP*1.0E3 ) + +TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'SVT001', & + CLONGNAME = 'SVT001', & + CSTDNAME = '', & + CUNITS = 'kg kg-1', & + CDIR = 'XY', & + CCOMMENT = 'concentration in scalar variable', & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 3, & + LTIMEDEP = .TRUE. ) +CALL IO_Field_write( TPOUTPUT%TFILE, TZFIELD, XSVT(:,:,:,1) ) #endif -! + END SUBROUTINE IO_Field_user_write END MODULE MODE_IO_FIELD_WRITE diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index abc7599766929e2d08e88a4f57f17d12cca8032b..674b21574e9c2c06920f4e4271afb73bcc10b7ce 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.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. @@ -403,33 +403,24 @@ CALL IO_File_open(TZNMLFILE) ILUNAM = TZNMLFILE%NLU ! ! -CALL POSNAM(ILUNAM,'NAM_DIAG',GFOUND) -IF (GFOUND) THEN - READ(UNIT=ILUNAM,NML=NAM_DIAG) -END IF +CALL POSNAM( TZNMLFILE, 'NAM_DIAG', GFOUND ) +IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_DIAG) ! -CALL POSNAM(ILUNAM,'NAM_DIAG_BLANK',GFOUND) -IF (GFOUND) THEN - READ(UNIT=ILUNAM,NML=NAM_DIAG_BLANK) -END IF +CALL POSNAM( TZNMLFILE, 'NAM_DIAG_BLANK', GFOUND ) +IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_DIAG_BLANK) ! -CALL POSNAM(ILUNAM,'NAM_DIAG_FILE',GFOUND) -IF (GFOUND) THEN - READ(UNIT=ILUNAM,NML=NAM_DIAG_FILE) -END IF +CALL POSNAM( TZNMLFILE, 'NAM_DIAG_FILE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_DIAG_FILE) +! +CALL POSNAM( TZNMLFILE, 'NAM_STO_FILE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_STO_FILE) +! +CALL POSNAM( TZNMLFILE, 'NAM_CONFZ', GFOUND ) +IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_CONFZ) +! +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) +IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_CONFIO) ! -CALL POSNAM(ILUNAM,'NAM_STO_FILE',GFOUND) -IF (GFOUND) THEN - READ(UNIT=ILUNAM,NML=NAM_STO_FILE) -END IF -CALL POSNAM(ILUNAM,'NAM_CONFZ',GFOUND) -IF (GFOUND) THEN - READ(UNIT=ILUNAM,NML=NAM_CONFZ) -END IF -CALL POSNAM(ILUNAM,'NAM_CONFIO',GFOUND) -IF (GFOUND) THEN - READ(UNIT=ILUNAM,NML=NAM_CONFIO) -END IF CALL IO_Config_set() ! CALL IO_File_close(TZNMLFILE) diff --git a/src/MNH/end_diag_in_run.f90 b/src/MNH/end_diag_in_run.f90 index 61405af363c8688e00877d1e7b5e1334eb17c292..6b48ed8a3aff27f7c153d2517732ece413c1377e 100644 --- a/src/MNH/end_diag_in_run.f90 +++ b/src/MNH/end_diag_in_run.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 profiler 2006/10/24 10:07:27 -!----------------------------------------------------------------- ! ######################### MODULE MODI_END_DIAG_IN_RUN ! ######################### @@ -94,7 +89,7 @@ DEALLOCATE(XCURRENT_DSTAOD)! dust aerosol optical depth DEALLOCATE(XCURRENT_SFCO2 ) ! CO2 Surface flux DEALLOCATE(XCURRENT_TKE_DISS) ! Tke dissipation rate DEALLOCATE(XCURRENT_SLTAOD) ! Salt aerosol optical depth -DEALLOCATE(XCURRENT_ZWS ) ! Significant height of waves +! DEALLOCATE(XCURRENT_ZWS ) ! Significant height of waves ! !------------------------------------------------------------------------------- diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90 index 9eccd2a696e1c3737fc7727148e7316acdcc0313..449a890f57ae9a9cf509f908a46967fbad708cce 100644 --- a/src/MNH/ground_paramn.f90 +++ b/src/MNH/ground_paramn.f90 @@ -1012,7 +1012,7 @@ IF (LDIAG_IN_RUN) THEN CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_MER10M, 'GROUND_PARAM_n::XCURRENT_MER10M' ) CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_DSTAOD, 'GROUND_PARAM_n::XCURRENT_DSTAOD' ) CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_SLTAOD, 'GROUND_PARAM_n::XCURRENT_SLTAOD' ) - CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_ZWS, 'GROUND_PARAM_n::XCURRENT_ZWS' ) + ! CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_ZWS, 'GROUND_PARAM_n::XCURRENT_ZWS' ) CALL ADD2DFIELD_ll( TZFIELDSURF_ll,XCURRENT_SFCO2, 'GROUND_PARAM_n::XCURRENT_SFCO2' ) CALL UPDATE_HALO_ll(TZFIELDSURF_ll,IINFO_ll) @@ -1207,7 +1207,7 @@ IF (LDIAG_IN_RUN) THEN XCURRENT_HU2M (IIB:IIE,IJB:IJE) = RESHAPE(ZP_HU2M(:), ISHAPE_2) XCURRENT_ZON10M (IIB:IIE,IJB:IJE) = RESHAPE(ZP_ZON10M(:), ISHAPE_2) XCURRENT_MER10M (IIB:IIE,IJB:IJE) = RESHAPE(ZP_MER10M(:), ISHAPE_2) - XCURRENT_ZWS (IIB:IIE,IJB:IJE) = RESHAPE(ZP_ZWS(:), ISHAPE_2) + ! XCURRENT_ZWS (IIB:IIE,IJB:IJE) = RESHAPE(ZP_ZWS(:), ISHAPE_2) ENDIF ! DO JLAYER=1,SIZE(PDIR_ALB,3) diff --git a/src/MNH/ini_diag_in_run.f90 b/src/MNH/ini_diag_in_run.f90 index 6f39e805a357747f41972243e967fbdbd58700e1..e3af33fa2bc9e300f3a95ada5482b1be5095383e 100644 --- a/src/MNH/ini_diag_in_run.f90 +++ b/src/MNH/ini_diag_in_run.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2022 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. @@ -111,7 +111,7 @@ IF (LDIAG_IN_RUN) THEN ALLOCATE(XCURRENT_SFCO2 (KIU,KJU))! CO2 Surface flux ALLOCATE(XCURRENT_TKE_DISS(KIU,KJU,KKU)) ! Tke dissipation rate ALLOCATE(XCURRENT_SLTAOD(KIU,KJU))! Salt aerosol optical depth - ALLOCATE(XCURRENT_ZWS(KIU,KJU)) ! Significant height of waves + ! ALLOCATE(XCURRENT_ZWS(KIU,KJU)) ! Significant height of waves ! ! XCURRENT_RN = XUNDEF_SFX @@ -134,7 +134,7 @@ IF (LDIAG_IN_RUN) THEN XCURRENT_SFCO2 = XUNDEF_SFX XCURRENT_TKE_DISS = XUNDEF XCURRENT_SLTAOD= XUNDEF - XCURRENT_ZWS = XUNDEF_SFX + ! XCURRENT_ZWS = XUNDEF_SFX ELSE ALLOCATE(XCURRENT_RN (0,0))! net radiation ALLOCATE(XCURRENT_H (0,0))! sensible heat flux @@ -156,7 +156,7 @@ ELSE ALLOCATE(XCURRENT_SFCO2 (0,0))! CO2 Surface flux ALLOCATE(XCURRENT_TKE_DISS(0,0,0)) ! Tke dissipation rate ALLOCATE(XCURRENT_SLTAOD(0,0))! Salt aerosol optical depth - ALLOCATE(XCURRENT_ZWS(0,0))! Significant height of waves + ! ALLOCATE(XCURRENT_ZWS(0,0))! Significant height of waves END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90 index 1864623ffbe8bd132b556b841d5c1f3a6840e8bd..f0d7cc6879cb71e19e23774b8cd5b442a6567a07 100644 --- a/src/MNH/ini_prog_var.f90 +++ b/src/MNH/ini_prog_var.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2022 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. @@ -249,19 +249,19 @@ IF(PRESENT(HCHEMFILE)) THEN END IF ! IIMAX LUSECHEM = .TRUE. IF (LORILAM) THEN - CALL POSNAM(ILUDES,'NAM_CH_ORILAM',GFOUND,ILUOUT) + CALL POSNAM(TZCHEMFILE, 'NAM_CH_ORILAM', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_CH_ORILAM) ENDIF IF (LDUST) THEN LDSTINIT=.TRUE. LDSTPRES=.FALSE. - CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT) + CALL POSNAM(TZCHEMFILE, 'NAM_DUST', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST) ENDIF IF (LSALT) THEN LSLTINIT=.TRUE. LSLTPRES=.FALSE. - CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT) + CALL POSNAM(TZCHEMFILE, 'NAM_SALT', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT) ENDIF diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90 index 98a316851fc4b5d21ca797b02b3275da6c87069f..f7f5ea11509566967e1b757bdbfc4cb0b333721b 100644 --- a/src/MNH/ini_segn.f90 +++ b/src/MNH/ini_segn.f90 @@ -324,7 +324,7 @@ CALL DEFAULT_DESFM_n(KMI) !* 3. READ INITIAL FILE NAME AND OPEN INITIAL FILE ! -------------------------------------------- ! -CALL POSNAM(ILUSEG,'NAM_LUNITN',GFOUND) +CALL POSNAM( TZFILE_DES, 'NAM_LUNITN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_LUNITn READ(UNIT=ILUSEG,NML=NAM_LUNITn) @@ -337,9 +337,9 @@ END IF IF (CPROGRAM=='MESONH') THEN IF (KMI.EQ.1) THEN - CALL POSNAM(ILUSEG,'NAM_CONFZ',GFOUND,ILUOUT) + CALL POSNAM( TZFILE_DES, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFZ) - CALL POSNAM(ILUSEG,'NAM_CONFIO',GFOUND,ILUOUT) + CALL POSNAM( TZFILE_DES, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFIO) CALL IO_Config_set() END IF diff --git a/src/MNH/latlon_to_xy.f90 b/src/MNH/latlon_to_xy.f90 index 98b134a36a1cf7e21a18a8cb4c49a3627e5f8490..ae3cfb6cabf936316edb62b8075f01839b07b4c8 100644 --- a/src/MNH/latlon_to_xy.f90 +++ b/src/MNH/latlon_to_xy.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. @@ -147,16 +147,14 @@ CALL IO_File_add2list(TZNMLFILE,'LATLON2XY1.nam','NML','READ') CALL IO_File_open(TZNMLFILE) INAM=TZNMLFILE%NLU ! -CALL POSNAM(INAM,'NAM_INIFILE',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_INIFILE', GFOUND ) IF (GFOUND) THEN READ(UNIT=INAM,NML=NAM_INIFILE) - PRINT*, ' namelist NAM_INIFILE read' END IF ! -CALL POSNAM(INAM,'NAM_CONFIO',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) THEN READ(UNIT=INAM,NML=NAM_CONFIO) - PRINT*, ' namelist NAM_CONFIO read' END IF ! CALL IO_Config_set() diff --git a/src/MNH/mnh2lpdm.f90 b/src/MNH/mnh2lpdm.f90 index deb8dda2312cc5000d28482412cf5e4695292e0d..7a37fde0fe1a5c05c86da90720d933ea9b6a0011 100644 --- a/src/MNH/mnh2lpdm.f90 +++ b/src/MNH/mnh2lpdm.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2021 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. @@ -113,7 +113,7 @@ READ(UNIT=IFNML,NML=NAM_TURB) READ(UNIT=IFNML,NML=NAM_FIC) print *,'Lecture de NAM_FIC OK.' -CALL POSNAM(IFNML,'NAM_CONFIO',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) THEN READ(UNIT=IFNML,NML=NAM_CONFIO) END IF diff --git a/src/PHYEX/turb/modd_diag_in_run.f90 b/src/MNH/modd_diag_in_run.f90 similarity index 93% rename from src/PHYEX/turb/modd_diag_in_run.f90 rename to src/MNH/modd_diag_in_run.f90 index 6f9829570ec8a9f75685491317b5adc86b18e623..854a980048bcd3a877f6de900bb55febb176f91a 100644 --- a/src/PHYEX/turb/modd_diag_in_run.f90 +++ b/src/MNH/modd_diag_in_run.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2014 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. @@ -34,5 +34,5 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_DSTAOD! dust aerosol optical dep REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_SFCO2 ! CO2 Surface flux REAL, DIMENSION(:,:,:), ALLOCATABLE :: XCURRENT_TKE_DISS ! Tke dissipation rate REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_SLTAOD ! Salt aerosol optical depth -REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_ZWS ! Significant height of waves +! REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_ZWS ! Significant height of waves END MODULE MODD_DIAG_IN_RUN diff --git a/src/MNH/mode_pos.f90 b/src/MNH/mode_pos.f90 index 09a2ca12ee8467375b1784743768c89c72e14e98..1a8344973bc1ae797242feb6205c49603f716d8f 100644 --- a/src/MNH/mode_pos.f90 +++ b/src/MNH/mode_pos.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1993-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1993-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. @@ -12,9 +12,9 @@ implicit none !! CONTAINS !! -!! ############################################## - SUBROUTINE POSNAM(KULNAM,HDNAML,OFOUND,KLUOUT) -!! ############################################## +!! ########################################### + SUBROUTINE POSNAM( TPFILE, HDNAML, OFOUND ) +!! ########################################### !! !!*** *POSNAM* !! @@ -45,72 +45,102 @@ CONTAINS !! Original : 22/06/93 !! I. Mallet 15/10/01 adaptation to MesoNH (F90 norm) ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 05/04/2023: POSNAM: modernisation + improvements !------------------------------------------------------------------------------ ! !* 0. DECLARATIONS ! ------------ +USE MODD_IO, ONLY: TFILEDATA + +USE MODE_MSG +USE MODE_TOOLS, ONLY: Upcase ! !* 0.1 Declarations of arguments ! -INTEGER, INTENT(IN) :: KULNAM +TYPE(TFILEDATA), INTENT(IN) :: TPFILE CHARACTER(LEN=*), INTENT(IN) :: HDNAML LOGICAL, INTENT(OUT):: OFOUND -INTEGER, OPTIONAL,INTENT(IN) :: KLUOUT ! !* 0.2 Declarations of local variables ! -CHARACTER(LEN=120) :: YLINE -CHARACTER(LEN=1) :: YLTEST -INTEGER :: ILEN,ILEY,IND1,IRET -INTEGER :: J,JA -! -CHARACTER(LEN=1),DIMENSION(26) :: YLO=(/'a','b','c','d','e','f','g','h', & - 'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'/) -CHARACTER(LEN=1),DIMENSION(26) :: YUP=(/'A','B','C','D','E','F','G','H', & - 'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'/) -! -!* 1. POSITION FILE -! ------------- -! -REWIND(KULNAM) -ILEN=LEN(HDNAML) -IRET = 0 -! +CHARACTER(LEN=100) :: YERRORMSG +CHARACTER(LEN=120) :: YLINE +CHARACTER(LEN=1) :: YLTEST +CHARACTER(LEN=:), ALLOCATABLE :: YDNAML +INTEGER :: ILU +INTEGER :: ILEN, IND1, IRET +INTEGER :: IVERBLVL + + +OFOUND = .FALSE. + +IF ( .NOT.TPFILE%LOPENED ) THEN + call Print_msg( NVERB_ERROR, 'IO', 'POSNAM', Trim( TPFILE%CNAME ) // ' not opened' ) + RETURN +END IF + +ILU = TPFILE%NLU + +IF ( TPFILE%CTYPE == 'DES' ) THEN + IVERBLVL = NVERB_DEBUG +ELSE IF ( TPFILE%CTYPE == 'NML' ) THEN + IVERBLVL = NVERB_INFO +ELSE + ! Check if there is an associated .des file + ! and use it if available + IF ( ASSOCIATED( TPFILE%TDESFILE ) ) THEN + IVERBLVL = NVERB_DEBUG + IF ( .NOT.TPFILE%TDESFILE%LOPENED ) THEN + call Print_msg( NVERB_ERROR, 'IO', 'POSNAM', Trim( TPFILE%TDESFILE%CNAME ) // ' not opened' ) + RETURN + END IF + ILU = TPFILE%TDESFILE%NLU + ELSE + IVERBLVL = NVERB_INFO + call Print_msg( NVERB_WARNING, 'IO', 'POSNAM', Trim( TPFILE%CNAME ) & + // ': unexpected filetype: ' // Trim( TPFILE%CTYPE ) ) + END IF +END IF + +REWIND( ILU ) + +ILEN = LEN( HDNAML ) +ALLOCATE( CHARACTER(LEN=ILEN) :: YDNAML ) +YDNAML = Upcase( HDNAML ) ! Force namelist name into upper case (read namelist name will also be upcased) + search_nam : DO - YLINE=' ' - READ(UNIT=KULNAM,FMT='(A)',IOSTAT=IRET,END=100) YLINE - IF (IRET /=0 ) THEN - IF (PRESENT(KLUOUT)) & - WRITE(KLUOUT,FMT=*) '-> error reading from unit',KULNAM,' line ',YLINE - ELSE - ILEY=LEN(YLINE) - DO J=1,ILEY - DO JA=1,26 - IF (YLINE(J:J)==YLO(JA)) YLINE(J:J)=YUP(JA) - END DO - END DO - IND1=INDEX(YLINE,'&'//HDNAML) - IF(IND1.NE.0) THEN - YLTEST=YLINE(IND1+ILEN+1:IND1+ILEN+1) - !IF((LLT(YLTEST,'0').OR.LGT(YLTEST,'9')).AND. & - ! (LLT(YLTEST,'A').OR.LGT(YLTEST,'Z'))) EXIT search_nam - IF(YLTEST == ' ') EXIT search_nam - ENDIF - ENDIF -ENDDO search_nam -! -BACKSPACE(KULNAM) -OFOUND=.TRUE. -IF (PRESENT(KLUOUT)) WRITE(KLUOUT,FMT=*) '-- namelist ',HDNAML,' read' -! + READ ( UNIT=ILU, FMT='(A)', IOSTAT=IRET, IOMSG=YERRORMSG, END=100 ) YLINE + IF (IRET /= 0 ) THEN + call Print_msg( NVERB_ERROR, 'IO', 'POSNAM', 'read error:' // Trim( YERRORMSG ) ) + ELSE + YLINE = Upcase( YLINE ) + IND1 = INDEX( YLINE, '&'//YDNAML ) + IF( IND1 /= 0 ) THEN + IF( IND1 > 1 ) THEN + IF ( LEN_TRIM( YLINE(:IND1-1) ) /= 0 ) THEN + ! Check that it is really the beginning of a namelist and that is not a comment + ! Nothing but spaces is allowed here + call Print_msg( NVERB_DEBUG, 'IO', 'POSNAM', 'invalid header or commented namelist: ' // Trim ( YLINE) ) + CYCLE + END IF + END IF + YLTEST = YLINE(IND1+ILEN+1:IND1+ILEN+1) + IF( YLTEST == ' ' ) EXIT search_nam + END IF + END IF +END DO search_nam + +BACKSPACE( ILU ) +OFOUND = .TRUE. +call Print_msg( IVERBLVL, 'IO', 'POSNAM', Trim( TPFILE%CNAME ) // ': namelist ' // Trim( HDNAML ) // ' found' ) + RETURN -! + ! end of file: namelist name not found 100 CONTINUE -OFOUND=.FALSE. -IF (PRESENT(KLUOUT)) & -WRITE(KLUOUT,FMT=*) & -'-- namelist ',HDNAML,' not found: default values used if required' +call Print_msg( IVERBLVL, 'IO', 'POSNAM', Trim( TPFILE%CNAME ) // ': namelist ' // Trim( HDNAML ) & + // ' not found: default values used if required' ) + !------------------------------------------------------------------ END SUBROUTINE POSNAM !! diff --git a/src/MNH/open_nestpgd_files.f90 b/src/MNH/open_nestpgd_files.f90 index d331134d68ce797a6112596032f6fe6448b3b1e8..555d5cbc174d5b8f21ef737eccbb17b5255752d3 100644 --- a/src/MNH/open_nestpgd_files.f90 +++ b/src/MNH/open_nestpgd_files.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. @@ -172,11 +172,11 @@ CALL IO_File_add2list(TZPRE_NEST_PGD,TRIM(HPRE_NEST_PGD),'NML','READ') CALL IO_File_open(TZPRE_NEST_PGD) IPRE_NEST_PGD = TZPRE_NEST_PGD%NLU !reading of NAM_CONFZ -CALL POSNAM(IPRE_NEST_PGD,'NAM_CONFZ',GFOUND) +CALL POSNAM( TZPRE_NEST_PGD, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_CONFZ) ! !JUAN -CALL POSNAM(IPRE_NEST_PGD,'NAM_CONF_NEST',GFOUND) +CALL POSNAM( TZPRE_NEST_PGD, 'NAM_CONF_NEST', GFOUND ) IF (GFOUND) THEN NHALO_MNH = NHALO_CONF_MNH READ(UNIT=IPRE_NEST_PGD,NML=NAM_CONF_NEST) @@ -203,35 +203,35 @@ GADD=.TRUE. DO JPGD=1,JPMODELMAX IDAD=0 IF (JPGD==1) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD1',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD1', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD1) END IF IF (JPGD==2) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD2',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD2', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD2) END IF IF (JPGD==3) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD3',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD3', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD3) END IF IF (JPGD==4) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD4',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD4', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD4) END IF IF (JPGD==5) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD5',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD5', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD5) END IF IF (JPGD==6) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD6',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD6', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD6) END IF IF (JPGD==7) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD7',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD7', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD7) END IF IF (JPGD==8) THEN - CALL POSNAM(IPRE_NEST_PGD,'NAM_PGD8',GFOUND) + CALL POSNAM( TZPRE_NEST_PGD, 'NAM_PGD8', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_PGD8) END IF ! @@ -291,10 +291,10 @@ END DO !* 6. NAMES OF OUTPUT PGD FILES ! ------------------------- ! -CALL POSNAM(IPRE_NEST_PGD,'NAM_NEST_PGD',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_NEST_PGD, 'NAM_NEST_PGD', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_NEST_PGD) ! -CALL POSNAM(IPRE_NEST_PGD,'NAM_CONFIO',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_NEST_PGD, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_NEST_PGD,NML=NAM_CONFIO) CALL IO_Config_set() ! diff --git a/src/MNH/open_prc_files.f90 b/src/MNH/open_prc_files.f90 index ecf98378f07cd1712e1d68cb4c51bcd853324bd5..056eb30ae0b95a26cc5df71c399bf76b18ca4f13 100644 --- a/src/MNH/open_prc_files.f90 +++ b/src/MNH/open_prc_files.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. @@ -208,15 +208,15 @@ ENDIF ! ---------------------------- ! !JUANZ -CALL POSNAM(IPRE_REAL1,'NAM_CONFZ',GFOUND,ILUOUT0) +CALL POSNAM( TPPRE_REAL1FILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CONFZ) !JUANZ -CALL POSNAM(IPRE_REAL1,'NAM_CONFIO',GFOUND,ILUOUT0) +CALL POSNAM( TPPRE_REAL1FILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CONFIO) CALL IO_Config_set() ! CINIFILE = CINIFILE_n -CALL POSNAM(IPRE_REAL1,'NAM_FILE_NAMES',GFOUND,ILUOUT0) +CALL POSNAM( TPPRE_REAL1FILE, 'NAM_FILE_NAMES', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_FILE_NAMES) CINIFILE_n = CINIFILE ! diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 8abd65649d35f0fe2dc1e5a2257d5e7b99be5faa..ee75625e84f9a4ebe04ffd83774e65aad7bb4d2b 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -690,35 +690,35 @@ NLUPRE=TZEXPREFILE%NLU !* 3.2 read in NLUPRE the namelist informations ! WRITE(NLUOUT,FMT=*) 'attempt to read ',TRIM(TZEXPREFILE%CNAME),' file' -CALL POSNAM(NLUPRE,'NAM_REAL_PGD',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_REAL_PGD', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_REAL_PGD) ! ! -CALL POSNAM(NLUPRE,'NAM_CONF_PRE',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_CONF_PRE', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_CONF_PRE) !JUANZ -CALL POSNAM(NLUPRE,'NAM_CONFZ',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_CONFZ) !JUANZ -CALL POSNAM(NLUPRE,'NAM_CONFIO',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_CONFIO) CALL IO_Config_set() -CALL POSNAM(NLUPRE,'NAM_GRID_PRE',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_GRID_PRE', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_GRID_PRE) -CALL POSNAM(NLUPRE,'NAM_GRIDH_PRE',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_GRIDH_PRE', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_GRIDH_PRE) -CALL POSNAM(NLUPRE,'NAM_VPROF_PRE',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_VPROF_PRE', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_VPROF_PRE) -CALL POSNAM(NLUPRE,'NAM_BLANKN',GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_BLANKN', GFOUND ) CALL INIT_NAM_BLANKn IF (GFOUND) THEN READ(UNIT=NLUPRE,NML=NAM_BLANKn) CALL UPDATE_NAM_BLANKn END IF -CALL READ_PRE_IDEA_NAM_n(NLUPRE,NLUOUT) -CALL POSNAM(NLUPRE,'NAM_AERO_PRE',GFOUND,NLUOUT) +CALL READ_PRE_IDEA_NAM_n( TZEXPREFILE ) +CALL POSNAM( TZEXPREFILE, 'NAM_AERO_PRE', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_AERO_PRE) -CALL POSNAM(NLUPRE,'NAM_IBM_LSF' ,GFOUND,NLUOUT) +CALL POSNAM( TZEXPREFILE, 'NAM_IBM_LSF', GFOUND ) IF (GFOUND) READ(UNIT=NLUPRE,NML=NAM_IBM_LSF ) ! CALL INI_FIELD_LIST() diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90 index 2df254d5ec8aab95ee4ad9713ccf8e65fc7f4af4..64c43fb8cce5d20a50b84d57ea9c6896d052e079 100644 --- a/src/MNH/prep_pgd.f90 +++ b/src/MNH/prep_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. @@ -190,23 +190,23 @@ IF (IRESP.NE.0 ) THEN ENDIF !JUAN -CALL POSNAM(ILUNAM,'NAM_PGDFILE',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_PGDFILE', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_PGDFILE) -CALL POSNAM(ILUNAM,'NAM_ZSFILTER',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_ZSFILTER', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_ZSFILTER) -CALL POSNAM(ILUNAM,'NAM_SLEVE',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_SLEVE', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_SLEVE) !JUANZ -CALL POSNAM(ILUNAM,'NAM_CONFZ',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_CONFZ) -CALL POSNAM(ILUNAM,'NAM_CONF_PGD',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONF_PGD', GFOUND ) IF (GFOUND) THEN NHALO_MNH = NHALO_CONF_MNH READ(UNIT=ILUNAM,NML=NAM_CONF_PGD) NHALO_CONF_MNH = NHALO_MNH ENDIF !JUANZ -CALL POSNAM(ILUNAM,'NAM_CONFIO',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_CONFIO) CALL IO_Config_set() ! diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 7af314fe4d80534c4e54da7ddf628de41dbdfb56..0ed4641b560593cbb9442d6fb8b7005066bbeb04 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.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. @@ -674,9 +674,9 @@ CALL INI_CST IPRE_REAL1 = TZPRE_REAL1FILE%NLU ! CALL INIT_NMLVAR -CALL POSNAM(IPRE_REAL1,'NAM_REAL_CONF',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_REAL_CONF', GFOUND ) IF (GFOUND) READ(IPRE_REAL1,NAM_REAL_CONF) -CALL POSNAM(IPRE_REAL1,'NAM_PARAM_LIMA',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_PARAM_LIMA', GFOUND ) IF (GFOUND) READ(IPRE_REAL1,NAM_PARAM_LIMA) ! CALL INI_FIELD_LIST() @@ -746,18 +746,18 @@ XANGCONV0=0. ; XANGCONV1000=0. ; XANGCONV2000=0. CDADATMFILE=' ' ; CDADBOGFILE=' ' ! CALL INIT_NMLVAR -CALL POSNAM(IPRE_REAL1,'NAM_REAL_CONF',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_REAL_CONF', GFOUND ) IF (GFOUND) READ(IPRE_REAL1,NAM_REAL_CONF) -CALL POSNAM(IPRE_REAL1,'NAM_HURR_CONF',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_HURR_CONF', GFOUND ) IF (GFOUND) READ(IPRE_REAL1,NAM_HURR_CONF) -CALL POSNAM(IPRE_REAL1,'NAM_CH_CONF',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_CH_CONF', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CH_CONF) CALL UPDATE_MODD_FROM_NMLVAR -CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_AERO_CONF', GFOUND ) IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF) -CALL POSNAM(IPRE_REAL1,'NAM_CONFZ',GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_CONFZ) -CALL POSNAM(IPRE_REAL1,'NAM_IBM_LSF' ,GFOUND,ILUOUT0) +CALL POSNAM( TZPRE_REAL1FILE, 'NAM_IBM_LSF' , GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_IBM_LSF) ! GAERINIT = LAERINIT @@ -810,7 +810,7 @@ END IF ! !IF(LEN_TRIM(YCHEMFILE)>0)THEN ! ! read again Nam_aero_conf -! CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0) +! CALL POSNAM( TZPRE_REAL1FILE, 'NAM_AERO_CONF', GFOUND ) ! IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF) ! IF(YCHEMFILETYPE=='GRIBEX') & ! CALL READ_ALL_DATA_GRIB_CASE('CHEM',TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL) @@ -844,7 +844,7 @@ END IF ! IF(LEN_TRIM(YCHEMFILE)>0)THEN ! read again Nam_aero_conf - CALL POSNAM(IPRE_REAL1,'NAM_AERO_CONF',GFOUND,ILUOUT0) + CALL POSNAM( TZPRE_REAL1FILE, 'NAM_AERO_CONF', GFOUND ) IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF) IF(YCHEMFILETYPE=='GRIBEX') & CALL READ_ALL_DATA_GRIB_CASE('CHEM',TZPRE_REAL1FILE,YCHEMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL) diff --git a/src/MNH/read_desfmn.f90 b/src/MNH/read_desfmn.f90 index 213063f3545c5c332f751b34e18e16ad2c717fc8..10c8623f5d247296a2cc35158ed31cc8cd465fc6 100644 --- a/src/MNH/read_desfmn.f90 +++ b/src/MNH/read_desfmn.f90 @@ -343,6 +343,7 @@ LOGICAL :: GFOUND ! Return code when searching namelist LOGICAL,DIMENSION(JPMODELMAX),SAVE :: LTEMPDEPOS_DST ! Dust Moist flag LOGICAL,DIMENSION(JPMODELMAX),SAVE :: LTEMPDEPOS_SLT ! Sea Salt Moist flag LOGICAL,DIMENSION(JPMODELMAX),SAVE :: LTEMPDEPOS_AER ! Orilam Moist flag +TYPE(TFILEDATA), POINTER :: TZDESFILE ! !------------------------------------------------------------------------------- ! @@ -354,144 +355,145 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_DESFM_n','called for '//TRIM(TPDATAFILE%CN IF (.NOT.ASSOCIATED(TPDATAFILE%TDESFILE)) & CALL PRINT_MSG(NVERB_FATAL,'IO','READ_DESFM_n','TDESFILE not associated for '//TRIM(TPDATAFILE%CNAME)) ! -ILUDES = TPDATAFILE%TDESFILE%NLU +TZDESFILE => TPDATAFILE%TDESFILE +ILUDES = TZDESFILE%NLU ILUOUT = TLUOUT%NLU ! -CALL POSNAM(ILUDES,'NAM_LUNITN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_LUNITN', GFOUND ) CALL INIT_NAM_LUNITN IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_LUNITn) CALL UPDATE_NAM_LUNITN END IF -CALL POSNAM(ILUDES,'NAM_CONFN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_CONFN', GFOUND ) CALL INIT_NAM_CONFN IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_CONFn) CALL UPDATE_NAM_CONFN END IF -CALL POSNAM(ILUDES,'NAM_DYNN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_DYNN', GFOUND ) CALL INIT_NAM_DYNN IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_DYNn) CALL UPDATE_NAM_DYNN END IF -CALL POSNAM(ILUDES,'NAM_ADVN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_ADVN', GFOUND ) CALL INIT_NAM_ADVN IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_ADVn) CALL UPDATE_NAM_ADVN END IF -CALL POSNAM(ILUDES,'NAM_PARAMN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_PARAMN', GFOUND ) CALL INIT_NAM_PARAMn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PARAMn) CALL UPDATE_NAM_PARAMn END IF -CALL POSNAM(ILUDES,'NAM_PARAM_RADN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_PARAM_RADN', GFOUND ) CALL INIT_NAM_PARAM_RADn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PARAM_RADn) CALL UPDATE_NAM_PARAM_RADn END IF #ifdef MNH_ECRAD -CALL POSNAM(ILUDES,'NAM_PARAM_ECRADN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_PARAM_ECRADN', GFOUND ) CALL INIT_NAM_PARAM_ECRADn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PARAM_ECRADn) CALL UPDATE_NAM_PARAM_ECRADn END IF #endif -CALL POSNAM(ILUDES,'NAM_PARAM_KAFRN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_PARAM_KAFRN', GFOUND ) CALL INIT_NAM_PARAM_KAFRn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PARAM_KAFRn) CALL UPDATE_NAM_PARAM_KAFRn END IF -CALL POSNAM(ILUDES,'NAM_PARAM_MFSHALLN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_PARAM_MFSHALLN', GFOUND ) CALL INIT_NAM_PARAM_MFSHALLn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PARAM_MFSHALLn) CALL UPDATE_NAM_PARAM_MFSHALLn END IF -CALL POSNAM(ILUDES,'NAM_LBCN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_LBCN', GFOUND ) CALL INIT_NAM_LBCn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_LBCn) CALL UPDATE_NAM_LBCn END IF -CALL POSNAM(ILUDES,'NAM_NUDGINGN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_NUDGINGN', GFOUND ) CALL INIT_NAM_NUDGINGn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_NUDGINGn) CALL UPDATE_NAM_NUDGINGn END IF -CALL POSNAM(ILUDES,'NAM_TURBN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_TURBN', GFOUND ) CALL INIT_NAM_TURBn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_TURBn) CALL UPDATE_NAM_TURBn END IF -CALL POSNAM(ILUDES,'NAM_CH_MNHCN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_CH_MNHCN', GFOUND ) CALL INIT_NAM_CH_MNHCn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_CH_MNHCn) CALL UPDATE_NAM_CH_MNHCn END IF -CALL POSNAM(ILUDES,'NAM_CH_SOLVERN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_CH_SOLVERN', GFOUND ) CALL INIT_NAM_CH_SOLVERn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_CH_SOLVERn) CALL UPDATE_NAM_CH_SOLVERn END IF -CALL POSNAM(ILUDES,'NAM_DRAGN',GFOUND) +CALL POSNAM( TZDESFILE, 'NAM_DRAGN', GFOUND ) CALL INIT_NAM_DRAGn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_DRAGn) CALL UPDATE_NAM_DRAGn END IF -CALL POSNAM(ILUDES,'NAM_IBM_PARAMN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_IBM_PARAMN', GFOUND ) CALL INIT_NAM_IBM_PARAMn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_IBM_PARAMn) CALL UPDATE_NAM_IBM_PARAMn END IF -CALL POSNAM(ILUDES,'NAM_RECYCL_PARAMN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_RECYCL_PARAMN', GFOUND ) CALL INIT_NAM_RECYCL_PARAMn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_RECYCL_PARAMn) CALL UPDATE_NAM_RECYCL_PARAMn END IF -CALL POSNAM(ILUDES,'NAM_SERIESN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_SERIESN', GFOUND ) CALL INIT_NAM_SERIESn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_SERIESn) CALL UPDATE_NAM_SERIESn END IF -CALL POSNAM(ILUDES,'NAM_BLOWSNOWN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_BLOWSNOWN', GFOUND ) CALL INIT_NAM_BLOWSNOWn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_BLOWSNOWn) CALL UPDATE_NAM_BLOWSNOWn END IF -CALL POSNAM(ILUDES,'NAM_BLANKN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_BLANKN', GFOUND ) CALL INIT_NAM_BLANKn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_BLANKn) CALL UPDATE_NAM_BLANKn END IF -CALL POSNAM(ILUDES,'NAM_PROFILERN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_PROFILERN', GFOUND ) CALL INIT_NAM_PROFILERn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PROFILERN) CALL UPDATE_NAM_PROFILERn END IF -CALL POSNAM(ILUDES,'NAM_STATIONN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_STATIONN', GFOUND ) CALL INIT_NAM_STATIONn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_STATIONn) CALL UPDATE_NAM_STATIONn END IF -CALL POSNAM(ILUDES,'NAM_FIREN',GFOUND,ILUOUT) +CALL POSNAM( TZDESFILE, 'NAM_FIREN', GFOUND ) CALL INIT_NAM_FIREn IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_FIREn) @@ -500,13 +502,13 @@ END IF ! ! IF (KMI == 1) THEN - CALL POSNAM(ILUDES,'NAM_CONF',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_CONF', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_CONF) - CALL POSNAM(ILUDES,'NAM_DYN',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_DYN', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DYN) - CALL POSNAM(ILUDES,'NAM_NESTING',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_NESTING', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_NESTING) - CALL POSNAM(ILUDES,'NAM_BACKUP',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_BACKUP', GFOUND ) IF (GFOUND) THEN IF (.NOT.ALLOCATED(XBAK_TIME)) THEN ALLOCATE(XBAK_TIME(NMODEL,JPOUTMAX)) @@ -530,10 +532,10 @@ IF (KMI == 1) THEN END IF READ(UNIT=ILUDES,NML=NAM_BACKUP) ELSE - CALL POSNAM(ILUDES,'NAM_FMOUT',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_FMOUT', GFOUND ) IF (GFOUND) CALL PRINT_MSG(NVERB_FATAL,'IO','READ_DESFM_n','use namelist NAM_BACKUP instead of namelist NAM_FMOUT') END IF - CALL POSNAM(ILUDES,'NAM_OUTPUT',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_OUTPUT', GFOUND ) IF (GFOUND) THEN IF (.NOT.ALLOCATED(XBAK_TIME)) THEN ALLOCATE(XBAK_TIME(NMODEL,JPOUTMAX)) !Allocate *BAK* variables to prevent @@ -559,88 +561,88 @@ IF (KMI == 1) THEN END IF ! Note: it is not useful to read the budget namelists in the .des files ! The values here (if present in file) don't need to be compared with the ones in the EXSEGn files -! CALL POSNAM(ILUDES,'NAM_BUDGET',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BUDGET', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BUDGET) -! CALL POSNAM(ILUDES,'NAM_BU_RU',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RU', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RU) -! CALL POSNAM(ILUDES,'NAM_BU_RV',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RV', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RV) -! CALL POSNAM(ILUDES,'NAM_BU_RW',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RW', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RW) -! CALL POSNAM(ILUDES,'NAM_BU_RTH',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RTH', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RTH) -! CALL POSNAM(ILUDES,'NAM_BU_RTKE',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RTKE', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RTKE) -! CALL POSNAM(ILUDES,'NAM_BU_RRV',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRV', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRV) -! CALL POSNAM(ILUDES,'NAM_BU_RRC',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRC', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRC) -! CALL POSNAM(ILUDES,'NAM_BU_RRR',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRR', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRR) -! CALL POSNAM(ILUDES,'NAM_BU_RRI',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRI', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRI) -! CALL POSNAM(ILUDES,'NAM_BU_RRS',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRS', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRS) -! CALL POSNAM(ILUDES,'NAM_BU_RRG',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRG', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRG) -! CALL POSNAM(ILUDES,'NAM_BU_RRH',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RRH', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RRH) -! CALL POSNAM(ILUDES,'NAM_BU_RSV',GFOUND) +! CALL POSNAM( TZDESFILE, 'NAM_BU_RSV', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BU_RSV) - CALL POSNAM(ILUDES,'NAM_LES',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_LES', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_LES) - CALL POSNAM(ILUDES,'NAM_PDF',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_PDF', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PDF) - CALL POSNAM(ILUDES,'NAM_FRC',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_FRC', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_FRC) - CALL POSNAM(ILUDES,'NAM_PARAM_ICE',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_PARAM_ICE', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PARAM_ICE) - CALL POSNAM(ILUDES,'NAM_PARAM_C2R2',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_PARAM_C2R2', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PARAM_C2R2) - CALL POSNAM(ILUDES,'NAM_PARAM_C1R3',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_PARAM_C1R3', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PARAM_C1R3) - CALL POSNAM(ILUDES,'NAM_PARAM_LIMA',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_PARAM_LIMA', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PARAM_LIMA) - CALL POSNAM(ILUDES,'NAM_ELEC',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_ELEC', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_ELEC) - CALL POSNAM(ILUDES,'NAM_SERIES',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_SERIES', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SERIES) - CALL POSNAM(ILUDES,'NAM_TURB_CLOUD',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_TURB_CLOUD', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_TURB_CLOUD) - CALL POSNAM(ILUDES,'NAM_TURB',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_TURB', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_TURB) - CALL POSNAM(ILUDES,'NAM_CH_ORILAM',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_CH_ORILAM', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_CH_ORILAM) - CALL POSNAM(ILUDES,'NAM_DUST',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_DUST', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_DUST) - CALL POSNAM(ILUDES,'NAM_SALT',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_SALT', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_SALT) - CALL POSNAM(ILUDES,'NAM_PASPOL',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_PASPOL', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PASPOL) #ifdef MNH_FOREFIRE - CALL POSNAM(ILUDES,'NAM_FOREFIRE',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_FOREFIRE', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_FOREFIRE) #endif - CALL POSNAM(ILUDES,'NAM_CONDSAMP',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_CONDSAMP', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_CONDSAMP) - CALL POSNAM(ILUDES,'NAM_BLOWSNOW',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_BLOWSNOW', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_BLOWSNOW) - CALL POSNAM(ILUDES,'NAM_2D_FRC',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_2D_FRC', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_2D_FRC) LTEMPDEPOS_DST(:) = LDEPOS_DST(:) LTEMPDEPOS_SLT(:) = LDEPOS_SLT(:) LTEMPDEPOS_AER(:) = LDEPOS_AER(:) - CALL POSNAM(ILUDES,'NAM_LATZ_EDFLX',GFOUND) + CALL POSNAM( TZDESFILE, 'NAM_LATZ_EDFLX', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_LATZ_EDFLX) - CALL POSNAM(ILUDES,'NAM_VISC',GFOUND,ILUOUT) + CALL POSNAM( TZDESFILE, 'NAM_VISC', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_VISC) ! Note: it is not useful to read the FLYERS/AIRCRAFTS/BALLOONS namelists in the .des files ! The values here (if present in file) don't need to be compared with the ones in the EXSEGn files -! CALL POSNAM(ILUDES,'NAM_FLYERS',GFOUND,ILUOUT) +! CALL POSNAM( TZDESFILE, 'NAM_FLYERS', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_FLYERS) -! CALL POSNAM(ILUSEG,'NAM_AIRCRAFTS',GFOUND,ILUOUT) +! CALL POSNAM(ILUSEG,'NAM_AIRCRAFTS', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_AIRCRAFTS) -! CALL POSNAM(ILUSEG,'NAM_BALLOONS',GFOUND,ILUOUT) +! CALL POSNAM(ILUSEG,'NAM_BALLOONS', GFOUND ) ! IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BALLOONS) END IF ! diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index 9774fc4b9449248108d77ddcd125b765078f816b..358023f5566a3d2a75a507f4a6762d5fc2544e79 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -519,78 +519,78 @@ CALL INIT_NAM_STATIONn CALL INIT_NAM_FIREn ! WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')") -CALL POSNAM(ILUSEG,'NAM_LUNITN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_LUNITN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LUNITn) -CALL POSNAM(ILUSEG,'NAM_CONFN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_CONFN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFn) -CALL POSNAM(ILUSEG,'NAM_DYNN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_DYNN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DYNn) -CALL POSNAM(ILUSEG,'NAM_ADVN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_ADVN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_ADVn) -CALL POSNAM(ILUSEG,'NAM_PARAMN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_PARAMN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAMn) -CALL POSNAM(ILUSEG,'NAM_PARAM_RADN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_RADN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_RADn) #ifdef MNH_ECRAD -CALL POSNAM(ILUSEG,'NAM_PARAM_ECRADN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_ECRADN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_ECRADn) #endif -CALL POSNAM(ILUSEG,'NAM_PARAM_KAFRN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_KAFRN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_KAFRn) -CALL POSNAM(ILUSEG,'NAM_PARAM_MFSHALLN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_MFSHALLN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_MFSHALLn) -CALL POSNAM(ILUSEG,'NAM_LBCN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_LBCN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LBCn) -CALL POSNAM(ILUSEG,'NAM_NUDGINGN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_NUDGINGN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_NUDGINGn) -CALL POSNAM(ILUSEG,'NAM_TURBN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_TURBN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURBn) -CALL POSNAM(ILUSEG,'NAM_DRAGN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_DRAGN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGn) -CALL POSNAM(ILUSEG,'NAM_IBM_PARAMN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_IBM_PARAMN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_IBM_PARAMn) -CALL POSNAM(ILUSEG,'NAM_RECYCL_PARAMN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_RECYCL_PARAMN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_RECYCL_PARAMn) -CALL POSNAM(ILUSEG,'NAM_CH_MNHCN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_CH_MNHCN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_MNHCn) -CALL POSNAM(ILUSEG,'NAM_CH_SOLVERN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_CH_SOLVERN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_SOLVERn) -CALL POSNAM(ILUSEG,'NAM_SERIESN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_SERIESN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SERIESn) -CALL POSNAM(ILUSEG,'NAM_BLANKN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_BLANKN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLANKn) -CALL POSNAM(ILUSEG,'NAM_BLOWSNOWN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_BLOWSNOWN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOWn) -CALL POSNAM(ILUSEG,'NAM_DRAGTREEN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_DRAGTREEN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGTREEn) -CALL POSNAM(ILUSEG,'NAM_DRAGBLDGN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_DRAGBLDGN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DRAGBLDGn) -CALL POSNAM(ILUSEG,'NAM_EOL',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_EOL', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL) -CALL POSNAM(ILUSEG,'NAM_EOL_ADNR',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_EOL_ADNR', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ADNR) -CALL POSNAM(ILUSEG,'NAM_EOL_ADR',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_EOL_ADR', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ADR) -CALL POSNAM(ILUSEG,'NAM_EOL_ALM',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_EOL_ALM', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ALM) -CALL POSNAM(ILUSEG,'NAM_PROFILERN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_PROFILERN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PROFILERn) -CALL POSNAM(ILUSEG,'NAM_STATIONN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_STATIONN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn) -CALL POSNAM(ILUSEG,'NAM_FIREN',GFOUND,ILUOUT) +CALL POSNAM( TPEXSEGFILE, 'NAM_FIREN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIREn) ! IF (KMI == 1) THEN WRITE(UNIT=ILUOUT,FMT="(' namelists common to all the models ')") - CALL POSNAM(ILUSEG,'NAM_CONF',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_CONF', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONF) - CALL POSNAM(ILUSEG,'NAM_CONFZ',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFZ) - CALL POSNAM(ILUSEG,'NAM_DYN',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_DYN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DYN) - CALL POSNAM(ILUSEG,'NAM_NESTING',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_NESTING', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_NESTING) - CALL POSNAM(ILUSEG,'NAM_BACKUP',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BACKUP', GFOUND ) IF (GFOUND) THEN !Should have been allocated before in READ_DESFM_n IF (.NOT.ALLOCATED(XBAK_TIME)) THEN @@ -615,14 +615,14 @@ IF (KMI == 1) THEN END IF READ(UNIT=ILUSEG,NML=NAM_BACKUP) ELSE - CALL POSNAM(ILUSEG,'NAM_FMOUT',GFOUND) + CALL POSNAM( TPEXSEGFILE, 'NAM_FMOUT', GFOUND ) IF (GFOUND) THEN CALL PRINT_MSG(NVERB_FATAL,'IO','READ_EXSEG_n','use namelist NAM_BACKUP instead of namelist NAM_FMOUT') ELSE IF (CPROGRAM=='MESONH') CALL PRINT_MSG(NVERB_ERROR,'IO','READ_EXSEG_n','namelist NAM_BACKUP not found') END IF END IF - CALL POSNAM(ILUSEG,'NAM_OUTPUT',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_OUTPUT', GFOUND ) IF (GFOUND) THEN !Should have been allocated before in READ_DESFM_n IF (.NOT.ALLOCATED(XBAK_TIME)) THEN @@ -647,10 +647,10 @@ IF (KMI == 1) THEN END IF READ(UNIT=ILUSEG,NML=NAM_OUTPUT) END IF - CALL POSNAM(ILUSEG,'NAM_BUDGET',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BUDGET', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BUDGET) - CALL POSNAM(ILUSEG,'NAM_BU_RU',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RU', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RU ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RU was already allocated' ) @@ -663,7 +663,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RU(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RV',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RV', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RV ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RV was already allocated' ) @@ -676,7 +676,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RV(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RW',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RW', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RW ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RW was already allocated' ) @@ -689,7 +689,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RW(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RTH',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RTH', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RTH ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RTH was already allocated' ) @@ -702,7 +702,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTH(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RTKE',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RTKE', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RTKE ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RTKE was already allocated' ) @@ -715,7 +715,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTKE(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRV',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRV', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRV ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRV was already allocated' ) @@ -728,7 +728,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRV(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRC',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRC', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRC ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRC was already allocated' ) @@ -741,7 +741,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRC(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRR',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRR', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRR ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRR was already allocated' ) @@ -754,7 +754,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRR(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRI',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRI', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRI ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRI was already allocated' ) @@ -767,7 +767,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRI(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRS',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRS', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRS ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRS was already allocated' ) @@ -780,7 +780,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRS(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRG',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRG', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRG ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRG was already allocated' ) @@ -793,7 +793,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRG(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RRH',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RRH', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RRH ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RRH was already allocated' ) @@ -806,7 +806,7 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRH(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_BU_RSV',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BU_RSV', GFOUND ) IF (GFOUND) THEN IF ( ALLOCATED( CBULIST_RSV ) ) THEN CALL Print_msg( NVERB_WARNING, 'IO', 'READ_EXSEG_n', 'unexpected: CBULIST_RSV was already allocated' ) @@ -819,65 +819,65 @@ IF (KMI == 1) THEN ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RSV(0) ) END IF - CALL POSNAM(ILUSEG,'NAM_LES',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_LES', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LES) - CALL POSNAM(ILUSEG,'NAM_MEAN',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_MEAN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_MEAN) - CALL POSNAM(ILUSEG,'NAM_PDF',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_PDF', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PDF) - CALL POSNAM(ILUSEG,'NAM_FRC',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_FRC', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FRC) - CALL POSNAM(ILUSEG,'NAM_PARAM_ICE',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_ICE', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_ICE) - CALL POSNAM(ILUSEG,'NAM_PARAM_C2R2',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_C2R2', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_C2R2) - CALL POSNAM(ILUSEG,'NAM_PARAM_C1R3',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_C1R3', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_C1R3) - CALL POSNAM(ILUSEG,'NAM_PARAM_LIMA',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_PARAM_LIMA', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_LIMA) - CALL POSNAM(ILUSEG,'NAM_ELEC',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_ELEC', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_ELEC) - CALL POSNAM(ILUSEG,'NAM_SERIES',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_SERIES', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SERIES) - CALL POSNAM(ILUSEG,'NAM_TURB_CLOUD',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_TURB_CLOUD', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURB_CLOUD) - CALL POSNAM(ILUSEG,'NAM_TURB',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_TURB', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_TURB) - CALL POSNAM(ILUSEG,'NAM_CH_ORILAM',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_CH_ORILAM', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CH_ORILAM) - CALL POSNAM(ILUSEG,'NAM_DUST',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_DUST', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_DUST) - CALL POSNAM(ILUSEG,'NAM_SALT',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_SALT', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_SALT) - CALL POSNAM(ILUSEG,'NAM_PASPOL',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_PASPOL', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PASPOL) #ifdef MNH_FOREFIRE - CALL POSNAM(ILUSEG,'NAM_FOREFIRE',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_FOREFIRE', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FOREFIRE) #endif - CALL POSNAM(ILUSEG,'NAM_CONDSAMP',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_CONDSAMP', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONDSAMP) - CALL POSNAM(ILUSEG,'NAM_2D_FRC',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_2D_FRC', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_2D_FRC) - CALL POSNAM(ILUSEG,'NAM_LATZ_EDFLX',GFOUND) + CALL POSNAM( TPEXSEGFILE, 'NAM_LATZ_EDFLX', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LATZ_EDFLX) - CALL POSNAM(ILUSEG,'NAM_BLOWSNOW',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BLOWSNOW', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOW) - CALL POSNAM(ILUSEG,'NAM_VISC',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_VISC', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_VISC) - CALL POSNAM(ILUSEG,'NAM_FLYERS',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_FLYERS', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FLYERS) IF ( NAIRCRAFTS > 0 ) THEN CALL AIRCRAFTS_NML_ALLOCATE( NAIRCRAFTS ) - CALL POSNAM(ILUSEG,'NAM_AIRCRAFTS',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_AIRCRAFTS', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_AIRCRAFTS) END IF IF ( NBALLOONS > 0 ) THEN CALL BALLOONS_NML_ALLOCATE( NBALLOONS ) - CALL POSNAM(ILUSEG,'NAM_BALLOONS',GFOUND,ILUOUT) + CALL POSNAM( TPEXSEGFILE, 'NAM_BALLOONS', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BALLOONS) END IF END IF diff --git a/src/MNH/read_exspa.f90 b/src/MNH/read_exspa.f90 index f2b15fa20424d42bb1a3d96e232ad0ad479b5926..dd261a9bc94cb7e5443222203b5816a8a655c1d3 100644 --- a/src/MNH/read_exspa.f90 +++ b/src/MNH/read_exspa.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. @@ -225,18 +225,18 @@ IXOR=NUNDEF IYOR=NUNDEF GBAL_ONLY=.FALSE. ! -CALL POSNAM(ILUSPA,'NAM_GRID2_SPA',GFOUND,ILUOUT) +CALL POSNAM( TZNMLFILE, 'NAM_GRID2_SPA', GFOUND ) IF (GFOUND) READ(ILUSPA,NAM_GRID2_SPA) ! CINIFILE = LUNIT_MODEL(1)%CINIFILE !To respect default values CINIFILEPGD = LUNIT_MODEL(1)%CINIFILEPGD !To respect default values ! -CALL POSNAM(ILUSPA,'NAM_LUNIT2_SPA',GFOUND,ILUOUT) +CALL POSNAM( TZNMLFILE, 'NAM_LUNIT2_SPA', GFOUND ) IF (GFOUND) READ(ILUSPA,NAM_LUNIT2_SPA) LUNIT_MODEL(2)%CINIFILE = CINIFILE LUNIT_MODEL(2)%CINIFILEPGD = CINIFILEPGD ! -CALL POSNAM(ILUSPA,'NAM_CONFIO',GFOUND,ILUOUT) +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(ILUSPA,NAM_CONFIO) ! CALL IO_Config_set() diff --git a/src/MNH/read_pre_idea_namn.f90 b/src/MNH/read_pre_idea_namn.f90 index 7dcd303219b515d6050d7dd1bc03c781592d60ea..3a63a6b67450af94614043b6a54bb7f2aa2dc521 100644 --- a/src/MNH/read_pre_idea_namn.f90 +++ b/src/MNH/read_pre_idea_namn.f90 @@ -1,46 +1,45 @@ -!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 newsrc 2006/06/06 11:10:18 -!----------------------------------------------------------------- !#################################### MODULE MODI_READ_PRE_IDEA_NAM_n !#################################### INTERFACE - SUBROUTINE READ_PRE_IDEA_NAM_n(KLUPRE,KLUOUT) - INTEGER,INTENT(IN) :: KLUPRE,KLUOUT ! Logical unit numbers for EXPRE file - ! and for output_listing file + SUBROUTINE READ_PRE_IDEA_NAM_n( TPFILEPRE ) + USE MODD_IO, ONLY: TFILEDATA + + TYPE(TFILEDATA), INTENT(IN) :: TPFILEPRE ! EXPRE file END SUBROUTINE READ_PRE_IDEA_NAM_n END INTERFACE ! END MODULE MODI_READ_PRE_IDEA_NAM_n ! ! -! ############################################# - SUBROUTINE READ_PRE_IDEA_NAM_n(KLUPRE,KLUOUT) -! ############################################# +! ########################################### + SUBROUTINE READ_PRE_IDEA_NAM_n( TPFILEPRE ) +! ########################################### -USE MODD_DIM_n, ONLY: NIMAX_n=>NIMAX, NJMAX_n=>NJMAX -USE MODD_DYN_n, ONLY: CPRESOPT_n=>CPRESOPT,NITR_n=>NITR,XRELAX_n=>XRELAX, & - LRES_n=>LRES,XRES_n=>XRES -USE MODD_LBC_n, ONLY: CLBCX_n=>CLBCX,CLBCY_n=>CLBCY -USE MODD_CH_MNHC_n, ONLY: LCH_INIT_FIELD_n=>LCH_INIT_FIELD, & +USE MODD_CH_AEROSOL, ONLY: LORILAM +USE MODD_CH_MNHC_n, ONLY: LCH_INIT_FIELD_n=>LCH_INIT_FIELD, & CCHEM_INPUT_FILE_n=>CCHEM_INPUT_FILE -USE MODD_PARAM_n, ONLY: CSURF_n=>CSURF -USE MODD_CH_AEROSOL, ONLY : LORILAM -USE MODN_LUNIT_n ! Namelist modules -USE MODN_CONF_n +USE MODD_DIM_n, ONLY: NIMAX_n=>NIMAX, NJMAX_n=>NJMAX +USE MODD_DYN_n, ONLY: CPRESOPT_n=>CPRESOPT,NITR_n=>NITR,XRELAX_n=>XRELAX, & + LRES_n=>LRES,XRES_n=>XRES +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 MODE_POS -! + +USE MODN_CONF_n +USE MODN_LUNIT_n ! Namelist modules + IMPLICIT NONE -INTEGER,INTENT(IN) :: KLUPRE,KLUOUT ! Logical unit numbers for EXPRE file - ! and for output_listing file -! + +TYPE(TFILEDATA), INTENT(IN) :: TPFILEPRE ! EXPRE file + LOGICAL :: GFOUND ! Return code when searching namelist ! Namelist variables from $n INTEGER :: NIMAX,NJMAX @@ -53,6 +52,8 @@ CHARACTER(LEN=4), DIMENSION(2) :: CLBCX,CLBCY CHARACTER(LEN=5) :: CSURF LOGICAL :: LCH_INIT_FIELD CHARACTER(LEN=80) :: CCHEM_INPUT_FILE + +INTEGER :: ILUPRE ! !* 0.2 Namelist declarations ! @@ -64,29 +65,31 @@ NAMELIST/NAM_CH_MNHCn_PRE/ LCH_INIT_FIELD, CCHEM_INPUT_FILE, LORILAM ! !------------------------------------------------------------------------------ ! +ILUPRE = TPFILEPRE%NLU + CALL INIT_NMLVAR -CALL POSNAM(KLUPRE,'NAM_DIMN_PRE',GFOUND,KLUOUT) -IF (GFOUND) READ(UNIT=KLUPRE,NML=NAM_DIMn_PRE) -CALL POSNAM(KLUPRE,'NAM_DYNN_PRE',GFOUND,KLUOUT) -IF (GFOUND) READ(UNIT=KLUPRE,NML=NAM_DYNn_PRE) -CALL POSNAM(KLUPRE,'NAM_LBCN_PRE',GFOUND,KLUOUT) -IF (GFOUND) READ(UNIT=KLUPRE,NML=NAM_LBCn_PRE) -CALL POSNAM(KLUPRE,'NAM_GRN_PRE',GFOUND,KLUOUT) -IF (GFOUND) READ(UNIT=KLUPRE,NML=NAM_GRn_PRE) -CALL POSNAM(KLUPRE,'NAM_CH_MNHCN_PRE',GFOUND,KLUOUT) -IF (GFOUND) READ(UNIT=KLUPRE,NML=NAM_CH_MNHCn_PRE) +CALL POSNAM( TPFILEPRE, 'NAM_DIMN_PRE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUPRE,NML=NAM_DIMn_PRE) +CALL POSNAM( TPFILEPRE, 'NAM_DYNN_PRE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUPRE,NML=NAM_DYNn_PRE) +CALL POSNAM( TPFILEPRE, 'NAM_LBCN_PRE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUPRE,NML=NAM_LBCn_PRE) +CALL POSNAM( TPFILEPRE, 'NAM_GRN_PRE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUPRE,NML=NAM_GRn_PRE) +CALL POSNAM( TPFILEPRE, 'NAM_CH_MNHCN_PRE', GFOUND ) +IF (GFOUND) READ(UNIT=ILUPRE,NML=NAM_CH_MNHCn_PRE) CALL UPDATE_MODD_FROM_NMLVAR ! -CALL POSNAM(KLUPRE,'NAM_CONFN',GFOUND,KLUOUT) +CALL POSNAM( TPFILEPRE, 'NAM_CONFN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_CONFn - READ(UNIT=KLUPRE,NML=NAM_CONFn) + READ(UNIT=ILUPRE,NML=NAM_CONFn) CALL UPDATE_NAM_CONFn END IF -CALL POSNAM(KLUPRE,'NAM_LUNITN',GFOUND,KLUOUT) +CALL POSNAM( TPFILEPRE, 'NAM_LUNITN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_LUNITn - READ(UNIT=KLUPRE,NML=NAM_LUNITn) + READ(UNIT=ILUPRE,NML=NAM_LUNITn) CALL UPDATE_NAM_LUNITn END IF diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90 index 1edbd37ea3454d67c936de76de48764fde5b82c4..8c50f5066455b1cc22baee15c1b271fb8b20b324 100644 --- a/src/MNH/read_surf_mnh.f90 +++ b/src/MNH/read_surf_mnh.f90 @@ -1373,7 +1373,7 @@ IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NM ELSE CGROUND='NONE' ILUDES = TPINFILE%TDESFILE%NLU - CALL POSNAM(ILUDES,'NAM_PARAMN',GFOUND,ILUOUT) + CALL POSNAM( TPINFILE%TDESFILE, 'NAM_PARAMN', GFOUND ) IF (GFOUND) READ(UNIT=ILUDES,NML=NAM_PARAMn) END IF IF (CGROUND=='NONE') THEN diff --git a/src/MNH/read_ver_grid.f90 b/src/MNH/read_ver_grid.f90 index fe77bede8d2330f95569ae06ff2f745250e362ad..2b28a476beebf3d0346f70bd7ea95c4241777631 100644 --- a/src/MNH/read_ver_grid.f90 +++ b/src/MNH/read_ver_grid.f90 @@ -186,7 +186,7 @@ CALL DEFAULT_SLEVE(LSLEVE,XLEN1,XLEN2) ! ------------------- ! NKMAX=NKMAX_n -CALL POSNAM(IPRE_REAL1,'NAM_VER_GRID',GFOUND,ILUOUT0) +CALL POSNAM( TPPRE_REAL1, 'NAM_VER_GRID', GFOUND ) IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_VER_GRID) NKMAX_n = NKMAX LSLEVE_n = LSLEVE @@ -196,7 +196,7 @@ XLEN2_n = XLEN2 IF (CPROGRAM=='REAL ') THEN IF (ASSOCIATED (XZHAT) ) DEALLOCATE(XZHAT) IF (ASSOCIATED (XZHATM) ) DEALLOCATE(XZHATM) - CALL POSNAM(IPRE_REAL1,'NAM_BLANKN',GFOUND,ILUOUT0) + CALL POSNAM( TPPRE_REAL1, 'NAM_BLANKN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_BLANKn READ(UNIT=IPRE_REAL1,NML=NAM_BLANKn) diff --git a/src/MNH/reset_exseg.f90 b/src/MNH/reset_exseg.f90 index 0d06d2be3cbadabfab8ce39faa44c18c8f496bcc..b467f7c05123f190f3c63c50506cf111bdbd110f 100644 --- a/src/MNH/reset_exseg.f90 +++ b/src/MNH/reset_exseg.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-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. @@ -115,7 +115,7 @@ ILUNAM = TZNMLFILE%NLU ! Meso-NH to store these diagnostics must be allocated by the ini_model1 subroutine ! IF (NCONV_KF>=0) THEN - CALL POSNAM(ILUNAM,'NAM_PARAM_KAFRN',GFOUND) + CALL POSNAM( TZNMLFILE, 'NAM_PARAM_KAFRN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_PARAM_KAFRn READ(UNIT=ILUNAM,NML=NAM_PARAM_KAFRN) @@ -149,7 +149,7 @@ IF (CRAD=='NONE') THEN END IF ! IF(NRAD_3D>=1) THEN - CALL POSNAM(ILUNAM,'NAM_PARAM_RADN',GFOUND) + CALL POSNAM( TZNMLFILE, 'NAM_PARAM_RADN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_PARAM_RADn READ(UNIT=ILUNAM,NML=NAM_PARAM_RADN) @@ -157,7 +157,7 @@ IF(NRAD_3D>=1) THEN IF ( IP == 1 ) PRINT*, ' namelist NAM_PARAM_RADN read' END IF #ifdef MNH_ECRAD - CALL POSNAM(ILUNAM,'NAM_PARAM_ECRADN',GFOUND) + CALL POSNAM( TZNMLFILE, 'NAM_PARAM_ECRADN', GFOUND ) IF (GFOUND) THEN CALL INIT_NAM_PARAM_EcRADn READ(UNIT=ILUNAM,NML=NAM_PARAM_ECRADN) @@ -193,7 +193,7 @@ IF ( IP == 1 ) PRINT*,' ' ! !* 5. For retrotrajectories in // , reset NHALO >> 1 if needed from NAM_CONF_DIAG ! --------------------------------------------------- -CALL POSNAM(ILUNAM,'NAM_CONF_DIAG',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONF_DIAG', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_CONF_DIAG) END IF diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90 index 7c4ea5e2e9c224c4d9d1d2022b8fcc0c372d1d8f..c35565007fafde5c4cdbd48aba59de67dbba2bd3 100644 --- a/src/MNH/set_perturb.f90 +++ b/src/MNH/set_perturb.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2022 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. @@ -211,7 +211,7 @@ NAMELIST/NAM_PERT_PRE/CPERT_KIND,XAMPLITH, &! Perturbation parameters ILUPRE = TPEXPREFILE%NLU ILUOUT = TLUOUT%NLU ! -CALL POSNAM(ILUPRE,'NAM_PERT_PRE',GFOUND,ILUOUT) +CALL POSNAM( TPEXPREFILE, 'NAM_PERT_PRE', GFOUND ) IF (GFOUND) READ(UNIT=ILUPRE,NML=NAM_PERT_PRE) ! ! Distribue/set identical parameter seed to all the proc diff --git a/src/MNH/set_subdomain.f90 b/src/MNH/set_subdomain.f90 index ba8bdd4f2c8618bd0072d8100bd07bda3bf5bbf2..60105c54d2d93748d83d35dd2525940994ff9250 100644 --- a/src/MNH/set_subdomain.f90 +++ b/src/MNH/set_subdomain.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. @@ -175,7 +175,7 @@ NYOR=NUNDEF ! ---------------------------- ! ILUNAM = TPNMLFILE%NLU -CALL POSNAM(ILUNAM,'NAM_MESONH_DOM',GFOUND,ILUOUT0) +CALL POSNAM( TPNMLFILE, 'NAM_MESONH_DOM', GFOUND ) IF (GFOUND) THEN NIMAX=NIMAX_n ; NJMAX=NJMAX_n READ(UNIT=ILUNAM,NML=NAM_MESONH_DOM) diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90 index f0ef283104e3c88829e862df850bdd5a11a39c2e..d073818d1e3a450d657454afbf24754c27213a1c 100644 --- a/src/MNH/spawning.f90 +++ b/src/MNH/spawning.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. @@ -190,18 +190,18 @@ CALL IO_File_open(TZEXPAFILE) ILUSPA = TZEXPAFILE%NLU ! CALL INIT_NMLVAR -CALL POSNAM(ILUSPA,'NAM_SPAWN_SURF',GFOUND) +CALL POSNAM( TZEXPAFILE, 'NAM_SPAWN_SURF', GFOUND ) IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_SPAWN_SURF) CALL UPDATE_MODD_FROM_NMLVAR -CALL POSNAM(ILUSPA,'NAM_BLANKN',GFOUND) +CALL POSNAM( TZEXPAFILE, 'NAM_BLANKN', GFOUND ) CALL INIT_NAM_BLANKn IF (GFOUND) THEN READ(UNIT=ILUSPA,NML=NAM_BLANKn) CALL UPDATE_NAM_BLANKn END IF -CALL POSNAM(ILUSPA,'NAM_CONFZ',GFOUND) +CALL POSNAM( TZEXPAFILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_CONFZ) -CALL POSNAM(ILUSPA,'NAM_CONF_SPAWN',GFOUND) +CALL POSNAM( TZEXPAFILE, 'NAM_CONF_SPAWN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_CONF_SPAWN) CALL IO_File_close(TZEXPAFILE) ! @@ -241,7 +241,7 @@ ILUSPA = TZEXPAFILE%NLU CALL SET_POINTERS_TO_MODEL1() CALL GOTO_MODEL(2) CALL INIT_NMLVAR -CALL POSNAM(ILUSPA,'NAM_SPAWN_SURF',GFOUND) +CALL POSNAM( TZEXPAFILE, 'NAM_SPAWN_SURF', GFOUND ) IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_SPAWN_SURF) CALL UPDATE_MODD_FROM_NMLVAR CALL GOTO_MODEL(1) diff --git a/src/MNH/spectre.f90 b/src/MNH/spectre.f90 index a87838c936e9c344c04f5fcc40325dac525eeab5..a6801f1de0a0391f08b41622b673fc1c038da998 100644 --- a/src/MNH/spectre.f90 +++ b/src/MNH/spectre.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2011-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. @@ -126,38 +126,38 @@ ILUNAM = TZNMLFILE%NLU ! PRINT*, 'READ THE SPEC1.NAM FILE' ! -CALL POSNAM(ILUNAM,'NAM_SPECTRE',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_SPECTRE', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_SPECTRE) PRINT*, ' namelist NAM_SPECTRE read' END IF ! ! -CALL POSNAM(ILUNAM,'NAM_SPECTRE_FILE',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_SPECTRE_FILE', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_SPECTRE_FILE) PRINT*, ' namelist NAM_SPECTRE_FILE read' END IF ! -CALL POSNAM(ILUNAM,'NAM_ZOOM_SPECTRE',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_ZOOM_SPECTRE', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_ZOOM_SPECTRE) PRINT*, ' namelist NAM_ZOOM_SPECTRE read' END IF ! -CALL POSNAM(ILUNAM,'NAM_DOMAIN_AROME',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_DOMAIN_AROME', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_DOMAIN_AROME) PRINT*, ' namelist NAM_DOMAIN_AROME read' END IF ! -CALL POSNAM(ILUNAM,'NAM_CONFZ',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONFZ', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_CONFZ) PRINT*, ' namelist NAM_CONFZ read' END IF ! -CALL POSNAM(ILUNAM,'NAM_CONFIO',GFOUND) +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) THEN READ(UNIT=ILUNAM,NML=NAM_CONFIO) PRINT*, ' namelist NAM_CONFIO read' diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90 index 4f0961d8e48419a0a966933dcf1ac64215208bb7..0763fd28301b809b9496f68736e0846dc36fdd8c 100644 --- a/src/MNH/zoom_pgd.f90 +++ b/src/MNH/zoom_pgd.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2005-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2005-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. @@ -137,9 +137,9 @@ ILUNAM = TZNMLFILE%NLU CPGDFILE = 'PGDFILE' ! name of the input file YZOOMFILE = '' YZOOMNBR = '00' -CALL POSNAM(ILUNAM,'NAM_PGDFILE',GFOUND,ILUOUT0) +CALL POSNAM( TZNMLFILE, 'NAM_PGDFILE', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_PGDFILE) -CALL POSNAM(ILUNAM,'NAM_CONFIO',GFOUND,ILUOUT0) +CALL POSNAM( TZNMLFILE, 'NAM_CONFIO', GFOUND ) IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_CONFIO) CALL IO_Config_set() ! diff --git a/src/PHYEX/micro/mode_ice4_budgets.f90 b/src/PHYEX/micro/mode_ice4_budgets.f90 index e2d91bd8c7adb3221a2fd53b3655df6f6af066a2..a33b0acf7fca490a07caaa8b10bdb4fb70a89924 100644 --- a/src/PHYEX/micro/mode_ice4_budgets.f90 +++ b/src/PHYEX/micro/mode_ice4_budgets.f90 @@ -1,9 +1,11 @@ -!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. !----------------------------------------------------------------- -! ######spl +! Modifications: +! P. Wautelet 14/04/2023: initialize ZZ_LSFACT and ZZ_LVFACT +!----------------------------------------------------------------- MODULE MODE_ICE4_BUDGETS IMPLICIT NONE CONTAINS @@ -73,7 +75,9 @@ IIJE=D%NIJE ZINV_TSTEP=1./PTSTEP ! IF (BUCONF%LBUDGET_TH) THEN - ZZ_DIFF(:,:)=0. + ZZ_DIFF(:,:) = 0. + ZZ_LSFACT(:,:) = 0. + ZZ_LVFACT(:,:) = 0. DO JK = IKTB, IKTE DO JIJ = IIJB, IIJE ZZ_LVFACT(JIJ, JK) = PLVFACT(JIJ, JK) / PEXNREF(JIJ, JK) diff --git a/src/PHYEX/turb/mode_tke_eps_sources.f90 b/src/PHYEX/turb/mode_tke_eps_sources.f90 index aef4003ca11c629af10bfa8336bd7f91821fc6ff..7e1adeafbf71d858fe19dc8b108d88e26239d9df 100644 --- a/src/PHYEX/turb/mode_tke_eps_sources.f90 +++ b/src/PHYEX/turb/mode_tke_eps_sources.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2022 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. @@ -474,12 +474,12 @@ IF ( TURBN%LTURB_DIAG .AND. TPFILE%LOPENED ) THEN ! stores the dynamic production ! TZFIELD = TFIELDMETADATA( & - CMNHNAME = 'DP', & + CMNHNAME = 'TKE_DP', & CSTDNAME = '', & - CLONGNAME = 'DP', & + CLONGNAME = 'Subgrid TKE dynamical production', & CUNITS = 'm2 s-3', & CDIR = 'XY', & - CCOMMENT = 'X_Y_Z_DP', & + CCOMMENT = 'Subgrid dynamical production of TKE', & NGRID = 1, & NTYPE = TYPEREAL, & NDIMS = 3, & @@ -489,12 +489,12 @@ IF ( TURBN%LTURB_DIAG .AND. TPFILE%LOPENED ) THEN ! stores the thermal production ! TZFIELD = TFIELDMETADATA( & - CMNHNAME = 'TP', & + CMNHNAME = 'TKE_TP', & CSTDNAME = '', & - CLONGNAME = 'TP', & + CLONGNAME = 'Subgrid TKE thermal production', & CUNITS = 'm2 s-3', & CDIR = 'XY', & - CCOMMENT = 'X_Y_Z_TP', & + CCOMMENT = 'Subgrid thermal production of TKE', & NGRID = 1, & NTYPE = TYPEREAL, & NDIMS = 3, & @@ -504,12 +504,12 @@ IF ( TURBN%LTURB_DIAG .AND. TPFILE%LOPENED ) THEN ! stores the whole turbulent transport ! TZFIELD = TFIELDMETADATA( & - CMNHNAME = 'TR', & + CMNHNAME = 'TKE_TR', & CSTDNAME = '', & - CLONGNAME = 'TR', & + CLONGNAME = 'Subgrid TKE turbulent transport', & CUNITS = 'm2 s-3', & CDIR = 'XY', & - CCOMMENT = 'X_Y_Z_TR', & + CCOMMENT = 'Subgrid total turbulent transport of TKE', & NGRID = 1, & NTYPE = TYPEREAL, & NDIMS = 3, & @@ -519,12 +519,12 @@ IF ( TURBN%LTURB_DIAG .AND. TPFILE%LOPENED ) THEN ! stores the dissipation of TKE ! TZFIELD = TFIELDMETADATA( & - CMNHNAME = 'DISS', & + CMNHNAME = 'TKE_DISS', & CSTDNAME = '', & - CLONGNAME = 'DISS', & + CLONGNAME = 'Subgrid TKE dissipation', & CUNITS = 'm2 s-3', & CDIR = 'XY', & - CCOMMENT = 'X_Y_Z_DISS', & + CCOMMENT = 'Subgrid dissipation of TKE', & NGRID = 1, & NTYPE = TYPEREAL, & NDIMS = 3, & diff --git a/src/SURFEX/mode_pos_surf.F90 b/src/SURFEX/mode_pos_surf.F90 index 478ee2034e3b350f6b3e2d92e8770f506c3fba0b..dfb6b2f73dfcde2dbde801ffb085e1d89358fbe4 100644 --- a/src/SURFEX/mode_pos_surf.F90 +++ b/src/SURFEX/mode_pos_surf.F90 @@ -1,4 +1,4 @@ -!SFX_LIC Copyright 2001-2019 CNRS, Meteo-France and Universite Paul Sabatier +!SFX_LIC Copyright 2001-2023 CNRS, Meteo-France and Universite Paul Sabatier !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. @@ -53,8 +53,13 @@ END INTERFACE !! -------------- !! I. Mallet 15/10/01 adaptation to MesoNH (F90 norm) !! P. Wautelet 22/01/2019 use standard FLUSH statement instead of non standard intrinsics +!! P. Wautelet 12/04/2023: POSNAM: modernisation + improvements (taken from MesoNH mode_pos.f90) !------------------------------------------------------------------------------ ! +#ifdef SFX_MNH +USE MODE_MSG +#endif +! IMPLICIT NONE ! !* 0. DECLARATIONS @@ -69,6 +74,7 @@ INTEGER, OPTIONAL,INTENT(IN) :: KLUOUT ! !* 0.2 Declarations of local variables ! + CHARACTER(LEN=100) :: YERRORMSG CHARACTER(LEN=120) :: YLINE CHARACTER(LEN=1) :: YLTEST INTEGER :: ILEN,ILEY,INDL,IND1,IRET @@ -92,22 +98,26 @@ ILEN=LEN(HDNAML) DO JFILE=1,2 search_nam : DO YLINE=' ' - READ(UNIT=KULNAM,FMT='(A)',IOSTAT=IRET,END=100) YLINE + READ ( UNIT=KULNAM, FMT='(A)', IOSTAT=IRET, IOMSG=YERRORMSG, END=100 ) YLINE ! If file does not exist, most compilers would just create it and jump ! to the END label ; but a few of them would report an error: IF (IRET /=0 ) THEN +#ifndef SFX_MNH INQUIRE(KULNAM,OPENED=LLOPENED) IF (LLOPENED) THEN IF (PRESENT(KLUOUT)) THEN WRITE(KLUOUT,FMT=*) 'MODE_POS_SURF : error reading from unit ',& KULNAM,' file ',HDNAML,' line ',YLINE FLUSH(unit=KLUOUT) - ENDIF + ENDIF CALL ABOR1_SFX('MODE_POS_SURF: read error in namelist file') ELSE EXIT search_nam END IF +#else + call Print_msg( NVERB_ERROR, 'IO', 'POSNAM (SFX)', Trim( HDNAML) // ': read error:' // Trim( YERRORMSG ) ) +#endif ELSE ! FIRST SEARCH for "&" IN THE LINE, THEN CORRECT LINE AND TEST : INDL=INDEX(YLINE,'&') @@ -120,12 +130,30 @@ DO JFILE=1,2 END DO IND1=INDEX(YLINE,'&'//HDNAML) IF(IND1.NE.0) THEN + IF( IND1 > 1 ) THEN + IF ( LEN_TRIM( YLINE(:IND1-1) ) /= 0 ) THEN + ! Check that it is really the beginning of a namelist and that is not a comment + ! Nothing but spaces is allowed here +#ifdef SFX_MNH + call Print_msg( NVERB_DEBUG, 'IO', 'POSNAM (SFX)', 'invalid header or commented namelist: ' // Trim ( YLINE) ) +#endif + CYCLE + END IF + END IF YLTEST=YLINE(IND1+ILEN+1:IND1+ILEN+1) IF(YLTEST == ' ') THEN ! NAMELIST FOUND : RETURN BACKSPACE(KULNAM) OFOUND=.TRUE. +#ifndef SFX_MNH IF (PRESENT(KLUOUT)) WRITE(KLUOUT,FMT=*) '-- namelist ',HDNAML,' read' +#else + IF ( PRESENT( KLUOUT ) ) THEN + call Print_msg( NVERB_INFO, 'IO', 'POSNAM (SFX)', 'namelist ' // Trim( HDNAML ) // ' found' ) + ELSE + call Print_msg( NVERB_DEBUG, 'IO', 'POSNAM (SFX)', 'namelist ' // Trim( HDNAML ) // ' found' ) + END IF +#endif IF (LHOOK) CALL DR_HOOK('MODE_POS_SURF:POSNAM',1,ZHOOK_HANDLE) RETURN ENDIF @@ -139,9 +167,19 @@ ENDDO BACKSPACE(KULNAM) ! end of file: namelist name not found +#ifndef SFX_MNH IF (PRESENT(KLUOUT)) & WRITE(KLUOUT,FMT=*) & '-- namelist ',HDNAML,' not found: default values used if required' +#else +IF ( PRESENT( KLUOUT ) ) THEN + call Print_msg( NVERB_INFO, 'IO', 'POSNAM (SFX)', 'namelist ' // Trim( HDNAML ) & + // ' not found: default values used if required' ) +ELSE + call Print_msg( NVERB_DEBUG, 'IO', 'POSNAM (SFX)', 'namelist ' // Trim( HDNAML ) & + // ' not found: default values used if required' ) +END IF +#endif IF (LHOOK) CALL DR_HOOK('MODE_POS_SURF:POSNAM',1,ZHOOK_HANDLE) !------------------------------------------------------------------ END SUBROUTINE POSNAM diff --git a/src/configure b/src/configure index caecb21e36aec3e5af8f40b05e4b9ffa1cf0713f..d4f5e1d3d93c2d27ac95f29e964c92b0449e773a 100755 --- a/src/configure +++ b/src/configure @@ -480,7 +480,7 @@ export SLURM_CPU_BIND=none export I_MPI_PIN_PROCESSOR_LIST=all:map=spread "} ;; -'Linux irlin'*|'Linux islin'*|'Linux ener440'*) # PC IFPEN +'Linux irlin'*|'Linux islin'*|'Linux ener'*) # PC IFPEN export ARCH=${ARCH:-LXgfortran} export VER_MPI=${VER_MPI:-MPIAUTO} export OPTLEVEL=${OPTLEVEL:-O2} diff --git a/src/job_make_mesonh_dev_pc_ifpen b/src/job_make_mesonh_dev_pc_ifpen index dacd453cbb27318ceff7442765a17a0eca87dda1..dd377ddac7dd0d438bac2614fd5e090acc6a94ed 100755 --- a/src/job_make_mesonh_dev_pc_ifpen +++ b/src/job_make_mesonh_dev_pc_ifpen @@ -14,7 +14,7 @@ export VER_MPI=MPIAUTO export OPTLEVEL=DEBUG # Test de l'existence du profile -if ! [ -e ../conf/profile_mesonh-${ARCH}-R8I4-${VERSION_XYZ}-${VER_MPI}-${OPTLEVEL}]; then +if ! [ -e ../conf/profile_mesonh-${ARCH}-R8I4-${VERSION_XYZ}-${VER_MPI}-${OPTLEVEL} ]; then ./configure fi