Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Confusing names for variables in wrfout

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

lslrsgis

Member
Dear WRF community,

I am trying to figure out the energy balance of land surface. The difficulty I met is to determine the (1) sensible heat flux, (2) latent heat flux, (3) ground heat flux, and (4) downward Short Wave flux, (5) downward Long Wave flux.

Question 1: are these five components corresponding to the following five, which were found from wrfout_d01 file?

(1) float HFX(Time, south_north, west_east) ;
HFX:FieldType = 104 ;
HFX:MemoryOrder = "XY " ;
HFX:description = "UPWARD HEAT FLUX AT THE SURFACE" ;
HFX:units = "W m-2" ;
HFX:stagger = "" ;
HFX:coordinates = "XLONG XLAT XTIME" ;
(2) float LH(Time, south_north, west_east) ;
LH:FieldType = 104 ;
LH:MemoryOrder = "XY " ;
LH:description = "LATENT HEAT FLUX AT THE SURFACE" ;
LH:units = "W m-2" ;
LH:stagger = "" ;
LH:coordinates = "XLONG XLAT XTIME" ;
(3) float GRDFLX(Time, south_north, west_east) ;
GRDFLX:FieldType = 104 ;
GRDFLX:MemoryOrder = "XY " ;
GRDFLX:description = "GROUND HEAT FLUX" ;
GRDFLX:units = "W m-2" ;
GRDFLX:stagger = "" ;
GRDFLX:coordinates = "XLONG XLAT XTIME" ;
(4) float SWDOWN(Time, south_north, west_east) ;
SWDOWN:FieldType = 104 ;
SWDOWN:MemoryOrder = "XY " ;
SWDOWN:description = "DOWNWARD SHORT WAVE FLUX AT GROUND SURFACE" ;
SWDOWN:units = "W m-2" ;
SWDOWN:stagger = "" ;
SWDOWN:coordinates = "XLONG XLAT XTIME" ;
(5) float GLW(Time, south_north, west_east) ;
GLW:FieldType = 104 ;
GLW:MemoryOrder = "XY " ;
GLW:description = "DOWNWARD LONG WAVE FLUX AT GROUND SURFACE" ;
GLW:units = "W m-2" ;
GLW:stagger = "" ;
GLW:coordinates = "XLONG XLAT XTIME" ;





Question 2: what are the differences of the following three groups?

I. SWDOWN vs. SWNORM

float SWDOWN(Time, south_north, west_east) ;
SWDOWN:FieldType = 104 ;
SWDOWN:MemoryOrder = "XY " ;
SWDOWN:description = "DOWNWARD SHORT WAVE FLUX AT GROUND SURFACE" ;
SWDOWN:units = "W m-2" ;
SWDOWN:stagger = "" ;
SWDOWN:coordinates = "XLONG XLAT XTIME" ;


float SWNORM(Time, south_north, west_east) ;
SWNORM:FieldType = 104 ;
SWNORM:MemoryOrder = "XY " ;
SWNORM:description = "NORMAL SHORT WAVE FLUX AT GROUND SURFACE (SLOPE-DEPENDENT)" ;
SWNORM:units = "W m-2" ;
SWNORM:stagger = "" ;
SWNORM:coordinates = "XLONG XLAT XTIME" ;

II. ALBEDO vs. ALBBCK

float ALBEDO(Time, south_north, west_east) ;
ALBEDO:FieldType = 104 ;
ALBEDO:MemoryOrder = "XY " ;
ALBEDO:description = "ALBEDO" ;
ALBEDO:units = "-" ;
ALBEDO:stagger = "" ;
ALBEDO:coordinates = "XLONG XLAT XTIME" ;

float ALBBCK(Time, south_north, west_east) ;
ALBBCK:FieldType = 104 ;
ALBBCK:MemoryOrder = "XY " ;
ALBBCK:description = "BACKGROUND ALBEDO" ;
ALBBCK:units = "" ;
ALBBCK:stagger = "" ;
ALBBCK:coordinates = "XLONG XLAT XTIME" ;

III. Instantaneous vs. Accumulated

float LWDNB(Time, south_north, west_east) ;
LWDNB:FieldType = 104 ;
LWDNB:MemoryOrder = "XY " ;
LWDNB:description = "INSTANTANEOUS DOWNWELLING LONGWAVE FLUX AT BOTTOM" ;
LWDNB:units = "W m-2" ;
LWDNB:stagger = "" ;

float ACLWDNB(Time, south_north, west_east) ;
ACLWDNB:FieldType = 104 ;
ACLWDNB:MemoryOrder = "XY " ;
ACLWDNB:description = "ACCUMULATED DOWNWELLING LONGWAVE FLUX AT BOTTOM" ;
ACLWDNB:units = "J m-2" ;
ACLWDNB:stagger = "" ;
ACLWDNB:coordinates = "XLONG XLAT XTIME" ;

Any indication is appreciated. Thanks.
 
Hi,
To answer your questions:
1) Yes, those are the correct variables that correspond with the ones you mention above.
2i) SWDOWN is downward short wave radiation at the surface. SWNORM is normal shortwave flux, which contains slope effects on SWDOWN. It is activated only when slope_rad = 1.
2ii) ALBBCK is the monthly albedo map that comes from the geogrid program, and ALBEDO is based on the surface model, and comes from the table values that model uses. If usemonalb = .true. the model uses ALBBCK instead of ALBEDO. After running, you would still want to look at the variable ALBEDO because the model will fill the ALBEDO array with the values from ALBBCK.
2iii) Instantaneous means this value is the value at the time of output. If you had output every 3 hours, for example, then it would accumulate from hour 00 to 03, then output that value at hour 03, then the value would set back to 0, and accumulate again from hour 03 to 06, outputting the new value at hour 06. Accumulated means that if you had the same set up, you would have the same output at hour 03, but then that value would not be set back to 0. It would remain and then over hours 03-06, it would add to the value at 03. The formula would be something like:

instantaneous output
accumulation over hours 0-3 = 10
output at hr 03 = 10
accumulation over hours 3-6 = 5
output at hr 06 = 5
accumulation over hours 6-9 = 7
output at hr 09 = 7

accumulated output
accumulation over hours 0-3 = 10
output at hr 03 = 10
accumulation over hours 3-6 = 5
output at hr 06 = 15
accumulation over hours 6-9 = 7
output at hr 09 = 22
 
And another question: are LWUPB and SWUPB correspond to upwelling longwave flux and upwelling shortwave flux at ground surface level? (as bellow) Here "AT BOTTOM" is precisely the same meaning as "AT GROUND SURFACE", or the lowest level of atmosphere? Thanks.

UPWELLING LONGWAVE
float LWUPB(Time, south_north, west_east) ;
LWUPB:FieldType = 104 ;
LWUPB:MemoryOrder = "XY " ;
LWUPB:description = "INSTANTANEOUS UPWELLING LONGWAVE FLUX AT BOTTOM" ;
LWUPB:units = "W m-2" ;
LWUPB:stagger = "" ;
LWUPB:coordinates = "XLONG XLAT XTIME" ;

UPWELLING SHORTWAVE
float SWUPB(Time, south_north, west_east) ;
SWUPB:FieldType = 104 ;
SWUPB:MemoryOrder = "XY " ;
SWUPB:description = "INSTANTANEOUS UPWELLING SHORTWAVE FLUX AT BOTTOM" ;
SWUPB:units = "W m-2" ;
SWUPB:stagger = "" ;
SWUPB:coordinates = "XLONG XLAT XTIME" ;
 
Hi,
I would like to apologize for the delay in response. We have been out of the office, and upon returning, have been busy preparing for our upcoming WRF tutorial, and have gotten a bit behind with forum questions. Thank you for your patience.

The 2 variables you asked about refer to the ground.
 
Hey you two,
I hope you were successful when using these variables. I used them as well for my calculations but my surface energy balance is ... well not balanced. There is still an 1 - 1.5W/m2 residual. Could it be that SWUPB, SWDNB, LWDNB and LWUPB do not exactly refer to the same ground surface layer as LH, GRDFLX and HFX?
Cheers,
Astrid
 
Hi Astrid,
I believe they should be the same surface (ground) level for all the variables mentioned. What method/equation are you using to balance? Can you also attach your namelist just so that I can see which physics options you're using? Thanks!
 
Hey Kelly!

Yes sure, I am using SWdown-SWup+LWdown-LWup - (H+LE+G) = 0, but it's not adding up to 0.
Thank you very much!
Kind regards,
Astrid
 

Attachments

  • namelist.input.txt
    5.8 KB · Views: 127
Hi Astrid,
I spoke to our physics specialist. He has a few questions:
1) Sometimes the sign of the ground flux is reversed. Could that account for it?
2) Where it's off, is it randomly positive and negative?
3)Does the spatial distribution correlate with anything?
 
Dear Kelly,
thank you very much for your answer.

1) No, GRDFLX is positive for Noah LSM.
2) It is mostly positive, I'll attach you the pic.
3) I haven't analyzed any correlations, but to me it doesn't look like it.

Cheers,
Astrid
 

Attachments

  • energy_balance.png
    energy_balance.png
    64.4 KB · Views: 5,000
Hi Astrid,
Is the residual at all these points or is it an area average dominated by those high values?
 
Hey Kelly,
I averaged the residual for every grid point. The "normal" values lie more between -10 and 10. The dark spots represent the outliers i.e. the high key mark values.
Again, I used (SWDNB-SWUPB+LWDNB-LWUPB)-(HFX+LH+GRDFLX)=0
Cheers,
Astrid
 
Hi Astrid,
Instead of using SWDNB and SWUPB for net shortwave radiation, can you try using "SWDOWN*(1-ALBEDO)" - both fields should be available from the wrfout file. Let me know if that makes any difference.
 
Hey Kelly,
I checked it, but it doesn't make any difference. It even slightly enlarges the imbalance.
SWDNB has the same value as SWDOWN, but SWDOWN*ALBEDO is different from SWUPB.
Cheers,
Astrid
 
Okay, take a look at the NOAHRES field in wrfout file. This is a 2D field, which calculates the residual term in the surface energy budget. You can see how this term is computed in phys/module_sf_noahdrv.F (around line 1242 in the current version of WRF). Comparing this equation to what you have, there are a couple of points to make:
1. the downward longwave needs to multiply by emissivity;
2. the sign of GRDFLX is opposite of HFX and LH (which could be the main reason for the discrepancy you see - but you also may have already addressed this in an earlier post); and
3. there are small terms (FLX1-3) that represent latent heat exchange due to snow melt, freezing rain, etc. that cannot be estimated outside of this routine. In any case, your estimate after making corrections 1 and 2 above, should be comparable to NOAHRES, and this is probably as close as one can get for the budget. You can also compare the GRDFLX field with your residual term to see if the two have a similar pattern.
 
Hi everyone,

It is nice to see all your post because I was exactly wondering the same kind of things yesterday.
I just have one comment concerning the point 1): I think the emissivity is already multiplied with the variable GLW (downward long wave flux at ground, in the module_sf_noahdrv.F, line 117 and 762) and the LWDNB ( Long Wave Down Bottom) that one gets in output is then LWDNB= Emissivity*GLW.

By the way, what happens to the residual? I was really thinking that the model was always closing the energy balance on every Grid Cells... Is there an energy storage term? A redistribution with surrounding GCs ( I was thinking that noah LSM is a simple column model without "communication" with surrounding..)?
I will try to explore that in the next days but if someone has some infos on that, it will be very kind to share !

By advance, thanks a lot.

Gaspard
 
Dear Kelly,
I came across this post while going into the detail of the instantaneous variables.
I'm confused because you wrote accumulated, let's say from 0h to 3h and then output at hr 3.
I'm interested in the energy balance.
All the accumulated variables dealing with energy fluxes have units J/m2 , that is the time integration (i.e. an accumulation) of the energy (W/m2).
The corresponding instantaneous variables have units W/m2, so my question is how can be accumulated over the time interval between two outputs?
Is this accumulation divided by the time interval? (In case it would be an average that is output at the end of the same time interval)
Thank you very much.



kwerner said:
2iii) Instantaneous means this value is the value at the time of output. If you had output every 3 hours, for example, then it would accumulate from hour 00 to 03, then output that value at hour 03, then the value would set back to 0, and accumulate again from hour 03 to 06, outputting the new value at hour 06.
instantaneous output
accumulation over hours 0-3 = 10
output at hr 03 = 10
accumulation over hours 3-6 = 5
output at hr 06 = 5
accumulation over hours 6-9 = 7
output at hr 09 = 7
 
@francescomaicu,
I apologize for the delay in response. This one got buried in my emails.

Output intervals are determined by the namelist variable "history_interval," which is in minutes. So you may, for e.g., set this to 60 and you'd get an output file every hour. However, the model integrates forward at intervals based on the time_step (which is in seconds). If you had this set to something like 180, the model would integrate every 3 minutes, but an output wouldn't be created until after an hour of simulation time. Therefore the accumulation would occur at every 3 minute interval inside the 60 minutes in a single output file. Does that answer your question?
 
Dear @kwerner,
I have output every 3hours (history_interval=180) and time_step=15 seconds.
I undestand that the instantaneous variables are integrated every time_step and printed every history_interval, so that for example the instanatneous values of a variable at 2020-09-15_03:00:00 are calcualted in the following 15 secs, while the accumulated ones are summed within the history_interval every time_step.
Am I correct?
 
Top