Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

How to find the calculation of emv, emg, TV, TG and lw_grnd in the src?

jack

jack
Member
Hi,
I want to know the calculation of vegetation emissivity, ground emissivity, ground surface temperature and vegetation temperature in the code. However, when I use "grep -r emv_patch t_veg_patch t_grnd_col " in the ../src/biogeophys, I could not find the specific formula,do you have any suggestions?

All I found is :
biogeophys/SoilFluxesMod.F90:
! Calculate the skin temperature as a weighted sum of all the surface contributions (surface water table, snow, etc...)
! Note: This is the bare ground calculation of skin temperature
! The Urban and Vegetation are done in other place. Urban=Later in this function Veg=CanopyFluxMod
! t_skin_patch(p) = ((1._r8 - emv(p))*(1-frac_veg_nosno(p)) * sqrt(sqrt(lw_grnd))) + emv(p)*t_veg(p)
! if( frac_veg_nosno(p).eq.0 ) then
! t_skin_patch(p) = ((1._r8 - emv(p))*(1-frac_veg_nosno(p)) * sqrt(sqrt(lw_grnd))) + &
! emv(p) * frac_veg_nosno(p) * t_veg(p)
! end if
if(frac_veg_nosno(p).eq.0) t_skin_patch(p) = sqrt(sqrt(lw_grnd))
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The variables that are used in the code calculations are not always appended with _patch, _col, etc.
For example, emv is calculated in CanopyTemperatureMod.F90. The variable emv points to emv_patch, i.e., this line in the "associate" statement block:

emv => temperature_inst%emv_patch , & ! Output: [real(r8) (:) ] vegetation emissivity

The calculation of emv can be found further down:

! Vegetation Emissivity

avmuir = 1._r8
emv(p) = 1._r8-exp(-(elai(p)+esai(p))/avmuir)

So, I would grep on the variable names without the appended names, e.g., emv, emg, t_veg, t_grnd
 

jack

jack
Member
The variables that are used in the code calculations are not always appended with _patch, _col, etc.
For example, emv is calculated in CanopyTemperatureMod.F90. The variable emv points to emv_patch, i.e., this line in the "associate" statement block:

emv => temperature_inst%emv_patch , & ! Output: [real(r8) (:) ] vegetation emissivity

The calculation of emv can be found further down:

! Vegetation Emissivity

avmuir = 1._r8
emv(p) = 1._r8-exp(-(elai(p)+esai(p))/avmuir)

So, I would grep on the variable names without the appended names, e.g., emv, emg, t_veg, t_grnd
hi,oleson, I want to have a detailed understanding of how the ground temperature (TG) and skin temperature (TSKIN) is calculated. My understanding is that TSKIN is a combination of TV and TG. However, I just know that t_skin_patch(p) = emv(p)*t_veg(p) + (1._r8 - emv(p))*sqrt(sqrt(lw_grnd)) , but I didn't find the specific calculations of TG, TV, lw_grnd, and emg , could you please help me ? What's more, I see that if incident longwave (FLDS) is missing in the forcing dataset, CLM model will calculate it based on temperature, pressure and humidity, how to find the calculation formula? thanks a lot !!
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
The technical note will provide you with a detailed understanding of how those are calculated. tg and tv are quite complicated calculations, that's why we have the technical note that describes all of the calculations in the code. In particular, look at Chapter 5:


The downward longwave radiation in the absence of forcing is calculated based on Idso (1981). See:


The code for this is in the datm (cime/src/components/data_comps/datm/datm_comp_mod.F90):

!--- downward longwave ---
if (slwdn < 1) then
e = a2x%rAttr(kpslv,n) * a2x%rAttr(kshum,n) / (0.622_R8 + 0.378_R8 * a2x%rAttr(kshum,n))
ea = 0.70_R8 + 5.95e-05_R8 * 0.01_R8 * e * exp(1500.0_R8/tbot)
a2x%rAttr(klwdn,n) = ea * stebol * tbot**4
endif
 

jack

jack
Member
thanks a lot,oleson. There are two additional questions. 1. I found TSKIN in the code is: TSKIN = emv(p)*t_veg(p) + (1._r8 - emv(p))*sqrt(sqrt(lw_grnd)) (CanopyFluxesMod.F90) and if(frac_veg_nosno(p).eq.0) t_skin_patch(p) = sqrt(sqrt(lw_grnd)) (SoilFluxesMod.F90)
However,I found in Eq. 4.10 in CLM technical note that the radiative temperature is calculated as: Trad = sqrt(sqrt(lw_grnd/Stefan-Boltzmann constant)), I was confused about this, I want to write a formula that can describe the calculations of TSKIN under all (vegetated and non-vegetated) conditions. but I don't know whether I'm right or not, see the screenshot attached below, do you have any suggestion on this? 2. In my understanding, the calculation of TSKIN (or land surface temperature) in CLM was mainly affected by downward atmospheric shortwave radiation and longwave radiation (which was calculated based on air temperature, pressure and humidity), I want to ask that do wind and precipitation have an effect on TSKIN calculation, in theory (e.g., mechanism) and in practical? thanks !!
 

Attachments

  • TSKIN.png
    TSKIN.png
    75.8 KB · Views: 11

slevis

Moderator
Hello @jack (cc: @oleson),

It is perfectly acceptable to post here for a conversation/discussion/brainstorming with the community.

Otherwise, I wanted to make sure it was clear that the CTSM Liaison support focuses on getting people unstuck when they encounter technical issues. Regarding science questions, we want to hear about bugs or suggestions for improvement. Beyond that, we do not engage in discussions or brainstorming unless one of us is personally interested in the specific topic.

Best of luck in your research.

Sincerely,
Sam Levis
 

jack

jack
Member
Hello @jack (cc: @oleson),

It is perfectly acceptable to post here for a conversation/discussion/brainstorming with the community.

Otherwise, I wanted to make sure it was clear that the CTSM Liaison support focuses on getting people unstuck when they encounter technical issues. Regarding science questions, we want to hear about bugs or suggestions for improvement. Beyond that, we do not engage in discussions or brainstorming unless one of us is personally interested in the specific topic.

Best of luck in your research.

Sincerely,
Sam Levis
ok, thanks
 
Top