clm5/doc/design/dynamic_urban.rst
2024-05-09 15:14:01 +08:00

46 lines
3.0 KiB
ReStructuredText

.. sectnum::
.. contents::
==================================
Overview of this design document
==================================
This documents some of the high-level design decisions made during implementation of
dynamic urban landunits.
============================================================================
The use of dzsoi_decomp for urban landunits to calculate totcolch4 in ch4Mod.F90
============================================================================
During the first test simulation for dynamic urban, we encountered a methane conservation
error the first time PCT_URBAN changed. The dynamic adjustments for conc_ch4_sat_col and
conc_ch4_unsat_col (the column_state_updater in subroutine DynamicColumnAdjustments within
ch4Mod.F90) were distributing non-zero values for roof and walls for layers 1,nlevsoi.
When the total column ch4 is summed over the soil layers (or in this case, urban layers), the
summation is done over nlevsoi, not nlevurb, using dz. dz is 1.e36 for roof/wall layers
that are greater than nlevurb, thus creating an imbalance.
Rather than trying to keep the BGC variables physically meaningful in urban landunits,
we will just pack these variables in a way that should conserve these variables, even if
the values in each of the urban columns is somewhat nonsensical. Specifically: we'll take
col%wtgcell at face value in urban columns in dynColumnStateUpdaterMod - i.e., for the sake
of storing / conserving these BGC variables, we'll act as if that gives the true column
weight on the grid cell. This way we'll end up storing all of the C & N from the vegetated
column in the urban columns, and there shouldn't be any that is lost from the system. If that
urban landunit later shrinks, the stored C & N should be restored symmetrically. It shouldn't
really matter that it was stored in a non-physical way (e.g., with some C & N stored in urban
walls), since the BGC variables are irrelevant over the urban areas and we just want to be able
to restore the amount that was originally stored if an urban landunit grows and then later shrinks.
But for this to work right, we need to treat the relevant BGC variables as having the same dz over
all urban columns as over the soil column. Note that there already seems to be an implicit assumption
that dz is the same for all columns in the dynamic column state updates, in that dz doesn't enter
into the conservation equations. In terms of what needs to change, we think that the only relevant
code is the code that sums up total C / N / CH4 for the sake of balance checks: these balance checks
need to be consistent with the assumptions made in the conservation code. The C and N summations
already use dzsoi_decomp, which is the same for all columns, so this is already what we want.
The only thing that needs to change is the use of dz in totcolch4 in ch4Mod.F90: we've changed that to now use
dzsoi_decomp over urban columns. (This begs the question of why this isn't already using
dzsoi_decomp for consistency with the C & N code; we're not sure about this.)
See issue #1445 for the original discussion on this topic.