Open wknoben opened 3 years ago
Adding to the above, the check that sets LAI to 0 if SAI is 0 (no leaves if no stem) conceptually makes sense but leads to odd situations when combined with the check that sets SAI to 0 when SAI < 0.05. See attached figure where vegetation cover drops to zero for a few days, as a consequence of SAI being ~0.04 during this period.
This has rather odd consequences for variables scalarTotalET
and scalarNetRadiation
which are incorrectly set to zero during the "no vegetation" period (see figure).
This is incorrect because scalarGroundEvaporation
, and scalarLWNetGround
and scalarGroundAbsorbedSolar
respectively, are not zero and this should be reflected in the total
and net
variables:
https://github.com/NCAR/summa/blob/372c3fbeb3825e3b3d635461a8e552f9f0895aec/build/source/engine/vegNrgFlux.f90#L1441 https://github.com/NCAR/summa/blob/372c3fbeb3825e3b3d635461a8e552f9f0895aec/build/source/engine/vegNrgFlux.f90#L1442
Print statements immediately after these lines in vegNrgFlux
suggest that the values are calculated correctly during regular runs and that scalarTotalET
and scalarNetRadiation
are forced to 0 somewhere outside the vegNrgFlux
routine. So far I've not been able to debug this further.
2013 3 3 0 0
[...]
scalarGroundEvaporation = -1.0814032319471842E-005
scalarCanopyEvaporation = -2.7013861726593477E-006
scalarCanopyTranspiration = -6.2494890050882896E-009
scalarTotalET = -1.3521667981136277E-005
scalarGroundEvaporation = -1.2802567131006620E-005
scalarCanopyEvaporation = 0.0000000000000000
scalarCanopyTranspiration = 0.0000000000000000
scalarTotalET = -1.2802567131006620E-005
scalarGroundEvaporation = -1.0284009929032995E-005
scalarCanopyEvaporation = 0.0000000000000000
scalarCanopyTranspiration = 0.0000000000000000
scalarTotalET = -1.0284009929032995E-005
Currently speculating that this issue somehow relates to the computeVegFlux
variable, which is set to False in vegPhenlgy
if VAI < 0.05:
https://github.com/NCAR/summa/blob/372c3fbeb3825e3b3d635461a8e552f9f0895aec/build/source/engine/vegPhenlgy.f90#L184
computeVegFlux
is used multiple times throughout the code base to skip certain parts of the routine if no vegetation is exposed to the atmosphere. Possibly a consequence of skipping some of these routines is that the scalarNetRadiation
and scalarTotalET
variables are not correctly written into the output files. Unsure if this line of reasoning is correct.
Disabling the PHENOLOGY
lines that force SAI or LAI to 0 if below 0.05 seems to provide a temporary workaround. Extensive testing currently incomplete:
Likely related to #327
In particular the current checks if either SAI or LAI are < 0.05 can lead to odd-looking behaviour. If this is the case, these values are set to 0 (to avoid computational issues) which can lead to strange jumps in SAI/LAI/VAI values.
https://github.com/NCAR/summa/blob/372c3fbeb3825e3b3d635461a8e552f9f0895aec/build/source/noah-mp/module_sf_noahmplsm.F#L571 https://github.com/NCAR/summa/blob/372c3fbeb3825e3b3d635461a8e552f9f0895aec/build/source/noah-mp/module_sf_noahmplsm.F#L572