CMS-Flow Numerical Methods: Sediment Transport: Difference between revisions

From CIRPwiki
Jump to navigation Jump to search
No edit summary
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Sediment Transport Transport Equations =
= Sediment Transport Transport Equations =
The sediment transport equations are discretized using the methods described in [[CMS-Flow_Numerical_Methods#General_Transport_Equation| Numerical Methods: General Transport Equation]] and are not repeated here.
The sediment transport equations are discretized using the methods described in [[CMS-Flow_Numerical_Methods#General_Transport_Equation| Numerical Methods: General Transport Equation]] and are not repeated here.
= Mixing Layer =
The mixing layer or active layer thickness calculation is slightly modified to avoid excessively small layers and for cases of strong deposition as
{{Equation|
<math>
\delta_1 = min \left[max(\delta_{1,min}, 2d_{50},\Delta /2),\delta_{1,max} \right]
</math>
|1}}
where <math>\Delta</math>  is the bed form height and <math>\delta_{1,min}</math>  and <math>\delta_{1,max}</math>  are the user speci-fied the minimum and maximum mixing layer thicknesses, respectively.


= Bed Material Sorting =
= Bed Material Sorting =
Line 18: Line 8:


{{Equation|<math>
{{Equation|<math>
L_s = \frac{Uh}{\alpha \omega_s} = UT_s</math>|2}}
L_s = \frac{Uh}{\alpha \omega_s} = UT_s</math>|1}}


is discretized as  
is discretized as  
Line 24: Line 14:
{{Equation|<math>
{{Equation|<math>
p_{1k}^{n+1} = \frac{\Delta z_{bk} + \delta_1^n p_{1k}^n - \Delta z_2 p_k^{*n}} {\delta_1^{n+1}}
p_{1k}^{n+1} = \frac{\Delta z_{bk} + \delta_1^n p_{1k}^n - \Delta z_2 p_k^{*n}} {\delta_1^{n+1}}
</math>|3}}
</math>|2}}




where <math>\Delta z_2 = \delta_1^{n+1} -\delta_1^n - \Delta z_1</math>  is the change in the top elevation of the second bed layer and <math>p_k^{*n} = p_{1k}^n \text{ for }\Delta z_2 \geq 0 \text{ and } p_k^{*n} = p_{2k}^n \text{ for }\Delta z_2 < 0. </math> The mixing layer or active layer thickness calculation is slightly modified to avoid excessively small layers as   
where <math>\Delta z_2 = \Delta z_b - \delta_1^{n+1} +\delta_1 ^n</math>  is the change in the top elevation of the second bed layer and <math>p_k^{*n} = p_{1k}^n \text{ for }\Delta z_2 \geq 0 \text{ and } p_k^{*n} = p_{2k}^n \text{ for }\Delta z_2 < 0. </math> The mixing layer or active layer thickness calculation is slightly modified to avoid excessively small layers as   


{{Equation|<math>
{{Equation|<math>
\delta_1 = min \left[max(\delta_{1,min}, 2d_{50},\Delta /2),\delta_{1,max} \right]</math>|4}}
\delta_1 = min \left[max(\delta_{1,min}, 2d_{50},\Delta /2),\delta_{1,max} \right]</math>|3}}


where <math>\Delta</math>is the bed form height, and <math>\delta_{1,min} \text{ and } \delta_{1,max}</math> are the user-specified minimum and maximum mixing layer thicknesses, respectively.
where <math>\Delta</math>is the bed form height, and <math>\delta_{1,min} \text{ and } \delta_{1,max}</math> are the user-specified minimum and maximum mixing layer thicknesses, respectively.
Line 37: Line 27:


{{Equation|<math>
{{Equation|<math>
\alpha = 3.25 + 0.55 \ ln \left(\frac{\omega_s}{\kappa u_*}\right)</math>|5}}
\alpha = 3.25 + 0.55 \ ln \left(\frac{\omega_s}{\kappa u_*}\right)</math>|4}}




{{Equation|<math>
{{Equation|<math>
p_{2k}^{n+1} = \frac{\delta_2 ^n p_{2k}^n + \Delta z_2 p_k ^{*n}}{\delta_2 ^{n+1}}</math>|6}}
p_{2k}^{n+1} = \frac{\delta_2 ^n p_{2k}^n + \Delta z_2 p_k ^{*n}}{\delta_2 ^{n+1}}</math>|5}}


In order to avoid sediment layers from becoming extremely thin or thick, a layer merging and splitting algorithm is implemented between layers 2 and 3. Here, the subscript 2 corresponds to the second layer. To illustrate the bed layering process, Figure 1 shows an example of the temporal evolution of seven bed layers during erosional and depositional regimes.
In order to avoid sediment layers from becoming extremely thin or thick, a layer merging and splitting algorithm is implemented between layers 2 and 3. Here, the subscript 2 corresponds to the second layer. To illustrate the bed layering process, Figure 1 shows an example of the temporal evolution of seven bed layers during erosional and depositional regimes.
Line 47: Line 37:
It is noted that in order to maintain a constant number of bed layers, the bottom two layers are merged if the second layer is split or a new layer is created at the bottom using the bed composition and thickness of the bottom layer.
It is noted that in order to maintain a constant number of bed layers, the bottom two layers are merged if the second layer is split or a new layer is created at the bottom using the bed composition and thickness of the bottom layer.


[[File:fig_3_8.bmp]]
<br>
'''Figure 1.  Schematic showing an example bed layer evolution. Colors indicate layer number and not bed composition.'''
= Avalanching =
= Avalanching =


Line 52: Line 45:


{{Equation|<math>
{{Equation|<math>
\Delta z_{b,p}^a = \alpha_a \sum_N \frac{\Delta A_N \delta_N} {\Delta A_P + \Delta A_N}(tan \phi_b - sgn \phi_b \ tan \phi_R)H(|\phi_b| - \phi_R)</math>|7}}
\Delta z_{b,p}^a = \alpha_a \sum_N \frac{\Delta A_N \delta_N} {\Delta A_P + \Delta A_N}(tan \phi_b - sgn \phi_b \ tan \phi_R)H(|\phi_b| - \phi_R)</math>|6}}
 
where <math>\delta_N </math>  is the cell center distance between cells ''P''  and ''N'' , <math>\Delta A</math>  is the cell area, <math>\alpha_a</math>  is an under-relaxation factor (approximately 0.25-0.5), and H(X)  is the Heaviside step-function representing the activation of avalanching and equal to 1 for <math>X \geq 0 \text{ and 0 for } X < 0</math>. The sign function, ''(sgn X)''  , is equal to 1 for <math>X \geq 0 \text{ and -1 for } X < 0</math> and accounts for the fact that the bed slope may have a negative or positive sign. Equation 7 is applied by sweeping through all computational cells to calculate <math>\Delta z_b^a</math>  and then modifying the bathymetry as <math>z_b^{m+1} = z_b^m + \Delta z_b^a</math> . Because avalanching between two cells may induce additional avalanching at neighboring cells, the above sweeping process is repeated until avalanching no longer occurs. The under-relaxation factor, (<math>\alpha_a</math>), is used to stabilize the avalanching pro-cess and to avoid overshooting since the equation is derived considering only two adjacent cells but is summed over all (avalanching) neighboring cells. Equation (7) above may be applied to any grid geometry type (i.e. triangles, rectangles, etc.) and for situations in which neighboring cells are joined at corners without sharing a cell face.


[[File:fig_3_8.bmp]]
where <math>\delta_N </math>  is the cell center distance between cells ''P''  and ''N'' , <math>\Delta A</math>  is the cell area, <math>\alpha_a</math>  is an under-relaxation factor (approximately 0.25-0.5), and H(X)  is the Heaviside step-function representing the activation of avalanching and equal to 1 for <math>X \geq 0 \text{ and 0 for } X < 0</math>. The sign function, (sgn X) is equal to 1 for <math>X \geq 0 \text{ and -1 for } X < 0</math> and accounts for the fact that the bed slope may have a negative or positive sign. Equation 6 is applied by sweeping through all computational cells to calculate <math>\Delta z_b^a</math>  and then modifying the bathymetry as <math>z_b^{m+1} = z_b^m + \Delta z_b^a</math> . Because avalanching between two cells may induce additional avalanching at neighboring cells, the above sweeping process is repeated until avalanching no longer occurs. The under-relaxation factor, (<math>\alpha_a</math>), is used to stabilize the avalanching pro-cess and to avoid overshooting since the equation is derived considering only two adjacent cells but is summed over all (avalanching) neighboring cells. Equation (6) above may be applied to any grid geometry type (i.e. triangles, rectangles, etc.) and for situations in which neighboring cells are joined at corners without sharing a cell face.


= Hard bottom =
= Hard bottom =
Line 62: Line 53:


= Implicit Semi-Coupling Procedure =  
= Implicit Semi-Coupling Procedure =  
For a semi-coupled sediment transport model, the sediment calculations are decoupled from the hydrodynamics but the sediment transport, bed change, and bed material sorting equations are coupled at the time-step level and thus solved simultaneously.  A modified form of the iteration procedure of Wu (2004) is implemented in CMS. The equations are ob-tained by substituting <math>C_{t*k}^{n+1} = p_{1k}^{n+1}C_{tk}^{n+1}</math>  into the bed change and sorting equations and then substituting the sorting equation into the bed change equation.  
For a semi-coupled sediment transport model, the sediment calculations are decoupled from the hydrodynamics but the sediment transport, bed change, and bed material sorting equations are coupled at the time-step level and thus solved simultaneously.  A modified form of the iteration procedure of Wu (2004) is implemented in CMS. The equations are obtained by substituting <math>C_{t*k}^{n+1} = p_{1k}^{n+1}C_{tk}^{*n+1}</math>  into the bed change and sorting equations and then substituting the sorting equation into the bed change equation.  


''Summary of Sediment Transport Semi-Coupling Procedure:''
''Summary of Sediment Transport Semi-Coupling Procedure:''
Line 76: Line 67:
:9. Update the bed elevation as <math>z_b ^{n+1} = z_b ^n + \Delta z_b</math>
:9. Update the bed elevation as <math>z_b ^{n+1} = z_b ^n + \Delta z_b</math>
:10. Calculate the bed gradation in the bed layers below the mixing layer  
:10. Calculate the bed gradation in the bed layers below the mixing layer  
:12. Calculate avalanching.  
:11. Calculate avalanching.  
:13. Correct the sediment concentration due to flow depth change.
:12. Correct the sediment concentration due to flow depth change.


When using the explicit time-stepping scheme, the sediment transport and morphology change are solved at a time-step which may be equal to or multiples of the hydrodynamic time-step for efficiency. However, when using the implicit time-stepping scheme, the time-step is relatively big and on the order of 10 min. Because the time-step is so big, it is not necessary to use different time-steps for hydrodynamics and sediment transport. In addition, using the same time-step for hydrodynamics and sediment transport provides a better mass balance. For these reasons, the sediment transport time-step is always set to the hydrodynamic time-step in the implicit time-stepping scheme.
When using the explicit time-stepping scheme, the sediment transport and morphology change are solved at a time-step which may be equal to or multiples of the hydrodynamic time-step for efficiency. However, when using the implicit time-stepping scheme, the time-step is relatively big and on the order of 10 min. Because the time-step is so big, it is not necessary to use different time-steps for hydrodynamics and sediment transport. In addition, using the same time-step for hydrodynamics and sediment transport provides a better mass balance. For these reasons, the sediment transport time-step is always set to the hydrodynamic time-step in the implicit time-stepping scheme.
= References =
* Wu, W. 2004. Depth-averaged 2-D numerical modeling of unsteady flow and non-uniform sediment transport in open channels. Journal of Hydraulic Engineering, ASCE 135(10):1013–1024.
----
[[CMS#Documentation_Portal | Documentation Portal]]

Latest revision as of 20:11, 18 February 2015

Sediment Transport Transport Equations

The sediment transport equations are discretized using the methods described in Numerical Methods: General Transport Equation and are not repeated here.

Bed Material Sorting

The bed material sorting equation

  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_s = \frac{Uh}{\alpha \omega_s} = UT_s} (1)

is discretized 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 p_{1k}^{n+1} = \frac{\Delta z_{bk} + \delta_1^n p_{1k}^n - \Delta z_2 p_k^{*n}} {\delta_1^{n+1}} } (2)


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 z_2 = \Delta z_b - \delta_1^{n+1} +\delta_1 ^n} is the change in the top elevation of the second bed layer 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 p_k^{*n} = p_{1k}^n \text{ for }\Delta z_2 \geq 0 \text{ and } p_k^{*n} = p_{2k}^n \text{ for }\Delta z_2 < 0. } The mixing layer or active layer thickness calculation is slightly modified to avoid excessively small layers 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 \delta_1 = min \left[max(\delta_{1,min}, 2d_{50},\Delta /2),\delta_{1,max} \right]} (3)

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} is the bed form height, 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_{1,min} \text{ and } \delta_{1,max}} are the user-specified minimum and maximum mixing layer thicknesses, respectively.

The thickness of the second layer 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 \delta_2 ^{n+1} = \delta_2 ^n + \Delta z_2} The bed material gradation in the second layer is calculated from the following discretized 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 \alpha = 3.25 + 0.55 \ ln \left(\frac{\omega_s}{\kappa u_*}\right)} (4)


  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 p_{2k}^{n+1} = \frac{\delta_2 ^n p_{2k}^n + \Delta z_2 p_k ^{*n}}{\delta_2 ^{n+1}}} (5)

In order to avoid sediment layers from becoming extremely thin or thick, a layer merging and splitting algorithm is implemented between layers 2 and 3. Here, the subscript 2 corresponds to the second layer. To illustrate the bed layering process, Figure 1 shows an example of the temporal evolution of seven bed layers during erosional and depositional regimes.

It is noted that in order to maintain a constant number of bed layers, the bottom two layers are merged if the second layer is split or a new layer is created at the bottom using the bed composition and thickness of the bottom layer.

Fig 3 8.bmp
Figure 1. Schematic showing an example bed layer evolution. Colors indicate layer number and not bed composition.

Avalanching

When the slope of a non-cohesive bed,(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_b} ), is larger than the angle of repose, (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_R} ), the bed material will slide (avalanche) to form a new slope approximately equal to the angle of repose. The process of avalanching is simulated by enforcing 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_b | \leq \phi_R} while maintaining mass continuity between adjacent cells. The following equation for bed change due to ava-lanching is obtained by combining the equation for angle of repose and the continuity equation between two adjacent cells:

  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 z_{b,p}^a = \alpha_a \sum_N \frac{\Delta A_N \delta_N} {\Delta A_P + \Delta A_N}(tan \ \phi_b - sgn \ \phi_b \ tan \ \phi_R)H(|\phi_b| - \phi_R)} (6)

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_N } is the cell center distance between cells P and N , 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, 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 \alpha_a} is an under-relaxation factor (approximately 0.25-0.5), and H(X) is the Heaviside step-function representing the activation of avalanching and equal to 1 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 X \geq 0 \text{ and 0 for } X < 0} . The sign function, (sgn X) is equal to 1 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 X \geq 0 \text{ and -1 for } X < 0} and accounts for the fact that the bed slope may have a negative or positive sign. Equation 6 is applied by sweeping through all computational cells to calculate 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 z_b^a} and then modifying the bathymetry 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 z_b^{m+1} = z_b^m + \Delta z_b^a} . Because avalanching between two cells may induce additional avalanching at neighboring cells, the above sweeping process is repeated until avalanching no longer occurs. The under-relaxation factor, (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 \alpha_a} ), is used to stabilize the avalanching pro-cess and to avoid overshooting since the equation is derived considering only two adjacent cells but is summed over all (avalanching) neighboring cells. Equation (6) above may be applied to any grid geometry type (i.e. triangles, rectangles, etc.) and for situations in which neighboring cells are joined at corners without sharing a cell face.

Hard bottom

The sediment transport and bed change equations assume a loose bottom in which the bed material is available for entrainment. However, hard bottoms may be encountered in practical engineering applications where bed materials are non-erodible, such as bare rocks, carbonate reefs, and concrete coastal structures. Hard-bottom cells in CMS are handled by modifying the equilibrium concentration 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 C_{t*}^' = min(C_{t*}, C_t)} in both the sedment transport and bed change equations. The bed-slope term in the bed change equation is also modified so that only deposition (no erosion) may occur at hard-bottom cells.

Implicit Semi-Coupling Procedure

For a semi-coupled sediment transport model, the sediment calculations are decoupled from the hydrodynamics but the sediment transport, bed change, and bed material sorting equations are coupled at the time-step level and thus solved simultaneously. A modified form of the iteration procedure of Wu (2004) is implemented in CMS. The equations are obtained by substituting 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 C_{t*k}^{n+1} = p_{1k}^{n+1}C_{tk}^{*n+1}} into the bed change and sorting equations and then substituting the sorting equation into the bed change equation.

Summary of Sediment Transport Semi-Coupling Procedure:

1. Calculate bed roughness and bed shear stresses
2. Calculate the mixing layer thickness 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_1 ^{n+1}}
3. Calculate the potential sediment concentration capacity 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 C_{tk} ^{*n+1}}
4. Guess the new bed composition 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 p_{1k}^{n+1} = p_{1k}^n}
5. Calculate the fractional concentration capacity 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 C_{t*k}^{n+1} = p_{1k}^{n+1}C_{tk}^{*n+1}}
6. Solve transport equations for each sediment size class 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 C_{tk} ^{n+1}}
7. Calculate the total and fractional bed changes
8. Determine the bed sorting in the mixing layer;Repeat Step 5 and iterate until convergence.
9. Update the bed elevation 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 z_b ^{n+1} = z_b ^n + \Delta z_b}
10. Calculate the bed gradation in the bed layers below the mixing layer
11. Calculate avalanching.
12. Correct the sediment concentration due to flow depth change.

When using the explicit time-stepping scheme, the sediment transport and morphology change are solved at a time-step which may be equal to or multiples of the hydrodynamic time-step for efficiency. However, when using the implicit time-stepping scheme, the time-step is relatively big and on the order of 10 min. Because the time-step is so big, it is not necessary to use different time-steps for hydrodynamics and sediment transport. In addition, using the same time-step for hydrodynamics and sediment transport provides a better mass balance. For these reasons, the sediment transport time-step is always set to the hydrodynamic time-step in the implicit time-stepping scheme.

References

  • Wu, W. 2004. Depth-averaged 2-D numerical modeling of unsteady flow and non-uniform sediment transport in open channels. Journal of Hydraulic Engineering, ASCE 135(10):1013–1024.

Documentation Portal