mHM
The mesoscale Hydrological Model
|
Models to predict neutron intensities above soils. More...
Functions/Subroutines | |
subroutine, public | desiletsn0 (soilmoisture, horizon_depth, bd, latwater, n0, neutrons) |
Calculate neutrons from soil moisture for effective soil layer. | |
subroutine, public | cosmic (soilmoisture, horizons, neutron_integral_afast, interc, snowpack, l1_n0, l1_bulkdens, l1_latticewater, l1_cosmicl3, neutrons) |
Calculate neutrons from soil moisture in all layers. | |
subroutine | loopconstants (ll, soilmoisture, l1_bulkdens, l1_latticewater, l1_cosmicl3, sm, bd, lw, l3) |
subroutine | layerthickness (ll, horizons, interc, snowpack, zthick) |
subroutine | layerwaterheight (ll, sm, h2oeffheight) |
subroutine | approx_mon_int (res, f, c, xmin, xmax, eps, steps, fxmin, fxmax) |
recursive subroutine | approx_mon_int_steps (res, f, c, xmin, xmax, eps, steps, fxmin, fxmax) |
recursive subroutine | approx_mon_int_eps (res, f, c, xmin, xmax, eps, fxmin, fxmax) |
subroutine, public | tabularintegralafast (integral, maxc) |
Save approximation data for A_fast. | |
subroutine | tabularintegralhermafast (integral, intsize, maxc) |
subroutine | lookupintegral (res, integral, c) |
subroutine | lookuphermiteintegral (res, integral, intsize, c, maxc) |
subroutine | cosmiceffintegration (res, x) |
subroutine | oldintegration (res, c) |
real(dp) function | intgrandfast (c, phi) |
real(dp) function | intgrandderivfast (c, phi) |
real(dp) function | exppolynomdeg3 (x, a, b, c, d) |
real(dp) function | h00 (t) |
real(dp) function | h01 (t) |
real(dp) function | h10 (t) |
real(dp) function | h11 (t) |
Models to predict neutron intensities above soils.
The number of neutrons above the ground is directly related to the number soil water content in the ground, air, vegetation and/or snow. This module forward-models neutron abundance as a state variable for each cell.
COPYING
and COPYING.LESSER
provided with this software. The complete GNU license text can also be found at http://www.gnu.org/licenses/.
|
private |
Definition at line 462 of file mo_neutrons.f90.
References approx_mon_int_eps(), and approx_mon_int_steps().
Referenced by tabularintegralafast(), and tabularintegralhermafast().
|
private |
Definition at line 550 of file mo_neutrons.f90.
References approx_mon_int_eps().
Referenced by approx_mon_int(), and approx_mon_int_eps().
|
private |
Definition at line 515 of file mo_neutrons.f90.
References approx_mon_int_steps().
Referenced by approx_mon_int(), and approx_mon_int_steps().
subroutine, public mo_neutrons::cosmic | ( | real(dp), dimension(:), intent(in) | soilmoisture, |
real(dp), dimension(:), intent(in) | horizons, | ||
real(dp), dimension(:), intent(in) | neutron_integral_afast, | ||
real(dp), intent(in) | interc, | ||
real(dp), intent(in) | snowpack, | ||
real(dp), intent(in) | l1_n0, | ||
real(dp), dimension(:), intent(in) | l1_bulkdens, | ||
real(dp), dimension(:), intent(in) | l1_latticewater, | ||
real(dp), dimension(:), intent(in) | l1_cosmicl3, | ||
real(dp), intent(inout) | neutrons | ||
) |
Calculate neutrons from soil moisture in all layers.
Neutron counts above the ground (one value per cell in mHM) can be derived by a simplified physical neutron transport simulation. Fast cosmic-Ray neutrons are generated in the soil and attenuated differently in water and soil. The remaining neutrons that reached the surface relate to the profile of soil water content below. Variables like N, alpha and L3 are site-specific and need to be calibrated.
[in] | real(dp), dimension(:) :: SoilMoisture | Soil Moisture |
[in] | real(dp), dimension(:) :: Horizons | Horizon depths |
[in] | real(dp), dimension(:) :: neutron_integral_AFast | Tabular for Int Approx |
[in] | real(dp) :: interc | interception |
[in] | real(dp) :: snowpack | snowpack |
[in] | real(dp) :: L1_No_count | L1_No_count |
[in] | real(dp), dimension(:) :: L1_bulkDens | Bulk Density |
[in] | real(dp), dimension(:) :: L1_latticeWater | Lattice Water |
[in] | real(dp), dimension(:) :: L1_COSMICL3 | L3 from the COSMIC module |
[in,out] | real(dp) :: neutrons | Neutron counts |
Definition at line 253 of file mo_neutrons.f90.
References mo_mhm_constants::cosmic_alpha, mo_mhm_constants::cosmic_l1, mo_mhm_constants::cosmic_l2, mo_mhm_constants::cosmic_l4, mo_mhm_constants::h2odens, layerthickness(), layerwaterheight(), lookupintegral(), and loopconstants().
Referenced by mo_mhm::mhm().
|
private |
Definition at line 754 of file mo_neutrons.f90.
References exppolynomdeg3().
subroutine, public mo_neutrons::desiletsn0 | ( | real(dp), dimension(:), intent(in) | soilmoisture, |
real(dp), dimension(:), intent(in) | horizon_depth, | ||
real(dp), dimension(:), intent(in) | bd, | ||
real(dp), dimension(:), intent(in) | latwater, | ||
real(dp), intent(in) | n0, | ||
real(dp), intent(inout) | neutrons | ||
) |
Calculate neutrons from soil moisture for effective soil layer.
Using the N0-relation derived by Desilets, neutron counts above the ground (one value per cell in mHM) can be derived by a semi-empirical, semi-physical relation. The result depends on N0, the neutron counts for 0% soil mositure. This variable is site-specific and is a global parameter in mHM.
[in] | real(dp), dimension(:) :: SoilMoisture | Soil Moisture |
[in] | real(dp), dimension(:) :: Horizon_depth | Horizon depths |
[in] | real(dp), dimension(:) :: Bd | Bulk density |
[in] | real(dp), dimension(:) :: LatWater | Lattice water |
[in] | real(dp) :: N0 | dry neutron counts |
[out] | real(dp), dimension(size(SoilMoisture,1)) :: neutrons | Neutron counts |
Definition at line 99 of file mo_neutrons.f90.
References mo_mhm_constants::desilets_a0, mo_mhm_constants::desilets_a1, and mo_mhm_constants::desilets_a2.
Referenced by mo_mhm::mhm().
|
private |
Definition at line 858 of file mo_neutrons.f90.
References exppolynomdeg3().
Referenced by cosmiceffintegration(), and exppolynomdeg3().
|
private |
Definition at line 869 of file mo_neutrons.f90.
References h00().
Referenced by h00(), and lookuphermiteintegral().
|
private |
Definition at line 877 of file mo_neutrons.f90.
References h01().
Referenced by h01(), and lookuphermiteintegral().
|
private |
Definition at line 885 of file mo_neutrons.f90.
References h10().
Referenced by h10(), and lookuphermiteintegral().
|
private |
Definition at line 893 of file mo_neutrons.f90.
References h11().
Referenced by h11(), and lookuphermiteintegral().
|
private |
Definition at line 849 of file mo_neutrons.f90.
References intgrandderivfast().
Referenced by intgrandderivfast(), and tabularintegralhermafast().
|
private |
Definition at line 840 of file mo_neutrons.f90.
References intgrandfast().
Referenced by intgrandfast(), tabularintegralafast(), and tabularintegralhermafast().
|
private |
Definition at line 420 of file mo_neutrons.f90.
Referenced by cosmic().
|
private |
Definition at line 439 of file mo_neutrons.f90.
Referenced by cosmic().
|
private |
|
private |
Definition at line 694 of file mo_neutrons.f90.
Referenced by cosmic().
|
private |
Definition at line 390 of file mo_neutrons.f90.
Referenced by cosmic().
|
private |
Definition at line 808 of file mo_neutrons.f90.
subroutine, public mo_neutrons::tabularintegralafast | ( | real(dp), dimension(:) | integral, |
real(dp), intent(in) | maxc | ||
) |
Save approximation data for A_fast.
The COSMIC subroutine needs A_fast to be calculated. A_fast=int_{0}^{pi/2} exp(-Lambda_fast(z)/cos(phi) dphi) This subroutine stores data for intsize values for c:=Lambda_fast(z) between 0 and maxC, and will be written into the global array variable neutron_integral_AFast. The calculation of the values is done with a very precise recursive approximation subroutine. That recursive subroutine should not be used inside the time, cells and layer loops, because it is slow. Inside the loops in the module COSMIC the tabular is used to estimate A_fast, if 0<c<maxC, otherwise the recursive approximation is used.
[in] | real(dp), dimension(:,:) :: SoilMoisture | Soil Moisture |
[in] | real(dp), dimension(:) :: Horizons | Horizon depths |
[in] | real(dp), dimension(:) :: params | ! N0, N1, N2, alpha0, alpha1, L30, L31 |
[in] | integer(i4) :: intsize | ! number of values for the approximation |
[in] | real(dp) :: maxC | ! maximum value for A_fast |
[out] | real(dp), dimension(intsize) :: neutron_integral_AFast | approximation values |
Definition at line 648 of file mo_neutrons.f90.
References approx_mon_int(), and intgrandfast().
Referenced by mo_startup::constants_init().
|
private |
Definition at line 671 of file mo_neutrons.f90.
References approx_mon_int(), intgrandderivfast(), and intgrandfast().