diff --git a/src/MNH/flat_invz.f90 b/src/MNH/flat_invz.f90 index b7b38a84621ae4f99a90aba6f437f0b71b6b6f78..2d5febdf09b89f3b595a6db31d0f78ddb3384d8d 100644 --- a/src/MNH/flat_invz.f90 +++ b/src/MNH/flat_invz.f90 @@ -127,6 +127,7 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & !! Modification Lugato, Guivarch (June 1998) Parallelisation !! Escobar, Stein (July 2000) optimisation ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -140,7 +141,7 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & USE MODD_ARGSLIST_ll, ONLY : LIST_ll !JUAN Z_SPLI USE MODE_SPLITTINGZ_ll - USE MODD_VAR_ll, ONLY : IP , NTRANS_COM +! USE MODD_VAR_ll, ONLY : IP , NTRANS_COM USE MODD_CONFZ , ONLY : NZ_SPLITTING ! for debug IZ=1=flat_inv; IZ=2=flat_invz ; IZ=1+2=the two USE MODD_TIMEZ , ONLY : TIMEZ USE MODE_MNH_TIMING @@ -206,16 +207,12 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & INTEGER :: IKB ! indice K for the first inner mass point along z INTEGER :: IKE ! indice K for the last inner mass point along z INTEGER :: IKU ! size of the arrays along z - INTEGER :: IKMAX ! number of inner mass points along the z direction ! REAL :: ZDXM2,ZDYM2 ! respectively equal to PDXHATM*PDXHATM ! and PDYHATM*PDYHATM INTEGER :: JI,JJ,JK ! loop indexes along x, y, z respectively ! ! - INTEGER :: IIE_INT,IJE_INT ! highest indice I and J values for the x y modes. - ! They depend on the l.b.c. ! - ! INTEGER :: ILOTX,ILOTY ! number of data vectors along x, y resp. computed ! in parallel during the FFT process ! @@ -261,7 +258,7 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & ! ! ! - INTEGER :: IH ! HALO to use +! INTEGER :: IH ! HALO to use INTEGER :: II_B ,IJ_B ,IK_B ! dimensions of B slices INTEGER :: II_SXP1_YP2_Z,IJ_SXP1_YP2_Z,IK_SXP1_YP2_Z ! dimensions of SXP1_YP2_Z slices INTEGER :: II_SXP2_YP1_Z,IJ_SXP2_YP1_Z,IK_SXP2_YP1_Z ! dimensions of SXP2_YP1_Z slices @@ -278,7 +275,6 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK_SX_YP2_ZP1 ! work array for SX_YP2_ZP1 FFT REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK_SXP2_Y_ZP1 ! work array for SXP2_Y_ZP1 FFT - REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK_SXP2_Y_ZP1R ! work array for SXP2_Y_ZP1 FFT REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZBAND_SXP2_Y_ZP1T ! array in SXP2_Y_ZP1T slices distribution transpose REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZBAND_SXP2_Y_ZP1RT ! array in SXP2_Y_ZP1T slices distribution transpose REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZAF_B ! work array in B slices for expand PAF @@ -293,11 +289,8 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZBAND_SXP2_YP1_ZR REAL, DIMENSION(:,:) , ALLOCATABLE :: ZBETX_SXP2_YP1_Z ! - ! UPDATE HALO --> pour voir si ca marche - TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange - ! INTEGER :: IIBI,IJBI,IIEI,IJEI - INTEGER :: IERROR +! INTEGER :: IERROR !JUAN !------------------------------------------------------------------------------- ! @@ -316,7 +309,6 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & IKU=SIZE(PY,3) IKB=1+JPVEXT IKE=IKU - JPVEXT - IKMAX=IKE-IKB+1 ! ! IF ( IAND(NZ_SPLITTING,1) > 0 ) THEN diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 62002a731c199d67d89665d367de2054bcd26f83..4678c605673b913b6be87dc70e12572429f90773 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -285,6 +285,7 @@ END MODULE MODI_INI_MODEL_n !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes ! P. Wautelet 14/03/2019: correct ZWS when variable not present in file (set to XZWS_DEFAULT) ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -316,7 +317,7 @@ USE MODD_REF USE MODD_SERIES, ONLY: LSERIES USE MODD_TIME USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI -USE MODD_NESTING +USE MODD_NESTING, only: CDAD_NAME, NDAD, NDT_2_WAY, NDTRATIO, NDXRATIO_ALL, NDYRATIO_ALL USE MODD_PASPOL USE MODD_DRAGTREE USE MODD_METRICS_n @@ -338,13 +339,12 @@ USE MODD_DIM_n USE MODD_BUDGET USE MODD_RADIATIONS_n USE MODD_SHADOWS_n -USE MODD_PARAM_RAD_n, ONLY : CLW, CAER, CAOP +USE MODD_PARAM_RAD_n, ONLY: CAER, CLW USE MODD_VAR_ll, ONLY : IP ! USE MODD_STAND_ATM, ONLY : XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM -USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, & - CCHEM_INPUT_FILE, LCH_CONV_LINOX, & - XCH_TUV_DOBNEW, LCH_PH, CSPEC_BUDGET, CSPEC_PRODLOSS +USE MODD_CH_MNHC_n, ONLY: LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, & + LCH_CONV_LINOX, XCH_TUV_DOBNEW, LCH_PH USE MODD_CH_PH_n USE MODD_CH_AEROSOL, ONLY : LORILAM USE MODD_CH_AERO_n, ONLY : XSOLORG,XMI @@ -366,7 +366,7 @@ USE MODD_CONF_n USE MODD_GET_n USE MODD_TURB_n USE MODD_CTURB -USE MODD_LBC_n +USE MODD_LBC_n, only: CLBCX, CLBCY USE MODD_PASPOL_n USE MODD_DRAG_n USE MODD_BLOWSNOW @@ -441,7 +441,7 @@ USE MODD_ADVFRC_n USE MODD_RELFRC_n USE MODD_2D_FRC USE MODD_IO_SURF_MNH, ONLY : IO_SURF_MNH_MODEL -USE MODD_IO, ONLY: CIO_DIR, TFILEDATA, TFILE_DUMMY, TFILE_FIRST, TFILE_LAST +USE MODD_IO, ONLY: CIO_DIR, TFILEDATA, TFILE_DUMMY ! USE MODD_CH_PRODLOSSTOT_n USE MODI_CH_INIT_PRODLOSSTOT_n @@ -1700,12 +1700,7 @@ END IF !* 7. INITIALIZE GRIDS AND METRIC COEFFICIENTS ! ---------------------------------------- ! -CALL SET_GRID(KMI,TPINIFILE,IIU,IJU,IKU,NIMAX_ll,NJMAX_ll, & - XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & - XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & - NXOR_ALL(KMI),NYOR_ALL(KMI),NXEND_ALL(KMI),NYEND_ALL(KMI), & - NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI), & - CLBCX,CLBCY, & +CALL SET_GRID(KMI,TPINIFILE,IKU,NIMAX_ll,NJMAX_ll, & XTSTEP,XSEGLEN, & XLONORI,XLATORI,XLON,XLAT, & XXHAT,XYHAT,XDXHAT,XDYHAT, XMAP, & diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90 index 6218b69882c2f03d7fe8c79faede3b2e2487e19d..00aa82518fea1a3cd00e205dac3bd22497af384c 100644 --- a/src/MNH/ini_spectren.f90 +++ b/src/MNH/ini_spectren.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2015-2019 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,9 +35,10 @@ END MODULE MODI_INI_SPECTRE_n !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 08/02/2019: allocate to zero-size non associated pointers ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables -!! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes +! S. Bielli 02/2019: sea salt: significant sea wave height influences salt emission; 5 salt modes ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -!! +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables +! !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -49,8 +50,7 @@ USE MODD_BUDGET USE MODD_CH_AERO_n, ONLY: XSOLORG,XMI USE MODD_CH_AEROSOL, ONLY: LORILAM USE MODD_CH_MNHC_n, ONLY: LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, & - CCHEM_INPUT_FILE, LCH_CONV_LINOX, & - XCH_TUV_DOBNEW, LCH_PH + LCH_CONV_LINOX, XCH_TUV_DOBNEW, LCH_PH USE MODD_CH_PH_n USE MODD_CLOUD_MF_n USE MODD_CST @@ -75,13 +75,13 @@ USE MODD_GET_n USE MODD_GRID, ONLY: XLONORI,XLATORI USE MODD_GRID_n USE MODD_IO, ONLY: TFILEDATA -USE MODD_LBC_n +USE MODD_LBC_n, only: CLBCX, CLBCY USE MODD_LSFIELD_n USE MODD_LUNIT_n, ONLY: COUTFILE, TLUOUT USE MODD_MEAN_FIELD USE MODD_MEAN_FIELD_n USE MODD_METRICS_n -USE MODD_NESTING +USE MODD_NESTING, only: CDAD_NAME, NDAD, NDT_2_WAY, NDTRATIO, NDXRATIO_ALL, NDYRATIO_ALL USE MODD_NSV USE MODD_NUDGING_n, ONLY: LNUDGING USE MODD_OUT_n @@ -89,7 +89,6 @@ USE MODD_PARAMETERS USE MODD_PARAM_KAFR_n USE MODD_PARAM_MFSHALL_n USE MODD_PARAM_n -USE MODD_PARAM_RAD_n, ONLY: CLW, CAER USE MODD_PASPOL USE MODD_PASPOL_n USE MODD_BLOWSNOW @@ -705,12 +704,7 @@ CALL INI_BIKHARDT_n (NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),KMI) !* 6. INITIALIZE GRIDS AND METRIC COEFFICIENTS ! ---------------------------------------- ! -CALL SET_GRID(KMI,TPINIFILE,IIU,IJU,IKU,NIMAX_ll,NJMAX_ll, & - XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, & - XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, & - NXOR_ALL(KMI),NYOR_ALL(KMI),NXEND_ALL(KMI),NYEND_ALL(KMI), & - NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI), & - CLBCX,CLBCY, & +CALL SET_GRID(KMI,TPINIFILE,IKU,NIMAX_ll,NJMAX_ll, & XTSTEP,XSEGLEN, & XLONORI,XLATORI,XLON,XLAT, & XXHAT,XYHAT,XDXHAT,XDYHAT, XMAP, & diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 37e126a8af2544f9c6302e4ea5bcfd042fa6db1d..f363d89e81b28494621b2245011f0671e444a5de 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -256,9 +256,9 @@ END MODULE MODI_MODEL_n ! P. Wautelet 07/02/2019: remove OPARALLELIO argument from open and close files subroutines ! (nsubfiles_ioz is now determined in IO_File_add2list) !! 02/2019 C.Lac add rain fraction as an output field -!! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables ! P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -269,18 +269,17 @@ USE MODD_ADV_n USE MODD_AIRCRAFT_BALLOON USE MODD_BAKOUT USE MODD_BIKHARDT_n -USE MODD_BLANK +USE MODD_BLANK USE MODD_BUDGET USE MODD_CH_AERO_n, ONLY: XSOLORG, XMI USE MODD_CH_MNHC_n, ONLY: LUSECHEM,LCH_CONV_LINOX,LUSECHAQ,LUSECHIC, & LCH_INIT_FIELD -USE MODD_CLOUD_MF_n +USE MODD_CLOUD_MF_n USE MODD_VISCOSITY USE MODD_DRAG_n USE MODD_CLOUDPAR_n USE MODD_CONF USE MODD_CONF_n -USE MODD_CST, ONLY: XMD USE MODD_CURVCOR_n USE MODD_DEEP_CONVECTION_n USE MODD_DIM_n @@ -317,9 +316,9 @@ USE MODD_PARAM_C1R3, ONLY: NSEDI => LSEDI, NHHONI => LHHONI USE MODD_PARAM_C2R2, ONLY: NSEDC => LSEDC, NRAIN => LRAIN, NACTIT => LACTIT,LACTTKE,LDEPOC USE MODD_PARAMETERS USE MODD_PARAM_ICE, ONLY: LWARM,LSEDIC,LCONVHG,LDEPOSC -USE MODD_PARAM_LIMA, ONLY: MSEDC => LSEDC, MWARM => LWARM, MRAIN => LRAIN, LACTI, & - MACTIT => LACTIT, LSCAV, NMOD_CCN, LCOLD, & - MSEDI => LSEDI, MHHONI => LHHONI, NMOD_IFN, LHAIL, & +USE MODD_PARAM_LIMA, ONLY: MSEDC => LSEDC, MWARM => LWARM, MRAIN => LRAIN, & + MACTIT => LACTIT, LSCAV, LCOLD, & + MSEDI => LSEDI, MHHONI => LHHONI, LHAIL, & XRTMIN_LIMA=>XRTMIN, MACTTKE=>LACTTKE USE MODD_BLOWSNOW_n USE MODD_BLOWSNOW @@ -361,6 +360,7 @@ USE MODI_ADVECTION_UVW_CEN USE MODI_ADV_FORCING_n USE MODI_AER_MONITOR_n USE MODI_AIRCRAFT_BALLOON +USE MODI_BLOWSNOW USE MODI_BOUNDARIES USE MODI_BUDGET_FLAGS USE MODI_CART_COMPRESS @@ -420,8 +420,6 @@ USE MODI_WRITE_LFIFMN_FORDIACHRO_n USE MODI_WRITE_PROFILER_n USE MODI_WRITE_SERIES_n USE MODI_WRITE_STATION_n -USE MODI_BLOWSNOW - USE MODI_WRITE_SURF_ATM_N ! IMPLICIT NONE @@ -437,10 +435,9 @@ LOGICAL, INTENT(INOUT):: OEXIT ! INTEGER :: ILUOUT ! Logical unit number for the output listing INTEGER :: IIU,IJU,IKU ! array size in first, second and third dimensions -INTEGER :: IIB,IIE,IJB,IJE,IKB,IKE ! index values for the physical subdomain +INTEGER :: IIB,IIE,IJB,IJE ! index values for the physical subdomain INTEGER :: JSV,JRR ! Loop index for scalar and moist variables INTEGER :: INBVAR ! number of HALO2_lls to allocate -INTEGER :: IRESP ! return code in FM routines INTEGER :: IINFO_ll ! return code of parallel routine INTEGER :: IVERB ! LFI verbosity level LOGICAL :: GSTEADY_DMASS ! conditional call to mass computation @@ -451,29 +448,6 @@ REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME_STEP,ZTIME_STEP_PTS CHARACTER :: YMI INTEGER :: IPOINTS CHARACTER(len=16) :: YTCOUNT,YPOINTS - -REAL :: ZSTAT_CSTORE,ZSTAT_CBOUND,ZSTAT_CGUESS,ZSTAT_CADV,ZSTAT_CSOURCES -REAL :: ZSTAT_CDIFF,ZSTAT_CRELAX,ZSTAT_CPARAM -REAL :: ZSTAT_CSPECTRA,ZSTAT_CRAD_BOUND,ZSTAT_CPRESS -REAL :: ZSTAT_CCLOUD,ZSTAT_CSTEP_SWA,ZSTAT_CSTEP_MISC -REAL :: ZSTAT_CCOUPL,ZSTAT_CSTEP_BUD,ZSTAT_CSTEP_CDRAG -REAL :: ZSTAT_CSTEP_CTRACER,ZSTAT_CSTEP_CELEC -REAL :: SCONV_CTURB,ZSTAT_C1WAY,ZSTAT_C2WAY,ZSTAT_CMAFL -REAL :: ZSTAT_CRAD,ZSTAT_CDCONV,ZSTAT_CGROUND,ZSTAT_CHALO -REAL :: ZSTAT_CFORCING,ZSTAT_CNUDGING,ZSTAT_CCHEM -! -REAL :: ZPERCALL,ZPRICE -REAL :: ZPERCSTORE,ZPERCBOUND,ZPERCGUESS,ZPERCADV,ZPERCSOURCES,ZPERCDRAG -REAL :: ZPERCDIFF,ZPERCRELAX,ZPERCPARAM -REAL :: ZPERCSPECTRA,ZPERCRAD_BOUND,ZPERCPRESS -REAL :: ZPERCCLOUD,ZPERCSTEP_SWA,ZPERCSTEP_MISC -REAL :: ZPERCELEC -REAL :: ZPERCCOUPL,ZPERCSTEP_BUD -REAL :: ZPERCTURB,ZPERC1WAY,ZPERC2WAY -REAL :: ZPERCRAD,ZPERCSHADOWS,ZPERCKAFR,ZPERCGROUND,ZPERCHALO,ZPERCMAFL,ZPERTRACER -REAL :: ZPERCFORCING,ZPERCNUDGING,ZPERCCHEM -REAL :: ZTSTEP_UVW ! Double timestep except for cold start (single) -REAL :: ZTSTEP_MET,ZTSTEP_SV ! Effective time step for advection ! INTEGER :: ISYNCHRO ! model synchronic index relative to its father ! = 1 for the first time step in phase with DAD @@ -532,24 +506,12 @@ LOGICAL :: KSEDC LOGICAL :: KACTIT LOGICAL :: KSEDI LOGICAL :: KHHONI -REAL :: TEMPS -INTEGER :: NSV_END -CHARACTER (LEN=100) :: YCOMMENT ! Comment string in LFIFM file -CHARACTER (LEN=LEN_HREC) :: YRECFM ! Name of the desired field in LFIFM file -! -INTEGER :: ILENG ! Length of comment string in LFIFM file -INTEGER :: IGRID ! C-grid indicator in LFIFM file -INTEGER :: ILENCH ! Length of comment string in LFIFM file ! REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZRUS,ZRVS,ZRWS REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZPABST !To give pressure at t ! (and not t+1) to resolved_cloud REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZJ ! -! for various testing -INTEGER :: IK -REAL, DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZTMP -! TYPE(LIST_ll), POINTER :: TZFIELDC_ll ! list of fields to exchange TYPE(HALO2LIST_ll), POINTER :: TZHALO2C_ll ! list of fields to exchange LOGICAL :: GCLD ! conditionnal call for dust wet deposition @@ -614,8 +576,6 @@ ILUOUT = TLUOUT%NLU CALL GET_DIM_EXT_ll('B',IIU,IJU) IKU=NKMAX+2*JPVEXT CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) -IKB=1+JPVEXT -IKE=IKU-JPVEXT ! IF (IMI==1) THEN GSTEADY_DMASS=LSTEADYLS @@ -1121,8 +1081,8 @@ IF (NMODEL>1) THEN DPTR_GMASKkids=>GMASKkids ! CALL TWO_WAY( NRR,NSV,KTCOUNT,DPTR_XRHODJ,IMI,XTSTEP, & - DPTR_XUM ,DPTR_XVM ,DPTR_XWM , DPTR_XTHM, DPTR_XRM, DPTR_XTKEM, DPTR_XSVM, & - DPTR_XRUS,DPTR_XRVS,DPTR_XRWS,DPTR_XRTHS,DPTR_XRRS,DPTR_XRTKES,DPTR_XRSVS, & + DPTR_XUM ,DPTR_XVM ,DPTR_XWM , DPTR_XTHM, DPTR_XRM,DPTR_XSVM, & + DPTR_XRUS,DPTR_XRVS,DPTR_XRWS,DPTR_XRTHS,DPTR_XRRS,DPTR_XRSVS, & DPTR_XINPRC,DPTR_XINPRR,DPTR_XINPRS,DPTR_XINPRG,DPTR_XINPRH,DPTR_XPRCONV,DPTR_XPRSCONV, & DPTR_XDIRFLASWD,DPTR_XSCAFLASWD,DPTR_XDIRSRFSWD,DPTR_GMASKkids ) END IF diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index b5aba7c9534ab6f71a48987110735d6947f14f3e..3422ec0bb0faf09a84b91e15259fc2b29cf7555c 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -315,6 +315,7 @@ ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables ! P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -340,8 +341,7 @@ USE MODD_DYN_n USE MODD_LBC_n USE MODD_LSFIELD_n USE MODD_PARAM_n -USE MODD_CH_MNHC_n, ONLY: LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH, & - LCH_INIT_FIELD, CCHEM_INPUT_FILE +USE MODD_CH_MNHC_n, ONLY: LUSECHEM, LUSECHAQ, LUSECHIC, LCH_PH, LCH_INIT_FIELD USE MODD_CH_AEROSOL,ONLY: LORILAM, CORGANIC, LVARSIGI, LVARSIGJ, LINITPM, XINIRADIUSI, & XINIRADIUSJ, XINISIGI, XINISIGJ, XN0IMIN, XN0JMIN, CRGUNIT USE MODD_DUST, ONLY: LDUST, NMODE_DST, CRGUNITD, XINISIG, XINIRADIUS, XN0MIN @@ -351,8 +351,7 @@ USE MODD_LUNIT, ONLY: TLUOUT0, TOUTDATAFILE USE MODD_LUNIT_n USE MODD_IO, ONLY: NIO_VERB, NVERB_DEBUG, TFILE_DUMMY, TFILE_OUTPUTLISTING USE MODD_CONF_n -USE MODD_NSV, ONLY : NSV,NSV_CHEM, & - NSV_DSTEND, NSV_DSTBEG +USE MODD_NSV, ONLY: NSV use modd_precision, only: LFIINT, MNHREAL_MPI, MNHTIME ! USE MODN_BLANK @@ -485,9 +484,6 @@ LOGICAL :: LGEOSBAL =.FALSE. ! Logical to satisfy the geostrophic ! balance ! .TRUE. for geostrophic balance ! .FALSE. to ignore this balance -LOGICAL :: LPV_PERT =.FALSE. ! Logical to add a PV pertubation -LOGICAL :: LRMV_BL =.FALSE. ! Logical to remove the boundary layer - ! before PV inversion LOGICAL :: LSHIFT =.FALSE. ! flag to perform vertical shift or not. CHARACTER(LEN=3) :: CFUNU ='ZZZ' ! CHARACTER STRING for variation of ! U in y direction @@ -538,7 +534,6 @@ 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=8) :: YKIND ! Kind of radiosounding data CHARACTER(LEN=2) :: YPGD_TYPE ! INTEGER :: IINFO_ll ! return code of // routines @@ -561,15 +556,10 @@ REAL :: ZDIST REAL(kind=MNHTIME), DIMENSION(2) :: ZTIME1, ZTIME2, ZEND, ZTOT CHARACTER :: YMI INTEGER :: IMI -INTEGER::JK !JUAN TIMING ! REAL, DIMENSION(:), ALLOCATABLE :: ZZS_ll -INTEGER :: IJ -INTEGER :: NZSFILTER=1 ! number of iteration for filter for fine orography -LOGICAL :: LHSLOP=.FALSE. ! filtering of slopes higher than XHSLOP -REAL :: XHSLOP=1.2 ! if LHSLOP filtering of slopes higher than XHSLOP - +INTEGER :: IJ ! REAL :: ZZS_MAX, ZZS_MAX_ll INTEGER :: IJPHEXT @@ -582,8 +572,8 @@ TYPE(TFILEDATA),POINTER :: TZEXPREFILE => NULL() NAMELIST/NAM_CONF_PRE/ LTHINSHELL,LCARTESIAN, &! Declarations in MODD_CONF LPACK, &! NVERB,CIDEAL,CZS, &!+global variables initialized - LBOUSS,LPERTURB,LPV_PERT, &! at their declarations - LRMV_BL,LFORCING,CEQNSYS, &! at their declarations + LBOUSS,LPERTURB, &! at their declarations + LFORCING,CEQNSYS, &! at their declarations LSHIFT,L2D_ADV_FRC,L2D_REL_FRC, & NHALO , JPHEXT NAMELIST/NAM_GRID_PRE/ XLON0,XLAT0, & ! Declarations in MODD_GRID @@ -1462,15 +1452,6 @@ END IF !* 5.2 Prognostic variables (not multiplied by rhoJ) : u,v,w,theta,r ! and 1D anelastic reference state ! -IF(LPV_PERT .AND. .NOT.(LGEOSBAL)) THEN - !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','for PV inversion, LGEOSBAL has to be true') -ENDIF -! -IF(LPV_PERT .AND. NPROC>1) THEN - !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','PV inversion has to be performed in monoprocess mode') -ENDIF ! !* 5.2.1 Use a Radiosounding : CIDEAL='RSOU'' ! @@ -1482,15 +1463,13 @@ IF (CIDEAL == 'RSOU') THEN TDTEXP = TDTCUR TDTSEG = TDTCUR TDTMOD = TDTCUR - READ(NLUPRE,*) YKIND - BACKSPACE(NLUPRE) ! because YKIND read again in set_rsou WRITE(NLUOUT,FMT=*) 'CIDEAL="RSOU", ATTEMPT TO PROCESS THE SOUNDING DATA' IF (LGEOSBAL) THEN - CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,& - LRMV_BL,XJ,LSHIFT,XCORIOZ) + CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, & + XJ,LSHIFT,XCORIOZ) ELSE - CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,& - LRMV_BL,XJ,LSHIFT) + CALL SET_RSOU(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, & + XJ,LSHIFT) END IF ! !* 5.2.2 N=cste and U(z) : CIDEAL='CSTN' @@ -1505,11 +1484,11 @@ ELSE IF (CIDEAL == 'CSTN') THEN TDTMOD = TDTCUR WRITE(NLUOUT,FMT=*) 'CIDEAL="CSTN", ATTEMPT TO PROCESS THE SOUNDING DATA' IF (LGEOSBAL) THEN - CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,& - LRMV_BL,XJ,LSHIFT,XCORIOZ) + CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, & + XJ,LSHIFT,XCORIOZ) ELSE - CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS,LPV_PERT,& - LRMV_BL,XJ,LSHIFT) + CALL SET_CSTN(TFILE_DUMMY,TZEXPREFILE,CFUNU,CFUNV,NILOC(1),NJLOC(1),LBOUSS, & + XJ,LSHIFT) END IF ! END IF diff --git a/src/MNH/set_cstn.f90 b/src/MNH/set_cstn.f90 index f51497f748ae1dc62f0503491c7926bfdb4699e1..3ec1a28b54b6a2220d145c4a2a10c67672baa5b1 100644 --- a/src/MNH/set_cstn.f90 +++ b/src/MNH/set_cstn.f90 @@ -9,7 +9,7 @@ ! INTERFACE ! -SUBROUTINE SET_CSTN(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,OPV_PERT,ORMV_BL,PJ,OSHIFT,PCORIOZ) +SUBROUTINE SET_CSTN(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,PJ,OSHIFT,PCORIOZ) ! USE MODD_IO, ONLY : TFILEDATA ! @@ -22,8 +22,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HFUNV ! type of variation of V INTEGER, INTENT(IN) :: KILOC ! I Localisation of vertical profile INTEGER, INTENT(IN) :: KJLOC ! J Localisation of vertical profile LOGICAL, INTENT(IN) :: OBOUSS ! logical switch for Boussinesq version -LOGICAL, INTENT(IN) :: OPV_PERT! logical switch for PV inversion -LOGICAL, INTENT(IN) :: ORMV_BL! logical switch for remouve boundary layer REAL, DIMENSION(:,:,:), INTENT(IN) :: PJ ! jacobien LOGICAL, INTENT(IN) :: OSHIFT ! logical switch for vertical shift ! @@ -39,7 +37,7 @@ END MODULE MODI_SET_CSTN ! ! ! ################################################################################## - SUBROUTINE SET_CSTN(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,OPV_PERT,ORMV_BL,PJ,OSHIFT,PCORIOZ) + SUBROUTINE SET_CSTN(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,PJ,OSHIFT,PCORIOZ) ! ################################################################################## ! !!**** *SET_CSTN * - routine to initialize mass and wind fields from a Nv=cste @@ -164,6 +162,7 @@ END MODULE MODI_SET_CSTN !! V.Masson 12/08/13 Parallelization of the initilization profile !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -198,8 +197,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HFUNV ! type of variation of V INTEGER, INTENT(IN) :: KILOC ! I Localisation of vertical profile INTEGER, INTENT(IN) :: KJLOC ! J Localisation of vertical profile LOGICAL, INTENT(IN) :: OBOUSS ! logical switch for Boussinesq version -LOGICAL, INTENT(IN) :: OPV_PERT! logical switch for PV inversion -LOGICAL, INTENT(IN) :: ORMV_BL! logical switch for remouve boundary layer REAL, DIMENSION(:,:,:), INTENT(IN) :: PJ ! jacobien LOGICAL, INTENT(IN) :: OSHIFT ! logical switch for vertical shift ! @@ -211,10 +208,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PCORIOZ ! Coriolis parameter ! ! fields and data on the sounding levels ! -INTEGER :: ILUPRE,IRESP ! logical unit number of the - ! EXPRE and FM return code -INTEGER :: ILUOUT ! Logical unit number for - ! output-listing +INTEGER :: ILUPRE ! logical unit number INTEGER :: ILEVEL ! number of levels INTEGER :: ILAYER ! number of layers REAL :: ZPGROUND ! pressure at the ground level @@ -228,8 +222,6 @@ INTEGER :: JK,JKLEV ! Loop indexes ! ! variables on the grid without orography ! -REAL, DIMENSION(SIZE(XZHAT)) :: ZZHATM ! Height of mass model grid levels - ! without orography REAL, DIMENSION(SIZE(XZHAT)) :: ZTHVM ! Virtual potential Temperature ! at mass model grid levels REAL, DIMENSION(SIZE(XZHAT)) :: ZTVM ! Virtual Temperature at mass model @@ -266,7 +258,6 @@ LOGICAL :: GPROFILE_IN_PROC ! T : initialization profile is in current ! ------------------------------------------------------------ ! ILUPRE = TPEXPREFILE%NLU -ILUOUT = TLUOUT%NLU ! CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) CALL GET_OR_ll('B',IXOR_ll,IYOR_ll) diff --git a/src/MNH/set_grid.f90 b/src/MNH/set_grid.f90 index 6bd63a50719bd39eca5446d96ffe6f79ddbad481..9d8c9557115a4d595b5a787dd112f2d9292ec3c3 100644 --- a/src/MNH/set_grid.f90 +++ b/src/MNH/set_grid.f90 @@ -10,11 +10,7 @@ INTERFACE ! SUBROUTINE SET_GRID(KMI,TPINIFILE, & - KIU,KJU,KKU,KIMAX_ll,KJMAX_ll, & - PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, & - PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, & - KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO, & - HLBCX,HLBCY, & + KKU,KIMAX_ll,KJMAX_ll, & PTSTEP,PSEGLEN, & PLONORI,PLATORI,PLON,PLAT, & PXHAT,PYHAT,PDXHAT,PDYHAT, PMAP, & @@ -28,26 +24,12 @@ USE MODD_IO, ONLY: TFILEDATA,TOUTBAK ! INTEGER, INTENT(IN) :: KMI ! Model index TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE !Initial file -INTEGER, INTENT(IN) :: KIU ! Upper dimension in x direction - ! for sub-domain arrays -INTEGER, INTENT(IN) :: KJU ! Upper dimension in y direction - ! for sub-domain arrays INTEGER, INTENT(IN) :: KKU ! Upper dimension in z direction ! for domain arrays INTEGER, INTENT(IN) :: KIMAX_ll ! Dimensions in x direction ! of the physical domain, INTEGER, INTENT(IN) :: KJMAX_ll ! Dimensions in y direction ! of the physical domain, -REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc. -REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc. -REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc. -REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc. -INTEGER, INTENT(IN) :: KXOR,KXEND ! horizontal position (i,j) of the ORigin and END -INTEGER, INTENT(IN) :: KYOR,KYEND ! of the inner model domain, relative to outer model -INTEGER, INTENT(IN) :: KDXRATIO ! x and y-direction resolution RATIO -INTEGER, INTENT(IN) :: KDYRATIO ! between inner model and outer model -CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX ! type of lateral -CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY ! boundary conditions ! REAL, INTENT(IN) :: PTSTEP ! time step of model KMI REAL, INTENT(INOUT) :: PSEGLEN ! segment duration (in seconds) @@ -100,11 +82,7 @@ END MODULE MODI_SET_GRID ! ! ######################################################################### SUBROUTINE SET_GRID(KMI,TPINIFILE, & - KIU,KJU,KKU,KIMAX_ll,KJMAX_ll, & - PBMX1,PBMX2,PBMX3,PBMX4,PBMY1,PBMY2,PBMY3,PBMY4, & - PBFX1,PBFX2,PBFX3,PBFX4,PBFY1,PBFY2,PBFY3,PBFY4, & - KXOR,KYOR,KXEND,KYEND,KDXRATIO,KDYRATIO, & - HLBCX,HLBCY, & + KKU,KIMAX_ll,KJMAX_ll, & PTSTEP,PSEGLEN, & PLONORI,PLATORI,PLON,PLAT, & PXHAT,PYHAT,PDXHAT,PDYHAT, PMAP, & @@ -228,6 +206,7 @@ END MODULE MODI_SET_GRID !! grid-nesting lbc !! V.MASSON 12/10/00 read of the orography in all cases, even if LFLAT=T !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -258,26 +237,12 @@ IMPLICIT NONE ! INTEGER, INTENT(IN) :: KMI ! Model index TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE !Initial file -INTEGER, INTENT(IN) :: KIU ! Upper dimension in x direction - ! for sub-domain arrays -INTEGER, INTENT(IN) :: KJU ! Upper dimension in y direction - ! for sub-domain arrays INTEGER, INTENT(IN) :: KKU ! Upper dimension in z direction ! for domain arrays INTEGER, INTENT(IN) :: KIMAX_ll ! Dimensions in x direction ! of the physical domain, INTEGER, INTENT(IN) :: KJMAX_ll ! Dimensions in y direction ! of the physical domain, -REAL, DIMENSION(:), INTENT(IN) :: PBMX1,PBMX2,PBMX3,PBMX4 ! Mass points in X-direc. -REAL, DIMENSION(:), INTENT(IN) :: PBMY1,PBMY2,PBMY3,PBMY4 ! Mass points in Y-direc. -REAL, DIMENSION(:), INTENT(IN) :: PBFX1,PBFX2,PBFX3,PBFX4 ! Flux points in X-direc. -REAL, DIMENSION(:), INTENT(IN) :: PBFY1,PBFY2,PBFY3,PBFY4 ! Flux points in Y-direc. -INTEGER, INTENT(IN) :: KXOR,KXEND ! horizontal position (i,j) of the ORigin and END -INTEGER, INTENT(IN) :: KYOR,KYEND ! of the inner model domain, relative to outer model -INTEGER, INTENT(IN) :: KDXRATIO ! x and y-direction resolution RATIO -INTEGER, INTENT(IN) :: KDYRATIO ! between inner model and outer model -CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX ! type of lateral -CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY ! boundary conditions ! REAL, INTENT(IN) :: PTSTEP ! time step of model KMI REAL, INTENT(INOUT) :: PSEGLEN ! segment duration (in seconds) diff --git a/src/MNH/set_rsou.f90 b/src/MNH/set_rsou.f90 index 6c38994c69acbdb6fa7395694f04c42626af5acf..5a787a31bd6be1946fb9b1c7bdf5770622c16812 100644 --- a/src/MNH/set_rsou.f90 +++ b/src/MNH/set_rsou.f90 @@ -9,8 +9,8 @@ ! INTERFACE ! - SUBROUTINE SET_RSOU(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,OPV_PERT,& - ORMV_BL,PJ,OSHIFT,PCORIOZ) + SUBROUTINE SET_RSOU(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,& + PJ,OSHIFT,PCORIOZ) ! USE MODD_IO, ONLY : TFILEDATA ! @@ -23,8 +23,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HFUNV ! type of variation of V INTEGER, INTENT(IN) :: KILOC ! I Localisation of vertical profile INTEGER, INTENT(IN) :: KJLOC ! J Localisation of vertical profile LOGICAL, INTENT(IN) :: OBOUSS ! logical switch for Boussinesq version -LOGICAL, INTENT(IN) :: OPV_PERT! logical switch for PV inversion -LOGICAL, INTENT(IN) :: ORMV_BL! logical switch for remouve boundary layer REAL, DIMENSION(:,:,:), INTENT(IN) :: PJ ! jacobien LOGICAL, INTENT(IN) :: OSHIFT ! logical switch for vertical shift ! @@ -37,10 +35,10 @@ END INTERFACE ! END MODULE MODI_SET_RSOU ! -! ########################################################################### - SUBROUTINE SET_RSOU(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS,OPV_PERT,& - ORMV_BL,PJ,OSHIFT,PCORIOZ) -! ########################################################################### +! ######################################################################## + SUBROUTINE SET_RSOU(TPFILE,TPEXPREFILE,HFUNU,HFUNV,KILOC,KJLOC,OBOUSS, & + PJ,OSHIFT,PCORIOZ) +! ######################################################################## ! !!**** *SET_RSOU * - to initialize mass fiels from a radiosounding !! @@ -243,6 +241,7 @@ END MODULE MODI_SET_RSOU !! V.Masson 12/08/13 Parallelization of the initilization profile !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 19/04/2019: removed unused dummy arguments and variables !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -255,9 +254,7 @@ USE MODD_FIELD_n USE MODD_GRID USE MODD_GRID_n USE MODD_IO, ONLY: TFILEDATA -USE MODD_LUNIT_n USE MODD_PARAMETERS, ONLY: JPHEXT -USE MODD_PARAM_n, ONLY: CCLOUD ! USE MODE_ll USE MODE_MSG @@ -286,8 +283,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HFUNV ! type of variation of V INTEGER, INTENT(IN) :: KILOC ! I Localisation of vertical profile INTEGER, INTENT(IN) :: KJLOC ! J Localisation of vertical profile LOGICAL, INTENT(IN) :: OBOUSS ! logical switch for Boussinesq version -LOGICAL, INTENT(IN) :: OPV_PERT! logical switch for PV inversion -LOGICAL, INTENT(IN) :: ORMV_BL! logical switch for remouve boundary layer LOGICAL, INTENT(IN) :: OSHIFT ! logical switch for vertical shift REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL :: PCORIOZ ! Coriolis parameter ! (exceptionnaly 3D array) @@ -296,10 +291,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PJ ! jacobien ! !* 0.2 Declarations of local variables : ! -INTEGER :: ILUPRE,IRESP ! logical unit number of the - ! EXPRE and FM return code -INTEGER :: ILUOUT ! Logical unit number for - ! output-listing +INTEGER :: ILUPRE ! logical unit number ! ! variables read in EXPRE file at the RS levels ! @@ -310,14 +302,13 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZHEIGHTU ! Height at wind levels REAL, DIMENSION(:), ALLOCATABLE :: ZPRESSU ! Pressure at wind levels REAL, DIMENSION(:), ALLOCATABLE :: ZTHVU ! Thetav at wind levels REAL, DIMENSION(:), ALLOCATABLE :: ZU,ZV ! wind components -REAL, DIMENSION(:), ALLOCATABLE :: ZU_TURN,ZV_TURN ! wind components on MESONH grid REAL, DIMENSION(:), ALLOCATABLE :: ZDD,ZFF ! dd (direction) and ff(force) ! for wind REAL :: ZZGROUND,ZPGROUND ! height and Pressure at ground REAL :: ZTGROUND,ZTHVGROUND,ZTHDGROUND,ZTHLGROUND, & ZTDGROUND,ZMRGROUND,ZHUGROUND ! temperature and moisture - ! variables at ground + ! variables at ground INTEGER :: ILEVELM ! number of mass levels REAL, DIMENSION(:), ALLOCATABLE :: ZHEIGHTM ! Height at mass levels REAL, DIMENSION(:), ALLOCATABLE :: ZPRESSM ! Pressure at mass levels @@ -371,9 +362,7 @@ LOGICAL :: GPROFILE_IN_PROC ! T : initialization profile is in current ! REAL,DIMENSION(SIZE(XXHAT),SIZE(XYHAT)) ::ZZS_LS REAL,DIMENSION(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)) ::ZZFLUX_MX,ZZMASS_MX ! mixed grid -INTEGER :: JJ,JI INTEGER :: JLOOP -CHARACTER(LEN=100) :: YMSG !------------------------------------------------------------------------------- ! !* 1. PROLOGUE : INITIALIZE SOME CONSTANTS, RETRIEVE LOGICAL @@ -394,7 +383,6 @@ ZRDSRV = XRD/XRV ! ! ILUPRE = TPEXPREFILE%NLU -ILUOUT = TLUOUT%NLU ! !* 1.3 Read data kind in EXPRE file ! @@ -402,9 +390,7 @@ READ(ILUPRE,*) YKIND ! ! IF(LUSERC .AND. YKIND/='PUVTHDMR' .AND. YKIND/='ZUVTHDMR' .AND. YKIND/='ZUVTHLMR') THEN - WRITE(YMSG,*) 'hydrometeors are not allowed for YKIND = ', YKIND - !callabortstop - CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU',YMSG) + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','hydrometeors are not allowed for YKIND = '//trim(YKIND)) ENDIF ! Demande Thierry Bergot Sept 2012 !IF(LUSERC .AND.(YKIND == 'PUVTHDMR' .OR. YKIND == 'ZUVTHDMR').AND. .NOT. L1D) THEN @@ -1106,9 +1092,7 @@ SELECT CASE(YKIND) ZRT(:)=ZMR(:) ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:)) CASE DEFAULT - !callabortstop - WRITE(YMSG,*) 'data type YKIND=',TRIM(YKIND),' in PREFILE unknown' - CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU',YMSG) + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','data type YKIND='//TRIM(YKIND)//' in PREFILE unknown') END SELECT ! !------------------------------------------------------------------------------- @@ -1243,19 +1227,12 @@ DEALLOCATE(ZMRT) !------------------------------------------------------------------------------- ! -!* 4. COMPUTE FIELDS ON THE MODEL GRID (WITH OROGRAPHY) -! ------------------------------------------------- -IF (PRESENT(PCORIOZ)) THEN - CALL SET_MASS(TPFILE,GPROFILE_IN_PROC, ZZFLUX_PROFILE, & - KILOC+JPHEXT,KJLOC+JPHEXT,ZZS_LS,ZZMASS_MX,ZZFLUX_MX,ZPGROUND,& - ZTHVM,ZMRM,ZUW,ZVW,OSHIFT,OBOUSS,PJ,HFUNU,HFUNV, & - PMRCM=ZMRCM,PMRIM=ZMRIM,PCORIOZ=PCORIOZ) -ELSE - CALL SET_MASS(TPFILE,GPROFILE_IN_PROC, ZZFLUX_PROFILE, & - KILOC+JPHEXT,KJLOC+JPHEXT,ZZS_LS,ZZMASS_MX,ZZFLUX_MX,ZPGROUND,& - ZTHVM,ZMRM,ZUW,ZVW,OSHIFT,OBOUSS,PJ,HFUNU,HFUNV, & - PMRCM=ZMRCM,PMRIM=ZMRIM) -ENDIF +!* 4. COMPUTE FIELDS ON THE MODEL GRID (WITH OROGRAPHY) +! ------------------------------------------------- +CALL SET_MASS(TPFILE,GPROFILE_IN_PROC, ZZFLUX_PROFILE, & + KILOC+JPHEXT,KJLOC+JPHEXT,ZZS_LS,ZZMASS_MX,ZZFLUX_MX,ZPGROUND,& + ZTHVM,ZMRM,ZUW,ZVW,OSHIFT,OBOUSS,PJ,HFUNU,HFUNV, & + PMRCM=ZMRCM,PMRIM=ZMRIM,PCORIOZ=PCORIOZ) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/two_way.f90 b/src/MNH/two_way.f90 index 7f47e24072eedbdd4771c12615bd8b96da7d55d2..64f72579c3d267f8fee4317d90886a6a21d8b22d 100644 --- a/src/MNH/two_way.f90 +++ b/src/MNH/two_way.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1999-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1999-2019 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. !----------------------------------------------------------------- ! ################### @@ -10,8 +10,8 @@ INTERFACE ! SUBROUTINE TWO_WAY ( KRR,KSV,KTCOUNT,PRHODJ,KMI,PTSTEP, & - PUM ,PVM, PWM, PTHM, PRM, PTKEM, PSVM, & - PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS, & + PUM ,PVM, PWM, PTHM, PRM, PSVM, & + PRUS,PRVS,PRWS,PRTHS,PRRS,PRSVS, & PINPRC,PINPRR,PINPRS,PINPRG,PINPRH,PPRCONV,PPRSCONV, & PDIRFLASWD,PSCAFLASWD,PDIRSRFSWD,OMASKkids ) ! @@ -26,11 +26,11 @@ REAL, INTENT(IN) :: PTSTEP ! Timestep duration REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (Rho) dry * Jacobian ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM, PVM, PWM ! Variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM, PTKEM +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM, PSVM ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS ! Source -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES +REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS, PRSVS ! terms ! REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRC,PINPRR,PINPRS,PINPRG,PINPRH & @@ -48,8 +48,8 @@ END MODULE MODI_TWO_WAY ! ! ######################################################################## SUBROUTINE TWO_WAY ( KRR,KSV,KTCOUNT,PRHODJ,KMI,PTSTEP, & - PUM ,PVM, PWM, PTHM, PRM, PTKEM, PSVM, & - PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS, & + PUM ,PVM, PWM, PTHM, PRM, PSVM, & + PRUS,PRVS,PRWS,PRTHS,PRRS,PRSVS, & PINPRC,PINPRR,PINPRS,PINPRG,PINPRH,PPRCONV,PPRSCONV, & PDIRFLASWD,PSCAFLASWD,PDIRSRFSWD,OMASKkids ) ! ######################################################################## @@ -126,11 +126,11 @@ REAL, INTENT(IN) :: PTSTEP ! Timestep duration REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (Rho) dry * Jacobian ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM, PVM, PWM ! Variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM, PTKEM +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM, PSVM ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS ! Source -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES +REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS, PRSVS ! terms ! REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRC,PINPRR,PINPRS,PINPRG,PINPRH & @@ -153,9 +153,9 @@ DO JKID = KMI+1,NMODEL ! min value of the possible kids IF (KMI == NDAD(JKID) .AND. (XWAY(JKID) == 2. ) & .AND. (CCONF == 'RESTA' .OR. (CCONF == 'START' .AND. KTCOUNT /= 1))) THEN CALL GOTO_MODEL(JKID) - CALL TWO_WAY_n (KRR,KSV,KTCOUNT,PRHODJ,KMI,PTSTEP, & - PUM ,PVM, PWM, PTHM, PRM, PTKEM, PSVM, & - PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS, & + CALL TWO_WAY_n (KRR,KSV,PRHODJ,KMI,PTSTEP, & + PUM ,PVM, PWM, PTHM, PRM, PSVM, & + PRUS,PRVS,PRWS,PRTHS,PRRS,PRSVS, & PINPRC,PINPRR,PINPRS,PINPRG,PINPRH,PPRCONV,PPRSCONV, & PDIRFLASWD,PSCAFLASWD,PDIRSRFSWD,OMASKkids ) END IF diff --git a/src/MNH/two_wayn.f90 b/src/MNH/two_wayn.f90 index 62f7596c7c77eb388a070c87d364bbc5e63a1331..52a22f8d530b86603579bc88ea8c555f242ced5c 100644 --- a/src/MNH/two_wayn.f90 +++ b/src/MNH/two_wayn.f90 @@ -9,16 +9,14 @@ ! INTERFACE ! - SUBROUTINE TWO_WAY_n (KRR,KSV,KTCOUNT,PRHODJ,KMI,PTSTEP, & - PUM ,PVM, PWM, PTHM, PRM, PTKEM, PSVM, & - PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS, & + SUBROUTINE TWO_WAY_n (KRR,KSV,PRHODJ,KMI,PTSTEP, & + PUM ,PVM, PWM, PTHM, PRM, PSVM, & + PRUS,PRVS,PRWS,PRTHS,PRRS,PRSVS, & PINPRC,PINPRR,PINPRS,PINPRG,PINPRH,PPRCONV,PPRSCONV, & PDIRFLASWD,PSCAFLASWD,PDIRSRFSWD,OMASKkids ) ! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables -INTEGER, INTENT(IN) :: KTCOUNT ! Temporal loop COUNTer - ! (=1 at the segment beginning) INTEGER, INTENT(IN) :: KMI ! Model index ! REAL, INTENT(IN) :: PTSTEP ! Timestep duration @@ -26,11 +24,11 @@ REAL, INTENT(IN) :: PTSTEP ! Timestep duration REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (Rho) dry * Jacobian ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM, PVM, PWM ! Variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM, PTKEM +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM, PSVM ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS ! Source -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES +REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS, PRSVS ! terms REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRC,PINPRR,PINPRS,PINPRG,PINPRH, & PPRCONV,PPRSCONV ! precipitating variables @@ -44,9 +42,9 @@ END INTERFACE ! END MODULE MODI_TWO_WAY_n ! ####################################################################### - SUBROUTINE TWO_WAY_n (KRR,KSV,KTCOUNT,PRHODJ,KMI,PTSTEP, & - PUM ,PVM, PWM, PTHM, PRM, PTKEM, PSVM, & - PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,PRSVS, & + SUBROUTINE TWO_WAY_n (KRR,KSV,PRHODJ,KMI,PTSTEP, & + PUM ,PVM, PWM, PTHM, PRM, PSVM, & + PRUS,PRVS,PRWS,PRTHS,PRRS,PRSVS, & PINPRC,PINPRR,PINPRS,PINPRG,PINPRH,PPRCONV,PPRSCONV, & PDIRFLASWD,PSCAFLASWD,PDIRSRFSWD,OMASKkids ) ! ####################################################################### @@ -145,8 +143,6 @@ IMPLICIT NONE ! INTEGER, INTENT(IN) :: KRR ! Number of moist variables INTEGER, INTENT(IN) :: KSV ! Number of SV (father model) -INTEGER, INTENT(IN) :: KTCOUNT ! Temporal loop COUNTer - ! (=1 at the segment beginning) INTEGER, INTENT(IN) :: KMI ! Model index ! REAL, INTENT(IN) :: PTSTEP ! Timestep duration @@ -154,11 +150,11 @@ REAL, INTENT(IN) :: PTSTEP ! Timestep duration REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! (Rho) dry * Jacobian ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM, PVM, PWM ! Variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM, PTKEM +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHM REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRM, PSVM ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS, PRWS ! Source -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES +REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS, PRSVS ! terms REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRC,PINPRR,PINPRS,PINPRG,PINPRH & ,PPRCONV,PPRSCONV ! precipitating variables