Main menu


Total diabatic heating calculation in WACCM6

4 posts / 0 new
Last post
Total diabatic heating calculation in WACCM6


I have a question about calculating total/net diabatic heating from WACCM6 output. What variables do we need? 

Some Previous studies (for example, Kwon et al., 2011, used DTCOND (T tendency - moist process), DTV (T vertical diffusion), DTH (T horizontal diffusive heating, not in the WACCM output list), QRL (long wave heating rate), and QRS (solar heating rate). However, DTH is not included in WACCM output list. 

We also notice that WACCM has output variables, QRS_TOT and QRL_TOT.

Could someone falimiar with daibatic heating caclulation have some comments or suggestions? 

Thank you in advance.








The following answer is from Rolando Garcia:

Radiative (and other energy-related) terms in WACCM are listed below. This is an ncdump -h from one of the files I obtain by pre-processing h0 output (zonal-mean, concatenation across the entire simulation). This is why the spatial dimensions shown are just lat,lev. The list is convenient because it includes the metadata that shows what each field contains. I’ve added comments where the metadata is a bit unclear in my opinion.

        float DTCOND(time, lev, lat) ;
                DTCOND:mdims = 1 ;
                DTCOND:units = "K/s" ;
                DTCOND:long_name = "T tendency - moist processes" ;
                DTCOND:cell_methods = "time: mean” ;
*** Condensational heating.
        float DTCORE(time, lev, lat) ;
                DTCORE:mdims = 1 ;
                DTCORE:units = "K/s" ;
                DTCORE:long_name = "T tendency due to dynamical core" ;
                DTCORE:cell_methods = "time: mean lon: mean” ;
        float DTV(time, lev, lat) ;
                DTV:mdims = 1 ;
                DTV:units = "K/s" ;
                DTV:long_name = "T vertical diffusion" ;
                DTV:cell_methods = "time: mean lon: mean” ;
*** This includes molecular diffusion and boundary layer diffusion. Does not include diffusion due to parameterized GW. But see below for GW terms.
        float QCP(time, lev, lat) ;
                QCP:mdims = 1 ;
                QCP:units = "K/s" ;
                QCP:long_name = "chem pot heating rate" ;
                QCP:cell_methods = "time: mean lon: mean” ;
*** This is heating produced by recombination of photolysis products, e.g., O + O + M —> O2 + heat. Above the stratosphere, one cannot assume that absorbed solar energy is immediately thermalized. We instead keep track of the products of photolysis and release energy upon recombination.  Of course, this can only be done in WACCM simulations with coupled chemistry (not SC-WACCM).
        float QJOULE(time, lev, lat) ;
                QJOULE:mdims = 1 ;
                QJOULE:units = "K/s" ;
                QJOULE:long_name = "Joule Heat" ;
                QJOULE:cell_methods = "time: mean lon: mean” ;
*** Joule heating is mportant only in the lower thermosphere, near top of model.
        float QRL(time, lev, lat, lon) ;
                QRL:mdims = 1 ;
                QRL:Sampling_Sequence = "rad_lwsw" ;
                QRL:units = "K/s" ;
                QRL:long_name = "Longwave heating rate" ;
                QRL:cell_methods = "time: mean” ;
*** IR cooling in the stratosphere and troposphere. 
        float QRLNLTE(time, lev, lat) ;
                QRLNLTE:mdims = 1 ;
                QRLNLTE:units = "K/s" ;
                QRLNLTE:long_name = "Non-LTE LW heating (includes QNO)" ;
                QRLNLTE:cell_methods = "time: mean lon: mean” ;
*** IR cooling in the MLT. Uses Fomichev NLTE parameterization.
        float QRL_TOT(time, lev, lat) ;
                QRL_TOT:mdims = 1 ;
                QRL_TOT:units = "K/s" ;
                QRL_TOT:long_name = "Merged LW heating: QRL+QRLNLTE" ;
                QRL_TOT:cell_methods = "time: mean lon: mean” ;
*** This collects all the IR cooling.
        float QRS(time, lev, lat) ;
                QRS:mdims = 1 ;
                QRS:Sampling_Sequence = "rad_lwsw" ;
                QRS:units = "K/s" ;
                QRS:long_name = "Solar heating rate" ;
                QRS:cell_methods = "time: mean lon: mean” ;
*** This is immediately thermalized heating in the troposphere and stratosphere (absorption by O3, H2O...)
        float QRS_AUR(time, lev, lat) ;
                QRS_AUR:mdims = 1 ;
                QRS_AUR:units = "K/s" ;
                QRS_AUR:long_name = "total auroral heating rate" ;
                QRS_AUR:cell_methods = "time: mean lon: mean" ;
*** This is heating due to particle precipitation in the auroral ovals.
        float QRS_CO2NIR(time, lev, lat) ;
                QRS_CO2NIR:mdims = 1 ;
                QRS_CO2NIR:units = "K/s" ;
                QRS_CO2NIR:long_name = "co2 nir heating rate" ;
                QRS_CO2NIR:cell_methods = "time: mean lon: mean” ;
*** Near-IR absorption around the mesopause.
        float QRS_EUV(time, lev, lat) ;
                QRS_EUV:mdims = 1 ;
                QRS_EUV:units = "K/s" ;
                QRS_EUV:long_name = "total euv heating rate" ;
                QRS_EUV:cell_methods = "time: mean lon: mean” ;
*** Extreme UV heating (shortward of Lyman-alpha) in the MLT.
        float QRS_TOT(time, lev, lat) ;
                QRS_TOT:mdims = 1 ;
                QRS_TOT:units = "K/s" ;
                QRS_TOT:long_name = "Merged SW heating: QRS+QCP+QRS_EUV+QRS_CO2NIR+QRS_AUR+QTHERMAL" ;
                QRS_TOT:cell_methods = "time: mean lon: mean” ;
*** This collects all of the solar heating terms (except for some reason QJOULE was left out!) At some point, we should fix this.
        float QTHERMAL(time, lev, lat) ;
                QTHERMAL:mdims = 1 ;
                QTHERMAL:units = "K/s" ;
                QTHERMAL:long_name = "non-euv photolysis heating rate" ;
                QTHERMAL:cell_methods = "time: mean lon: mean” ;
*** This is immediately thermalized heating in the MLT (even in this region, some of the solar radiation absorbed _is_ thermalized right away. The rest goes into products of photolysis, and is accounted for in QCP. See above.
        float TTGW(time, lev, lat) ;
                TTGW:mdims = 1 ;
                TTGW:units = "K/s" ;
                TTGW:long_name = "T tendency - gravity wave drag" ;
                TTGW:cell_methods = "time: mean lon: mean” ;
*** This is the heating due to parameterized GW.
        float TTGWSDF(time, lev, lat) ;
                TTGWSDF:mdims = 1 ;
                TTGWSDF:units = "K/s" ;
                TTGWSDF:long_name = "t tendency - gw spec: diffusion term" ;
                TTGWSDF:cell_methods = "time: mean lon: mean” ;
*** This is the part of GW heating due to vertical eddy diffusion by the GW.
        float TTGWSKE(time, lev, lat) ;
                TTGWSKE:mdims = 1 ;
                TTGWSKE:units = "K/s" ;
                TTGWSKE:long_name = "t tendency - gw spec: kinetic energy conversion term" ;
                TTGWSKE:cell_methods = "time: mean lon: mean" ;
*** This is the part of GW heating due to turbulent dissipation of GW KE.

I almost forgot: There is also a term QNO (NO IR cooling, which I have not been including in my analyses. This is only important near the upper boundary of WACCM (maybe 125-140 km), where CO2 is pretty much gone and NO becomes abundant and an important cooling term. 

Mike Mills
WACCM Liaison
Atmospheric Chemistry Division
NCAR Foothills Lab
Boulder, Colorado USA


From Andrew Gettelman, it is in here: Gettelman, A., and T. Birner. “Insights on Tropical Tropopause Layer Processes Using Global Models.” Jgr 112, no. D23104 (2007).


We define it as the radiation (QRS_TOT, QRL_TOT) plus condensation terms (DTCOND).  There are many ways to break it down, the important part is just define your terms and not miss anything.



Mike Mills
WACCM Liaison
Atmospheric Chemistry Division
NCAR Foothills Lab
Boulder, Colorado USA


Thank you very much for sharing relevant information.


Log in or register to post comments

Who's new

  • hellosyndy@...
  • soorajkrish90@...
  • joao.bettencourt@...
  • oumzh6@...
  • turuncu