CLASSIC
Canadian Land Surface Scheme including Biogeochemical Cycles
|
Recalculates liquid water content of soil layers after infiltration, and evaluates baseflow. More...
Functions/Subroutines | |
subroutine | waterbaseflow (THLIQX, THICEX, TBARWX, ZPOND, TPOND, BASFLW, TBASFL, RUNOFF, TRUNOF, FI, WMOVE, TMOVE, LZF, NINF, TRMDR, THLINF, DELZX, ZMAT, ZRMDR, FDTBND, WADD, TADD, FDT, TFDT, THLMAX, THTEST, THLDUM, THIDUM, TDUMW, TUSED, RDUMMY, ZERO, WEXCES, XDRAIN, THPOR, THLRET, THLMIN, BI, PSISAT, GRKSAT, THFC, DELZW, ISAND, IGRN, IGRD, IGDR, IZERO, IVEG, IG, IGP1, IGP2, ILG, IL1, IL2, JL, N) |
Recalculates liquid water content of soil layers after infiltration, and evaluates baseflow.
subroutine waterbaseflow | ( | real, dimension(ilg,igp1), intent(inout) | THLIQX, |
real, dimension(ilg,igp1), intent(in) | THICEX, | ||
real, dimension(ilg,igp1), intent(inout) | TBARWX, | ||
real, dimension (ilg), intent(inout) | ZPOND, | ||
real, dimension (ilg), intent(inout) | TPOND, | ||
real, dimension(ilg), intent(inout) | BASFLW, | ||
real, dimension(ilg), intent(inout) | TBASFL, | ||
real, dimension(ilg), intent(inout) | RUNOFF, | ||
real, dimension(ilg), intent(inout) | TRUNOF, | ||
real, dimension (ilg), intent(in) | FI, | ||
real, dimension (ilg,igp2), intent(inout) | WMOVE, | ||
real, dimension (ilg,igp2), intent(in) | TMOVE, | ||
integer, dimension(ilg), intent(in) | LZF, | ||
integer, dimension(ilg), intent(inout) | NINF, | ||
real, dimension (ilg), intent(in) | TRMDR, | ||
real, dimension(ilg,igp1), intent(in) | THLINF, | ||
real, dimension (ilg,igp1), intent(in) | DELZX, | ||
real, dimension(ilg,igp2,igp1), intent(inout) | ZMAT, | ||
real, dimension(ilg,igp1), intent(inout) | ZRMDR, | ||
real, dimension(ilg), intent(inout) | FDTBND, | ||
real, dimension(ilg), intent(inout) | WADD, | ||
real, dimension(ilg), intent(inout) | TADD, | ||
real, dimension (ilg,igp1), intent(inout) | FDT, | ||
real, dimension(ilg,igp1), intent(in) | TFDT, | ||
real, dimension(ilg,ig), intent(in) | THLMAX, | ||
real, dimension(ilg,ig), intent(in) | THTEST, | ||
real, dimension(ilg,ig), intent(inout) | THLDUM, | ||
real, dimension(ilg,ig), intent(inout) | THIDUM, | ||
real, dimension(ilg,ig), intent(inout) | TDUMW, | ||
real, dimension (ilg), intent(inout) | TUSED, | ||
real, dimension(ilg), intent(in) | RDUMMY, | ||
real, dimension(ilg), intent(in) | ZERO, | ||
real, dimension(ilg), intent(in) | WEXCES, | ||
real, dimension(ilg), intent(in) | XDRAIN, | ||
real, dimension (ilg,ig), intent(in) | THPOR, | ||
real, dimension(ilg,ig), intent(in) | THLRET, | ||
real, dimension(ilg,ig), intent(in) | THLMIN, | ||
real, dimension (ilg,ig), intent(in) | BI, | ||
real, dimension(ilg,ig), intent(in) | PSISAT, | ||
real, dimension(ilg,ig), intent(in) | GRKSAT, | ||
real, dimension (ilg,ig), intent(in) | THFC, | ||
real, dimension (ilg,ig), intent(in) | DELZW, | ||
integer, dimension (ilg,ig), intent(in) | ISAND, | ||
integer, dimension(ilg), intent(in) | IGRN, | ||
integer, dimension(ilg), intent(in) | IGRD, | ||
integer, dimension(ilg), intent(in) | IGDR, | ||
integer, dimension(ilg), intent(in) | IZERO, | ||
integer, intent(in) | IVEG, | ||
integer, intent(in) | IG, | ||
integer, intent(in) | IGP1, | ||
integer, intent(in) | IGP2, | ||
integer, intent(in) | ILG, | ||
integer, intent(in) | IL1, | ||
integer, intent(in) | IL2, | ||
integer, intent(in) | JL, | ||
integer, intent(in) | N | ||
) |
[in,out] | thliqx | Volumetric liquid water content of soil layer \([m^3 m^{-3}]\) |
[in] | thicex | Volumetric frozen water content of soil layer \([m^3 m^{-3}]\) |
[in,out] | tbarwx | Temperature of water in soil layer [C] |
[in,out] | zpond | Depth of ponded water [m] |
[in,out] | tpond | Temperature of ponded water [C] |
[in,out] | basflw | Base flow from bottom of soil column \([kg m^{-2}]\) |
[in,out] | tbasfl | Temperature of base flow from bottom of soil column [K] |
[in,out] | runoff | Total runoff from soil column [m] |
[in,out] | trunof | Temperature of total runoff from soil column [K] |
[in,out] | wmove | Water movement matrix \([m^3 m^{-2}]\) |
[in] | tmove | Temperature matrix associated with ground water movement [C] |
[in] | thlinf | Volumetric liquid water content behind the wetting front \([m^3 m^{-3}]\) |
[in] | fi | Fractional coverage of subarea in question on modelled area [ ] |
[in] | trmdr | Time remaining in current time step [s] |
[in] | delzx | Permeable depth of soil layer [m] |
[in] | thpor | Pore volume in soil layer \([m^3 m^{-3}] (\theta_p)\) |
[in] | thlret | Liquid water retention capacity for organic soil \([m^3 m^{-3} ] (\theta_{l,ret})\) |
[in] | thlmin | Residual soil liquid water content (variable, accounting for unfrozen water in frozen soils) remaining after freezing or evaporation \([m^3 m^{-3}]\) |
[in] | bi | Clapp and Hornberger empirical "b" parameter [ ] (b) |
[in] | psisat | Soil moisture suction at saturation \([m] (\Psi_{sat})\) |
[in] | grksat | Hydraulic conductivity of soil at saturation \([m s^{-1}] (K_{sat})\) |
[in] | thfc | Field capacity \([m^3 m^{-3}]\) |
[in] | delzw | Permeable depth of soil layer \([m] (\Delta_{zg,w})\) |
[in] | xdrain | Drainage index for water flow at bottom of soil profile [ ] |
At levels in the soil profile lower than the bottom of the wetting front, redistribution of soil liquid water proceeds in response to normal gravity and suction forces. Subroutine waterFlowNonInfiltrate is called to calculate these redistributions. The time period TUSED that is passed to waterFlowNonInfiltrate is set in the 100 loop to the time period over which infiltration was occurring during the current time step, except if the wetting front has passed the bottom of the lowest soil layer, in which case TUSED is set to zero (since the flows calculated by waterFlowNonInfiltrate are not required). waterFlowNonInfiltrate is called using dummy variables THLDUM, THIDUM and TDUMW, which are set in loop 125 to the liquid water content, the frozen water content and the water temperature of the soil layers respectively.
After waterFlowNonInfiltrate has been called, the maximum value of the water movement index NINF is set to the number of soil layers plus 1. The values in the matrix ZRMDR, representing for each soil layer the depth that has not been affected by infiltration, are initialized to the soil permeable layer thicknesses DELZX. The water flows FDT coming out of waterFlowNonInfiltrate are set to zero at the soil layer interfaces above the wetting front. For the layer containing the wetting front, if the flow at the bottom of the layer is upward, it is set to zero (to avoid possible overflows in liquid water content).
The values in the three-dimensional matrix ZMAT are initialized to zero. This matrix contains the depth of each soil layer J (including the dummy soil layer below the lowest layer) that is filled by water from level K in the water movement matrix WMOVE. In WMOVE, the first level contains the amount of water that has infiltrated at the surface during the time period in question, and each successive level K contains the amount of water in soil layer K-1 that has been displaced during the infiltration, down to the soil layer containing the wetting front. Thus, the number of levels in WMOVE that are used in the current infiltration calculations, NINF, is equal to LZF+1, where LZF is the index of the soil layer containing the wetting front; or to IGP1, the number of soil layers IG plus 1, if LZF is greater than IG, i.e. if the wetting front has penetrated below the bottom of the lowest soil layer into the underlying dummy layer. In the 400 loop, starting at the top of the soil profile, an attempt is made to assign each layer of WMOVE, converted into a depth by using the volumetric water content THLINF behind the wetting front for the soil layer, in turn to the K, J level of ZMAT. If the calculated value of ZMAT is greater than the available depth ZRMDR of the layer, ZMAT is set to ZRMDR, WMOVE is decremented by ZRMDR converted back to a water amount, and ZRMDR is set to zero. Otherwise the calculated value of ZMAT is accepted, ZRMDR is decremented by ZMAT, and WMOVE is set to zero. At the end of these calculations, any remaining residual amounts in the WMOVE matrix are assigned to ponded water, and the ponded water temperature is updated accordingly.
As a result of the above processes, the liquid water content and temperature of each soil layer (excluding the bottom, dummy layer) will be a combined result of infiltration processes (WADD, TADD), redistribution processes (WDRA, TDRA), and water in the layer that has remained unaffected (WREM, TREM). For each layer, WADD is calculated by summing over the respective ZMAT values corresponding to that layer multiplied by THLINF, and TADD by summing over the ZMAT and THLINF values multiplied by the respective TMOVE values. WREM is obtained as the product of the original water content THLIQX multiplied by ZRMDR, and TREM as the product of the water temperature TBARWX, THLIQX and ZRMDR. For the soil layer containing the wetting front, a check is carried out to determine whether the liquid moisture content resulting from the infiltration and drainage processes, THINFL, is less than the residual liquid moisture content THLMIN. If so, the flow FDT at the bottom of the layer is recalculated as the value required to keep THLIQX at THLMIN. WDRA is obtained from the difference between the water fluxes FDT at the top and bottom of the layer, supplied by waterFlowNonInfiltrate, and TDRA is obtained from the water fluxes FDT and their corresponding temperatures TFDT. Finally, THLIQX is calculated as the sum of WADD, WREM and WDRA normalized by DELZX, and TBARWX as the sum of TADD, TREM and TDRA normalized by the product of THLIQX and DELZX.
Lastly, the base flow BASFLW at the bottom of the soil profile and its temperature TBASFL are calculated. If the wetting front is located in the dummy soil layer below the soil profile, BASFLW is obtained by summing over the ZMAT values for the IGP1 level, multiplied by the dummy layer THLINF value and the fractional coverage FI of the modelled subarea. TBASFL is similarly obtained as the weighted average of the original TBASFL and the values of TMOVE corresponding to the ZMAT values. The overall subarea runoff RUNOFF and its temperature TRUNOF are calculated in the same manner without the FI weightings. Otherwise, the baseflow and total runoff are obtained from the value of FDT at the bottom of the IGDR layer, and their temperatures from the values of TFDT and FDT.