MODFLOW 6
version 6.7.0.dev0
USGS Modular Hydrologic Model
|
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 297 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 73 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 137 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 209 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 361 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 246 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 664 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 566 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 531 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 929 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 717 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 769 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 798 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 589 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 435 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 494 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 869 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 1033 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 457 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 989 of file SwfCxsUtils.f90.
|
private |
[in] | cxs_rf | cross-section station distances (x-distance) |
Definition at line 642 of file SwfCxsUtils.f90.
|
private |
[in] | xfraction | cross-section station distances (x-distance) |
Definition at line 626 of file SwfCxsUtils.f90.