CLASSIC
Canadian Land Surface Scheme including Biogeochemical Cycles
energyBudgetDriver.f90 File Reference

Calls subroutines to perform surface energy budget calculations. More...

Functions/Subroutines

subroutine energybudgetdriver (TBARC, TBARG, TBARCS, TBARGS, THLIQC, THLIQG, THICEC, THICEG, HCPC, HCPG, TCTOPC, TCBOTC, TCTOPG, TCBOTG, GZEROC, GZEROG, GZROCS, GZROGS, G12C, G12G, G12CS, G12GS, G23C, G23G, G23CS, G23GS, QFREZC, QFREZG, QMELTC, QMELTG, EVAPC, EVAPCG, EVAPG, EVAPCS, EVPCSG, EVAPGS, TCANO, TCANS, RAICAN, SNOCAN, RAICNS, SNOCNS, CHCAP, CHCAPS, TPONDC, TPONDG, TPNDCS, TPNDGS, TSNOCS, TSNOGS, WSNOCS, WSNOGS, RHOSCS, RHOSGS, ITERCT, CDH, CDM, QSENS, TFLUX, QEVAP, EVAP, EVPPOT, ACOND, EVAPB, GT, QG, ST, SU, SV, SQ, SRH, GTBS, SFCUBS, SFCVBS, USTARBS, FSGV, FSGS, FSGG, FLGV, FLGS, FLGG, HFSC, HFSS, HFSG, HEVC, HEVS, HEVG, HMFC, HMFN, HTCC, HTCS, HTC, QFCF, QFCL, DRAG, WTABLE, ILMO, UE, HBL, TAC, QAC, ZREFM, ZREFH, ZDIAGM, ZDIAGH, VPD, TADP, RHOAIR, QSWINV, QSWINI, QLWIN, UWIND, VWIND, TA, QA, PADRY, FC, FG, FCS, FGS, RBCOEF, FSVF, FSVFS, PRESSG, VMOD, ALVSCN, ALIRCN, ALVSG, ALIRG, ALVSCS, ALIRCS, ALVSSN, ALIRSN, ALVSGC, ALIRGC, ALVSSC, ALIRSC, TRVSCN, TRIRCN, TRVSCS, TRIRCS, RC, RCS, WTRG, groundHeatFlux, QLWAVG, FRAINC, FSNOWC, FRAICS, FSNOCS, CMASSC, CMASCS, DISP, DISPS, ZOMLNC, ZOELNC, ZOMLNG, ZOELNG, ZOMLCS, ZOELCS, ZOMLNS, ZOELNS, TBAR, THLIQ, THICE, TPOND, ZPOND, TBASE, TCAN, TSNOW, ZSNOW, RHOSNO, WSNOW, THPOR, THLRET, THLMIN, THFC, THLW, TRSNOWC, TRSNOWG, ALSNO, FSSB, FROOT, FROOTS, RADJ, PCPR, HCPS, TCS, TSFSAV, DELZ, DELZW, ZBOTW, FTEMP, FVAP, RIB, ISAND, AILCG, AILCGS, FCANC, FCANCS, CO2CONC, CO2I1CG, CO2I1CS, CO2I2CG, CO2I2CS, COSZS, XDIFFUS, SLAI, ICTEM, ctem_on, RMATCTEM, FCANCMX, L2MAX, NOL2PFTS, CFLUXCG, CFLUXCS, ANCSVEG, ANCGVEG, RMLCSVEG, RMLCGVEG, TCSNOW, GSNOW, ITC, ITCG, ITG, ILG, IL1, IL2, JL, N, IC, IG, IZREF, ISLFD, NLANDCS, NLANDGS, NLANDC, NLANDG, NLANDI, NBS, ISNOALB, DAYL, DAYL_MAX, ipeatland, ancsmoss, angsmoss, ancmoss, angmoss, rmlcsmoss, rmlgsmoss, rmlcmoss, rmlgmoss, Cmossmas, dmoss, iday, pdd)
 

Detailed Description

Calls subroutines to perform surface energy budget calculations.

Author
D. Verseghy, M. Lazare, K. Abdella, P. Bartlett, M. Namazi, M. MacDonald, E. Chan, J. Melton, A. Wu, JP Paquin, L Duarte, Y. Delage

Function/Subroutine Documentation

◆ energybudgetdriver()

subroutine energybudgetdriver ( real, dimension (ilg,ig), intent(out)  TBARC,
real, dimension (ilg,ig), intent(out)  TBARG,
real, dimension(ilg,ig), intent(out)  TBARCS,
real, dimension(ilg,ig), intent(out)  TBARGS,
real, dimension(ilg,ig), intent(out)  THLIQC,
real, dimension(ilg,ig), intent(out)  THLIQG,
real, dimension(ilg,ig), intent(out)  THICEC,
real, dimension(ilg,ig), intent(out)  THICEG,
real, dimension (ilg,ig), intent(out)  HCPC,
real, dimension (ilg,ig), intent(out)  HCPG,
real, dimension(ilg,ig), intent(out)  TCTOPC,
real, dimension(ilg,ig), intent(out)  TCBOTC,
real, dimension(ilg,ig), intent(out)  TCTOPG,
real, dimension(ilg,ig), intent(out)  TCBOTG,
real, dimension(ilg), intent(out)  GZEROC,
real, dimension(ilg), intent(out)  GZEROG,
real, dimension(ilg), intent(out)  GZROCS,
real, dimension(ilg), intent(out)  GZROGS,
real, dimension (ilg), intent(out)  G12C,
real, dimension (ilg), intent(out)  G12G,
real, dimension (ilg), intent(out)  G12CS,
real, dimension (ilg), intent(out)  G12GS,
real, dimension (ilg), intent(out)  G23C,
real, dimension (ilg), intent(out)  G23G,
real, dimension (ilg), intent(out)  G23CS,
real, dimension (ilg), intent(out)  G23GS,
real, dimension(ilg), intent(out)  QFREZC,
real, dimension(ilg), intent(out)  QFREZG,
real, dimension(ilg), intent(out)  QMELTC,
real, dimension(ilg), intent(out)  QMELTG,
real, dimension (ilg), intent(out)  EVAPC,
real, dimension(ilg), intent(out)  EVAPCG,
real, dimension (ilg), intent(out)  EVAPG,
real, dimension(ilg), intent(out)  EVAPCS,
real, dimension(ilg), intent(out)  EVPCSG,
real, dimension(ilg), intent(out)  EVAPGS,
real, dimension (ilg), intent(out)  TCANO,
real, dimension (ilg), intent(out)  TCANS,
real, dimension(ilg), intent(out)  RAICAN,
real, dimension(ilg), intent(out)  SNOCAN,
real, dimension(ilg), intent(out)  RAICNS,
real, dimension(ilg), intent(out)  SNOCNS,
real, dimension (ilg), intent(out)  CHCAP,
real, dimension(ilg), intent(out)  CHCAPS,
real, dimension(ilg), intent(out)  TPONDC,
real, dimension(ilg), intent(out)  TPONDG,
real, dimension(ilg), intent(out)  TPNDCS,
real, dimension(ilg), intent(out)  TPNDGS,
real, dimension(ilg), intent(out)  TSNOCS,
real, dimension(ilg), intent(out)  TSNOGS,
real, dimension(ilg), intent(out)  WSNOCS,
real, dimension(ilg), intent(out)  WSNOGS,
real, dimension(ilg), intent(out)  RHOSCS,
real, dimension(ilg), intent(out)  RHOSGS,
integer, dimension(ilg,6,50)  ITERCT,
real, dimension (ilg), intent(out)  CDH,
real, dimension (ilg), intent(out)  CDM,
real, dimension (ilg), intent(out)  QSENS,
real, dimension (ilg), intent(out)  TFLUX,
real, dimension (ilg), intent(out)  QEVAP,
real, dimension (ilg), intent(out)  EVAP,
real, dimension(ilg), intent(out)  EVPPOT,
real, dimension (ilg), intent(out)  ACOND,
real, dimension (ilg), intent(out)  EVAPB,
real, dimension (ilg), intent(out)  GT,
real, dimension (ilg), intent(out)  QG,
real, dimension (ilg), intent(out)  ST,
real, dimension (ilg), intent(out)  SU,
real, dimension (ilg), intent(out)  SV,
real, dimension (ilg), intent(out)  SQ,
real, dimension (ilg), intent(out)  SRH,
real, dimension (ilg), intent(out)  GTBS,
real, dimension(ilg), intent(out)  SFCUBS,
real, dimension(ilg), intent(out)  SFCVBS,
real, dimension(ilg), intent(out)  USTARBS,
real, dimension (ilg), intent(out)  FSGV,
real, dimension (ilg), intent(out)  FSGS,
real, dimension (ilg), intent(out)  FSGG,
real, dimension (ilg), intent(out)  FLGV,
real, dimension (ilg), intent(out)  FLGS,
real, dimension (ilg), intent(out)  FLGG,
real, dimension (ilg), intent(out)  HFSC,
real, dimension (ilg), intent(out)  HFSS,
real, dimension (ilg), intent(out)  HFSG,
real, dimension (ilg), intent(out)  HEVC,
real, dimension (ilg), intent(out)  HEVS,
real, dimension (ilg), intent(out)  HEVG,
real, dimension (ilg), intent(out)  HMFC,
real, dimension (ilg), intent(out)  HMFN,
real, dimension (ilg), intent(out)  HTCC,
real, dimension (ilg), intent(out)  HTCS,
real, dimension (ilg,ig), intent(out)  HTC,
real, dimension (ilg), intent(out)  QFCF,
real, dimension (ilg), intent(out)  QFCL,
real, dimension (ilg), intent(out)  DRAG,
real, dimension(ilg), intent(out)  WTABLE,
real, dimension (ilg), intent(out)  ILMO,
real, dimension (ilg), intent(out)  UE,
real, dimension (ilg), intent(out)  HBL,
real, dimension (ilg), intent(out)  TAC,
real, dimension (ilg), intent(out)  QAC,
real, dimension (ilg), intent(in)  ZREFM,
real, dimension (ilg), intent(in)  ZREFH,
real, dimension(ilg), intent(in)  ZDIAGM,
real, dimension(ilg), intent(in)  ZDIAGH,
real, dimension (ilg), intent(in)  VPD,
real, dimension (ilg), intent(in)  TADP,
real, dimension(ilg), intent(in)  RHOAIR,
real, dimension(ilg), intent(in)  QSWINV,
real, dimension(ilg), intent(in)  QSWINI,
real, dimension (ilg), intent(in)  QLWIN,
real, dimension (ilg), intent(in)  UWIND,
real, dimension (ilg), intent(in)  VWIND,
real, dimension (ilg), intent(in)  TA,
real, dimension (ilg), intent(in)  QA,
real, dimension (ilg), intent(in)  PADRY,
real, dimension (ilg), intent(in)  FC,
real, dimension (ilg), intent(in)  FG,
real, dimension (ilg), intent(in)  FCS,
real, dimension (ilg), intent(in)  FGS,
real, dimension(ilg), intent(in)  RBCOEF,
real, dimension (ilg), intent(in)  FSVF,
real, dimension (ilg), intent(in)  FSVFS,
real, dimension(ilg), intent(in)  PRESSG,
real, dimension (ilg), intent(in)  VMOD,
real, dimension(ilg), intent(in)  ALVSCN,
real, dimension(ilg), intent(in)  ALIRCN,
real, dimension (ilg), intent(in)  ALVSG,
real, dimension (ilg), intent(in)  ALIRG,
real, dimension(ilg), intent(in)  ALVSCS,
real, dimension(ilg), intent(in)  ALIRCS,
real, dimension(ilg), intent(in)  ALVSSN,
real, dimension(ilg), intent(in)  ALIRSN,
real, dimension(ilg), intent(in)  ALVSGC,
real, dimension(ilg), intent(in)  ALIRGC,
real, dimension(ilg), intent(in)  ALVSSC,
real, dimension(ilg), intent(in)  ALIRSC,
real, dimension(ilg), intent(in)  TRVSCN,
real, dimension(ilg), intent(in)  TRIRCN,
real, dimension(ilg), intent(in)  TRVSCS,
real, dimension(ilg), intent(in)  TRIRCS,
real, dimension (ilg), intent(in)  RC,
real, dimension (ilg), intent(in)  RCS,
real, dimension (ilg), intent(out)  WTRG,
real, dimension(ilg), intent(out)  groundHeatFlux,
real, dimension(ilg), intent(out)  QLWAVG,
real, dimension(ilg), intent(in)  FRAINC,
real, dimension(ilg), intent(in)  FSNOWC,
real, dimension(ilg), intent(in)  FRAICS,
real, dimension(ilg), intent(in)  FSNOCS,
real, dimension(ilg), intent(in)  CMASSC,
real, dimension(ilg), intent(in)  CMASCS,
real, dimension (ilg), intent(in)  DISP,
real, dimension (ilg), intent(in)  DISPS,
real, dimension(ilg), intent(in)  ZOMLNC,
real, dimension(ilg), intent(in)  ZOELNC,
real, dimension(ilg), intent(in)  ZOMLNG,
real, dimension(ilg), intent(in)  ZOELNG,
real, dimension(ilg), intent(in)  ZOMLCS,
real, dimension(ilg), intent(in)  ZOELCS,
real, dimension(ilg), intent(in)  ZOMLNS,
real, dimension(ilg), intent(in)  ZOELNS,
real, dimension (ilg,ig), intent(in)  TBAR,
real, dimension (ilg,ig), intent(inout)  THLIQ,
real, dimension (ilg,ig), intent(inout)  THICE,
real, dimension (ilg), intent(in)  TPOND,
real, dimension (ilg), intent(inout)  ZPOND,
real, dimension (ilg), intent(in)  TBASE,
real, dimension (ilg), intent(in)  TCAN,
real, dimension (ilg), intent(in)  TSNOW,
real, dimension (ilg), intent(in)  ZSNOW,
real, dimension(ilg), intent(in)  RHOSNO,
real, dimension (ilg), intent(in)  WSNOW,
real, dimension (ilg,ig), intent(in)  THPOR,
real, dimension(ilg,ig), intent(in)  THLRET,
real, dimension(ilg,ig), intent(in)  THLMIN,
real, dimension (ilg,ig), intent(in)  THFC,
real, dimension (ilg,ig), intent(in)  THLW,
real, dimension(ilg), intent(in)  TRSNOWC,
real, dimension(ilg,nbs), intent(in)  TRSNOWG,
real, dimension(ilg,nbs), intent(in)  ALSNO,
real, dimension(ilg,nbs), intent(in)  FSSB,
real, dimension (ilg,ig), intent(in)  FROOT,
real, dimension(ilg,ig), intent(in)  FROOTS,
real, dimension (ilg), intent(in)  RADJ,
real, dimension (ilg), intent(in)  PCPR,
real, dimension (ilg,ig), intent(in)  HCPS,
real, dimension (ilg,ig), intent(in)  TCS,
real, dimension(ilg,4), intent(out)  TSFSAV,
real, dimension (ig), intent(in)  DELZ,
real, dimension (ilg,ig), intent(in)  DELZW,
real, dimension (ilg,ig), intent(in)  ZBOTW,
real, dimension (ilg), intent(out)  FTEMP,
real, dimension (ilg), intent(out)  FVAP,
real, dimension (ilg), intent(out)  RIB,
integer, dimension (ilg,ig), intent(in)  ISAND,
real, dimension(ilg,ictem), intent(in)  AILCG,
real, dimension(ilg,ictem), intent(in)  AILCGS,
real, dimension(ilg,ictem), intent(in)  FCANC,
real, dimension(ilg,ictem), intent(in)  FCANCS,
real, dimension(ilg), intent(in)  CO2CONC,
real, dimension(ilg,ictem), intent(in)  CO2I1CG,
real, dimension(ilg,ictem), intent(in)  CO2I1CS,
real, dimension(ilg,ictem), intent(in)  CO2I2CG,
real, dimension(ilg,ictem), intent(in)  CO2I2CS,
real, dimension(ilg), intent(in)  COSZS,
real, dimension(ilg), intent(in)  XDIFFUS,
real, dimension(ilg,ictem), intent(in)  SLAI,
integer, intent(in)  ICTEM,
logical, intent(in)  ctem_on,
real, dimension(ilg,ictem,ig), intent(in)  RMATCTEM,
real, dimension(ilg,ictem), intent(in)  FCANCMX,
integer, intent(in)  L2MAX,
integer, dimension(ic), intent(in)  NOL2PFTS,
real, dimension(ilg), intent(in)  CFLUXCG,
real, dimension(ilg), intent(in)  CFLUXCS,
real, dimension(ilg,ictem), intent(inout)  ANCSVEG,
real, dimension(ilg,ictem), intent(inout)  ANCGVEG,
real, dimension(ilg,ictem), intent(inout)  RMLCSVEG,
real, dimension(ilg,ictem), intent(inout)  RMLCGVEG,
real, dimension(ilg), intent(out)  TCSNOW,
real, dimension (ilg), intent(out)  GSNOW,
integer, intent(in)  ITC,
integer, intent(in)  ITCG,
integer, intent(in)  ITG,
integer, intent(in)  ILG,
integer, intent(in)  IL1,
integer, intent(in)  IL2,
integer, intent(in)  JL,
integer, intent(in)  N,
integer, intent(in)  IC,
integer, intent(in)  IG,
integer, intent(in)  IZREF,
integer, intent(in)  ISLFD,
integer, intent(inout)  NLANDCS,
integer, intent(inout)  NLANDGS,
integer, intent(inout)  NLANDC,
integer, intent(inout)  NLANDG,
integer, intent(inout)  NLANDI,
integer, intent(in)  NBS,
integer, intent(in)  ISNOALB,
real, dimension(ilg), intent(in)  DAYL,
real, dimension(ilg), intent(in)  DAYL_MAX,
integer, dimension(ilg), intent(in)  ipeatland,
real, dimension(ilg), intent(inout)  ancsmoss,
real, dimension(ilg), intent(inout)  angsmoss,
real, dimension(ilg), intent(inout)  ancmoss,
real, dimension(ilg), intent(inout)  angmoss,
real, dimension(ilg), intent(inout)  rmlcsmoss,
real, dimension(ilg), intent(inout)  rmlgsmoss,
real, dimension(ilg), intent(inout)  rmlcmoss,
real, dimension(ilg), intent(inout)  rmlgmoss,
real, dimension(ilg), intent(in)  Cmossmas,
real, dimension(ilg), intent(in)  dmoss,
integer, intent(in)  iday,
real, dimension(ilg), intent(in)  pdd 
)
Parameters
[in,out]nlandcsNumber of modelled areas that contain subareas of canopy over bare ground / bare ground / canopy over snow /snow
[in,out]nlandgsNumber of modelled areas that contain subareas of canopy over bare ground / bare ground / canopy over snow /snow
[in,out]nlandcNumber of modelled areas that contain subareas of canopy over bare ground / bare ground / canopy over snow /snow
[in,out]nlandgNumber of modelled areas that contain subareas of canopy over bare ground / bare ground / canopy over snow /snow
[in,out]nlandiNumber of modelled areas that are ice sheets [ ]
[in]isnoalbSwitch to model snow albedo in two or more wavelength bands
[in]itcFlag to select iteration scheme for canopy temperature
[in]itcgFlag to select iteration scheme for surface under canopy
[in]itgFlag to select iteration scheme for ground or snow surface
[in]izrefFlag governing treatment of surface roughness length
[in]islfdFlag governing options for surface stability functions and diagnostic calculations
[out]acondDiagnosed product of drag coefficient and wind speed over modelled area \([m s^{-1} ]\)
[out]cdhSurface drag coefficient for heat \([ ] (C_{DH} )\)
[out]cdmSurface drag coefficient for momentum \([ ] (C_{DM} )\)
[out]chcapSurface drag coefficient for momentum \([ ] (C_{DM} )\)
[out]chcapsHeat capacity of canopy over bare ground \([J m^{-2} K^{-1} ]\)
[out]dragSurface drag coefficient under neutral stability [ ]
[out]evapDiagnosed total surface water vapour flux over modelled area \([kg m^{-2} s^{-1} ]\)
[out]evapbEvaporation efficiency at ground surface [ ]
[out]evapcEvaporation from vegetation over ground \([m s^{-1} ]\)
[out]evapcgEvaporation from ground under vegetation \([m s^{-1} ]\)
[out]evapcsEvaporation from vegetation over snow \([m s^{-1} ]\)
[out]evapgEvaporation from bare ground \([m s^{-1} ]\)
[out]evapgsEvaporation from snow on bare ground \([m s^{-1} ]\)
[out]evpcsgEvaporation from snow under vegetation \([m s^{-1} ]\)
[out]evppotDiagnosed potential evapotranspiration \([kg m^{-2} s^{-1} ] (E_p)\)
[out]flggDiagnosed net longwave radiation at soil surface \([W m^{-2} ]\)
[out]flgsDiagnosed net longwave radiation at snow surface \([W m^{-2} ]\)
[out]flgvDiagnosed net longwave radiation on vegetation canopy \([W m^{-2} ]\)
[out]fsggDiagnosed net shortwave radiation at soil surface \([W m^{-2} ]\)
[out]fsgsDiagnosed net shortwave radiation at snow surface \([W m^{-2} ]\)
[out]fsgvDiagnosed net shortwave radiation on vegetation canopy \([W m^{-2} ]\)
[out]g12cSubarea heat flux between first and second soil layers \([W m^{-2} ]\)
[out]g12csSubarea heat flux between first and second soil layers \([W m^{-2} ]\)
[out]g12gSubarea heat flux between first and second soil layers \([W m^{-2} ]\)
[out]g12gsSubarea heat flux between first and second soil layers \([W m^{-2} ]\)
[out]g23cSubarea heat flux between second and third soil layers \([W m^{-2} ]\)
[out]g23csSubarea heat flux between second and third soil layers \([W m^{-2} ]\)
[out]g23gSubarea heat flux between second and third soil layers \([W m^{-2} ]\)
[out]g23gsSubarea heat flux between second and third soil layers \([W m^{-2} ]\)
[out]gtDiagnosed effective surface black-body temperature \([K] (T_{0, eff} )\)
[out]gtbsSurface temperature for CCCma black carbon scheme [K]
[out]gsnowHeat conduction into surface of snow pack \([W m^{-2} ]\)
[out]gzerocSubarea heat flux at soil surface \([W m^{-2} ]\)
[out]gzerogSubarea heat flux at soil surface \([W m^{-2} ]\)
[out]gzrocsSubarea heat flux at soil surface \([W m^{-2} ]\)
[out]gzrogsSubarea heat flux at soil surface \([W m^{-2} ]\)
[out]hblHeight of the atmospheric boundary layer [m]
[out]hcpcHeat capacity of soil layers under vegetation \([J m^{-3} K^{-1} ]\)
[out]hcpgHeat capacity of soil layers in bare areas \([J m^{-3} K^{-1} ]\)
[out]hevcDiagnosed latent heat flux on vegetation canopy \([W m^{-2} ]\)
[out]hevgDiagnosed latent heat flux at soil surface \([W m^{-2} ]\)
[out]hevsDiagnosed latent heat flux at snow surface \([W m^{-2} ]\)
[out]hfscDiagnosed sensible heat flux on vegetation canopy \([W m^{-2} ]\)
[out]hfsgDiagnosed sensible heat flux at soil surface \([W m^{-2} ]\)
[out]hfssDiagnosed sensible heat flux at snow surface \([W m^{-2} ]\)
[out]hmfcDiagnosed energy associated with phase change of water on vegetation \([W m^{-2} ]\)
[out]hmfnDiagnosed energy associated with phase change of water in snow pack \([W m^{-2} ]\)
[out]htcDiagnosed internal energy change of soil layer due to conduction and/or change in mass \([W m^{-2} ]\)
[out]htccDiagnosed internal energy change of vegetation canopy due to conduction and/or change in mass \([W m^{-2} ]\)
[out]htcsDiagnosed internal energy change of snow pack due to conduction and/or change in mass \([W m^{-2} ]\)
[out]ilmoInverse of Monin-Obukhov roughness length \((m^{-1} ]\)
iterctCounter of number of iterations required to solve surface energy balance for the elements of the four subareas
[out]qacSpecific humidity of air within vegetation canopy space \([kg kg^{-1} ]\)
[out]qevapDiagnosed total surface latent heat flux over modelled area \([W m^{-2} ]\)
[out]qfcfSublimation from frozen water on vegetation \([kg m^{-2} s^{-1} ]\)
[out]qfclEvaporation from liquid water on vegetation \([kg m^{-2} s^{-1} ]\)
[out]qfrezcHeat sink to be used for freezing water on ground under canopy \([W m^{-2} ]\)
[out]qfrezgHeat sink to be used for freezing water on bare ground \([W m^{-2} ]\)
[out]qgDiagnosed surface specific humidity \([kg kg^{-1} ]\)
[out]qlwavgUpwelling longwave radiation from land surface \([W m^{-2} ]\)
[out]qmeltcHeat to be used for melting snow under canopy \([W m^{-2} ]\)
[out]qmeltgHeat to be used for melting snow on bare ground \([W m^{-2} ]\)
[out]qsensDiagnosed total surface sensible heat flux over modelled area \([W m^{-2} ]\)
[out]raicanIntercepted liquid water stored on canopy over ground \([kg m^{-2} ]\)
[out]raicnsIntercepted liquid water stored on canopy over snow \([kg m^{-2} ]\)
[out]rhoscsDensity of snow under vegetation \([kg m^{-3} ]\)
[out]rhosgsDensity of snow in bare areas \([kg m^{-3} ]\)
[out]sfcubsZonal surface wind velocity for CCCma black carbon scheme \([m s^{-1} ]\)
[out]sfcvbsMeridional surface wind velocity for CCCma black carbon scheme \([m s^{-1} ]\)
[out]snocanIntercepted frozen water stored on canopy over ground \([kg m^{-2} ]\)
[out]snocnsIntercepted frozen water stored on canopy over snow \([kg m^{-2} ]\)
[out]sqDiagnosed screen-level specific humidity \([kg kg^{-1} ]\)
[out]srhDiagnosed screen-level relative humidity [%]
[out]stDiagnosed screen-level air temperature [K]
[out]suDiagnosed anemometer-level zonal wind \([m s^{-1} ]\)
[out]svDiagnosed anemometer-level meridional wind \([m s^{-1} ]\)
[out]tacTemperature of air within vegetation canopy [K]
[out]tbarcSubarea temperatures of soil layers [C]
[out]tbarcsSubarea temperatures of soil layers [C]
[out]tbargSubarea temperatures of soil layers [C]
[out]tbargsSubarea temperatures of soil layers [C]
[out]tcanoTemperature of canopy over ground [K]
[out]tcansTemperature of canopy over snow [K]
[out]tcbotcThermal conductivity of soil at bottom of layer \([W m^{-1} K^{-1} ]\)
[out]tcbotgThermal conductivity of soil at bottom of layer \([W m^{-1} K^{-1} ]\)
[out]tctopcThermal conductivity of soil at top of layer \([W m^{-1} K^{-1} ]\)
[out]tctopgThermal conductivity of soil at top of layer \([W m^{-1} K^{-1} ]\)
[out]tcsnowThermal conductivity of snow \([W m^{-1} K^{-1} ]\)
[out]tfluxProduct of surface drag coefficient, wind speed and surface-air temperature difference \([K m s^{-1} ]\)
[out]thicecFrozen water content of soil layers under vegetation \([m^3 m^{-3} ]\)
[out]thicegFrozen water content of soil layers in bare areas \([m^3 m^{-3} ]\)
[out]thliqcLiquid water content of soil layers under vegetation \([m^3 m^{-3} ]\)
[out]thliqgLiquid water content of soil layers in bare areas \([m^3 m^{-3} ]\)
[out]tpondcSubarea temperature of surface ponded water [C]
[out]tpondgSubarea temperature of surface ponded water [C]
[out]tpndcsSubarea temperature of surface ponded water [C]
[out]tpndgsSubarea temperature of surface ponded water [C]
[out]tsfsavGround surface temperature over subarea [K]
[out]tsnocsTemperature of snow pack under vegetation [K]
[out]tsnogsTemperature of snow pack in bare areas [K]
[out]ueFriction velocity of air \([m s^{-1} ]\)
[out]ustarbsFriction velocity for CCCma black carbon scheme \([m s^{-1} ]\)
[out]wsnocsLiquid water content of snow pack under vegetation \([kg m^{-2} ]\)
[out]wsnogsLiquid water content of snow pack in bare areas \([kg m^{-2} ]\)
[out]wtableDepth of water table in soil [m]
[out]wtrgDiagnosed residual water transferred into or out of the soil \([kg m^{-2} s^{-1} ]\)
[out]groundheatfluxHeat flux at soil surface \([W m^{-2} ]\)
[in]zrefmReference height associated with forcing wind speed [m]
[in]zrefhReference height associated with forcing air temperature and humidity [m]
[in]zdiagmUser-specified height associated with diagnosed anemometer-level wind speed [m]
[in]zdiaghUser-specified height associated with diagnosed screen-level variables [m]
[in]vpdVapour pressure deficit [mb]
[in]tadpDew point temperature of air [K]
[in]rhoairDensity of air \([kg m^{-3} ] (\rho_a)\)
[in]qswinvVisible radiation incident on horizontal surface \([W m^{-2} ]\)
[in]qswiniNear-infrared radiation incident on horizontal surface \([W m^{-2} ]\)
[in]qlwinDownwelling longwave radiation at bottom of atmosphere \([W m^{-2} ]\)
[in]uwindZonal component of wind speed \([m s^{-1} ] (U_a)\)
[in]vwindMeridional component of wind speed \([m s^{-1} ] (V_a)\)
[in]taAir temperature at reference height \([K] (T_a)\)
[in]qaSpecific humidity at reference height \([kg kg^{-1} ]\)
[in]padryPartial pressure of dry air \([Pa] (p_{dry} )\)
[in]fcSubarea fractional coverage of modelled area [ ]
[in]fgSubarea fractional coverage of modelled area [ ]
[in]fcsSubarea fractional coverage of modelled area [ ]
[in]fgsSubarea fractional coverage of modelled area [ ]
[in]rbcoefParameter for calculation of leaf boundary resistance
[in]fsvfSky view factor for bare ground under canopy [ ]
[in]fsvfsSky view factor for snow under canopy [ ]
[in]pressgSurface atmospheric pressure [Pa]
[in]vmodWind speed at reference height \([m s^{-1} ]\)
[in]alsnoAlbedo of snow in each modelled wavelength band [ ]
[in]alvscnVisible/near-IR albedo of vegetation over bare ground [ ]
[in]alircnVisible/near-IR albedo of vegetation over bare ground [ ]
[in]alvsgVisible/near-IR albedo of open bare ground [ ]
[in]alirgVisible/near-IR albedo of open bare ground [ ]
[in]alvscsVisible/near-IR albedo of vegetation over snow [ ]
[in]alircsVisible/near-IR albedo of vegetation over snow [ ]
[in]alvssnVisible/near-IR albedo of open snow cover [ ]
[in]alirsnVisible/near-IR albedo of open snow cover [ ]
[in]alvsgcVisible/near-IR albedo of bare ground under vegetation [ ]
[in]alirgcVisible/near-IR albedo of bare ground under vegetation [ ]
[in]alvsscVisible/near-IR albedo of snow under vegetation [ ]
[in]alirscVisible/near-IR albedo of snow under vegetation [ ]
[in]trvscnVisible/near-IR transmissivity of vegetation over bare ground [ ]
[in]trircnVisible/near-IR transmissivity of vegetation over bare ground [ ]
[in]trvscsVisible/near-IR transmissivity of vegetation over snow [ ]
[in]trircsVisible/near-IR transmissivity of vegetation over snow [ ]
[in]rcStomatal resistance of vegetation over bare ground \([s m^{-1} ]\)
[in]rcsStomatal resistance of vegetation over snow \([s m^{-1} ]\)
[in]fraincFractional coverage of canopy by liquid water over snow-free subarea [ ]
[in]fsnowcFractional coverage of canopy by frozen water over snow-free subarea [ ]
[in]fraicsFractional coverage of canopy by liquid water over snow-covered subarea [ ]
[in]fsnocsFractional coverage of canopy by frozen water over snow-covered subarea [ ]
[in]cmasscMass of canopy over bare ground \([kg m^{-2} ]\)
[in]cmascsMass of canopy over snow \([kg m^{-2} ]\)
[in]dispDisplacement height of vegetation over bare ground [m] (d)
[in]dispsDisplacement height of vegetation over snow [m] (d)
[in]zomlncLogarithm of roughness length for momentum of vegetation over bare ground [ ]
[in]zoelncLogarithm of roughness length for heat of vegetation over bare ground [ ]
[in]zomlngLogarithm of roughness length for momentum of bare ground [ ]
[in]zoelngLogarithm of roughness length for heat of bare ground [ ]
[in]zomlcsLogarithm of roughness length for momentum of vegetation over snow [ ]
[in]zoelcsLogarithm of roughness length for heat of vegetation over snow [ ]
[in]zomlnsLogarithm of roughness length for momentum of snow [ ]
[in]zoelnsLogarithm of roughness length for heat of snow [ ]
[in]tpondTemperature of ponded water [K]
[in,out]zpondDepth of ponded water on surface [m]
[in]tbaseTemperature of bedrock in third soil layer [K]
[in]tcanVegetation canopy temperature [K]
[in]tsnowSnowpack temperature [K]
[in]zsnowDepth of snow pack [m]
[in]trsnowcTransmissivity of snow under vegetation to shortwave radiation [ ]
[in]trsnowgTransmissivity of snow in bare areas to shortwave radiation [ ]
[in]rhosnoDensity of snow \([kg m^{-3} ]\)
[in]wsnowLiquid water content of snow pack \([kg m^{-2} ]\)
[in]radjLatitude of grid cell (positive north of equator) [rad] \((\varphi)\)
[in]pcprSurface precipitation rate \([kg m^{-2} s^{-1} ]\)
[in]fssbTotal solar radiation in each modelled wavelength band \([W m^{-2} ]\)
[in]tbarTemperature of soil layers [K]
[in,out]thliqVolumetric liquid water content of soil layers \([m^3 m^{-3} ]\)
[in,out]thiceVolumetric frozen water content of soil layers \([m^3 m^{-3} ]\)
[in]thporPore volume in soil layer \([m^3 m^{-3} ]\)
[in]thlretLiquid water retention capacity for organic soil \([m^3 m^{-3} ]\)
[in]thlminResidual soil liquid water content remaining after freezing or evaporation \([m^3 m^{-3} ]\)
[in]thfcField capacity \([m^3 m^{-3} ]\)
[in]thlwSoil water content at wilting point, \([m^3 m^{-3} ]\)
[in]hcpsHeat capacity of soil material \([J m^{-3} K^{-1} ]\)
[in]tcsThermal conductivity of soil particles \([W m^{-1} K^{-1} ]\)
[in]delzOverall thickness of soil layer [m]
[in]delzwPermeable thickness of soil layer [m]
[in]zbotwDepth to permeable bottom of soil layer [m]
[in]frootFraction of total transpiration contributed by soil layer over snow-free subarea [ ]
[in]frootsFraction of total transpiration contributed by soil layer over snow-covered subarea [ ]
[in]isandSand content flag
[in]ailcgGREEN LAI FOR USE WITH PHOTOSYNTHESIS SUBTROUTINE FOR CANOPY OVER GROUND SUBAREA
[in]ailcgsGREEN LAI FOR USE WITH PHOTOSYNTHESIS SUBTROUTINE FOR CANOPY OVER SNOW SUBAREA
[in]fcancFRACTIONAL COVERAGE OF 8 CARBON PFTs, CANOPY OVER GROUND
[in]fcancsFRACTIONAL COVERAGE OF 8 CARBON PFTs, CANOPY OVER SNOW
[in]co2concATMOS. CO2 CONC. IN PPM
[in]co2i1cgINTERCELLULAR CO2 CONC FOR 8 PFTs FOR CANOPY OVER GROUND SUBAREA (Pa) - FOR SINGLE/SUNLIT LEAF
[in]co2i1csSAME AS ABOVE BUT FOR SHADED LEAF
[in]co2i2cgINTERCELLULAR CO2 CONC FOR 8 PFTs FOR CANOPY OVER SNOWSUBAREA (Pa) - FOR SINGLE/SUNLIT LEAF
[in]co2i2csSAME AS ABOVE BUT FOR SHADED LEAF
[in]coszsCOSINE OF SUN'S ZENITH ANGLE
[in]xdiffusFRACTION OF DIFFUSED RADIATION
[in]slaiSTORAGE LAI. SEE PHTSYN SUBROUTINE FOR MORE DETAILS.
[in]rmatctemFRACTION OF ROOTS IN EACH SOIL LAYER FOR EACH OF CTEM's 8 PFTs
[in]fcancmxMAX. FRACTIONAL COVERAGE OF CTEM PFTs
[in,out]ancsvegNET PHOTOSYNTHETIC RATE FOR CTEM's 8 PFTs FOR CANOPY OVER SNOW SUBAREA
[in,out]ancgvegNET PHOTOSYNTHETIC RATE FOR CTEM's 8 PFTs FOR CANOPY OVER GROUND SUBAREA
[in,out]rmlcsvegLEAF RESPIRATION RATE FOR CTEM's 8 PFTs FOR CANOPY OVER SNOW SUBAREA
[in,out]rmlcgvegLEAF RESPIRATION RATE FOR CTEM's 8 PFTs FOR CANOPY OVER GROUND SUBAREA
[in]ictem8 (CTEM's PLANT FUNCTIONAL TYPES)
[in]ctem_onTRUE GIVES COUPLING TO CTEM
[in]dayl_maxMAXIMUM DAYLENGTH FOR THAT LOCATION
[in]daylDAYLENGTH FOR THAT LOCATION

First, two parameters are calculated for later use in the energyBudgetDriver subroutines: the corrected wind speed \(v_a\) , and the Coriolis parameter \(f_{cor}\) (describing the effect of the earth’s rotation on the movement of air according to the reference frame of the earth’s surface). The wind speed correction is applied because it is assumed that air is never completely still, so \(v_a\) is specified as the maximum of VMOD and a limiting lower value of \(0.1 m s^{-1}\) . The Coriolis parameter is calculated from the angular velocity \(\Omega\) of the earth’s rotation (7.29 x 10 -5 radians/s), and the latitude \(\varphi\): \(f_{cor} = 2 \Omega sin \varphi\)

The packing and unpacking of binary files may cause small shifts in the values of variables at certain points in the model run, so checks are performed on the depth of ponded water and on the soil liquid and frozen moisture contents to ensure that unphysical values have not occurred. If the ponded water depth is vanishingly small or less than zero, it is set to zero. If the soil liquid water content falls below the set minimum value, it is set to the minimum value. If the soil frozen water content is less than zero, it is set back to zero. If the sum of the liquid water content and frozen water content converted to an equivalent liquid amount is greater than the pore volume, both are re-normalized by the pore volume. (This treatment of frozen water is employed in recognition of the fact that water expands upon freezing and can therefore occupy a greater volume than the nominal pore volume of the soil.) The small changes in internal energy and water content of the soil layers resulting from these operations are accounted for by updating the diagnostic variables HTC and WTRG.

If CLASS is being run in coupled mode with CTEM, several CTEM variables are initialized to zero. Subroutine energyBudgetPrep is then called, to carry out the initialization of a number of variables and to do preparatory calculations of various parameters associated with the energy and water budget calculations.

The energy budget calculations that follow are performed over the four subareas, of canopy over snow (CS), snow over ground (GS), canopy over bare ground (C) and bare ground (G). First, a counter NLANDx is defined for each subarea, containing the number of modelled areas in which the subarea occurs. The subarea calculations are only done if the relevant counter is greater than zero. A counter NLANDI is also set to the number of modelled areas that are ice sheets (indicated by ISAND = -4). (This is used later in subroutine waterBudgetDriver to toggle the call to subroutine iceSheetBalance.)

For each subarea, the roughness lengths for momentum and heat, ZOM and ZOH, are obtained from their logarithms, and are then used to determine various height intervals in the atmosphere for subsequent calculations. These heights are derived from the input variables ZREFM and ZREFH, the reference heights corresponding to the input values of wind speed and of air temperature and humidity respectively, and ZDIAGM and ZDIAGH, the heights at which the diagnostic values of anemometer wind speed and screen level temperature and humidity are to be determined. The form of the calculations depends on the value of the flag IZREF. If IZREF = 1, the zero plane is taken to lie at the physical ground surface (as with field measurements); if IZREF = 2, the zero plane is taken to lie at the local roughness height for momentum(as with atmospheric models). The variables ZRSLDM and ZRSLDH are the height differences used in subroutine DRCOEF to express the interval between the conceptual bottom of the atmosphere and the reference heights for wind speed and for temperature and humidity respectively; the variables ZRSLFM and ZRSLFH are the corresponding height differences used in subroutine FLXSURFZ. If IZREF = 1, ZRSLDM and ZRSLDH are set to ZREFM and ZREFH minus the displacement height DISP or DISPS, and ZRSLFM and ZRSLFH are set to ZREFM and ZREFH minus the roughness length ZOM and DISP or DISPS. If IZREF = 2, ZRSLDM and ZRSLDH are set to ZREFM and ZREFH plus the roughness height ZOM, and ZRSLFM and ZRSLFH are set to ZREFM and ZREFH minus DISP or DISPS. (In the absence of a vegetation canopy, the displacement height is zero.) The variables ZDSLM and ZDSLH are the heights above the bottom of the modelled atmosphere at which the diagnostic values are to be calculated. If IZREF = 1, they are set to ZDIAGM and ZDIAGH minus ZOM; if IZREF = 2 they are simply set to ZDIAGM and ZDIAGH. At the end of the branch in the code, the ratios ZOSCLM and ZOSCLH, which are used in subroutine DRCOEF, are calculated as ZOM/ZRSLDM and ZOH/ZRSLDH respectively.

Several other local parameters are also calculated. The potential temperature is the temperature that air would have if brought adiabatically (without addition or removal of heat) to a given height. The potential temperature of the air at the reference height, \(T_{a, pot}\) , is calculated relative to the height at which the horizontal wind speed goes to zero, using the dry adiabatic lapse rate, \(dT/dz = -g/c_p\) , where g is the acceleration due to gravity and \(c_p\) is the specific heat at constant pressure:. Thus, \(T_{a, pot} = T_a + z_{ref, h} g/c_p\) where \(T_a\) is the temperature of the air at the reference height and \(z_{ref, h}\) is the height interval, equivalent to ZRSLFH defined above. If CLASS is being run coupled to an atmospheric model, i.e. if IZREF=2, the air temperature at the reference height has already been adiabatically extrapolated before being passed to CLASS. Otherwise, the correction is performed using the above equation.

The virtual potential temperature of the air at the reference height, \(T_{a, v}\) , is the potential temperature adjusted for the reduction in air density due to the presence of water vapour. This is applied in order to enable the use of the equation of state for dry air. \(T_{a, v}\) can be approximated as: \(T_{a, v} = T_{a, pot} [1 + 0.61 q_a ]\) where \(q_a\) is the specific humidity of the air at the reference height.

The bulk Richardson number \(Ri_B\) , used in the calculations of the atmospheric stability functions in subroutine DRCOEF, is formulated as: \(Ri_B = [T_0 – T_{a, v} ] (-g z_{ref} )/(T_{a, v} v_a^2)\) where \(T_0\) is the surface temperature. For ease of calculation later on, the factor multiplying \([T_0 – T_{a, v} ]\) on the right-hand side of the above equation is evaluated and assigned to a coefficient CRIB, using ZRSLDM for \(z_{ref}\) . The drag coefficient under neutral stability, \(C_{DN}\) , is expressed using basic flux-gradient analysis as: \(C_{DN} = k^2 /[ln(z_{ref} ) – ln(z_0)]^2\) where k is the von Karman constant and \(z_0\) is the roughness length. ZRSLDM is used for \(z_{ref}\) and the logarithm of the local roughness length for \(ln(z_0)\), and the neutral drag coefficient DRAG over the modelled area is obtained as a weighted average over the four subareas.

For the two subareas with canopy cover, the wind speed of the air at the canopy top, \(v_{a, c}\) , is obtained by applying the classic logarithmic wind law for the wind speed v(z) at a height z: \(kv(z)/v_* = ln[(z – d)/z_0 ]\) where \(v_*\) is the friction velocity and d is the displacement height. Thus, \(v_{a, c}\) at the canopy height H can be related to v a at the reference height \(z_{ref}\) as: \(v_{a, c} = v_a [ln(H – d) – ln(z_0)]/[ln(z_{ref} ) – ln(z_0)]\)

The vegetation height is calculated as \(10z_0\) . Local values of the temperature of the canopy air TAC and the humidity of the canopy air QAC are assigned to variables TACCS/TACCO and QACCS/QACCO respectively.

At this point calls are made to a series of subroutines addressing the calculation of the energy balance components of the subarea in question. The calls are summarized in the table below.

\[ \begin{array} { | l | l | c | c | c | c | } \hline & & \text{CS} & \text{GS} & \text{C} & \text{G} \\ \hline \text{canopyPhaseChange} & \text{Freezing/thawing of liquid/frozen water on canopy} & \text{YES} & & \text{YES} & \\ \hline \text{soilHeatFluxPrep} & \text{Set coefficients for temperature calculations in soil} & \text{YES} & \text{YES} & \text{YES} & \text{YES} \\ \hline \text{snowHeatCond} & \text{Set coefficients for temperature calculations of snow} & \text{YES} & \text{YES} & & \\ \hline \text{energBalVegSolve} & \text{Calculate components of canopy energy balance} & \text{YES} & & \text{YES} & \\ \hline \text{energBalNoVegSolve} & \text{Calculate components of ground or snow energy balance} & & \text{YES} & & \text{YES} \\ \hline \text{snowTempUpdate} & \text{Heat conduction in snow pack} & \text{YES} & \text{YES} & & \\ \hline \text{soilHeatFluxCleanup} & \text{Heat conduction in soil} & \text{YES} & \text{YES} & \text{YES} & \text{YES} \\ \hline \end{array} \]

After these calls, various diagnostic calculations are performed. First the screen-level temperature and humidity, and the anemometer-level zonal and meridional wind speeds, are calculated. Three options are provided for doing this, indicated by the flag ISLFD. If ISLFD = 0, a simple similarity-based approach is used. (This is currently the standard option in the AGCM.) The ratio (RATIOM) of the square root of the surface drag coefficient for momentum \(C_{DM}\) to that of the neutral drag coefficient \(C_{DN}\) for the anemometer height is calculated, and an analogous calculation is performed for the ratio (RATIOH) of the square root of the surface drag coefficient for heat \(C_{DH}\) to that of the neutral drag coefficient for the screen height \(z_s\), to give a measure of the degree of atmospheric instability. If the bulk Richardson number RIB is negative (indicating unstable conditions), the ratio used for the temperature and humidity is the minimum of RATIOH and ( \(z_s\) / \(z_{ref}\))^(1/3), a measure of the depth of convection. These ratios are applied to the calculation of the screen and anemometer level variables. If the ratios are large, indicating strong coupling with the atmosphere, the screen level variables tend toward the values at the reference height; if the ratio is small, they tend to the values at the surface. At the end of the block of code, the CCCma subroutine screenRelativeHumidity is called to evaluate the screen-level relative humidity, and the grid-cell average values of the screen and anemometer level diagnostic variables are incremented. For the bare soil subarea, the zonal and meridional anemometer-level wind speeds, the friction velocity and the surface temperature are saved separately as inputs to the CCCma black carbon deposition scheme (Namazi et al., 2015) [72].

If ISLFD= 1 or 2, the more complex :: calculations in subroutines SLDIAG and DIASURFZ are followed for the screen-level and anemometer-level diagnostics. The calculations done in SLDIAG are consistent with the modelling approach used in subroutine DRCOEF to determine the atmospheric stability functions, so when ISLFD = 1, DRCOEF and SLDIAG are called. The calculations done in DIASURFZ are consistent with the modelling approach used in subroutine FLXSURFZ for the atmospheric stability functions, so when ISLFD = 2, FLXSURFZ and DIASURFZ are called.

A number of additional diagnostic variables are calculated as weighted averages over the four subareas. For the most part, these calculations are straightforward; only the calculation of the porential evapotranspiration \(E_p\) (EVPPOT) involves some complexity. \(E_p\) is defined as the evapotranspiration that would occur under ambient atmospheric conditions if the soil were completely saturated and the vegetation canopy were completely water-covered, i.e. if there were no surface resistances to evaporation: \(E_p = \rho_a C_{DH} v_a [q_{0, sat} – q_a ]\) where \(\rho_a\) is the density of air and \(q_{0, sat}\) is the saturated specific humidity at the surface. For the ground or snow surface \(q_{0, sat}\) was calculated in subroutine energBalNoVegSolve. For the canopy, the saturated specific humidity at the canopy air temperature, \(q_{ac, sat}\) , is used. This is obtained from the mixing ratio at saturation, \(w_{ac, sat}\) : \(q_{ac, sat} = w_{ac, sat} /[1 + w_{ac, sat} ]\)

The mixing ratio is a function of the saturation vapour pressure \(e_{ac, sat}\) at the canopy air temperature: \(w_{ac, sat} = 0.622 e_{ac, sat} /(p_{dry} )\)

For the saturated vapour pressure, following Emanuel (1994) [34] \(e_{sat}\) is from the temperature \(T_a\) and the freezing point \(T_f\):

\(e_{sat} = exp[53.67957 - 6743.769 / T - 4.8451 * ln(T)] T \geq T_f\)

\(e_{sat} = exp[23.33086 - 6111.72784 / T + 0.15215 * log(T)] T < T_f\)

At the end of the blocks of code dealing with the four subareas, several more diagnostic variables are evaluated. Again, these calculations are generally straightforward. The effective black-body surface temperature \(T_{0, eff}\) is obtained by inverting the Stefan-Boltzmann equation: \(L\uparrow = \sigma T_{0, eff}^4\) where \(L\uparrow\) is the outgoing longwave radiation and \(\sigma\) is the Stefan-Boltzmann constant. The evaporation efficiency parameter EVAPB is calculated as the ratio of the actual evapotranspiration to the potential evapotranspiration.