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

Regarding Roughness Length z0

Hi, my name's George McDonald, I'm a graduate student at Georgia Tech. I have a question regarding any available outputs of the roughness length Z0MG (momentum roughness length over ground, in m), from the Community Land Model as incorporated in CCSM4 for paleoclimate runs.

The specific runs that I am looking at (which were done as NCAR's contribution to the paleoclimate model intercomparison project) are over 30 model years for each of the following periods during the last glacial cycle: Modern (20th century), 6 kyr ago, and 21 kyr ago (Last Glacial Maximum). I currently have 6 hourly outputs of winds from the lowest model output that I'm using to look at how dune orientations in 8 equatorial dune fields vary over the epochs. The filenames of the runs themselves are as follows:

b40.lgm21ka.1deg.003M
b40.mh6ka.1deg.003M
b40.20th.track1.1deg.012

My question is whether there are Z0MG outputs available for these or comparable runs. I am hoping to use the Z0MG in the law of the wall, to scale the winds from the lowest model layer to 10m above the surface (I received the wind outputs from a collaborator, which is why I'm not familiar with the procedure for obtaining outputs of additional variables).

If there are not Z0MG outputs that are easily obtained without doing further runs, my question would be whether Z0MG would be expected to change significantly over the course of a 30 year model run when looking at very scarcely vegetated dune fields (the runs were done with interactive vegetation--which was prescribed but remained static over the 30 years). If the above is true, or if Z0MG is static, I was wondering if there was a table of Z0MG initial conditions at each GCM grid that I could look at, which would likely give me representative values for the course simulation.

I also understand that if Z0MG outputs are unavailable and are expected to vary considerably over the course of the run (even over dune fields), they likely can't be estimated based on the initial conditions and it would be better to find a way to re-do the runs and store the outputs.

Thank you very much for your time.
 

nanr

Member
Hi George - We did not save z0mg for these runs.  However, z0mg may not be the field you want to be investigating, as it is only the bare soil roughness, which will always equal 0.01m, unless modified by snow (Snow = 0.0024m).  If you start adding vegetation, z0mv is the total surface roughness including vegetation, and I have included the model calculations below.  The roughness lengths over land are calculated over bare soil or snow as z0mg and over vegetation as z0mv.

The initial calculation is done in /models/lnd/clm/src/clm4_5/biogeophysics/Biogeophysics1Mod.F90 as:

       ! Ground roughness lengths over non-lake columns (includes bare ground, ground
       ! underneath canopy, wetlands, etc.)

       if (frac_sno(c) > 0._r8) then
          z0mg(c) = zsno
       else
          z0mg(c) = zlnd
       end if
       z0hg(c) = z0mg(c)            ! initial set only
       z0qg(c) = z0mg(c)            ! initial set only

and 

       ! Roughness lengths over vegetation

       z0m(p)    = z0mr(ivt(p)) * htop(p)
       displa(p) = displar(ivt(p)) * htop(p)

The roughness length and displacement height are then modified by LAI in /models/lnd/clm/src/clm4_5/biogeophysics/CanopyFluxesMod.F90 as:
 ! Modify aerodynamic parameters for sparse/dense canopy (X. Zeng)
   do f = 1, fn
      p = filterp(f)
      c = pcolumn(p)

      lt = min(elai(p)+esai(p), tlsai_crit)
      egvf =(1._r8 - alpha_aero * exp(-lt)) / (1._r8 - alpha_aero * exp(-tlsai_crit))
      displa(p) = egvf * displa(p)
      z0mv(p)   = exp(egvf * log(z0mv(p)) + (1._r8 - egvf) * log(z0mg(c)))


Hope that helps.
 
Hi Nan. Thank you, this is exactly what I was looking for. For my work, using the bare soil roughness should be sufficient given the lack of vegetation in the dune fields that I'm studying (with the ability to be confident that this was consistent over the model runs given that the prescribed vegetation was static)--but the treatment of roughness with vegetation is good to know, given that there are fields where this may prove to be a concern (e.g. northern China).
 
Top