CMS-Flow Numerical Methods:General Transport Equation
General Transport Equation
All of the governing equations may be written in general form
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \underbrace{\frac{\partial (h\phi )}{\partial t}}_{\text{Temporal Term}}+\underbrace{\nabla \cdot (h\ bf{U}\phi )}_{\text{Advection Term}}=\underbrace{\nabla \cdot \left( \Gamma h\nabla \phi \right)}_{\text{Diffusion Term}}+\underbrace{S}_{\text{Source Term}} } |
(8) |
where Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \phi} is a general scalar, Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle t} is time, Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle h} is the total water depth, Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle bf{U}} is the depth averaged current velocity, Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Gamma } is the diffusion coefficient for Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \phi } , Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \nabla =({{\nabla }_{1}},{{\nabla }_{2}}) } is the gradient operator, and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle S } includes all other terms. Note that in the case of the continuity and momentum equations Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \phi } is equal to 1 and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle U_i } respectively.
Spatial Discretization
Temporal Discretization
The temporal term of the momentum equations is discretized using a first order implicit Euler scheme
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \int\limits_{A}{\frac{\partial (h\phi )}{\partial t}}\text{d}A=\frac{\partial }{\partial t}\int\limits_{A}{h\phi \text{d}A}=\frac{{{h}^{n+1}}\phi _{{}}^{n+1}-{{h}^{n}}\phi _{{}}^{n}}{\Delta t}\Delta A } |
(9) |
where Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Delta A } is the cell area, and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Delta t } is the hydrodynamic time step.
Cell-face interpolation operator
The general formula for estimating the cell-face value of Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \tilde{\phi }_{f}^{{}} } is given by
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{\bar{\phi }}_{f}}={{L}_{\bot }}{{\phi }_{N}}+(1-{{L}_{\bot }}){{\phi }_{P}}+{{\left( {{\nabla }_{\parallel }}\phi \right)}_{N}}{{L}_{\bot }}({{x}_{\parallel ,O}}-{{x}_{\parallel ,N}})+{{\left( {{\nabla }_{\parallel }}\phi \right)}_{P}}(1-{{L}_{\bot }})({{x}_{\parallel ,O}}-{{x}_{\parallel ,P}}) } |
(12) |
where Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{L}_{\bot }} } is a linear interpolation factor given by Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{L}_{\bot }}=\Delta {{x}_{\bot ,P}}/(\Delta {{x}_{\bot ,P}}+\Delta {{x}_{\bot ,N}}) } and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{\nabla }_{\parallel }} } is the gradient operator in the direction parallel to face f. By definition Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \parallel \,=2\left| {{{\hat{n}}}_{1}} \right|+1\left| {{{\hat{n}}}_{2}} \right| } . Note that for neighboring cells without any refinement Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{x}_{\parallel ,O}}-{{x}_{\parallel ,P}} } and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{x}_{\parallel ,O}}-{{x}_{\parallel ,N}} } are zero and thus the above equation is consistent with non-refined cell faces.
Advection Schemes
The advection scheme obtained using the divergence theorem as where is the outward unit normal on cell face f, is the cell face length and is the total water depth linearly interpolated to the cell face. Here the overbar indicates a cell face interpolation operator described in the following section. For Cartesian grids the cell face unit vector is always aligned with one of the Cartesian coordinates which simplifies the calculation. Defining the cell face normal velocity as the above equation simplifies to
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \int\limits_{A}{\nabla \cdot (h\mathbf{U}\phi )}\text{d}A=\oint\limits_{L}{h\phi \left( \mathbf{U}\cdot \mathbf{n} \right)}\text{d}L=\sum\limits_{f}^{{}}{{{{\bar{h}}}_{f}}\Delta {{l}_{f}}{{\left( {{{\hat{n}}}_{i}}{{U}_{i}} \right)}_{f}}{{{\tilde{\phi }}}_{f}}} } |
(10) |
where Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \mathbf{n}={{\mathbf{\hat{n}}}_{\mathbf{i}}}=({{\mathbf{\hat{n}}}_{\mathbf{1}}},{{\mathbf{\hat{n}}}_{\mathbf{2}}}) } is the outward unit normal on cell face f, Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \Delta {{l}_{f}} } is the cell face length and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{\bar{h}}_{f}} } is the total water depth linearly interpolated to the cell face. Here the overbar indicates a cell face interpolation operator described in the following section. For Cartesian grids the cell face unit vector is always aligned with one of the Cartesian coordinates which simplifies the calculation. Defining the cell face normal velocity as Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{U}_{f}}={{U}_{i}}\in f\bot i } the above equation simplifies to
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \sum\limits_{f}^{{}}{{{{\bar{h}}}_{f}}\Delta {{l}_{f}}{{\left( {{{\hat{n}}}_{i}}{{U}_{i}} \right)}_{f}}{{{\tilde{\phi }}}_{f}}}=\sum\limits_{f}^{{}}{{{n}_{f}}{{F}_{f}}{{{\tilde{\phi }}}_{f}}} } |
(11) |
where Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{F}_{f}}={{\bar{h}}_{f}}\Delta {{l}_{f}}{{U}_{f}} } , Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{n}_{f}}={{n}_{\bot }}={{\left( {{{\hat{e}}}_{i}}{{{\hat{n}}}_{i}} \right)}_{f}} } , with Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{\hat{e}}^{i}}=({{\hat{e}}_{1}},{{\hat{e}}_{2}}) } being the basis vector. Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle n_f } is equal to 1 for West and South faces and equal to -1 for North and East cell faces. Lastly, Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \tilde{\phi }_{f}^{{}} } is the advective value of Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \phi } on cell face f, and is calculated using either the Hybrid, Exponential, HLPA (Zhu 1991) schemes. The cell face velocities Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle U_f } are calculated using the momentum interpolation method of Rhie and Chow (1983) described in the subsequent section. The advection value is calculated as Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{\tilde{\phi }}_{f}}=\tilde{\phi }_{f}^{L(\exp )}+ \tilde{\phi }_{f}^{H(\text{imp})}-\tilde{\phi }_{f}^{L(\text{imp})} } , where the superscripts Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle L} and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle H} indicate low and high order approximations and the superscripts Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle (exp)} and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle (imp)} indicate either explicit and implicit treatment. The explicit term is solved directly while the implicit term is implemented through a deferred correction in which the terms are approximated using the values from the previous iteration step.
Diffusion term
The diffusion term is discretized in general form using the divergence theorem
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \int\limits_{A}{\nabla \cdot \left( \Gamma h\nabla \phi \right)}\text{d}A=\oint\limits_{S}{\Gamma h\left( \nabla \phi \cdot \mathbf{n} \right)}\text{d}S=\sum\limits_{f}{\bar{\Gamma }_{f}{{{\bar{h}}}_{f}}\Delta {{l}_{f}}{{\left( {{{\hat{n}}}_{i}}{{\nabla }_{i}}\phi \right)}_{f}}} } |
(13) |
The discritization of the cell-face gradient is described in the next section. On a Cartesian grid the above expression may be further simplified as
Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \sum\limits_{f}{{{n}_{f}}\bar{\Gamma }_{f}{{{\bar{h}}}_{f}}\Delta {{l}_{f}}{{\left( {{\nabla }_{\bot }}\phi \right)}_{f}}}=\sum\limits_{f}{{{D}_{f}}\left[ {{\phi }_{N}}-{{\phi }_{P}}+{{\left( {{\nabla }_{\parallel }}\phi \right)}_{N}}\left( {{x}_{\parallel ,O}}-{{x}_{\parallel ,N}} \right)-{{\left( {{\nabla }_{\parallel }}\phi \right)}_{P}}\left( {{x}_{\parallel ,O}}-{{x}_{\parallel ,P}} \right) \right]} } |
(14) |
where Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{\nabla }_{\bot }}\phi } is gradient in the direction perpendicular to the cell face and Failed to parse (SVG with PNG fallback (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle {{D}_{f}}=\frac{\bar{\Gamma }_{f}^{{}}{{{\bar{h}}}_{f}}\Delta {{l}_{f}}}{\left| \delta {{x}_{\bot }} \right|} } .