Newer
Older
ENDIF
ENDIF
!
!* 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' .AND. CGETRAD=='READ') THEN
CALL INI_SURF_RAD(TPINIFILE%CNAME, CLUOUT, 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.
CALL INI_RADIATIONS_ECMWF (TPINIFILE%CNAME,HLUOUT, &
XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP, &
CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB,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(:,:,:,:)
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
!
END IF
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
CALL INI_DEEP_CONVECTION (TPINIFILE%CNAME,HLUOUT,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%CNAME,CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV, &
IKU,CTURB=="TKEL" , &
XLATORI, XLONORI )
!
!-------------------------------------------------------------------------------
!
! -----------------------
!
CALL INI_SURFSTATION_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV, &
CTURB=="TKEL" , &
XLATORI, XLONORI )
!
!-------------------------------------------------------------------------------
!
! ------------------------
!
CALL INI_POSPROFILER_n(CLUOUT,XTSTEP, TDTSEG, XSEGLEN, NRR, NSV, &
CTURB=="TKEL", &
XLATORI, XLONORI )
!
!-------------------------------------------------------------------------------
!
! ------------------------
!
CALL INI_AEROSET1
CALL INI_AEROSET2
CALL INI_AEROSET3
CALL INI_AEROSET4
CALL INI_AEROSET5
CALL INI_AEROSET6
#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
FFCOUPLING = .TRUE.
ELSE
FFCOUPLING = .FALSE.
ENDIF
! Initializing the ForeFire variables
!------------------------------------
IF ( LFOREFIRE ) THEN
CALL INIT_FOREFIRE_n(KMI, ILUOUT, IP &
, TDTCUR%TDATE%YEAR, TDTCUR%TDATE%MONTH, TDTCUR%TDATE%DAY, TDTCUR%TIME, XTSTEP)
END IF
#endif

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

Gaelle DELAUTIER
committed
IF (LCHEMDIAG) THEN

Gaelle DELAUTIER
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
ELSE
ALLOCATE(XPROD(0,0,0,0))
ALLOCATE(XLOSS(0,0,0,0))
END IF
!
!-------------------------------------------------------------------------------
!
!* 31. Extended production/loss terms for chemical species
!

Gaelle DELAUTIER
committed
IF (LCHEMDIAG) THEN

Gaelle DELAUTIER
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
ELSE
ALLOCATE(XTCHEM(0))
END IF