mHM
The mesoscale Hydrological Model
|
This is a container to define the river temperature routing in the current time step. More...
Public Member Functions | |
procedure | config (self, file_namelist, unamelist, file_namelist_param, unamelist_param) |
configure the riv_temp_type class from the mhm namelist | |
procedure | init (self, ncells) |
initalize the riv_temp_type class for the current domain | |
procedure | init_area (self, idomain, l11_netperm, l11_fromn, l11_length, nlinks, ncells, nrows, ncols, l11_mask) |
initialize the river area of riv_temp_type class for the current domain | |
procedure | init_riv_temp (self, temp_air, efecarea, l1_l11_id, l11_areacell, l11_l1_id, map_flag) |
initialize the river temperature of riv_temp_type class for the current domain | |
procedure | acc_source_e (self, fsealed_area_fraction, fast_interflow, slow_interflow, baseflow, direct_runoff, temp_air) |
accumulate energy sources of riv_temp_type | |
procedure | finalize_source_e (self, efecarea, l1_l11_id, l11_areacell, l11_l1_id, timestep, map_flag) |
finalize energy sources of riv_temp_type | |
procedure | get_lrad_out (self, riv_temp) |
get outgoing longwave radiation of riv_temp_type | |
procedure | get_lat_heat (self, air_temp, netrad) |
latent heat flux of riv_temp_type | |
procedure | get_sens_heat (self, air_temp, riv_temp) |
sensible heat flux of riv_temp_type | |
procedure | get_e_io (self, riv_temp, cell) |
get complete energy source of riv_temp_type at given cell | |
procedure | l11_routing_e (self, nlinks, netperm, netlink_fromn, netlink_ton, netlink_c1, netlink_c2, ninflowgauges, inflowheadwater, inflownodelist, l11_qtr, l11_qmod) |
execute the temperature routing of riv_temp_type | |
procedure | init_iter (self) |
initialize iterative solver of riv_temp_type | |
procedure | next_iter (self, t_est, t_rout) |
execute next iteration with iterative solver of riv_temp_type | |
procedure | reset_timestep (self) |
reset riv_temp_type class for next timestep | |
procedure | alloc_lateral (self, ncells) |
allocate lateral temp components of riv_temp_type class for current domain | |
procedure | dealloc_lateral (self) |
deallocate lateral temp components of riv_temp_type | |
procedure | clean_up (self) |
clean up | |
Public Attributes | |
logical | active = .false. |
state if this process is active | |
integer(i4) | case = 0_i4 |
the selected process-case option | |
character(256) | nml_name = 'config_riv_temp' |
namelist name in mhm namelist | |
character(256), dimension(:), allocatable | dir_riv_widths |
Directory where river widths are stored. | |
character(256) | riv_widths_file |
file name for river widths | |
character(256) | riv_widths_name |
variable name for river widths | |
real(dp), dimension(:), allocatable, public | l11_riv_widths |
river widths in L11 | |
real(dp), dimension(:), allocatable, public | l11_riv_areas |
river area in L11 | |
real(dp) | albedo_water |
albedo of open water | |
real(dp) | pt_a_water |
priestley taylor alpha parameter for PET on open water | |
real(dp) | emissivity_water |
emissivity of water | |
real(dp) | turb_heat_ex_coeff |
lateral heat exchange coefficient water <-> air | |
real(dp) | delta_t = 0.1_dp |
cutoff value for temperature | |
integer(i4) | max_iter |
input: maximal number of iterations done | |
real(dp) | delta_iter |
input: convergence criteria for iterative solver | |
real(dp) | step_iter |
input: step-size for linear search | |
logical | first_iter |
whether it is at the first iteration (to determine search direction) | |
logical | up_iter |
whether the search direction is upwards | |
logical | bisect_iter |
whether to do the bisection search part (after the interval is found) | |
real(dp) | up_bnd_iter |
upper bound for the current bisection step | |
real(dp) | low_bnd_iter |
lower bound for the current bisection step | |
real(dp), dimension(:), allocatable | l1_runoff_e |
runoff energy at L1 level | |
real(dp), dimension(:), allocatable | l1_acc_ssrd |
accumulated shortwave radiation at L1 level | |
real(dp), dimension(:), allocatable | l1_acc_strd |
accumulated longwave radiation at L1 level | |
real(dp), dimension(:), allocatable | l1_acc_temp |
accumulated air temperature at L1 level | |
real(dp), dimension(:), allocatable | l1_ssrd_calc |
current shortwave radiation at L1 level | |
real(dp), dimension(:), allocatable | l1_strd_calc |
current longwave radiation at L1 level | |
real(dp), dimension(:), allocatable | l1_tann_calc |
current mean air temperature at L1 level | |
integer(i4) | ts_cnt |
sub time-step counter for accumulation of meteo | |
integer(i4) | s11 |
starting index for current L11 domain | |
integer(i4) | e11 |
ending index for current L11 domain | |
real(dp), dimension(:,:), allocatable | netnode_e_in |
Total energy inputs at t-1 and t. | |
real(dp), dimension(:,:), allocatable | netnode_e_r |
energy leaving at t-1 and t | |
real(dp), dimension(:), allocatable | netnode_e_mod |
Simulated routed energy. | |
real(dp), dimension(:), allocatable | netnode_e_out |
total energy source from cell in L11 | |
real(dp), dimension(:), allocatable | l11_srad_net |
net short wave radiation at L11 | |
real(dp), dimension(:), allocatable | l11_lrad_in |
incoming long wave radiation at L11 | |
real(dp), dimension(:), allocatable | l11_air_temp |
air temp at L11 | |
real(dp), dimension(:), allocatable | river_temp |
resulting river temp at L11 in [deg C] | |
This is a container to define the river temperature routing in the current time step.
This class provides all procedures to rout river tmperature through the river network.
Definition at line 28 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::acc_source_e | ( | class(riv_temp_type), intent(inout) | self, |
real(dp), dimension(:), intent(in) | fsealed_area_fraction, | ||
real(dp), dimension(:), intent(in) | fast_interflow, | ||
real(dp), dimension(:), intent(in) | slow_interflow, | ||
real(dp), dimension(:), intent(in) | baseflow, | ||
real(dp), dimension(:), intent(in) | direct_runoff, | ||
real(dp), dimension(:), intent(in) | temp_air | ||
) |
accumulate energy sources of riv_temp_type
[in] | fsealed_area_fraction | sealed area fraction [1] |
[in] | fast_interflow | \( q_0 \) Fast runoff component [mm TS-1] |
[in] | slow_interflow | \( q_1 \) Slow runoff component [mm TS-1] |
[in] | baseflow | \( q_2 \) Baseflow [mm TS-1] |
[in] | direct_runoff | \( q_D \) Direct runoff from impervious areas [mm TS-1] |
[in] | temp_air | air temperature [K] |
Definition at line 90 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::alloc_lateral | ( | class(riv_temp_type), intent(inout) | self, |
integer(i4), intent(in) | ncells | ||
) |
allocate lateral temp components of riv_temp_type class for current domain
[in] | ncells | number of level-1 cells for the current domain |
Definition at line 116 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::clean_up | ( | class(riv_temp_type), intent(inout) | self | ) |
clean up
Definition at line 120 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::config | ( | class(riv_temp_type), intent(inout) | self, |
character(*), intent(in) | file_namelist, | ||
integer, intent(in) | unamelist, | ||
character(*), intent(in) | file_namelist_param, | ||
integer, intent(in) | unamelist_param | ||
) |
configure the riv_temp_type class from the mhm namelist
[in] | file_namelist | mhm namelist file |
[in] | file_namelist_param | mhm parameter namelist file |
Definition at line 80 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::dealloc_lateral | ( | class(riv_temp_type), intent(inout) | self | ) |
deallocate lateral temp components of riv_temp_type
Definition at line 118 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::finalize_source_e | ( | class(riv_temp_type), intent(inout) | self, |
real(dp), dimension(:), intent(in) | efecarea, | ||
integer(i4), dimension(:), intent(in) | l1_l11_id, | ||
real(dp), dimension(:), intent(in) | l11_areacell, | ||
integer(i4), dimension(:), intent(in) | l11_l1_id, | ||
integer(i4), intent(in) | timestep, | ||
logical, intent(in) | map_flag | ||
) |
finalize energy sources of riv_temp_type
[in] | efecarea | effective area in [km2] at Level 1 |
[in] | l1_l11_id | L11 Ids mapped on L1 |
[in] | l11_areacell | effective area in [km2] at Level 11 |
[in] | l11_l1_id | L1 Ids mapped on L11 |
[in] | timestep | simulation timestep in [h] |
[in] | map_flag | Flag indicating whether routing resolution is higher than hydrologic one |
Definition at line 92 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::get_e_io | ( | class(riv_temp_type), intent(in) | self, |
real(dp), intent(in) | riv_temp, | ||
integer(i4), intent(in) | cell | ||
) |
get complete energy source of riv_temp_type at given cell
[in] | riv_temp | given river temperature in K to calculate heat fluxes |
[in] | cell | cell index in the current domain |
Definition at line 102 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::get_lat_heat | ( | class(riv_temp_type), intent(in) | self, |
real(dp), intent(in) | air_temp, | ||
real(dp), intent(in) | netrad | ||
) |
latent heat flux of riv_temp_type
[in] | air_temp | air temperature in deg C |
[in] | netrad | net radiation in W * m-2 |
Definition at line 98 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::get_lrad_out | ( | class(riv_temp_type), intent(in) | self, |
real(dp), intent(in) | riv_temp | ||
) |
get outgoing longwave radiation of riv_temp_type
[in] | riv_temp | river temperature in K |
Definition at line 96 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::get_sens_heat | ( | class(riv_temp_type), intent(in) | self, |
real(dp), intent(in) | air_temp, | ||
real(dp), intent(in) | riv_temp | ||
) |
sensible heat flux of riv_temp_type
[in] | air_temp | air temperature in [deg C] |
[in] | riv_temp | river temperature in [deg C] |
Definition at line 100 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::init | ( | class(riv_temp_type), intent(inout) | self, |
integer(i4), intent(in) | ncells | ||
) |
initalize the riv_temp_type class for the current domain
[in] | ncells | number of level-11 cells for the current domain |
Definition at line 82 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::init_area | ( | class(riv_temp_type), intent(inout) | self, |
integer(i4), intent(in) | idomain, | ||
integer(i4), dimension(:), intent(in) | l11_netperm, | ||
integer(i4), dimension(:), intent(in) | l11_fromn, | ||
real(dp), dimension(:), intent(in) | l11_length, | ||
integer(i4), intent(in) | nlinks, | ||
integer(i4), intent(in) | ncells, | ||
integer(i4), intent(in) | nrows, | ||
integer(i4), intent(in) | ncols, | ||
logical, dimension(:, :), intent(in) | l11_mask | ||
) |
initialize the river area of riv_temp_type class for the current domain
[in] | idomain | Domain ID |
[in] | l11_netperm | L11 routing order |
[in] | l11_fromn | L11 source grid cell order |
[in] | l11_length | L11 link length |
[in] | nlinks | number of L11 links in the current domain |
[in] | ncells | number of L11 cells of the current domain |
[in] | ncols | Number of columns |
[in] | nrows | Number of rows |
[in] | l11_mask | the mask for valid cells in the original grid (nrows, ncols) |
Definition at line 84 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::init_iter | ( | class(riv_temp_type), intent(inout) | self | ) |
initialize iterative solver of riv_temp_type
Definition at line 108 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::init_riv_temp | ( | class(riv_temp_type), intent(inout) | self, |
real(dp), dimension(:), intent(in) | temp_air, | ||
real(dp), dimension(:), intent(in) | efecarea, | ||
integer(i4), dimension(:), intent(in) | l1_l11_id, | ||
real(dp), dimension(:), intent(in) | l11_areacell, | ||
integer(i4), dimension(:), intent(in) | l11_l1_id, | ||
logical, intent(in) | map_flag | ||
) |
initialize the river temperature of riv_temp_type class for the current domain
[in] | temp_air | air temperature [degC] for current timestep |
[in] | efecarea | effective area in [km2] at Level 1 |
[in] | l1_l11_id | L11 Ids mapped on L1 |
[in] | l11_areacell | effective area in [km2] at Level 11 |
[in] | l11_l1_id | L1 Ids mapped on L11 |
[in] | map_flag | Flag indicating whether routing resolution is higher than hydrologic one |
Definition at line 86 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::l11_routing_e | ( | class(riv_temp_type), intent(inout) | self, |
integer(i4), intent(in) | nlinks, | ||
integer(i4), dimension(:), intent(in) | netperm, | ||
integer(i4), dimension(:), intent(in) | netlink_fromn, | ||
integer(i4), dimension(:), intent(in) | netlink_ton, | ||
real(dp), dimension(:), intent(in) | netlink_c1, | ||
real(dp), dimension(:), intent(in) | netlink_c2, | ||
integer(i4), intent(in) | ninflowgauges, | ||
logical, dimension(:), intent(in) | inflowheadwater, | ||
integer(i4), dimension(:), intent(in) | inflownodelist, | ||
real(dp), dimension(:), intent(in) | l11_qtr, | ||
real(dp), dimension(:), intent(in) | l11_qmod | ||
) |
execute the temperature routing of riv_temp_type
[in] | nlinks | number of stream segment (reaches) |
[in] | netperm | routing order of a given domain (permutation) |
[in] | netlink_fromn | from node |
[in] | netlink_ton | to node |
[in] | netlink_c1 | routing parameter C1 ([7] p. 25-41) |
[in] | netlink_c2 | routing parameters C2 (id) |
[in] | ninflowgauges | [-] number of inflow points |
[in] | inflowheadwater | [-] if to consider headwater cells of inflow gauge |
[in] | inflownodelist | [-] L11 ID of inflow points |
[in] | l11_qtr | [m3 s-1] Transformed outflow leaving node I at current timestep(Muskingum) |
[in] | l11_qmod | [m3 s-1] Simulated routed discharge |
Definition at line 104 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::next_iter | ( | class(riv_temp_type), intent(inout) | self, |
real(dp), intent(inout) | t_est, | ||
real(dp), intent(in) | t_rout | ||
) |
execute next iteration with iterative solver of riv_temp_type
[in,out] | t_est | estimated river temperature |
[in] | t_rout | calculated (routed) river temperature |
Definition at line 110 of file mo_mrm_riv_temp_class.f90.
procedure mo_mrm_riv_temp_class::riv_temp_type::reset_timestep | ( | class(riv_temp_type), intent(inout) | self | ) |
reset riv_temp_type class for next timestep
Definition at line 114 of file mo_mrm_riv_temp_class.f90.
logical mo_mrm_riv_temp_class::riv_temp_type::active = .false. |
state if this process is active
Definition at line 30 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::albedo_water |
albedo of open water
Definition at line 40 of file mo_mrm_riv_temp_class.f90.
logical mo_mrm_riv_temp_class::riv_temp_type::bisect_iter |
whether to do the bisection search part (after the interval is found)
Definition at line 53 of file mo_mrm_riv_temp_class.f90.
integer(i4) mo_mrm_riv_temp_class::riv_temp_type::case = 0_i4 |
the selected process-case option
Definition at line 31 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::delta_iter |
input: convergence criteria for iterative solver
Definition at line 49 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::delta_t = 0.1_dp |
cutoff value for temperature
Definition at line 46 of file mo_mrm_riv_temp_class.f90.
character(256), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::dir_riv_widths |
Directory where river widths are stored.
Definition at line 34 of file mo_mrm_riv_temp_class.f90.
integer(i4) mo_mrm_riv_temp_class::riv_temp_type::e11 |
ending index for current L11 domain
Definition at line 67 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::emissivity_water |
emissivity of water
Definition at line 43 of file mo_mrm_riv_temp_class.f90.
logical mo_mrm_riv_temp_class::riv_temp_type::first_iter |
whether it is at the first iteration (to determine search direction)
Definition at line 51 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l11_air_temp |
air temp at L11
Definition at line 74 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l11_lrad_in |
incoming long wave radiation at L11
Definition at line 73 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable, public mo_mrm_riv_temp_class::riv_temp_type::l11_riv_areas |
river area in L11
Definition at line 38 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable, public mo_mrm_riv_temp_class::riv_temp_type::l11_riv_widths |
river widths in L11
Definition at line 37 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l11_srad_net |
net short wave radiation at L11
Definition at line 72 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_acc_ssrd |
accumulated shortwave radiation at L1 level
Definition at line 58 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_acc_strd |
accumulated longwave radiation at L1 level
Definition at line 59 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_acc_temp |
accumulated air temperature at L1 level
Definition at line 60 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_runoff_e |
runoff energy at L1 level
Definition at line 57 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_ssrd_calc |
current shortwave radiation at L1 level
Definition at line 61 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_strd_calc |
current longwave radiation at L1 level
Definition at line 62 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::l1_tann_calc |
current mean air temperature at L1 level
Definition at line 63 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::low_bnd_iter |
lower bound for the current bisection step
Definition at line 55 of file mo_mrm_riv_temp_class.f90.
integer(i4) mo_mrm_riv_temp_class::riv_temp_type::max_iter |
input: maximal number of iterations done
Definition at line 48 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:,:), allocatable mo_mrm_riv_temp_class::riv_temp_type::netnode_e_in |
Total energy inputs at t-1 and t.
Definition at line 68 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::netnode_e_mod |
Simulated routed energy.
Definition at line 70 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::netnode_e_out |
total energy source from cell in L11
Definition at line 71 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:,:), allocatable mo_mrm_riv_temp_class::riv_temp_type::netnode_e_r |
energy leaving at t-1 and t
Definition at line 69 of file mo_mrm_riv_temp_class.f90.
character(256) mo_mrm_riv_temp_class::riv_temp_type::nml_name = 'config_riv_temp' |
namelist name in mhm namelist
Definition at line 32 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::pt_a_water |
priestley taylor alpha parameter for PET on open water
Definition at line 41 of file mo_mrm_riv_temp_class.f90.
character(256) mo_mrm_riv_temp_class::riv_temp_type::riv_widths_file |
file name for river widths
Definition at line 35 of file mo_mrm_riv_temp_class.f90.
character(256) mo_mrm_riv_temp_class::riv_temp_type::riv_widths_name |
variable name for river widths
Definition at line 36 of file mo_mrm_riv_temp_class.f90.
real(dp), dimension(:), allocatable mo_mrm_riv_temp_class::riv_temp_type::river_temp |
resulting river temp at L11 in [deg C]
Definition at line 76 of file mo_mrm_riv_temp_class.f90.
integer(i4) mo_mrm_riv_temp_class::riv_temp_type::s11 |
starting index for current L11 domain
Definition at line 66 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::step_iter |
input: step-size for linear search
Definition at line 50 of file mo_mrm_riv_temp_class.f90.
integer(i4) mo_mrm_riv_temp_class::riv_temp_type::ts_cnt |
sub time-step counter for accumulation of meteo
Definition at line 64 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::turb_heat_ex_coeff |
lateral heat exchange coefficient water <-> air
Definition at line 44 of file mo_mrm_riv_temp_class.f90.
real(dp) mo_mrm_riv_temp_class::riv_temp_type::up_bnd_iter |
upper bound for the current bisection step
Definition at line 54 of file mo_mrm_riv_temp_class.f90.
logical mo_mrm_riv_temp_class::riv_temp_type::up_iter |
whether the search direction is upwards
Definition at line 52 of file mo_mrm_riv_temp_class.f90.