6
6
import scipy .sparse
7
7
import scipy .sparse .linalg
8
8
from numba import njit , prange
9
- import superlink .geometry
10
- import superlink .ngeometry
11
- import superlink .storage
12
- from superlink .superlink import SuperLink
9
+ import pipedream_solver .geometry
10
+ import pipedream_solver .ngeometry
11
+ import pipedream_solver .storage
12
+ from pipedream_solver .superlink import SuperLink
13
13
14
- class NumbaLink (SuperLink ):
14
+ class nSuperLink (SuperLink ):
15
15
"""
16
- SUPERLINK hydraulic solver, as described in:
16
+ Numba implementation of SUPERLINK hydraulic solver, as described in:
17
17
18
18
Ji, Z. (1998). General Hydrodynamic Model for Sewer/Channel Network Systems.
19
19
Journal of Hydraulic Engineering, 124(3), 307–315.
@@ -1520,7 +1520,7 @@ def handle_elliptical_perimeter(_Pe_ik, _ellipse_ix, _Ik, _Ip1k, _h_Ik, _g1_ik,
1520
1520
_ik_g = _ellipse_ix
1521
1521
_Ik_g = _Ik [_ik_g ]
1522
1522
_Ip1k_g = _Ip1k [_ik_g ]
1523
- _Pe_ik [_ik_g ] = superlink .geometry .Elliptical .Pe_ik (_h_Ik [_Ik_g ],
1523
+ _Pe_ik [_ik_g ] = pipedream_solver .geometry .Elliptical .Pe_ik (_h_Ik [_Ik_g ],
1524
1524
_h_Ik [_Ip1k_g ],
1525
1525
_g1_ik [_ik_g ],
1526
1526
_g2_ik [_ik_g ])
@@ -1541,45 +1541,45 @@ def numba_hydraulic_geometry(_A_ik, _Pe_ik, _R_ik, _B_ik, _h_Ik,
1541
1541
g3_i = _g3_ik [i ]
1542
1542
if geom_code :
1543
1543
if geom_code == 1 :
1544
- _A_ik [i ] = superlink .ngeometry .Circular_A_ik (h_I , h_Ip1 , g1_i )
1545
- _Pe_ik [i ] = superlink .ngeometry .Circular_Pe_ik (h_I , h_Ip1 , g1_i )
1546
- _R_ik [i ] = superlink .ngeometry .Circular_R_ik (_A_ik [i ], _Pe_ik [i ])
1547
- _B_ik [i ] = superlink .ngeometry .Circular_B_ik (h_I , h_Ip1 , g1_i )
1544
+ _A_ik [i ] = pipedream_solver .ngeometry .Circular_A_ik (h_I , h_Ip1 , g1_i )
1545
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Circular_Pe_ik (h_I , h_Ip1 , g1_i )
1546
+ _R_ik [i ] = pipedream_solver .ngeometry .Circular_R_ik (_A_ik [i ], _Pe_ik [i ])
1547
+ _B_ik [i ] = pipedream_solver .ngeometry .Circular_B_ik (h_I , h_Ip1 , g1_i )
1548
1548
elif geom_code == 2 :
1549
- _A_ik [i ] = superlink .ngeometry .Rect_Closed_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1550
- _Pe_ik [i ] = superlink .ngeometry .Rect_Closed_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1551
- _R_ik [i ] = superlink .ngeometry .Rect_Closed_R_ik (_A_ik [i ], _Pe_ik [i ])
1552
- _B_ik [i ] = superlink .ngeometry .Rect_Closed_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1549
+ _A_ik [i ] = pipedream_solver .ngeometry .Rect_Closed_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1550
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Rect_Closed_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1551
+ _R_ik [i ] = pipedream_solver .ngeometry .Rect_Closed_R_ik (_A_ik [i ], _Pe_ik [i ])
1552
+ _B_ik [i ] = pipedream_solver .ngeometry .Rect_Closed_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1553
1553
elif geom_code == 3 :
1554
- _A_ik [i ] = superlink .ngeometry .Rect_Open_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1555
- _Pe_ik [i ] = superlink .ngeometry .Rect_Open_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1556
- _R_ik [i ] = superlink .ngeometry .Rect_Open_R_ik (_A_ik [i ], _Pe_ik [i ])
1557
- _B_ik [i ] = superlink .ngeometry .Rect_Open_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1554
+ _A_ik [i ] = pipedream_solver .ngeometry .Rect_Open_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1555
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Rect_Open_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1556
+ _R_ik [i ] = pipedream_solver .ngeometry .Rect_Open_R_ik (_A_ik [i ], _Pe_ik [i ])
1557
+ _B_ik [i ] = pipedream_solver .ngeometry .Rect_Open_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1558
1558
elif geom_code == 4 :
1559
- _A_ik [i ] = superlink .ngeometry .Triangular_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1560
- _Pe_ik [i ] = superlink .ngeometry .Triangular_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1561
- _R_ik [i ] = superlink .ngeometry .Triangular_R_ik (_A_ik [i ], _Pe_ik [i ])
1562
- _B_ik [i ] = superlink .ngeometry .Triangular_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1559
+ _A_ik [i ] = pipedream_solver .ngeometry .Triangular_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1560
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Triangular_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1561
+ _R_ik [i ] = pipedream_solver .ngeometry .Triangular_R_ik (_A_ik [i ], _Pe_ik [i ])
1562
+ _B_ik [i ] = pipedream_solver .ngeometry .Triangular_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1563
1563
elif geom_code == 5 :
1564
- _A_ik [i ] = superlink .ngeometry .Trapezoidal_A_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1565
- _Pe_ik [i ] = superlink .ngeometry .Trapezoidal_Pe_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1566
- _R_ik [i ] = superlink .ngeometry .Trapezoidal_R_ik (_A_ik [i ], _Pe_ik [i ])
1567
- _B_ik [i ] = superlink .ngeometry .Trapezoidal_B_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1564
+ _A_ik [i ] = pipedream_solver .ngeometry .Trapezoidal_A_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1565
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Trapezoidal_Pe_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1566
+ _R_ik [i ] = pipedream_solver .ngeometry .Trapezoidal_R_ik (_A_ik [i ], _Pe_ik [i ])
1567
+ _B_ik [i ] = pipedream_solver .ngeometry .Trapezoidal_B_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1568
1568
elif geom_code == 6 :
1569
- _A_ik [i ] = superlink .ngeometry .Parabolic_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1570
- _Pe_ik [i ] = superlink .ngeometry .Parabolic_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1571
- _R_ik [i ] = superlink .ngeometry .Parabolic_R_ik (_A_ik [i ], _Pe_ik [i ])
1572
- _B_ik [i ] = superlink .ngeometry .Parabolic_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1569
+ _A_ik [i ] = pipedream_solver .ngeometry .Parabolic_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1570
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Parabolic_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1571
+ _R_ik [i ] = pipedream_solver .ngeometry .Parabolic_R_ik (_A_ik [i ], _Pe_ik [i ])
1572
+ _B_ik [i ] = pipedream_solver .ngeometry .Parabolic_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1573
1573
elif geom_code == 7 :
1574
1574
# NOTE: Assumes that perimeter has already been calculated
1575
- _A_ik [i ] = superlink .ngeometry .Elliptical_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1576
- _R_ik [i ] = superlink .ngeometry .Elliptical_R_ik (_A_ik [i ], _Pe_ik [i ])
1577
- _B_ik [i ] = superlink .ngeometry .Elliptical_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1575
+ _A_ik [i ] = pipedream_solver .ngeometry .Elliptical_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1576
+ _R_ik [i ] = pipedream_solver .ngeometry .Elliptical_R_ik (_A_ik [i ], _Pe_ik [i ])
1577
+ _B_ik [i ] = pipedream_solver .ngeometry .Elliptical_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1578
1578
elif geom_code == 8 :
1579
- _A_ik [i ] = superlink .ngeometry .Wide_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1580
- _Pe_ik [i ] = superlink .ngeometry .Wide_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1581
- _R_ik [i ] = superlink .ngeometry .Wide_R_ik (_A_ik [i ], _Pe_ik [i ])
1582
- _B_ik [i ] = superlink .ngeometry .Wide_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1579
+ _A_ik [i ] = pipedream_solver .ngeometry .Wide_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1580
+ _Pe_ik [i ] = pipedream_solver .ngeometry .Wide_Pe_ik (h_I , h_Ip1 , g1_i , g2_i )
1581
+ _R_ik [i ] = pipedream_solver .ngeometry .Wide_R_ik (_A_ik [i ], _Pe_ik [i ])
1582
+ _B_ik [i ] = pipedream_solver .ngeometry .Wide_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1583
1583
return 1
1584
1584
1585
1585
@njit
@@ -1600,29 +1600,29 @@ def numba_boundary_geometry(_A_bk, _B_bk, _h_Ik, _H_j, _z_inv_bk,
1600
1600
g3_i = _g3_ik [i ]
1601
1601
if geom_code :
1602
1602
if geom_code == 1 :
1603
- _A_bk [k ] = superlink .ngeometry .Circular_A_ik (h_I , h_Ip1 , g1_i )
1604
- _B_bk [k ] = superlink .ngeometry .Circular_B_ik (h_I , h_Ip1 , g1_i )
1603
+ _A_bk [k ] = pipedream_solver .ngeometry .Circular_A_ik (h_I , h_Ip1 , g1_i )
1604
+ _B_bk [k ] = pipedream_solver .ngeometry .Circular_B_ik (h_I , h_Ip1 , g1_i )
1605
1605
elif geom_code == 2 :
1606
- _A_bk [k ] = superlink .ngeometry .Rect_Closed_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1607
- _B_bk [k ] = superlink .ngeometry .Rect_Closed_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1606
+ _A_bk [k ] = pipedream_solver .ngeometry .Rect_Closed_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1607
+ _B_bk [k ] = pipedream_solver .ngeometry .Rect_Closed_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1608
1608
elif geom_code == 3 :
1609
- _A_bk [k ] = superlink .ngeometry .Rect_Open_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1610
- _B_bk [k ] = superlink .ngeometry .Rect_Open_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1609
+ _A_bk [k ] = pipedream_solver .ngeometry .Rect_Open_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1610
+ _B_bk [k ] = pipedream_solver .ngeometry .Rect_Open_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1611
1611
elif geom_code == 4 :
1612
- _A_bk [k ] = superlink .ngeometry .Triangular_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1613
- _B_bk [k ] = superlink .ngeometry .Triangular_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1612
+ _A_bk [k ] = pipedream_solver .ngeometry .Triangular_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1613
+ _B_bk [k ] = pipedream_solver .ngeometry .Triangular_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1614
1614
elif geom_code == 5 :
1615
- _A_bk [k ] = superlink .ngeometry .Trapezoidal_A_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1616
- _B_bk [k ] = superlink .ngeometry .Trapezoidal_B_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1615
+ _A_bk [k ] = pipedream_solver .ngeometry .Trapezoidal_A_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1616
+ _B_bk [k ] = pipedream_solver .ngeometry .Trapezoidal_B_ik (h_I , h_Ip1 , g1_i , g2_i , g3_i )
1617
1617
elif geom_code == 6 :
1618
- _A_bk [k ] = superlink .ngeometry .Parabolic_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1619
- _B_bk [k ] = superlink .ngeometry .Parabolic_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1618
+ _A_bk [k ] = pipedream_solver .ngeometry .Parabolic_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1619
+ _B_bk [k ] = pipedream_solver .ngeometry .Parabolic_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1620
1620
elif geom_code == 7 :
1621
- _A_bk [k ] = superlink .ngeometry .Elliptical_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1622
- _B_bk [k ] = superlink .ngeometry .Elliptical_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1621
+ _A_bk [k ] = pipedream_solver .ngeometry .Elliptical_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1622
+ _B_bk [k ] = pipedream_solver .ngeometry .Elliptical_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1623
1623
elif geom_code == 8 :
1624
- _A_bk [k ] = superlink .ngeometry .Wide_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1625
- _B_bk [k ] = superlink .ngeometry .Wide_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1624
+ _A_bk [k ] = pipedream_solver .ngeometry .Wide_A_ik (h_I , h_Ip1 , g1_i , g2_i )
1625
+ _B_bk [k ] = pipedream_solver .ngeometry .Wide_B_ik (h_I , h_Ip1 , g1_i , g2_i )
1626
1626
return 1
1627
1627
1628
1628
@njit
@@ -1636,21 +1636,21 @@ def numba_orifice_geometry(_Ao, h_eo, u_o, _g1_o, _g2_o, _g3_o, _geom_codes_o, n
1636
1636
h_e = h_eo [i ]
1637
1637
if geom_code :
1638
1638
if geom_code == 1 :
1639
- _Ao [i ] = superlink .ngeometry .Circular_A_ik (h_e , h_e , g1 * u )
1639
+ _Ao [i ] = pipedream_solver .ngeometry .Circular_A_ik (h_e , h_e , g1 * u )
1640
1640
elif geom_code == 2 :
1641
- _Ao [i ] = superlink .ngeometry .Rect_Closed_A_ik (h_e , h_e , g1 * u , g2 )
1641
+ _Ao [i ] = pipedream_solver .ngeometry .Rect_Closed_A_ik (h_e , h_e , g1 * u , g2 )
1642
1642
elif geom_code == 3 :
1643
- _Ao [i ] = superlink .ngeometry .Rect_Open_A_ik (h_e , h_e , g1 * u , g2 )
1643
+ _Ao [i ] = pipedream_solver .ngeometry .Rect_Open_A_ik (h_e , h_e , g1 * u , g2 )
1644
1644
elif geom_code == 4 :
1645
- _Ao [i ] = superlink .ngeometry .Triangular_A_ik (h_e , h_e , g1 * u , g2 )
1645
+ _Ao [i ] = pipedream_solver .ngeometry .Triangular_A_ik (h_e , h_e , g1 * u , g2 )
1646
1646
elif geom_code == 5 :
1647
- _Ao [i ] = superlink .ngeometry .Trapezoidal_A_ik (h_e , h_e , g1 * u , g2 , g3 )
1647
+ _Ao [i ] = pipedream_solver .ngeometry .Trapezoidal_A_ik (h_e , h_e , g1 * u , g2 , g3 )
1648
1648
elif geom_code == 6 :
1649
- _Ao [i ] = superlink .ngeometry .Parabolic_A_ik (h_e , h_e , g1 * u , g2 )
1649
+ _Ao [i ] = pipedream_solver .ngeometry .Parabolic_A_ik (h_e , h_e , g1 * u , g2 )
1650
1650
elif geom_code == 7 :
1651
- _Ao [i ] = superlink .ngeometry .Elliptical_A_ik (h_e , h_e , g1 * u , g2 )
1651
+ _Ao [i ] = pipedream_solver .ngeometry .Elliptical_A_ik (h_e , h_e , g1 * u , g2 )
1652
1652
elif geom_code == 8 :
1653
- _Ao [i ] = superlink .ngeometry .Wide_A_ik (h_e , h_e , g1 * u , g2 )
1653
+ _Ao [i ] = pipedream_solver .ngeometry .Wide_A_ik (h_e , h_e , g1 * u , g2 )
1654
1654
return 1
1655
1655
1656
1656
@njit
0 commit comments