MODFLOW 6
version 6.5.0.dev2
MODFLOW 6 Code Documentation
|
This module contains stateless sfr subroutines and functions. More...
Functions/Subroutines | |
real(dp) function, public | calc_depth_from_q (qrch, width, rough, slope, cxs_xf, cxs_h, cxs_rf, unitconv, icalcmeth) |
Calculate the depth at the midpoint of a irregular cross-section. More... | |
real(dp) function | calc_depth_from_q_bisect (qrch, width, rough, slope, cxs_xf, cxs_h, cxs_rf, unitconv, icalcmeth) |
Calculate the depth at the midpoint of a irregular cross-section. More... | |
real(dp) function | calc_depth_from_q_nr (qrch, width, rough, slope, cxs_xf, cxs_h, cxs_rf, unitconv, icalcmeth) |
Calculate the depth at the midpoint of a irregular cross-section. More... | |
real(dp) function, public | calc_qman (depth, width, rough, slope, cxs_xf, cxs_h, cxs_rf, unitconv, icalcmeth) |
Calculate streamflow using Manning's equation. More... | |
real(dp) function | calc_qman_composite (depth, width, rough, slope, cxs_xf, cxs_h, cxs_rf, unitconv, linmeth) |
real(dp) function, public | calc_composite_roughness (npts, depth, width, rough, slope, cxs_xf, cxs_h, cxs_rf, linmeth) |
real(dp) function | calc_qman_by_section (depth, width, rough, slope, cxs_xf, cxs_h, cxs_rf, unitconv) |
real(dp) function, public | get_saturated_topwidth (npts, stations) |
Calculate the saturated top width for a reach. More... | |
real(dp) function, public | get_wetted_topwidth (npts, xfraction, heights, width, d) |
Calculate the wetted top width for a reach. More... | |
real(dp) function, public | get_wetted_perimeter (npts, xfraction, heights, width, d) |
Calculate the wetted perimeter for a reach. More... | |
real(dp) function, public | get_cross_section_area (npts, xfraction, heights, width, d) |
Calculate the cross-sectional area for a reach. More... | |
real(dp) function, public | get_conveyance (npts, xfraction, heights, cxs_rf, width, rough, d) |
Calculate conveyance. More... | |
real(dp) function | get_rectangular_conveyance (npts, xfraction, heights, cxs_rf, width, rough, d) |
Calculate conveyance for rectangular channel. More... | |
logical(lgp) function | is_rectangular (xfraction) |
Determine if cross section is rectangular. More... | |
logical(lgp) function | has_uniform_resistance (cxs_rf) |
Determine if roughness is uniform for the section. More... | |
real(dp) function, public | get_composite_conveyance (npts, xfraction, heights, cxs_rf, width, rough, d) |
Calculate composite conveyance. More... | |
real(dp) function, public | get_hydraulic_radius (npts, stations, heights, d) |
Calculate the hydraulic radius for a reach. More... | |
real(dp) function, public | get_hydraulic_radius_xf (npts, xfraction, heights, width, d) |
Calculate the hydraulic radius for a reach. More... | |
real(dp) function, public | get_mannings_section (npts, xfraction, heights, roughfracs, roughness, conv_fact, width, slope, d) |
Calculate the manning's discharge for a reach. More... | |
subroutine | get_wetted_perimeters (npts, stations, heights, d, p) |
Calculate the wetted perimeters for each line segment. More... | |
subroutine | get_cross_section_areas (npts, stations, heights, d, a) |
Calculate the cross-sectional areas for each line segment. More... | |
subroutine | get_wetted_topwidths (npts, stations, heights, d, w) |
Calculate the wetted top widths for each line segment. More... | |
pure subroutine | get_wetted_station (x0, x1, d0, d1, dmax, dmin, d) |
Calculate the station values for the wetted portion of the cross-section. More... | |
This module contains the functions to calculate the wetted perimeter and cross-sectional area for a reach cross-section that are used in the streamflow routing (SFR) package. It also contains subroutines to calculate the wetted perimeter and cross-sectional area for each line segment in the cross-section. This module does not depend on the SFR package.
real(dp) function, public swfcxsutilsmodule::calc_composite_roughness | ( | integer(i4b), intent(in) | npts, |
real(dp), intent(in) | depth, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | rough, | ||
real(dp), intent(in) | slope, | ||
real(dp), dimension(:), intent(in) | cxs_xf, | ||
real(dp), dimension(:), intent(in) | cxs_h, | ||
real(dp), dimension(:), intent(in) | cxs_rf, | ||
integer(i4b), intent(in) | linmeth | ||
) |
[in] | depth | reach depth |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | linmeth | method for composite calculation; linear 0 or nonlinear 1 |
Definition at line 312 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::calc_depth_from_q | ( | real(dp), intent(in) | qrch, |
real(dp), intent(in) | width, | ||
real(dp), intent(in) | rough, | ||
real(dp), intent(in) | slope, | ||
real(dp), dimension(:), intent(in) | cxs_xf, | ||
real(dp), dimension(:), intent(in) | cxs_h, | ||
real(dp), dimension(:), intent(in) | cxs_rf, | ||
real(dp), intent(in) | unitconv, | ||
integer(i4b), intent(in) | icalcmeth | ||
) |
[in] | qrch | streamflow |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | unitconv | conversion unit numerator in mannings equation |
[in] | icalcmeth | manning calculation method |
Definition at line 37 of file SwfCxsUtils.f90.
|
private |
Method to calculate the depth at the midpoint of a reach with a irregular cross-section using bisection.
[in] | qrch | streamflow |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | unitconv | conversion unit numerator in mannings equation |
[in] | icalcmeth | manning calculation method |
Definition at line 76 of file SwfCxsUtils.f90.
|
private |
Method to calculate the depth at the midpoint of a reach with a irregular cross-section using Newton-Raphson.
[in] | qrch | streamflow |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | unitconv | conversion unit numerator in mannings equation |
[in] | icalcmeth | manning calculation method |
Definition at line 143 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::calc_qman | ( | real(dp), intent(in) | depth, |
real(dp), intent(in) | width, | ||
real(dp), intent(in) | rough, | ||
real(dp), intent(in) | slope, | ||
real(dp), dimension(:), intent(in) | cxs_xf, | ||
real(dp), dimension(:), intent(in) | cxs_h, | ||
real(dp), dimension(:), intent(in) | cxs_rf, | ||
real(dp), intent(in) | unitconv, | ||
integer(i4b), intent(in) | icalcmeth | ||
) |
Method to calculate the streamflow using Manning's equation for a single reach defined by a cross section.
[in] | depth | reach depth |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | unitconv | conversion unit numerator in mannings equation |
Definition at line 218 of file SwfCxsUtils.f90.
|
private |
[in] | depth | reach depth |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | unitconv | conversion unit numerator in mannings equation |
Definition at line 379 of file SwfCxsUtils.f90.
|
private |
[in] | depth | reach depth |
[in] | width | reach width |
[in] | rough | mannings reach roughness coefficient |
[in] | slope | reach bottom slope |
[in] | unitconv | conversion unit numerator in mannings equation |
[in] | linmeth | method for composite (0) linear (1) nonlinear |
Definition at line 258 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_composite_conveyance | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), dimension(:), intent(in) | cxs_rf, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | rough, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the composite conveyance. This is based on the approach in HEC-RAS, where a conveyance is calculated for each line segment in the cross section, and then summed to produce a total conveyance.
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | width | reach width |
[in] | rough | reach roughness |
[in] | d | depth to evaluate cross-section |
Definition at line 697 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_conveyance | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), dimension(:), intent(in) | cxs_rf, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | rough, | ||
real(dp), intent(in) | d | ||
) |
Return a calculated conveyance. Calculation depends on whether the channel is a rectangular channel
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | width | reach width |
[in] | rough | reach roughness |
[in] | d | depth to evaluate cross-section |
Definition at line 599 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_cross_section_area | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the cross-sectional area for a reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | width | reach width |
[in] | d | depth to evaluate cross-section |
Definition at line 561 of file SwfCxsUtils.f90.
|
private |
Subroutine to calculate the cross-sectional area for each line segment that defines the reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | stations | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | d | depth to evaluate cross-section |
[in,out] | a | cross-sectional area for each line segment |
Definition at line 977 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_hydraulic_radius | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | stations, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the hydraulic radius for a reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | stations | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | d | depth to evaluate cross-section |
Definition at line 753 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_hydraulic_radius_xf | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the hydraulic radius for a reach using the cross-section xfraction-height data given a passed depth. This is different from get_hydraulic_radius as it requires xfraction and width instead of station.
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | width | reach width |
[in] | d | depth to evaluate cross-section |
Definition at line 808 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_mannings_section | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), dimension(npts), intent(in) | roughfracs, | ||
real(dp), intent(in) | roughness, | ||
real(dp), intent(in) | conv_fact, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | slope, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the mannings discharge for a reach by calculating the discharge for each section, which can have a unique Manning's coefficient given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | roughfracs | cross-section Mannings roughness fraction data |
[in] | roughness | base reach roughness |
[in] | conv_fact | unit conversion factor |
[in] | width | reach width |
[in] | slope | reach slope |
[in] | d | depth to evaluate cross-section |
Definition at line 840 of file SwfCxsUtils.f90.
|
private |
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | width | reach width |
[in] | rough | reach roughness |
[in] | d | depth to evaluate cross-section |
Definition at line 622 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_saturated_topwidth | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | stations | ||
) |
Function to calculate the maximum top width for a reach using the cross-section station data.
[in] | npts | number of station-height data for a reach |
[in] | stations | cross-section station distances (x-distance) |
Definition at line 456 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_wetted_perimeter | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the wetted perimeter for a reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section x fractions |
[in] | heights | cross-section height data |
[in] | width | cross section width |
[in] | d | depth to evaluate cross-section |
Definition at line 521 of file SwfCxsUtils.f90.
|
private |
Subroutine to calculate the wetted perimeter for each line segment that defines the reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | stations | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | d | depth to evaluate cross-section |
[in,out] | p | wetted perimeter for each line segment |
Definition at line 914 of file SwfCxsUtils.f90.
|
private |
Subroutine to calculate the station values that define the extent of the wetted portion of the cross section for a line segment. The left (x0) and right (x1) station positions are altered if the passed depth is less than the maximum line segment depth. If the line segment is dry the left and right station are equal. Otherwise the wetted station values are equal to the full line segment or smaller if the passed depth is less than the maximum line segment depth.
[in,out] | x0 | left station position |
[in,out] | x1 | right station position |
[in] | d0 | depth at the left station |
[in] | d1 | depth at the right station |
[in,out] | dmax | maximum depth |
[in,out] | dmin | minimum depth |
[in] | d | depth to evaluate cross-section |
Definition at line 1087 of file SwfCxsUtils.f90.
real(dp) function, public swfcxsutilsmodule::get_wetted_topwidth | ( | integer(i4b), intent(in) | npts, |
real(dp), dimension(npts), intent(in) | xfraction, | ||
real(dp), dimension(npts), intent(in) | heights, | ||
real(dp), intent(in) | width, | ||
real(dp), intent(in) | d | ||
) |
Function to calculate the wetted top width for a reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | xfraction | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | width | reach width |
[in] | d | depth to evaluate cross-section |
Definition at line 481 of file SwfCxsUtils.f90.
|
private |
Subroutine to calculate the wetted top width for each line segment that defines the reach using the cross-section station-height data given a passed depth.
[in] | npts | number of station-height data for a reach |
[in] | stations | cross-section station distances (x-distance) |
[in] | heights | cross-section height data |
[in] | d | depth to evaluate cross-section |
[in,out] | w | wetted top widths for each line segment |
Definition at line 1040 of file SwfCxsUtils.f90.
|
private |
[in] | cxs_rf | cross-section station distances (x-distance) |
Definition at line 675 of file SwfCxsUtils.f90.
|
private |
[in] | xfraction | cross-section station distances (x-distance) |
Definition at line 659 of file SwfCxsUtils.f90.