diff --git a/src/MNH/ini_aeroset1.f90 b/src/MNH/ini_aeroset1.f90 index 5048577ac1f123343beeb03f4764ea643a07fa55..869ade50617ff16582b5ca8bc0354aa4fe0f155e 100644 --- a/src/MNH/ini_aeroset1.f90 +++ b/src/MNH/ini_aeroset1.f90 @@ -1,4 +1,4 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. @@ -23,8 +23,13 @@ END MODULE MODI_INI_AEROSET1 USE MODD_AEROSET +use mode_msg + IMPLICIT NONE +if ( .not.allocated( POLYTAU ) ) & + call Print_msg( NVERB_FATAL, 'GEN', 'INI_AEROSET1', 'POLYTAU not allocated') + POLYTAU(1, 1,1,1,1:13 )=(/ -733.61139, -13649.90625, -99755.00000, & -355288.34375, -608672.87500, -390948.84375, -22.75222, 156.46201, & -340.26620, 315.24551, -450.78485, 626.89001, 0.12454 /) diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index dad3e933933a55d6a761bae30c453cecf9a0e377..a7ff5457c1cfbe7464077149deef90d0492ec766 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -286,175 +286,177 @@ END MODULE MODI_INI_MODEL_n ! 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 +! P. Wautelet 07/06/2019: allocate lookup tables for optical properties only when needed !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -#ifdef CPLOASIS - USE MODI_SFX_OASIS_READ_NAM +#ifdef MNH_ECRAD +USE YOERDI, only: RCCO2 #endif -! -USE MODE_ll -USE MODD_ARGSLIST_ll, ONLY : LIST_ll -USE MODE_IO -USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list -USE MODE_IO_FILE, ONLY: IO_File_open -USE MODE_IO_FIELD_READ, only: IO_Field_read -USE MODE_INI_ONE_WAY_n -USE MODE_GATHER_ll -USE MODE_MSG -USE MODE_TYPE_ZDIFFU -! -USE MODD_NSV -USE MODD_PARAMETERS -USE MODD_CST + +USE MODD_2D_FRC +USE MODD_ADVFRC_n +USE MODD_ADV_n +use MODD_AEROSET, only: POLYTAU, POLYSSA, POLYG +USE MODD_ARGSLIST_ll, only: LIST_ll +USE MODD_BIKHARDT_n +USE MODD_BLOWSNOW +USE MODD_BLOWSNOW_n +USE MODD_BUDGET +USE MODD_CH_AERO_n, only: XSOLORG,XMI +USE MODD_CH_AEROSOL, only: LORILAM +USE MODD_CH_BUDGET_n +USE MODD_CH_FLX_n, only: XCHFLX +USE MODD_CH_M9_n, only:NNONZEROTERMS +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_PRODLOSSTOT_n +USE MODD_CLOUD_MF_n USE MODD_CONF +USE MODD_CONF_n +USE MODD_CST +USE MODD_CTURB +USE MODD_CURVCOR_n +USE MODD_DEEP_CONVECTION_n +USE MODD_DEF_EDDY_FLUX_n ! for VT and WT fluxes +USE MODD_DEF_EDDYUV_FLUX_n ! FOR UV +USE MODD_DIAG_FLAG, only: LCHEMDIAG, CSPEC_BU_DIAG +USE MODD_DIM_n +USE MODD_DRAG_n +USE MODD_DRAGTREE USE MODD_DUST +use MODD_DUST_OPT_LKT, only: NMAX_RADIUS_LKT_DUST=>NMAX_RADIUS_LKT, NMAX_SIGMA_LKT_DUST=>NMAX_SIGMA_LKT, & + NMAX_WVL_SW_DUST=>NMAX_WVL_SW, & + XEXT_COEFF_WVL_LKT_DUST=>XEXT_COEFF_WVL_LKT, XEXT_COEFF_550_LKT_DUST=>XEXT_COEFF_550_LKT, & + XPIZA_LKT_DUST=>XPIZA_LKT, XCGA_LKT_DUST=>XCGA_LKT USE MODD_DYN -USE MODD_DYNZD -USE MODD_FRC -USE MODD_REF -USE MODD_SERIES, ONLY: LSERIES -USE MODD_TIME -USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI -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 USE MODD_DYN_n +USE MODD_DYNZD USE MODD_DYNZD_n +USE MODD_ELEC_n, only: XCION_POS_FW, XCION_NEG_FW USE MODD_FIELD_n -USE MODD_PAST_FIELD_n -USE MODD_MEAN_FIELD_n -USE MODD_MEAN_FIELD -USE MODD_ADV_n -USE MODD_LSFIELD_n -USE MODD_GRID_n -USE MODD_GRID, ONLY: XLONORI,XLATORI -USE MODD_TIME_n -USE MODD_REF_n +#ifdef MNH_FOREFIRE +USE MODD_FOREFIRE +USE MODD_FOREFIRE_n +#endif +USE MODD_FRC USE MODD_FRC_n -USE MODD_CURVCOR_n -USE MODD_DIM_n -USE MODD_BUDGET -USE MODD_RADIATIONS_n -USE MODD_SHADOWS_n -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, & - 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 -USE MODD_CH_FLX_n, ONLY : XCHFLX +USE MODD_GET_n +USE MODD_GRID_n +USE MODD_GRID, only: XLONORI,XLATORI +USE MODD_IO, only: CIO_DIR, TFILEDATA, TFILE_DUMMY +USE MODD_IO_SURF_MNH, only: IO_SURF_MNH_MODEL +USE MODD_LATZ_EDFLX +USE MODD_LBC_n, only: CLBCX, CLBCY +USE MODD_LSFIELD_n +USE MODD_LUNIT_n +USE MODD_MEAN_FIELD +USE MODD_MEAN_FIELD_n +USE MODD_METRICS_n +USE MODD_MNH_SURFEX_n +USE MODD_NESTING, only: CDAD_NAME, NDAD, NDT_2_WAY, NDTRATIO, NDXRATIO_ALL, NDYRATIO_ALL +USE MODD_NSV +USE MODD_NSV +USE MODD_NUDGING_n, only: LNUDGING +USE MODD_OUT_n +USE MODD_PARAMETERS USE MODD_PARAM_KAFR_n USE MODD_PARAM_MFSHALL_n -USE MODD_DEEP_CONVECTION_n -USE MODD_OUT_n -USE MODD_BIKHARDT_n -USE MODD_NUDGING_n, ONLY : LNUDGING -USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG, CSPEC_BU_DIAG -USE MODD_CLOUD_MF_n -USE MODD_NSV -! -USE MODD_ELEC_n, ONLY : XCION_POS_FW, XCION_NEG_FW - -USE MODD_LUNIT_n -USE MODD_CONF_n -USE MODD_GET_n -USE MODD_TURB_n -USE MODD_CTURB -USE MODD_LBC_n, only: CLBCX, CLBCY +USE MODD_PARAM_n +USE MODD_PARAM_RAD_n, only: CAER, CAOP, CLW +USE MODD_PASPOL USE MODD_PASPOL_n -USE MODD_DRAG_n -USE MODD_BLOWSNOW -USE MODD_BLOWSNOW_n -use modd_precision, only: LFIINT -! -! -USE MODI_INI_BUDGET -USE MODI_INI_SW_SETUP -USE MODI_INI_LW_SETUP -USE MODI_SET_GRID -USE MODI_METRICS -USE MODI_UPDATE_METRICS -USE MODI_READ_FIELD -USE MODI_SET_REF -USE MODI_INI_DYNAMICS -USE MODI_INI_TKE_EPS -USE MODI_SET_DIRCOS -USE MODI_INI_CPL -USE MODI_INI_RADIATIONS -USE MODI_INI_RADIATIONS_ECMWF -USE MODI_INI_RADIATIONS_ECRAD +USE MODD_PAST_FIELD_n +use modd_precision, only: LFIINT +USE MODD_RADIATIONS_n +USE MODD_REF +USE MODD_REF_n +USE MODD_RELFRC_n +use MODD_SALT, only: LSALT +use MODD_SALT_OPT_LKT, only: NMAX_RADIUS_LKT_SALT=>NMAX_RADIUS_LKT, NMAX_SIGMA_LKT_SALT=>NMAX_SIGMA_LKT, & + NMAX_WVL_SW_SALT=>NMAX_WVL_SW, & + XEXT_COEFF_WVL_LKT_SALT=>XEXT_COEFF_WVL_LKT, XEXT_COEFF_550_LKT_SALT=>XEXT_COEFF_550_LKT, & + XPIZA_LKT_SALT=>XPIZA_LKT, XCGA_LKT_SALT=>XCGA_LKT +USE MODD_SERIES, only: LSERIES +USE MODD_SHADOWS_n +USE MODD_STAND_ATM, only: XSTROATM, XSMLSATM, XSMLWATM, XSPOSATM, XSPOWATM +USE MODD_TIME +USE MODD_TIME_n +USE MODD_TURB_CLOUD, only: NMODEL_CLOUD, CTURBLEN_CLOUD,XCEI +USE MODD_TURB_n +USE MODD_VAR_ll, only: IP + +USE MODE_GATHER_ll +USE MODE_INI_ONE_WAY_n +USE MODE_IO +USE MODE_IO_FIELD_READ, only: IO_Field_read +USE MODE_IO_FILE, only: IO_File_open +USE MODE_IO_MANAGE_STRUCT, only: IO_File_add2list +USE MODE_ll +USE MODE_MODELN_HANDLER +USE MODE_MPPDB +USE MODE_MSG +USE MODE_SPLITTINGZ_ll, only: GET_DIM_EXTZ_ll +USE MODE_TYPE_ZDIFFU + +USE MODI_CH_AER_MOD_INIT +USE MODI_CH_INIT_BUDGET_n USE MODI_CH_INIT_FIELD_n -USE MODI_INI_DEEP_CONVECTION -USE MODI_INI_BIKHARDT_n +USE MODI_CH_INIT_JVALUES +USE MODI_CH_INIT_PRODLOSSTOT_n USE MODI_GET_SIZEX_LB USE MODI_GET_SIZEY_LB -USE MODI_INI_SPAWN_LS_n -USE MODI_INI_AIRCRAFT_BALLOON -USE MODI_UPDATE_NSV -USE MODI_INI_ELEC_n -USE MODI_INI_MICRO_n -USE MODI_INI_LG -USE MODI_SURF_SOLAR_GEOM -USE MODI_SUNPOS_n -USE MODI_INI_SURF_RAD -USE MODI_MNHGET_SURF_PARAM_n -USE MODI_MNHREAD_ZS_DUMMY_n -USE MODI_INIT_GROUND_PARAM_n -USE MODI_INI_AIRCRAFT_BALLOON -USE MODI_INI_SURFSTATION_n -USE MODI_INI_POSPROFILER_n -USE MODI_CH_INIT_JVALUES -USE MODI_CH_AER_MOD_INIT -! -USE MODD_PARAM_n -USE MODE_MODELN_HANDLER -USE MODE_SPLITTINGZ_ll , ONLY : GET_DIM_EXTZ_ll -! USE MODI_INI_AEROSET1 USE MODI_INI_AEROSET2 USE MODI_INI_AEROSET3 USE MODI_INI_AEROSET4 USE MODI_INI_AEROSET5 USE MODI_INI_AEROSET6 +USE MODI_INI_AIRCRAFT_BALLOON +USE MODI_INI_AIRCRAFT_BALLOON +USE MODI_INI_BIKHARDT_n +USE MODI_INI_BUDGET +USE MODI_INI_CPL +USE MODI_INI_DEEP_CONVECTION USE MODI_INI_DRAG -! -#ifdef MNH_FOREFIRE -USE MODD_FOREFIRE -USE MODD_FOREFIRE_n -USE MODI_INIT_FOREFIRE_n -#endif +USE MODI_INI_DYNAMICS +USE MODI_INI_ELEC_n USE MODI_INI_LES_N -USE MODD_MNH_SURFEX_n +USE MODI_INI_LG +USE MODI_INI_LW_SETUP +USE MODI_INI_MICRO_n +USE MODI_INI_POSPROFILER_n +USE MODI_INI_RADIATIONS +USE MODI_INI_RADIATIONS_ECMWF +USE MODI_INI_RADIATIONS_ECRAD USE MODI_INI_SERIES_N -! Eddy fluxes ! Ajout PP -USE MODD_DEF_EDDY_FLUX_n ! for VT and WT fluxes -USE MODD_DEF_EDDYUV_FLUX_n ! FOR UV -USE MODD_LATZ_EDFLX -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 -! -USE MODD_CH_PRODLOSSTOT_n -USE MODI_CH_INIT_PRODLOSSTOT_n -! -USE MODD_CH_BUDGET_n -USE MODI_CH_INIT_BUDGET_n -USE MODD_CH_M9_n, ONLY:NNONZEROTERMS -! -USE MODE_MPPDB +USE MODI_INI_SPAWN_LS_n +USE MODI_INI_SURF_RAD +USE MODI_INI_SURFSTATION_n +USE MODI_INI_SW_SETUP USE MODI_INIT_AEROSOL_PROPERTIES -#ifdef MNH_ECRAD -USE YOERDI , ONLY :RCCO2 +#ifdef MNH_FOREFIRE +USE MODI_INIT_FOREFIRE_n #endif +USE MODI_INIT_GROUND_PARAM_n +USE MODI_INI_TKE_EPS +USE MODI_METRICS +USE MODI_MNHGET_SURF_PARAM_n +USE MODI_MNHREAD_ZS_DUMMY_n +USE MODI_READ_FIELD +USE MODI_SET_DIRCOS +USE MODI_SET_GRID +USE MODI_SET_REF +#ifdef CPLOASIS +USE MODI_SFX_OASIS_READ_NAM +#endif +USE MODI_SUNPOS_n +USE MODI_SURF_SOLAR_GEOM +USE MODI_UPDATE_METRICS +USE MODI_UPDATE_NSV ! IMPLICIT NONE ! @@ -2249,6 +2251,20 @@ IF (CRAD == 'ECMW') THEN ZTOWN(:,:) = 0. ZBARE(:,:) = 0. END IF +! + IF ( CAOP=='EXPL' .AND. LDUST ) THEN + ALLOCATE( XEXT_COEFF_WVL_LKT_DUST( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST, NMAX_WVL_SW_DUST ) ) + ALLOCATE( XEXT_COEFF_550_LKT_DUST( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST ) ) + ALLOCATE( XPIZA_LKT_DUST ( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST, NMAX_WVL_SW_DUST ) ) + ALLOCATE( XCGA_LKT_DUST ( NMAX_RADIUS_LKT_DUST, NMAX_SIGMA_LKT_DUST, NMAX_WVL_SW_DUST ) ) + END IF +! + IF ( CAOP=='EXPL' .AND. LSALT ) THEN + ALLOCATE( XEXT_COEFF_WVL_LKT_SALT( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT, NMAX_WVL_SW_SALT ) ) + ALLOCATE( XEXT_COEFF_550_LKT_SALT( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT ) ) + ALLOCATE( XPIZA_LKT_SALT ( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT, NMAX_WVL_SW_SALT ) ) + ALLOCATE( XCGA_LKT_SALT ( NMAX_RADIUS_LKT_SALT, NMAX_SIGMA_LKT_SALT, NMAX_WVL_SW_SALT ) ) + END IF ! CALL INI_RADIATIONS_ECMWF (XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP, & CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,CAER,NAER,NSTATM, & @@ -2399,12 +2415,17 @@ CALL INI_POSPROFILER_n(XTSTEP, TDTSEG, XSEGLEN, NRR, NSV, & !* 26. Prognostic aerosols ! ------------------------ ! -CALL INI_AEROSET1 -CALL INI_AEROSET2 -CALL INI_AEROSET3 -CALL INI_AEROSET4 -CALL INI_AEROSET5 -CALL INI_AEROSET6 +IF ( ( CRAD=='ECMW' .OR. CRAD=='ECRA' ) .AND. CAOP=='EXPL' .AND. LORILAM ) THEN + ALLOCATE(POLYTAU(6,10,8,6,13)) + ALLOCATE(POLYSSA(6,10,8,6,13)) + ALLOCATE(POLYG (6,10,8,6,13)) + CALL INI_AEROSET1 + CALL INI_AEROSET2 + CALL INI_AEROSET3 + CALL INI_AEROSET4 + CALL INI_AEROSET5 + CALL INI_AEROSET6 +END IF #ifdef MNH_FOREFIRE ! !------------------------------------------------------------------------------- diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90 index cf73ab385ef0dd904338bd818d644d3346b48fd2..b7188358438cab4e72bbd722068802212d4110ab 100644 --- a/src/MNH/ini_radiations_ecmwf.f90 +++ b/src/MNH/ini_radiations_ecmwf.f90 @@ -173,43 +173,45 @@ END MODULE MODI_INI_RADIATIONS_ECMWF ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables ! P. Wautelet 14/02/2019: remove HINIFILE dummy argument ! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! P. Wautelet 07/06/2019: initialize dust and salt optical properties lookup tables only if necessary !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ !ECMWF radiation scheme specific modules ! -USE PARKIND1, ONLY : JPRB -USE YOEAERD , ONLY : RCAEOPS ,RCAEOPL ,RCAEOPU ,RCAEOPD ,RCTRBGA ,& - RCVOBGA ,RCSTBGA ,RCTRPT ,RCAEADM ,RCAEROS ,& - RCAEADK -USE OYOMCST , ONLY : RTT -USE YOETHF , ONLY : RTICE +USE OYOMCST, ONLY: RTT +USE PARKIND1, ONLY: JPRB +USE YOEAERD, ONLY: RCAEOPS, RCAEOPL, RCAEOPU, RCAEOPD, RCTRBGA, & + RCVOBGA, RCSTBGA, RCTRPT, RCAEADM, RCAEROS, & + RCAEADK +USE YOETHF, ONLY: RTICE ! !MESO-NH modules ! -USE MODD_TYPE_DATE -USE MODD_CONF USE MODD_CST +USE MODD_CONF +use MODD_DUST, only: LDUST USE MODD_GRID USE MODD_PARAMETERS +use MODD_PARAM_RAD_n, only: CAOP, LFIX_DAT +use MODD_SALT, only: LSALT USE MODD_STAND_ATM -USE MODD_PARAM_RAD_n, ONLY: LFIX_DAT +USE MODD_TYPE_DATE ! +USE MODE_CONSRAD +USE MODE_DUSTOPT USE MODE_ll +USE MODE_REPRO_SUM +USE MODE_SALTOPT ! -USE MODI_INI_RADCONF USE MODI_INI_HOR_AERCLIM -! -USE MODE_DUSTOPT -USE MODE_SALTOPT -USE MODE_CONSRAD -USE MODE_REPRO_SUM +USE MODI_INI_RADCONF USE MODI_INI_STAND_ATM -USE MODI_SUECOZC +USE MODI_RADAER USE MODI_RADOZC USE MODI_SUAERV -USE MODI_RADAER +USE MODI_SUECOZC ! IMPLICIT NONE ! @@ -698,29 +700,31 @@ END DO ! Read in look up tables of dust optical properties !No arguments, all look up tables are defined in module !modd_dust_opt_lkt -CALL DUST_OPT_LKT_SET1() -CALL DUST_OPT_LKT_SET2() -CALL DUST_OPT_LKT_SET3() -CALL DUST_OPT_LKT_SET4() -CALL DUST_OPT_LKT_SET5() -CALL DUST_OPT_LKT_SET6() -CALL DUST_OPT_LKT_SET7() -CALL DUST_OPT_LKT_SET8() -CALL DUST_OPT_LKT_SET9() -CALL DUST_OPT_LKT_SET10() - -CALL SALT_OPT_LKT_SET1() -CALL SALT_OPT_LKT_SET2() -CALL SALT_OPT_LKT_SET3() -CALL SALT_OPT_LKT_SET4() -CALL SALT_OPT_LKT_SET5() -CALL SALT_OPT_LKT_SET6() -CALL SALT_OPT_LKT_SET7() -CALL SALT_OPT_LKT_SET8() -CALL SALT_OPT_LKT_SET9() -CALL SALT_OPT_LKT_SET10() - +IF ( LDUST .AND. CAOP=='EXPL' ) THEN + CALL DUST_OPT_LKT_SET1() + CALL DUST_OPT_LKT_SET2() + CALL DUST_OPT_LKT_SET3() + CALL DUST_OPT_LKT_SET4() + CALL DUST_OPT_LKT_SET5() + CALL DUST_OPT_LKT_SET6() + CALL DUST_OPT_LKT_SET7() + CALL DUST_OPT_LKT_SET8() + CALL DUST_OPT_LKT_SET9() + CALL DUST_OPT_LKT_SET10() +END IF +IF ( LSALT .AND. CAOP=='EXPL' ) THEN + CALL SALT_OPT_LKT_SET1() + CALL SALT_OPT_LKT_SET2() + CALL SALT_OPT_LKT_SET3() + CALL SALT_OPT_LKT_SET4() + CALL SALT_OPT_LKT_SET5() + CALL SALT_OPT_LKT_SET6() + CALL SALT_OPT_LKT_SET7() + CALL SALT_OPT_LKT_SET8() + CALL SALT_OPT_LKT_SET9() + CALL SALT_OPT_LKT_SET10() +END IF ! CALL INI_CONS_PROP_OP DEALLOCATE (ZPRES_HL) diff --git a/src/MNH/modd_aeroset.f90 b/src/MNH/modd_aeroset.f90 index 9fe34721d690c9bf7dad011f45fde7f2a44d7346..311312bd47ff1efff93c1a33f04bd441e0f702f3 100644 --- a/src/MNH/modd_aeroset.f90 +++ b/src/MNH/modd_aeroset.f90 @@ -1,13 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 modd 2006/05/18 13:07:25 -!----------------------------------------------------------------- !! ######################## MODULE MODD_AEROSET !! ######################## @@ -39,14 +34,15 @@ !! MODIFICATIONS !! ------------- !! +! P. Wautelet 07/06/2019: arrays are now ALLOCATABLE to save memory when not used !!-------------------------------------------------------------------- !! DECLARATIONS !! ------------ IMPLICIT NONE - REAL,SAVE,DIMENSION(6,10,8,6,13) ::POLYTAU - REAL,SAVE,DIMENSION(6,10,8,6,13) ::POLYSSA - REAL,SAVE,DIMENSION(6,10,8,6,13) ::POLYG + REAL,SAVE,DIMENSION(:,:,:,:,:),ALLOCATABLE ::POLYTAU + REAL,SAVE,DIMENSION(:,:,:,:,:),ALLOCATABLE ::POLYSSA + REAL,SAVE,DIMENSION(:,:,:,:,:),ALLOCATABLE ::POLYG END MODULE MODD_AEROSET diff --git a/src/MNH/modd_dust_opt_lkt.f90 b/src/MNH/modd_dust_opt_lkt.f90 index a8b88a9e194dea2e61735d94ba5b31bbc347c601..449fc2811f11b70aedc690bf90a6aba49c91a948 100644 --- a/src/MNH/modd_dust_opt_lkt.f90 +++ b/src/MNH/modd_dust_opt_lkt.f90 @@ -1,13 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 modd 2006/05/18 13:07:25 -!----------------------------------------------------------------- !! ######################## MODULE MODD_DUST_OPT_LKT !! ######################## @@ -42,6 +37,7 @@ !! MODIFICATIONS !! ------------- !! +! P. Wautelet 07/06/2019: arrays are now ALLOCATABLE to save memory when not used !!-------------------------------------------------------------------- !! DECLARATIONS !! ------------ @@ -54,10 +50,10 @@ INTEGER, PARAMETER :: NMAX_WVL_SW=6 !Max number of wavelengths in lkt !Declaration of the look up tables - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT,NMAX_WVL_SW) :: XEXT_COEFF_WVL_LKT - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT) :: XEXT_COEFF_550_LKT - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT,NMAX_WVL_SW) :: XPIZA_LKT - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT,NMAX_WVL_SW) :: XCGA_LKT + REAL, SAVE, DIMENSION(:,:,:), ALLOCATABLE :: XEXT_COEFF_WVL_LKT + REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XEXT_COEFF_550_LKT + REAL, SAVE, DIMENSION(:,:,:), ALLOCATABLE :: XPIZA_LKT + REAL, SAVE, DIMENSION(:,:,:), ALLOCATABLE :: XCGA_LKT !Declaration of the max and min values taken into account in the tables REAL, PARAMETER :: XRADIUS_LKT_MIN = 0.01 ![um] smallest number median radius taken into account diff --git a/src/MNH/modd_salt_opt_lkt.f90 b/src/MNH/modd_salt_opt_lkt.f90 index d6b12b0b5b57b10796bc15b145f56e4e0c5825cb..702bc081bf1ba271c3e77752a40a7bb9e8189c89 100644 --- a/src/MNH/modd_salt_opt_lkt.f90 +++ b/src/MNH/modd_salt_opt_lkt.f90 @@ -1,13 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 modd 2006/05/18 13:07:25 -!----------------------------------------------------------------- !! ######################## MODULE MODD_SALT_OPT_LKT !! ######################## @@ -42,6 +37,7 @@ !! MODIFICATIONS !! ------------- !! +! P. Wautelet 07/06/2019: arrays are now ALLOCATABLE to save memory when not used !!-------------------------------------------------------------------- !! DECLARATIONS !! ------------ @@ -54,10 +50,10 @@ INTEGER, PARAMETER :: NMAX_WVL_SW=6 !Max number of wavelengths in lkt !Declaration of the look up tables - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT,NMAX_WVL_SW) :: XEXT_COEFF_WVL_LKT - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT) :: XEXT_COEFF_550_LKT - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT,NMAX_WVL_SW) :: XPIZA_LKT - REAL, DIMENSION(NMAX_RADIUS_LKT,NMAX_SIGMA_LKT,NMAX_WVL_SW) :: XCGA_LKT + REAL, SAVE, DIMENSION(:,:,:), ALLOCATABLE :: XEXT_COEFF_WVL_LKT + REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XEXT_COEFF_550_LKT + REAL, SAVE, DIMENSION(:,:,:), ALLOCATABLE :: XPIZA_LKT + REAL, SAVE, DIMENSION(:,:,:), ALLOCATABLE :: XCGA_LKT !Declaration of the max and min values taken into account in the tables REAL, PARAMETER :: XRADIUS_LKT_MIN = 0.01 ![um] smallest number median radius taken into account diff --git a/src/MNH/mode_dustopt.f90 b/src/MNH/mode_dustopt.f90 index 6a85251e3827ae1166526bd4049c775ac2964204..c9c78d1444921ee91149af7636e4d7d52fc38b4b 100644 --- a/src/MNH/mode_dustopt.f90 +++ b/src/MNH/mode_dustopt.f90 @@ -1,13 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! masdev4_7 BUG1 2007/06/29 12:06:27 -!----------------------------------------------------------------- ! ################### MODULE MODE_DUSTOPT ! ################### @@ -325,8 +320,13 @@ CONTAINS USE MODD_DUST_OPT_LKT + use mode_msg + IMPLICIT NONE - + + if ( .not.allocated( XEXT_COEFF_WVL_LKT ) ) & + call Print_msg( NVERB_FATAL, 'GEN', 'DUST_OPT_LKT_SET1', 'XEXT_COEFF_WVL_LKT not allocated') + !Here are the output values from the mie program: XEXT_COEFF_WVL_LKT(1,1,1:6)=(/ 92.520000,37.760000,21.553000,5.277700,2.711100,1.337700 /) XPIZA_LKT(1,1,1:6)=(/ 0.431792,0.157096,0.049108,0.030213,0.005366,0.000659 /) diff --git a/src/MNH/mode_saltopt.f90 b/src/MNH/mode_saltopt.f90 index d7fd28f3f1912d0a897de0aa93aebc050b6a761a..5cda0f3bbb19ac227b50ffd7b4bd9e814a50e2a6 100644 --- a/src/MNH/mode_saltopt.f90 +++ b/src/MNH/mode_saltopt.f90 @@ -1,11 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! ################### MODULE MODE_SALTOPT ! ################### @@ -336,8 +333,13 @@ CONTAINS USE MODD_SALT_OPT_LKT + use mode_msg + IMPLICIT NONE - + + if ( .not.allocated( XEXT_COEFF_WVL_LKT ) ) & + call Print_msg( NVERB_FATAL, 'GEN', 'SALT_OPT_LKT_SET1', 'XEXT_COEFF_WVL_LKT not allocated') + !Here are the output values from the mie program: XEXT_COEFF_WVL_LKT(1,1,1:6)=(/ 44.560000,11.638000,0.691110,0.260970,0.532810,132.670000 /) XPIZA_LKT(1,1,1:6)=(/ 0.236252,0.196169,0.900,0.900,0.900,0.000010 /)