The semi-implicit numerical methods for pipe flow follow closely the open-channel 1D finite volume methods outlined in Numerical Methods (1D FV). The differences arise in the application of the Newton-like solution technique, and arise from the decomposition of the cell property tables into positive and negative contributions. Using the cell volume decomposition, equation 10) in Numerical Methods (1D FV) is rewritten:
|
\boldsymbol{\Omega}^{+}(\boldsymbol{H}) + \boldsymbol{\Omega}^{-}(\boldsymbol{H}) + \boldsymbol{\Psi}\boldsymbol{H} = \boldsymbol{b} |
where
\boldsymbol{\Omega}^+ and \boldsymbol{\Omega}^- are vectors of the the decomposed positive and negative volume contributions of each cell,
\boldsymbol{H} is a vector of the unknown hydraulic heads (water surface elevation + pressure head) for each cell,
\boldsymbol{\Psi} is the coefficient matrix from the semi-implicit discretization of the continuity and momentum equations, and
\boldsymbol{b} is the right hand side vector.
In the methods outlined by Casulli and Stelling (2013), the negative volume contribution is linearized with a series of iterates, m,
|
\boldsymbol{\Omega}^{-}(\boldsymbol{H}^{m+1}) = \boldsymbol{\Omega}^{-}(\boldsymbol{H}^m) + \boldsymbol{A}^{-}(\boldsymbol{H}^m})(\boldsymbol{H}^{m+1} - \boldsymbol{H}^m) |
and the positive volume contribution can be linearized with a series of iterates, k,
|
\boldsymbol{\Omega}^{+}(\boldsymbol{H}^{m+1,k+1}) = \boldsymbol{\Omega}^{+}(\boldsymbol{H}^{m+1,k}) + \boldsymbol{A}^{+}(\boldsymbol{H}^{m+1,k})(\boldsymbol{H}^{m+1,k+1} - \boldsymbol{H}^{m+1,k}) |
where
\boldsymbol{A}^+ and \boldsymbol{A}^- are vectors of the the decomposed positive and negative wetted area contributions of each cell.
This leads to a set of nested iteration loops, where an initial guess at H is iterated on until convergence in the k iterates, and then the m iterates are updated, and the k iterates are run again. This process continues until both the m and k iterates have converged to within a given tolerance. Both iteration loops are formulated to solve for the differences in successive iterations (e.g., \boldsymbol{H}^{m+1} - \boldsymbol{H}^m) as shown below.
|
\begin{array}{rl}
\left[ \boldsymbol{\Psi} + \boldsymbol{A}^+(\boldsymbol{H}^m) - \boldsymbol{A}^-(\boldsymbol{H}^m) \right] ( \boldsymbol{H}^{m+1}-\boldsymbol{H}^m ) &= -( \boldsymbol{\Omega}^+(\boldsymbol{H}^m) + \boldsymbol{\Psi} \boldsymbol{H}^m - \boldsymbol{b} ) + \boldsymbol{V}^-(\boldsymbol{H}^m) \\
\left[ \boldsymbol{\Psi} + \boldsymbol{A}^+(\boldsymbol{H}^{m+1,k}) - \boldsymbol{A}^-(\boldsymbol{H}^m) \right] ( \boldsymbol{H}^{m+1,k+1}-\boldsymbol{H}^{m+1,k} ) &= -( \boldsymbol{\Omega}^+(\boldsymbol{H}^{m+1,k}) + \boldsymbol{\Psi} \boldsymbol{H}^{m+1,k} - \boldsymbol{b} ) + \boldsymbol{V}^-(\boldsymbol{H}^m) + \boldsymbol{A}^-(\boldsymbol{H}^m)(\boldsymbol{H}^{m+1,k}-\boldsymbol{H}^m)
\end{array} |