ESCOMP / CTSM

Community Terrestrial Systems Model (includes the Community Land Model of CESM)
http://www.cesm.ucar.edu/models/cesm2.0/land/
Other
302 stars 307 forks source link

[CLM-only] Incorrect documentation on the qflx_evap_tot variable in the code #79

Closed ekluzek closed 5 years ago

ekluzek commented 6 years ago

Erik Kluzek < erik > - 2011-01-04 16:14:23 -0700 Bugzilla Id: 1264 Bugzilla CC: gbisht, oleson, rfisher, sacks,

Hello Erik,

While trying to understanding the CLM code for some of my work, I came across a comment in the CLM, which I believe is incorrect. The incorrect comment is present in clm4_0_16 tag. Forrest Hoffmann suggested, I should contact you regarding it.

For the data structure 'pft_wflux_type', the variable qflx_evap_tot(:) has a comment that qflx_evap_tot = qflx_evap_soi + qflx_evap_veg + qflx_tran_veg;

though it is only qflx_evap_tot = qflx_evap_soi + qflx_evap_veg (in biogeophys/Biogeophysics2Mod.F90 line 394)

The incorrect comment appears in a couple of files. Since this is a comment only, it isn't that a big issue; but the correction would help in documenting what the variable qflx_evap_tot actually stores.

cheers, Gautam.

ekluzek commented 6 years ago

Erik Kluzek < erik > - 2011-01-04 16:15:43 -0700

The same problem is in:

BalanceCheckMod BioPhysics1Mod BioPhysicsLakeMod

as well.

ekluzek commented 6 years ago

Erik Kluzek < erik > - 2011-01-04 16:24:09 -0700

Also in UrbanMod and BareGroundFluxesMod.

ekluzek commented 6 years ago

Erik Kluzek < erik > - 2011-01-04 17:42:44 -0700

Comment from Keith...

Yes, looks like the comment(s) is wrong. The comment in clm_atmlnd.F90 is also wrong: real(r8), pointer :: qflx_evap_tot(:)!qflx_evap(_soi + _veg) + qflx_tran_veg The long_name(s) for QFLX_EVAP_TOT in histFldsMod.F90 is wrong as well.

qflx_evap_veg is the sum of evaporation of canopy intercepted water (qflx_evap_can) and transpiration (qflx_tran_veg).

So, could change it to:

qflx_evap_tot = qflx_evap_soi + qflx_evap_can + qflx_tran_veg

or:

qflx_evap_tot = qflx_evap_soi + qflx_evap_veg

I would prefer the first definition.

Keith

ekluzek commented 6 years ago

Erik Kluzek < erik > - 2011-01-07 16:48:23 -0700

OK, so here are the changes in the documentation for qflx_evap_tot to go in...

[yong:lnd/clm/src] erik% svn diff
Index: main/clm_atmlnd.F90
===================================================================
--- main/clm_atmlnd.F90 (revision 26281)
+++ main/clm_atmlnd.F90 (working copy)
@@ -74,7 +74,7 @@
      real(r8), pointer :: eflx_lh_tot(:)  !total latent HF (W/m**2)  [+ to atm]
      real(r8), pointer :: eflx_sh_tot(:)  !total sensible HF (W/m**2) [+ to atm]
      real(r8), pointer :: eflx_lwrad_out(:) !IR (longwave) radiation (W/m**2)
-     real(r8), pointer :: qflx_evap_tot(:)!qflx_evap(_soi + _veg) + qflx_tran_veg
+     real(r8), pointer :: qflx_evap_tot(:)!qflx_evap_soi + qflx_evap_can + qflx_tran_veg
      real(r8), pointer :: fsa(:)          !solar rad absorbed (total) (W/m**2)
      real(r8), pointer :: nee(:)          !net CO2 flux (kg CO2/m**2/s) [+ to atm]
      real(r8), pointer :: ram1(:)         !aerodynamical resistance (s/m)
Index: main/clmtype.F90
===================================================================
--- main/clmtype.F90    (revision 26281)
+++ main/clmtype.F90    (working copy)
@@ -669,7 +669,7 @@
    real(r8), pointer :: qflx_tran_veg(:)  !vegetation transpiration (mm H2O/s) (+ = to atm)
    real(r8), pointer :: qflx_evap_can(:)  !evaporation from leaves and stems 
    real(r8), pointer :: qflx_evap_soi(:)  !soil evaporation (mm H2O/s) (+ = to atm)
-   real(r8), pointer :: qflx_evap_tot(:)  !qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+   real(r8), pointer :: qflx_evap_tot(:)  !qflx_evap_soi + qflx_evap_can + qflx_tran_veg
    real(r8), pointer :: qflx_evap_grnd(:) !ground surface evaporation rate (mm H2O/s) [+]
    real(r8), pointer :: qflx_dew_grnd(:)  !ground surface dew formation (mm H2O /s) [+]
    real(r8), pointer :: qflx_sub_snow(:)  !sublimation rate from snow pack (mm H2O /s) [+]
Index: main/histFldsMod.F90
===================================================================
--- main/histFldsMod.F90    (revision 26281)
+++ main/histFldsMod.F90    (working copy)
@@ -4416,7 +4416,7 @@
          ptr_pft=clm3%g%l%c%p%pwf%qflx_evap_veg, default='inactive')

     call hist_addfld1d (fname='QFLX_EVAP_TOT', units='mm H2O/s', &
-         avgflag='A', long_name='qflx_evap_soi + qflx_evap_veg + qflx_tran_veg', &
+         avgflag='A', long_name='qflx_evap_soi + qflx_evap_can + qflx_tran_veg', &
          ptr_pft=clm3%g%l%c%p%pwf%qflx_evap_tot, default='inactive', c2l_scale_type='urbanf')

     call hist_addfld1d (fname='QFLX_DEW_GRND', units='mm H2O/s', &
Index: biogeophys/BalanceCheckMod.F90
===================================================================
--- biogeophys/BalanceCheckMod.F90  (revision 26281)
+++ biogeophys/BalanceCheckMod.F90  (working copy)
@@ -218,7 +218,7 @@
     real(r8), pointer :: eflx_dynbal(:)     ! energy conversion flux due to dynamic land cover change(W/m**2) [+ to atm]
     real(r8), pointer :: eflx_lh_tot(:)     ! total latent heat flux (W/m8*2)  [+ to atm]
     real(r8), pointer :: eflx_soil_grnd(:)  ! soil heat flux (W/m**2) [+ = into soil]
-    real(r8), pointer :: qflx_evap_tot(:)   ! qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:)   ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: qflx_irrig(:)      ! irrigation flux (mm H2O /s)
     real(r8), pointer :: qflx_surf(:)       ! surface runoff (mm H2O /s)
     real(r8), pointer :: qflx_qrgwl(:)      ! qflx_surf at glaciers, wetlands, lakes
Index: biogeophys/Biogeophysics1Mod.F90
===================================================================
--- biogeophys/Biogeophysics1Mod.F90    (revision 26281)
+++ biogeophys/Biogeophysics1Mod.F90    (working copy)
@@ -174,7 +174,7 @@
     real(r8), pointer :: eflx_lh_tot_u(:) !urban total latent heat flux (W/m**2)  [+ to atm]
     real(r8), pointer :: eflx_lh_tot_r(:) !rural total latent heat flux (W/m**2)  [+ to atm]
     real(r8), pointer :: eflx_sh_veg(:)   !sensible heat flux from leaves (W/m**2) [+ to atm]
-    real(r8), pointer :: qflx_evap_tot(:) !qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:) !qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: qflx_evap_veg(:) !vegetation evaporation (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_tran_veg(:) !vegetation transpiration (mm H2O/s) (+ = to atm)
     real(r8), pointer :: cgrnd(:)         !deriv. of soil energy flux wrt to soil temp [w/m2/k]
Index: biogeophys/Biogeophysics2Mod.F90
===================================================================
--- biogeophys/Biogeophysics2Mod.F90    (revision 26281)
+++ biogeophys/Biogeophysics2Mod.F90    (working copy)
@@ -158,7 +158,7 @@
     real(r8), pointer :: eflx_sh_tot(:)     ! total sensible heat flux (W/m**2) [+ to atm]
     real(r8), pointer :: eflx_sh_tot_u(:)   ! urban total sensible heat flux (W/m**2) [+ to atm]
     real(r8), pointer :: eflx_sh_tot_r(:)   ! rural total sensible heat flux (W/m**2) [+ to atm]
-    real(r8), pointer :: qflx_evap_tot(:)   ! qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:)   ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: eflx_lh_tot(:)     ! total latent heat flux (W/m**2)  [+ to atm]
     real(r8), pointer :: eflx_lh_tot_u(:)   ! urban total latent heat flux (W/m**2)  [+ to atm]
     real(r8), pointer :: eflx_lh_tot_r(:)   ! rural total latent heat flux (W/m**2)  [+ to atm]
Index: biogeophys/Hydrology2Mod.F90
===================================================================
--- biogeophys/Hydrology2Mod.F90    (revision 26281)
+++ biogeophys/Hydrology2Mod.F90    (working copy)
@@ -114,7 +114,7 @@
     real(r8), pointer :: forc_rain(:)     ! rain rate [mm/s]
     real(r8), pointer :: forc_snow(:)     ! snow rate [mm/s]
     real(r8), pointer :: begwb(:)         ! water mass begining of the time step
-    real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: bsw2(:,:)        ! Clapp and Hornberger "b" for CN code
     real(r8), pointer :: psisat(:,:)      ! soil water potential at saturation for CN code (MPa)
     real(r8), pointer :: vwcsat(:,:)      ! volumetric water content at saturation for CN code (m3/m3)
Index: biogeophys/BiogeophysicsLakeMod.F90
===================================================================
--- biogeophys/BiogeophysicsLakeMod.F90 (revision 26281)
+++ biogeophys/BiogeophysicsLakeMod.F90 (working copy)
@@ -138,7 +138,7 @@
 !
     real(r8), pointer :: qflx_prec_grnd(:)  ! water onto ground including canopy runoff [kg/(m2 s)]
     real(r8), pointer :: qflx_evap_soi(:)   ! soil evaporation (mm H2O/s) (+ = to atm)
-    real(r8), pointer :: qflx_evap_tot(:)   ! qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:)   ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: qflx_snwcp_liq(:)  ! excess rainfall due to snow capping (mm H2O /s) [+]`
     real(r8), pointer :: qflx_snwcp_ice(:)  ! excess snowfall due to snow capping (mm H2O /s) [+]`
     real(r8), pointer :: eflx_sh_grnd(:)    ! sensible heat flux from ground (W/m**2) [+ to atm]
Index: biogeophys/UrbanMod.F90
===================================================================
--- biogeophys/UrbanMod.F90 (revision 26281)
+++ biogeophys/UrbanMod.F90 (working copy)
@@ -2620,7 +2620,7 @@
     real(r8), pointer :: qflx_evap_soi(:) ! soil evaporation (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_tran_veg(:) ! vegetation transpiration (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_evap_veg(:) ! vegetation evaporation (mm H2O/s) (+ = to atm)
-    real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: t_ref2m(:)       ! 2 m height surface air temperature (K)
     real(r8), pointer :: q_ref2m(:)       ! 2 m height surface specific humidity (kg/kg)
     real(r8), pointer :: t_ref2m_u(:)     ! Urban 2 m height surface air temperature (K)
Index: biogeophys/HydrologyLakeMod.F90
===================================================================
--- biogeophys/HydrologyLakeMod.F90 (revision 26281)
+++ biogeophys/HydrologyLakeMod.F90 (working copy)
@@ -71,7 +71,7 @@
     real(r8), pointer :: t_grnd(:)        !ground temperature (Kelvin)
     real(r8), pointer :: qmelt(:)         !snow melt [mm/s]
     real(r8), pointer :: qflx_evap_soi(:) !soil evaporation (mm H2O/s) (+ = to atm)
-    real(r8), pointer :: qflx_evap_tot(:) !qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:) !qflx_evap_soi + qflx_evap_can + qflx_tran_veg
 !
 ! local pointers to implicit inout arrays
 !
Index: biogeophys/BareGroundFluxesMod.F90
===================================================================
--- biogeophys/BareGroundFluxesMod.F90  (revision 26281)
+++ biogeophys/BareGroundFluxesMod.F90  (working copy)
@@ -126,7 +126,7 @@
     real(r8), pointer :: eflx_sh_grnd(:)  ! sensible heat flux from ground (W/m**2) [+ to atm]
     real(r8), pointer :: eflx_sh_tot(:)   ! total sensible heat flux (W/m**2) [+ to atm]
     real(r8), pointer :: qflx_evap_soi(:) ! soil evaporation (mm H2O/s) (+ = to atm)
-    real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_veg + qflx_tran_veg
+    real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: t_ref2m(:)       ! 2 m height surface air temperature (Kelvin)
     real(r8), pointer :: q_ref2m(:)       ! 2 m height surface specific humidity (kg/kg)
     real(r8), pointer :: t_ref2m_r(:)     ! Rural 2 m height surface air temperature (Kelvin)
ekluzek commented 6 years ago

Erik Kluzek < erik > - 2011-01-11 11:52:39 -0700

Fixed in clm4_0_20

ekluzek commented 6 years ago

Gautam Bisht < gbisht > - 2015-06-26 00:25:34 -0600

Erik,

It appears that there still remains one instance of the incorrect comment in clm4_5_1_r111 at line no. 127 of components/clm/src/biogeophys/SoilFluxesMod.F90. It seems that this incorrect comment was introduced in clm4_5_1_r081 when models/lnd/clm/src/biogeophys/SoilFluxesMod.F90 was added to repository.

-Gautam.

ekluzek commented 5 years ago

This is still an issue in SoilFluxes