diff --git a/src/mesonh/ext/default_desfmn.f90 b/src/mesonh/ext/default_desfmn.f90 index e9cbb0eae15067ee85f9c9c21611520fa9144839..b5b8b062cd9e131280a96e635a6a1c5bf0cf6636 100644 --- a/src/mesonh/ext/default_desfmn.f90 +++ b/src/mesonh/ext/default_desfmn.f90 @@ -311,7 +311,7 @@ USE MODD_IBM_LSF #ifdef MNH_FOREFIRE USE MODD_FOREFIRE #endif -USE MODD_FIRE +USE MODD_FIRE_n ! IMPLICIT NONE ! @@ -1426,68 +1426,66 @@ ENDIF XARECYCLS = 0. XDRECYCLE = 0. XARECYCLE = 0. - XTMOY = 0. - XTMOYCOUNT = 0. - XNUMBELT = 28. + NTMOY = 0 + NTMOYCOUNT = 0 + NNUMBELT = 28 XRCOEFF = 0.2 XTBVTOP = 500. XTBVBOT = 300. ! !------------------------------------------------------------------------------- ! -!* 33. SET DEFAULT VALUES FOR MODD_FIRE -! -------------------------------- +!* 33. SET DEFAULT VALUES FOR MODD_FIRE_n +! ---------------------------------- ! ! Blaze fire model namelist ! -IF (KMI == 1) THEN - LBLAZE = .FALSE. ! Flag for Fire model use, default FALSE - ! - CPROPAG_MODEL = 'SANTONI2011' ! Fire propagation model (default SANTONI2011) - ! - CHEAT_FLUX_MODEL = 'EXS' ! Sensible heat flux injection model (default EXS) - CLATENT_FLUX_MODEL = 'EXP' ! latent heat flux injection model (default EXP) - XFERR = 0.8 ! Energy released in flamming stage (only for EXP) - ! - CFIRE_CPL_MODE = '2WAYCPL' ! Coupling mode (default 2way coupled) - CBMAPFILE = CINIFILE ! File name of BMAP for FIR2ATM mode - LINTERPWIND = .TRUE. ! Horizontal interpolation of wind - LSGBAWEIGHT = .FALSE. ! Flag for use of weighted average method for SubGrid Burning Area computation - ! - NFIRE_WENO_ORDER = 3 ! Weno order (1,3,5) - NFIRE_RK_ORDER = 3 ! Runge Kutta order (1,2,3,4) - ! - NREFINX = 1 ! Refinement ratio X - NREFINY = 1 ! Refinement ratio Y - ! - XCFLMAXFIRE = 0.8 ! Max CFL on fire mesh - XLSDIFFUSION = 0.1 ! Numerical diffusion of LevelSet - XROSDIFFUSION = 0.05 ! Numerical diffusion of ROS - ! - XFLUXZEXT = 3. ! Flux distribution on vertical caracteristic length - XFLUXZMAX = 4. * XFLUXZEXT ! Flux distribution on vertical max injetion height - ! - XFLXCOEFTMP = 1. ! Flux multiplicator. For testing - ! - LWINDFILTER = .FALSE. ! Fire wind filtering flag - CWINDFILTER = 'EWAM' ! Wind filter method (EWAM or WLIM) - XEWAMTAU = 20. ! Time averaging constant for EWAM method (s) - XWLIMUTH = 8. ! Thresehold wind value for WLIM method (m/s) - XWLIMUTMAX = 9. ! Maximum wind value for WLIM method (m/s) (needs to be >= XWLIMUTH ) - ! - NNBSMOKETRACER = 1 ! Nb of smoke tracers - ! - NWINDSLOPECPLMODE = 0 ! Flag for use of wind/slope in ROS (0 = wind + slope, 1 = wind only, 2 = slope only (U0=0)) - ! - ! - ! - !! DO NOT CHANGE BELOW PARAMETERS - XFIREMESHSIZE(:) = 0. ! Fire mesh size (dxf,dyf) - LRESTA_ASE = .FALSE. ! Flag for using ASE in RESTA file - LRESTA_AWC = .FALSE. ! Flag for using AWC in RESTA file - LRESTA_EWAM = .FALSE. ! Flag for using EWAM in RESTA file - LRESTA_WLIM = .FALSE. ! Flag for using WLIM in RESTA file -ENDIF +LBLAZE = .FALSE. ! Flag for Fire model use, default FALSE +! +CPROPAG_MODEL = 'SANTONI2011' ! Fire propagation model (default SANTONI2011) +! +CHEAT_FLUX_MODEL = 'EXS' ! Sensible heat flux injection model (default EXS) +CLATENT_FLUX_MODEL = 'EXP' ! latent heat flux injection model (default EXP) +XFERR = 0.8 ! Energy released in flamming stage (only for EXP) +! +CFIRE_CPL_MODE = '2WAYCPL' ! Coupling mode (default 2way coupled) +CBMAPFILE = CINIFILE ! File name of BMAP for FIR2ATM mode +LINTERPWIND = .TRUE. ! Horizontal interpolation of wind +LSGBAWEIGHT = .FALSE. ! Flag for use of weighted average method for SubGrid Burning Area computation +! +NFIRE_WENO_ORDER = 3 ! Weno order (1,3,5) +NFIRE_RK_ORDER = 3 ! Runge Kutta order (1,2,3,4) +! +NREFINX = 1 ! Refinement ratio X +NREFINY = 1 ! Refinement ratio Y +! +XCFLMAXFIRE = 0.8 ! Max CFL on fire mesh +XLSDIFFUSION = 0.1 ! Numerical diffusion of LevelSet +XROSDIFFUSION = 0.05 ! Numerical diffusion of ROS +! +XFLUXZEXT = 3. ! Flux distribution on vertical caracteristic length +XFLUXZMAX = 4. * XFLUXZEXT ! Flux distribution on vertical max injetion height +! +XFLXCOEFTMP = 1. ! Flux multiplicator. For testing +! +LWINDFILTER = .FALSE. ! Fire wind filtering flag +CWINDFILTER = 'EWAM' ! Wind filter method (EWAM or WLIM) +XEWAMTAU = 20. ! Time averaging constant for EWAM method (s) +XWLIMUTH = 8. ! Thresehold wind value for WLIM method (m/s) +XWLIMUTMAX = 9. ! Maximum wind value for WLIM method (m/s) (needs to be >= XWLIMUTH ) +! +NNBSMOKETRACER = 1 ! Nb of smoke tracers +! +NWINDSLOPECPLMODE = 0 ! Flag for use of wind/slope in ROS (0 = wind + slope, 1 = wind only, 2 = slope only (U0=0)) +! +! +! +!! DO NOT CHANGE BELOW PARAMETERS +XFIREMESHSIZE(:) = 0. ! Fire mesh size (dxf,dyf) +LRESTA_ASE = .FALSE. ! Flag for using ASE in RESTA file +LRESTA_AWC = .FALSE. ! Flag for using AWC in RESTA file +LRESTA_EWAM = .FALSE. ! Flag for using EWAM in RESTA file +LRESTA_WLIM = .FALSE. ! Flag for using WLIM in RESTA file !------------------------------------------------------------------------------- END SUBROUTINE DEFAULT_DESFM_n diff --git a/src/mesonh/ext/ini_budget.f90 b/src/mesonh/ext/ini_budget.f90 index 3adfe547cbf88c5ead1fe6ee53eda13afb2dd607..bc66bd58749351a9fbec8e702134909d600f6089 100644 --- a/src/mesonh/ext/ini_budget.f90 +++ b/src/mesonh/ext/ini_budget.f90 @@ -228,7 +228,7 @@ use modd_dyn, only: lcorio, xseglen use modd_dyn_n, only: xtstep, locean use modd_elec_descr, only: linductive, lrelax2fw_ion use modd_field, only: TYPEREAL -use modd_fire, only: lblaze +use modd_fire_n, only: lblaze use modd_nsv, only: nsv_aerbeg, nsv_aerend, nsv_aerdepbeg, nsv_aerdepend, nsv_c2r2beg, nsv_c2r2end, & nsv_chembeg, nsv_chemend, nsv_chicbeg, nsv_chicend, nsv_csbeg, nsv_csend, & nsv_dstbeg, nsv_dstend, nsv_dstdepbeg, nsv_dstdepend, nsv_elecbeg, nsv_elecend, & @@ -527,6 +527,7 @@ if ( lbu_rth .or. lbu_rtke .or. lbu_rrv .or. lbu_rrc .or. lbu_rrr .or. & tburhodj%xdata(:, :, :) = 0. end if + tzsource%ntype = TYPEREAL tzsource%ndims = 3 diff --git a/src/mesonh/ext/ini_nsv.f90 b/src/mesonh/ext/ini_nsv.f90 index 3573e34ba187133e7b257c45e1af932de74f98c0..d1e5c5aaa2ccfd80acb3f95457177b15614e7890 100644 --- a/src/mesonh/ext/ini_nsv.f90 +++ b/src/mesonh/ext/ini_nsv.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2001-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2001-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -102,7 +102,7 @@ USE MODD_DYN_n, ONLY: LHORELAX_SVFF USE MODD_ELEC_DESCR, ONLY: LLNOX_EXPLICIT USE MODD_ELEC_DESCR, ONLY: CELECNAMES USE MODD_FIELD, ONLY: TFIELDMETADATA, TYPEREAL -USE MODD_FIRE +USE MODD_FIRE_n #ifdef MNH_FOREFIRE USE MODD_FOREFIRE #endif @@ -265,7 +265,7 @@ IF (CCLOUD == 'LIMA' ) THEN NSV_LIMA_IMM_NUCL_A(KMI) = ISV ISV = ISV + MAX(1,NMOD_IMM) END IF -! + IF ( NMOD_IFN > 0 ) THEN IF ( .NOT. ALLOCATED( NIMM ) ) ALLOCATE( NIMM(NMOD_CCN) ) NIMM(:) = 0 @@ -758,43 +758,49 @@ IF ( LDUST ) THEN IF ( NMODE_DST < 1 .OR. NMODE_DST > 3 ) CALL Print_msg( NVERB_FATAL, 'GEN', 'INI_NSV', 'NMODE_DST must in the 1 to 3 interval' ) ! Initialization of dust names + ! Was allocated for previous KMI + ! We assume that if LDUST=T on a model, NSV_DST_A(KMI) is the same for all IF( .NOT. ALLOCATED( CDUSTNAMES ) ) THEN ALLOCATE( CDUSTNAMES(NSV_DST_A(KMI)) ) - ALLOCATE( YDUSTLONGNAMES(NSV_DST_A(KMI)) ) - !Loop on all dust modes - IF ( INMOMENTS_DST == 1 ) THEN - DO JMODE = 1, NMODE_DST - IMODEIDX = JPDUSTORDER(JMODE) - JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2 - CDUSTNAMES(JMODE) = YPDUST_INI(JSV_NAME) - !Add meaning of the ppv unit (here for moment 3) - YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' - END DO - ELSE - DO JMODE = 1,NMODE_DST - !Find which mode we are dealing with - IMODEIDX = JPDUSTORDER(JMODE) - DO JMOM = 1, INMOMENTS_DST - !Find which number this is of the list of scalars - JSV = ( JMODE - 1 ) * INMOMENTS_DST + JMOM - !Find what name this corresponds to, always 3 moments assumed in YPDUST_INI - JSV_NAME = ( IMODEIDX - 1) * 3 + JMOM - !Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT - CDUSTNAMES(JSV) = YPDUST_INI(JSV_NAME) - !Add meaning of the ppv unit - IF ( JMOM == 1 ) THEN !Corresponds to moment 0 - YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]' - ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3 - YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' - ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6 - YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]' - ELSE - CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for DUST' ) - YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) ) - END IF - ENDDO ! Loop on moments - ENDDO ! Loop on dust modes - END IF + ELSE IF ( SIZE( CDUSTNAMES ) /= NSV_DST_A(KMI) ) THEN + CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_NSV', 'NSV_DST not the same for different model (if LDUST=T)' ) + DEALLOCATE( CDUSTNAMES ) + ALLOCATE( CDUSTNAMES(NSV_DST_A(KMI)) ) + END IF + ALLOCATE( YDUSTLONGNAMES(NSV_DST_A(KMI)) ) + !Loop on all dust modes + IF ( INMOMENTS_DST == 1 ) THEN + DO JMODE = 1, NMODE_DST + IMODEIDX = JPDUSTORDER(JMODE) + JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2 + CDUSTNAMES(JMODE) = YPDUST_INI(JSV_NAME) + !Add meaning of the ppv unit (here for moment 3) + YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' + END DO + ELSE + DO JMODE = 1,NMODE_DST + !Find which mode we are dealing with + IMODEIDX = JPDUSTORDER(JMODE) + DO JMOM = 1, INMOMENTS_DST + !Find which number this is of the list of scalars + JSV = ( JMODE - 1 ) * INMOMENTS_DST + JMOM + !Find what name this corresponds to, always 3 moments assumed in YPDUST_INI + JSV_NAME = ( IMODEIDX - 1) * 3 + JMOM + !Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT + CDUSTNAMES(JSV) = YPDUST_INI(JSV_NAME) + !Add meaning of the ppv unit + IF ( JMOM == 1 ) THEN !Corresponds to moment 0 + YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]' + ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3 + YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' + ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6 + YDUSTLONGNAMES(JSV) = TRIM( YPDUST_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]' + ELSE + CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for DUST' ) + YDUSTLONGNAMES(JMODE) = TRIM( YPDUST_INI(JSV_NAME) ) + END IF + ENDDO ! Loop on moments + ENDDO ! Loop on dust modes END IF ! Initialization of deposition scheme names @@ -814,44 +820,51 @@ END IF IF ( LSALT ) THEN IF ( NMODE_SLT < 1 .OR. NMODE_SLT > 8 ) CALL Print_msg( NVERB_FATAL, 'GEN', 'INI_NSV', 'NMODE_SLT must in the 1 to 8 interval' ) + ! Was allocated for previous KMI + ! We assume that if LSALT=T on a model, NSV_SLT_A(KMI) is the same for all IF( .NOT. ALLOCATED( CSALTNAMES ) ) THEN ALLOCATE( CSALTNAMES(NSV_SLT_A(KMI)) ) - ALLOCATE( YSALTLONGNAMES(NSV_DST_A(KMI)) ) - !Loop on all dust modes - IF ( INMOMENTS_SLT == 1 ) THEN - DO JMODE = 1, NMODE_SLT - IMODEIDX = JPSALTORDER(JMODE) - JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2 - CSALTNAMES(JMODE) = YPSALT_INI(JSV_NAME) - !Add meaning of the ppv unit (here for moment 3) - YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' - END DO - ELSE - DO JMODE = 1, NMODE_SLT - !Find which mode we are dealing with - IMODEIDX = JPSALTORDER(JMODE) - DO JMOM = 1, INMOMENTS_SLT - !Find which number this is of the list of scalars - JSV = ( JMODE - 1 ) * INMOMENTS_SLT + JMOM - !Find what name this corresponds to, always 3 moments assumed in YPSALT_INI - JSV_NAME = ( IMODEIDX - 1 ) * 3 + JMOM - !Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT - CSALTNAMES(JSV) = YPSALT_INI(JSV_NAME) - !Add meaning of the ppv unit - IF ( JMOM == 1 ) THEN !Corresponds to moment 0 - YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]' - ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3 - YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' - ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6 - YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]' - ELSE - CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for SALT' ) - YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) ) - END IF - ENDDO ! Loop on moments - ENDDO ! Loop on dust modes - END IF + ELSE IF ( SIZE( CSALTNAMES ) /= NSV_SLT_A(KMI) ) THEN + CALL Print_msg( NVERB_ERROR, 'GEN', 'INI_NSV', 'NSV_SLT not the same for different model (if LSALT=T)' ) + DEALLOCATE( CSALTNAMES ) + ALLOCATE( CSALTNAMES(NSV_SLT_A(KMI)) ) END IF + ALLOCATE( YSALTLONGNAMES(NSV_SLT_A(KMI)) ) + !Loop on all dust modes + IF ( INMOMENTS_SLT == 1 ) THEN + DO JMODE = 1, NMODE_SLT + IMODEIDX = JPSALTORDER(JMODE) + JSV_NAME = ( IMODEIDX - 1 ) * 3 + 2 + CSALTNAMES(JMODE) = YPSALT_INI(JSV_NAME) + !Add meaning of the ppv unit (here for moment 3) + YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' + END DO + ELSE + DO JMODE = 1, NMODE_SLT + !Find which mode we are dealing with + IMODEIDX = JPSALTORDER(JMODE) + DO JMOM = 1, INMOMENTS_SLT + !Find which number this is of the list of scalars + JSV = ( JMODE - 1 ) * INMOMENTS_SLT + JMOM + !Find what name this corresponds to, always 3 moments assumed in YPSALT_INI + JSV_NAME = ( IMODEIDX - 1 ) * 3 + JMOM + !Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT + CSALTNAMES(JSV) = YPSALT_INI(JSV_NAME) + !Add meaning of the ppv unit + IF ( JMOM == 1 ) THEN !Corresponds to moment 0 + YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [nb_aerosols/molec_{air}]' + ELSE IF ( JMOM == 2 ) THEN !Corresponds to moment 3 + YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [molec_{aer}/molec_{air}]' + ELSE IF ( JMOM == 3 ) THEN !Corresponds to moment 6 + YSALTLONGNAMES(JSV) = TRIM( YPSALT_INI(JSV_NAME) ) // ' [um6/molec_{air}*(cm3/m3)]' + ELSE + CALL Print_msg( NVERB_WARNING, 'GEN', 'INI_NSV', 'unknown moment for SALT' ) + YSALTLONGNAMES(JMODE) = TRIM( YPSALT_INI(JSV_NAME) ) + END IF + ENDDO ! Loop on moments + ENDDO ! Loop on dust modes + END IF + ! Initialization of deposition scheme IF ( LDEPOS_SLT(KMI) ) THEN IF( .NOT. ALLOCATED( CDESLTNAMES ) ) THEN @@ -1053,6 +1066,22 @@ DO JSV = NSV_FFBEG_A(KMI), NSV_FFEND_A(KMI) END DO #endif +DO JSV = NSV_FIREBEG_A(KMI), NSV_FIREEND_A(KMI) + WRITE( YNUM3, '( I3.3 )' ) JSV-NSV_FIREBEG_A(KMI)+1 + + TSVLIST_A(JSV, KMI) = TFIELDMETADATA( & + CMNHNAME = 'SVFIRE' // YNUM3, & + CSTDNAME = '', & + CLONGNAME = 'SVFIRE' // YNUM3, & + CUNITS = 'kg kg-1', & + CDIR = 'XY', & + CCOMMENT = 'X_Y_Z_' // 'SVT' // YNUM3, & + NGRID = 1, & + NTYPE = TYPEREAL, & + NDIMS = 3, & + LTIMEDEP = .TRUE. ) +END DO + DO JSV = NSV_CSBEG_A(KMI), NSV_CSEND_A(KMI) WRITE( YNUM3, '( I3.3 )' ) JSV-NSV_CSBEG_A(KMI) diff --git a/src/mesonh/ext/modeln.f90 b/src/mesonh/ext/modeln.f90 index 555b3cef2c31dbba4a3d3e383c3ba258813b5b46..b5ab334898edb2435108ee39274f9f58f0bd6ee0 100644 --- a/src/mesonh/ext/modeln.f90 +++ b/src/mesonh/ext/modeln.f90 @@ -466,7 +466,7 @@ USE MODI_WRITE_LFIFM_n USE MODI_WRITE_SERIES_n USE MODI_WRITE_SURF_ATM_N ! -USE MODD_FIRE +USE MODD_FIRE_n IMPLICIT NONE ! !* 0.1 declarations of arguments diff --git a/src/mesonh/ext/read_exsegn.f90 b/src/mesonh/ext/read_exsegn.f90 index c036b6284dbf22f12927c5222fa9aed3f31121df..59d9b68d0284d1d6e9848b68ad7537b24c1f21ef 100644 --- a/src/mesonh/ext/read_exsegn.f90 +++ b/src/mesonh/ext/read_exsegn.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. @@ -370,6 +370,7 @@ USE MODN_ELEC USE MODN_EOL USE MODN_EOL_ADNR USE MODN_EOL_ALM +USE MODN_FIRE_n USE MODN_FLYERS #ifdef MNH_FOREFIRE USE MODN_FOREFIRE @@ -410,8 +411,6 @@ USE MODN_TURB USE MODN_TURB_CLOUD USE MODN_TURB_n USE MODN_VISCOSITY -USE MODD_FIRE -USE MODN_FIRE ! IMPLICIT NONE ! @@ -512,6 +511,7 @@ CALL INIT_NAM_SERIESN CALL INIT_NAM_BLOWSNOWN CALL INIT_NAM_PROFILERn CALL INIT_NAM_STATIONn +CALL INIT_NAM_FIREn ! WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')") CALL POSNAM(ILUSEG,'NAM_LUNITN',GFOUND,ILUOUT) @@ -570,6 +570,8 @@ CALL POSNAM(ILUSEG,'NAM_PROFILERN',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PROFILERn) CALL POSNAM(ILUSEG,'NAM_STATIONN',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn) +CALL POSNAM(ILUSEG,'NAM_FIREN',GFOUND,ILUOUT) +IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIREn) ! IF (KMI == 1) THEN WRITE(UNIT=ILUOUT,FMT="(' namelists common to all the models ')") @@ -852,8 +854,6 @@ IF (KMI == 1) THEN IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_2D_FRC) CALL POSNAM(ILUSEG,'NAM_LATZ_EDFLX',GFOUND) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LATZ_EDFLX) - CALL POSNAM(ILUSEG,'NAM_FIRE',GFOUND,ILUOUT) - IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIRE) CALL POSNAM(ILUSEG,'NAM_BLOWSNOW',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_BLOWSNOW) CALL POSNAM(ILUSEG,'NAM_VISC',GFOUND,ILUOUT) @@ -962,6 +962,7 @@ IF( CCLOUD == 'LIMA' ) THEN 'GRAU','HAIL') END IF ! Blaze +CALL UPDATE_NAM_FIREn IF (LBLAZE) THEN CALL TEST_NAM_VAR(ILUOUT,'CPROPAG_MODEL',CPROPAG_MODEL,'SANTONI2011') CALL TEST_NAM_VAR(ILUOUT,'CHEAT_FLUX_MODEL',CHEAT_FLUX_MODEL,'CST','EXP','EXS') @@ -969,6 +970,7 @@ IF (LBLAZE) THEN CALL TEST_NAM_VAR(ILUOUT,'CFIRE_CPL_MODE',CFIRE_CPL_MODE,'2WAYCPL','FIR2ATM','ATM2FIR') CALL TEST_NAM_VAR(ILUOUT,'CWINDFILTER',CWINDFILTER,'EWAM','WLIM') END IF +! IF(LBLOWSNOW) THEN CALL TEST_NAM_VAR(ILUOUT,'CSNOWSEDIM',CSNOWSEDIM,'NONE','MITC','CARR','TABC') IF (XALPHA_SNOW .NE. 3 .AND. CSNOWSEDIM=='TABC') THEN @@ -3040,6 +3042,7 @@ CALL UPDATE_NAM_SERIESN CALL UPDATE_NAM_BLOWSNOWN CALL UPDATE_NAM_PROFILERn CALL UPDATE_NAM_STATIONn +CALL UPDATE_NAM_FIREn !------------------------------------------------------------------------------- WRITE(UNIT=ILUOUT,FMT='(/)') !-------------------------------------------------------------------------------