swn.modflow.SwnMf6.route_reaches#

SwnMf6.route_reaches(start, end, *, allow_indirect=False)#

Return a list of reach numbers that connect a pair of reaches.

Parameters:
start, endany

Start and end reach numbers (rno or ifno).

allow_indirectbool, default False

If True, allow the route to go downstream from start to a confluence, then route upstream to end. Defalut False allows only a direct route along a single direction up or down.

Returns:
list
Raises:
IndexError

If start and/or end reach numbers are not valid.

ConnecionError

If start and end reach numbers do not connect.

See also

gather_reaches

Query multiple reaches up and downstream.

Examples

>>> import flopy
>>> import geopandas
>>> import swn
>>> lines = geopandas.GeoSeries.from_wkt([
...    "LINESTRING (60 100, 60  80)",
...    "LINESTRING (40 130, 60 100)",
...    "LINESTRING (70 130, 60 100)"])
>>> lines.index += 100
>>> n = swn.SurfaceWaterNetwork.from_lines(lines)
>>> sim = flopy.mf6.MFSimulation()
>>> _ = flopy.mf6.ModflowTdis(sim, nper=1, time_units="days")
>>> gwf = flopy.mf6.ModflowGwf(sim)
>>> _ = flopy.mf6.ModflowGwfdis(
...     gwf, nrow=3, ncol=2, delr=20.0, delc=20.0, idomain=1,
...     length_units="meters", xorigin=30.0, yorigin=70.0)
>>> nm = swn.SwnMf6.from_swn_flopy(n, gwf)
>>> nm.reaches[["iseg", "ireach", "to_ifno", "from_ifnos", "segnum"]]
     iseg  ireach  to_ifno from_ifnos  segnum
ifno
1       1       1        2         {}     101
2       1       2        3        {1}     101
3       1       3        6        {2}     101
4       2       1        5         {}     102
5       2       2        6        {4}     102
6       3       1        7     {3, 5}     100
7       3       2        0        {6}     100
>>> nm.route_reaches(1, 7)
[1, 2, 3, 6, 7]
>>> nm.reaches.loc[nm.route_reaches(1, 7), ["i", "j", "rlen"]]
     i  j       rlen
ifno
1    0  0  18.027756
2    0  1   6.009252
3    1  1  12.018504
6    1  1  10.000000
7    2  1  10.000000