Newer
Older
CALL INI_SPAWN_LS_n(NDAD(KMI),XTSTEP,KMI, &
DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4, &
DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4, &
NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI), &
DPTR_CLBCX,DPTR_CLBCY,DPTR_XZZ,DPTR_XZHAT, &
LSLEVE,XLEN1,XLEN2, &

RODIER Quentin
committed
DPTR_XLSUM,DPTR_XLSVM,DPTR_XLSWM,DPTR_XLSTHM,DPTR_XLSRVM,DPTR_XLSZWSM, &
DPTR_XLSUS,DPTR_XLSVS,DPTR_XLSWS,DPTR_XLSTHS,DPTR_XLSRVS,DPTR_XLSZWSS, &
DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU, &
DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV, &
DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW, &
DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM )
!
DPTR_XLBXUM=>XLBXUM
DPTR_XLBYUM=>XLBYUM
DPTR_XLBXVM=>XLBXVM
DPTR_XLBYVM=>XLBYVM
DPTR_XLBXWM=>XLBXWM
DPTR_XLBYWM=>XLBYWM
DPTR_XLBXTHM=>XLBXTHM
DPTR_XLBYTHM=>XLBYTHM
DPTR_XLBXTKEM=>XLBXTKEM
DPTR_XLBYTKEM=>XLBYTKEM
DPTR_XLBXRM=>XLBXRM
DPTR_XLBYRM=>XLBYRM
DPTR_XLBXSVM=>XLBXSVM
DPTR_XLBYSVM=>XLBYSVM
CALL INI_ONE_WAY_n(NDAD(KMI),KMI, &
DPTR_XBMX1,DPTR_XBMX2,DPTR_XBMX3,DPTR_XBMX4,DPTR_XBMY1,DPTR_XBMY2,DPTR_XBMY3,DPTR_XBMY4, &
DPTR_XBFX1,DPTR_XBFX2,DPTR_XBFX3,DPTR_XBFX4,DPTR_XBFY1,DPTR_XBFY2,DPTR_XBFY3,DPTR_XBFY4, &
NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI), &
DPTR_CLBCX,DPTR_CLBCY,NRIMX,NRIMY, &
DPTR_NKLIN_LBXU,DPTR_XCOEFLIN_LBXU,DPTR_NKLIN_LBYU,DPTR_XCOEFLIN_LBYU, &
DPTR_NKLIN_LBXV,DPTR_XCOEFLIN_LBXV,DPTR_NKLIN_LBYV,DPTR_XCOEFLIN_LBYV, &
DPTR_NKLIN_LBXW,DPTR_XCOEFLIN_LBXW,DPTR_NKLIN_LBYW,DPTR_XCOEFLIN_LBYW, &
DPTR_NKLIN_LBXM,DPTR_XCOEFLIN_LBXM,DPTR_NKLIN_LBYM,DPTR_XCOEFLIN_LBYM, &
CCLOUD, LUSECHAQ, LUSECHIC, &
DPTR_XLBXUM,DPTR_XLBYUM,DPTR_XLBXVM,DPTR_XLBYVM,DPTR_XLBXWM,DPTR_XLBYWM, &
DPTR_XLBXTHM,DPTR_XLBYTHM, &
DPTR_XLBXTKEM,DPTR_XLBYTKEM, &
DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM )
END IF
!
!
!-------------------------------------------------------------------------------
!
! -------------------------------
!
IF (LLG .AND. LINIT_LG .AND. CPROGRAM=='MESONH') &
CALL INI_LG(XXHAT,XYHAT,XZZ,XSVT,XLBXSVM,XLBYSVM)
!
!-------------------------------------------------------------------------------
!
!* 16. INITIALIZE THE PARAMETERS FOR THE DYNAMICS
! ------------------------------------------
!
CALL INI_DYNAMICS(XLON,XLAT,XRHODJ,XTHVREF,XMAP,XZZ,XDXHAT,XDYHAT, &
XZHAT,CLBCX,CLBCY,XTSTEP, &
LVE_RELAX,LVE_RELAX_GRD,LHORELAX_UVWTH,LHORELAX_RV, &
LHORELAX_RC,LHORELAX_RR,LHORELAX_RI,LHORELAX_RS,LHORELAX_RG, &
LHORELAX_RH,LHORELAX_TKE,LHORELAX_SV, &
LHORELAX_SVC2R2,LHORELAX_SVC1R3,LHORELAX_SVELEC,LHORELAX_SVLG, &
LHORELAX_SVCHEM,LHORELAX_SVAER,LHORELAX_SVDST,LHORELAX_SVSLT, &
LHORELAX_SVPP,LHORELAX_SVCS,LHORELAX_SVCHIC,LHORELAX_SVSNW, &
#ifdef MNH_FOREFIRE
LHORELAX_SVFF, &
#endif
XRIMKMAX,NRIMX,NRIMY, &
XALKTOP,XALKGRD,XALZBOT,XALZBAS, &
XT4DIFU,XT4DIFTH,XT4DIFSV, &
XCORIOX,XCORIOY,XCORIOZ,XCURVX,XCURVY, &
XDXHATM,XDYHATM,XRHOM,XAF,XBFY,XCF,XTRIGSX,XTRIGSY,NIFAXX,NIFAXY,&
XALK,XALKW,NALBOT,XALKBAS,XALKWBAS,NALBAS, &
LMASK_RELAX,XKURELAX,XKVRELAX,XKWRELAX, &
XDK2U,XDK4U,XDK2TH,XDK4TH,XDK2SV,XDK4SV, &
LZDIFFU,XZDIFFU_HALO2, &
XBFB,XBF_SXP2_YP1_Z )
!
!
!* 16.1 Initialize the XDRAG array
! -------------
IF (LDRAG) THEN
CALL INI_DRAG(LMOUNT,XZS,XHSTART,NSTART,XDRAG)
ENDIF
!-------------------------------------------------------------------------------
!
! ---------------
!
IF (CRAD /= 'NONE') THEN
IF (CGETRAD =='INIT') THEN
GINIRAD =.TRUE.
ELSE
GINIRAD =.FALSE.
END IF

WAUTELET Philippe
committed
CALL INI_RADIATIONS(TPINIFILE,GINIRAD,TDTCUR,TDTEXP,XZZ, &
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
XDXX, XDYY, &
XSINDEL,XCOSDEL,XTSIDER,XCORSOL, &
XSLOPANG,XSLOPAZI, &
XDTHRAD,XDIRFLASWD,XSCAFLASWD, &
XFLALWD,XDIRSRFSWD,NCLEARCOL_TM1, &
XZENITH,XAZIM, &
TDTRAD_FULL,TDTRAD_CLONLY, &
TZINITHALO2D_ll, &
XRADEFF,XSWU,XSWD,XLWU, &
XLWD,XDTHRADSW,XDTHRADLW )
!
IF (GINIRAD) CALL SUNPOS_n(XZENITH,PAZIMSOL=XAZIM)
CALL SURF_SOLAR_GEOM (XZS, XZS_XY)
!
ALLOCATE(XXHAT_ll (IIU_ll))
ALLOCATE(XYHAT_ll (IJU_ll))
ALLOCATE(XZS_ll (IIU_ll,IJU_ll))
ALLOCATE(XZS_XY_ll (IIU_ll,IJU_ll))
!
CALL GATHERALL_FIELD_ll('XY',XZS,XZS_ll,IRESP)
CALL GATHERALL_FIELD_ll('XY',XZS_XY,XZS_XY_ll,IRESP)
CALL GATHERALL_FIELD_ll('XX',XXHAT,XXHAT_ll,IRESP)
CALL GATHERALL_FIELD_ll('YY',XYHAT,XYHAT_ll,IRESP)
XZS_MAX_ll=MAXVAL(XZS_ll)
ELSE
XAZIM = XPI
XZENITH = XPI/2.
XDIRSRFSWD = 0.
XSCAFLASWD = 0.
XFLALWD = 300. ! W/m2
XTSIDER = 0.
END IF
!
!
CALL INI_SW_SETUP (CRAD,NSWB_MNH,XSW_BANDS)
CALL INI_LW_SETUP (CRAD,NLWB_MNH,XLW_BANDS)
! 17.1.1 Special initialisation for CO2 content
! CO2 (molar mass=44) horizontally and vertically homogeneous at 360 ppm
!
XCCO2 = 360.0E-06 * 44.0E-03 / XMD
#ifdef MNH_ECRAD
RCCO2 = 360.0E-06 * 44.0E-03 / XMD
#endif
! ---------------------------
!
ALLOCATE(ZCO2(IIU,IJU))
ZCO2(:,:) = XCCO2
!
ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH))
ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH))
ALLOCATE(ZEMIS (IIU,IJU,NLWB_MNH))

WAUTELET Philippe
committed
IF ((TPINIFILE%NMNHVERSION(1)==4 .AND. TPINIFILE%NMNHVERSION(2)>=6) .OR. TPINIFILE%NMNHVERSION(1)>4) THEN

WAUTELET Philippe
committed
CALL IO_Field_read(TPINIFILE,'SURF',CSURF)
ELSE
CSURF = "EXTE"
END IF
!
!
IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ')) THEN
! ouverture du fichier PGD
IF ( LEN_TRIM(CINIFILEPGD) > 0 ) THEN

WAUTELET Philippe
committed
CALL IO_File_add2list(TINIFILEPGD,TRIM(CINIFILEPGD),'PGD','READ',KLFITYPE=2,KLFIVERB=NVERB)
CALL IO_File_open(TINIFILEPGD,KRESP=IRESP)

WAUTELET Philippe
committed
LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD
IF (IRESP/=0) THEN
WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNITn"
!callabortstop
CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
ENDIF
ELSE
! case after a spawning

Juan Escobar
committed
#ifdef CPLOASIS
CALL SFX_OASIS_READ_NAM(CPROGRAM,XTSTEP)
WRITE(*,*) 'SFX-OASIS: READ NAM_SFX_SEA_CPL OK'
#endif
!* initialization of surface
CALL INIT_GROUND_PARAM_n ('ALL',SIZE(CSV),CSV,ZCO2, &
XZENITH,XAZIM,XSW_BANDS,XLW_BANDS,ZDIR_ALB,ZSCA_ALB, &
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
ZEMIS,ZTSRAD )
!
IF (SIZE(XEMIS)>0) THEN
XDIR_ALB = ZDIR_ALB
XSCA_ALB = ZSCA_ALB
XEMIS = ZEMIS
XTSRAD = ZTSRAD
CALL MNHGET_SURF_PARAM_n (PSEA=XSEA)
END IF
ELSE
!* fields not physically necessary, but must be initialized
IF (SIZE(XEMIS)>0) THEN
XDIR_ALB = 0.
XSCA_ALB = 0.
XEMIS = 1.
XTSRAD = XTT
XSEA = 1.
END IF
END IF
IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN
! ouverture du fichier PGD

WAUTELET Philippe
committed
CALL IO_File_add2list(TINIFILEPGD,TRIM(CINIFILEPGD),'PGD','READ',KLFITYPE=2,KLFIVERB=NVERB)
CALL IO_File_open(TINIFILEPGD,KRESP=IRESP)

WAUTELET Philippe
committed
LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD
IF (IRESP/=0) THEN
WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNIT2_SPA"
!callabortstop
CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
!
IF (.NOT.ASSOCIATED(TINIFILEPGD)) TINIFILEPGD => TFILE_DUMMY
!
!* special case after spawning in prep_real_case
IF (CSURF=='EXRM' .AND. CPROGRAM=='REAL ') CSURF = 'EXTE'
!
DEALLOCATE(ZDIR_ALB)
DEALLOCATE(ZSCA_ALB)
DEALLOCATE(ZEMIS )
DEALLOCATE(ZTSRAD )
!
DEALLOCATE(ZCO2)
!
!
!* in a RESTART case, reads surface radiative quantities in the MESONH file
!
IF ((CRAD == 'ECMW' .OR. CRAD == 'ECRA') .AND. CGETRAD=='READ') THEN

WAUTELET Philippe
committed
CALL INI_SURF_RAD(TPINIFILE, XDIR_ALB, XSCA_ALB, XEMIS, XTSRAD)

WAUTELET Philippe
committed
IF (CPROGRAM/='REAL ') CALL MNHREAD_ZS_DUMMY_n(TINIFILEPGD)
!
!-------------------------------------------------------------------------------
!
!* 18. INITIALIZE THE PARAMETERS FOR THE PHYSICS
! -----------------------------------------
!
IF (CRAD == 'ECMW') THEN
!
!* get cover mask for aerosols
!
IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ') THEN
ALLOCATE(ZSEA(IIU,IJU))
ALLOCATE(ZTOWN(IIU,IJU))
ALLOCATE(ZBARE(IIU,IJU))
CALL MNHGET_SURF_PARAM_n(PSEA=ZSEA,PTOWN=ZTOWN,PBARE=ZBARE)
ZSEA (:,:) = 1.
ZTOWN(:,:) = 0.
ZBARE(:,:) = 0.

WAUTELET Philippe
committed
!

RODIER Quentin
committed
IF ( CAOP=='EXPL' .AND. LDUST .AND. KMI==1) THEN

WAUTELET Philippe
committed
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
!

RODIER Quentin
committed
IF ( CAOP=='EXPL' .AND. LSALT .AND. KMI==1) THEN

WAUTELET Philippe
committed
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

WAUTELET Philippe
committed
CALL INI_RADIATIONS_ECMWF (XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP, &
CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,CAER,NAER,NSTATM, &
XSTATM,ZSEA,ZTOWN,ZBARE,XOZON, XAER,XDST_WL, LSUBG_COND )
DEALLOCATE(ZSEA,ZTOWN,ZBARE)
ALLOCATE (XAER_CLIM(SIZE(XAER,1),SIZE(XAER,2),SIZE(XAER,3),SIZE(XAER,4)))
XAER_CLIM(:,:,:,:) =XAER(:,:,:,:)
ELSE IF (CRAD == 'ECRA') THEN
#ifdef MNH_ECRAD
!* get cover mask for aerosols
!
IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ') THEN
ALLOCATE(ZSEA(IIU,IJU))
ALLOCATE(ZTOWN(IIU,IJU))
ALLOCATE(ZBARE(IIU,IJU))
IF (CSURF=='EXTE') THEN
CALL GOTO_SURFEX(KMI)
CALL MNHGET_SURF_PARAM_n(PSEA=ZSEA,PTOWN=ZTOWN,PBARE=ZBARE)
ELSE
ZSEA (:,:) = 1.
ZTOWN(:,:) = 0.
ZBARE(:,:) = 0.
END IF

WAUTELET Philippe
committed
!
CALL INI_RADIATIONS_ECRAD (XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP, &
CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,CAER,NAER,NSTATM, &
XSTATM,ZSEA,ZTOWN,ZBARE,XOZON, XAER,XDST_WL, LSUBG_COND )
DEALLOCATE(ZSEA,ZTOWN,ZBARE)
ALLOCATE (XAER_CLIM(SIZE(XAER,1),SIZE(XAER,2),SIZE(XAER,3),SIZE(XAER,4)))
XAER_CLIM(:,:,:,:) = XAER(:,:,:,:)
!
END IF
#endif
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
ELSE
ALLOCATE (XOZON(0,0,0))
ALLOCATE (XAER(0,0,0,0))
ALLOCATE (XDST_WL(0,0,0,0))
ALLOCATE (XAER_CLIM(0,0,0,0))
END IF
!
!
!
IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
IF (CGETCONV=='INIT') THEN
GINIDCONV=.TRUE.
ELSE
GINIDCONV=.FALSE.
END IF
!
! commensurability between convection calling time and time step
!
XDTCONV=XTSTEP*REAL( INT( (MIN(XDTCONV,1800.)+1.E-10)/XTSTEP ) )
XDTCONV=MAX( XDTCONV, XTSTEP )
IF (NVERB>=10) THEN
WRITE(ILUOUT,*) 'XDTCONV has been set to : ',XDTCONV
END IF

WAUTELET Philippe
committed
CALL INI_DEEP_CONVECTION (TPINIFILE,GINIDCONV,TDTCUR, &
NCOUNTCONV,XDTHCONV,XDRVCONV,XDRCCONV, &
XDRICONV,XPRCONV,XPRSCONV,XPACCONV, &
XUMFCONV,XDMFCONV,XMFCONV,XPRLFLXCONV,XPRSFLXCONV,&
XCAPE,NCLTOPCONV,NCLBASCONV, &
TDTDCONV, CGETSVCONV, XDSVCONV, &
LCH_CONV_LINOX, XIC_RATE, XCG_RATE, &
XIC_TOTAL_NUMBER, XCG_TOTAL_NUMBER )
END IF
!
!-------------------------------------------------------------------------------
!
!
! ---------------------------------
!
IF (LSERIES .AND. CPROGRAM/='DIAG ') CALL INI_SERIES_n
!
!-------------------------------------------------------------------------------
!
!
! -------------------------------
!
!
IF ( LUSECHEM .OR. LCHEMDIAG ) THEN
IF (CPROGRAM=='MESONH'.AND.CCONF=='RESTA') LCH_INIT_FIELD =.FALSE.
IF (CPROGRAM=='MESONH'.OR. CPROGRAM=='DIAG ' .OR. CPROGRAM=='IDEAL ') &
CALL CH_INIT_FIELD_n(KMI, ILUOUT, NVERB)
END IF
!
!-------------------------------------------------------------------------------
!
! -----------
!
!
CALL UPDATE_HALO_ll(TZINITHALO3D_ll,IINFO_ll)
CALL UPDATE_HALO_ll(TZINITHALO2D_ll,IINFO_ll)
CALL CLEANLIST_ll(TZINITHALO3D_ll)
CALL CLEANLIST_ll(TZINITHALO2D_ll)
!
!
!-------------------------------------------------------------------------------
!
! -------------
!
DEALLOCATE(ZJ)
!
DEALLOCATE(XSTROATM)
DEALLOCATE(XSMLSATM)
DEALLOCATE(XSMLWATM)
DEALLOCATE(XSPOSATM)
DEALLOCATE(XSPOWATM)
!
!-------------------------------------------------------------------------------
!
! ------------------------------------
!
CALL INI_AIRCRAFT_BALLOON(TPINIFILE,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV, &
IKU,CTURB=="TKEL" , &
XLATORI, XLONORI )
!
!-------------------------------------------------------------------------------
!

WAUTELET Philippe
committed
CALL INI_SURFSTATION_n(XTSTEP, XSEGLEN, NRR, NSV, &
CTURB=="TKEL" , &
XLATORI, XLONORI )
!
!-------------------------------------------------------------------------------
!

WAUTELET Philippe
committed
CALL INI_POSPROFILER_n(XTSTEP, XSEGLEN, NRR, NSV, &
CTURB=="TKEL", &
XLATORI, XLONORI )
!
!-------------------------------------------------------------------------------
!

WAUTELET Philippe
committed
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
!
!-------------------------------------------------------------------------------
! ------------------------
!
! Coupling with ForeFire if resolution is low enough
!---------------------------------------------------
IF ( LFOREFIRE .AND. 0.5*(XXHAT(2)-XXHAT(1)+XYHAT(2)-XYHAT(1)) < COUPLINGRES ) THEN

WAUTELET Philippe
committed
FFCOUPLING = .TRUE.
ELSE

WAUTELET Philippe
committed
FFCOUPLING = .FALSE.
ENDIF
! Initializing the ForeFire variables
!------------------------------------
IF ( LFOREFIRE ) THEN

WAUTELET Philippe
committed
CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
, TDTCUR%nyear, TDTCUR%nmonth, TDTCUR%nday, TDTCUR%xtime, XTSTEP)
END IF
#endif

Gaelle DELAUTIER
committed
!-------------------------------------------------------------------------------
!
!* 30. Total production/Loss for chemical species
!

Gaelle DELAUTIER
committed
IF (LCHEMDIAG) THEN

WAUTELET Philippe
committed
CALL CH_INIT_PRODLOSSTOT_n(ILUOUT)
IF (NEQ_PLT>0) THEN
ALLOCATE(XPROD(IIU,IJU,IKU,NEQ_PLT))
ALLOCATE(XLOSS(IIU,IJU,IKU,NEQ_PLT))
XPROD=0.0
XLOSS=0.0
ELSE
ALLOCATE(XPROD(0,0,0,0))
ALLOCATE(XLOSS(0,0,0,0))
END IF

Gaelle DELAUTIER
committed
ELSE

WAUTELET Philippe
committed
ALLOCATE(XPROD(0,0,0,0))
ALLOCATE(XLOSS(0,0,0,0))

Gaelle DELAUTIER
committed
END IF
!
!-------------------------------------------------------------------------------
!
!* 31. Extended production/loss terms for chemical species
!

Gaelle DELAUTIER
committed
IF (LCHEMDIAG) THEN

WAUTELET Philippe
committed
CALL CH_INIT_BUDGET_n(ILUOUT)
IF (NEQ_BUDGET>0) THEN
ALLOCATE(IINDEX(2,NNONZEROTERMS))
ALLOCATE(IIND(NEQ_BUDGET))
CALL CH_NONZEROTERMS(KMI,IINDEX,NNONZEROTERMS)
ALLOCATE(XTCHEM(NEQ_BUDGET))
DO JM=1,NEQ_BUDGET
IIND(JM)=COUNT((IINDEX(1,:))==NSPEC_BUDGET(JM))
ALLOCATE(XTCHEM(JM)%NB_REAC(IIND(JM)))
ALLOCATE(XTCHEM(JM)%XB_REAC(IIU,IJU,IKU,IIND(JM)))
END DO
DEALLOCATE(IIND)
DEALLOCATE(IINDEX)
ELSE
ALLOCATE(XTCHEM(0))
END IF

Gaelle DELAUTIER
committed
ELSE

WAUTELET Philippe
committed
ALLOCATE(XTCHEM(0))

Gaelle DELAUTIER
committed
END IF
!-------------------------------------------------------------------------------
!
!* 32. Wind turbine
!
IF (LMAIN_EOL .AND. KMI == NMODEL_EOL) THEN
ALLOCATE(XFX_RG(IIU,IJU,IKU))
ALLOCATE(XFY_RG(IIU,IJU,IKU))
ALLOCATE(XFZ_RG(IIU,IJU,IKU))
ALLOCATE(XFX_SMR_RG(IIU,IJU,IKU))
ALLOCATE(XFY_SMR_RG(IIU,IJU,IKU))
ALLOCATE(XFZ_SMR_RG(IIU,IJU,IKU))
SELECT CASE(CMETH_EOL)
CASE('ADNR')
CALL INI_EOL_ADNR
CASE('ALM')
CALL INI_EOL_ALM(XDXX,XDYY)
END SELECT
END IF
!