Numerical Implementation
ADCIRC employs a finite element method for spatial discretization and a finite difference scheme for time discretization. This section details the numerical methods used to solve the governing equations.
Finite Element Spatial Discretization
ADCIRC uses the continuous Galerkin finite element method with linear triangular elements for spatial discretization. This approach allows for:
Flexible mesh design with high resolution in areas of interest
Accurate representation of complex coastlines and bathymetry
Efficient handling of varying spatial scales
The approximation for a variable \(\psi\) (representing either \(\zeta\), \(U\), or \(V\)) within an element is given by:
where:
\(N_n\) is the number of nodes in the mesh
\(\psi_j(t)\) is the value of the variable at node \(j\) at time \(t\)
\(\phi_j(x,y)\) is the basis function associated with node \(j\)
For linear triangular elements, the basis functions are:
where coefficients \(a_j\), \(b_j\), and \(c_j\) are determined by the geometry of the element.
Weak Formulation and Assembly
The governing equations are converted to their weak form by:
Multiplying by a test function (chosen from the same space as the basis functions)
Integrating over the domain
Applying integration by parts to reduce the order of derivatives
This process yields a system of equations that can be assembled into a global system:
for the GWCE, and:
for the momentum equations. Here:
\(M\) is the global mass matrix
\(K\) is the global stiffness matrix
\(F\), \(F_U\), and \(F_V\) contain the remaining terms
Time Discretization
ADCIRC uses multiple time-stepping schemes:
GWCE (Continuity) Equation:
A three-level explicit scheme is employed:
\[M \frac{\zeta^{n+1} - 2\zeta^n + \zeta^{n-1}}{\Delta t^2} + \tau_0 M \frac{\zeta^{n+1} - \zeta^{n-1}}{2\Delta t} + K \zeta^n = F^n\]Momentum Equations:
A Crank-Nicolson implicit scheme is used for the linear terms and an explicit scheme for nonlinear terms:
\[M \frac{U^{n+1} - U^n}{\Delta t} = \frac{1}{2} [L(U^{n+1}) + L(U^n)] + N(U^n, V^n)\]where \(L\) represents linear terms and \(N\) represents nonlinear terms.
Lumped Mass Matrix
To enhance computational efficiency, ADCIRC uses a lumped (diagonal) mass matrix instead of the consistent mass matrix. This is achieved by row-summing:
This approximation significantly reduces computational cost while maintaining acceptable accuracy.
Stabilization Techniques
Several numerical stabilization techniques are employed:
Selective Lumping: Different lumping ratios for different terms
Spatial Filtering: Applied periodically to remove high-frequency noise
Flux-Corrected Transport: Used for advection terms to prevent unphysical oscillations
Artificial Viscosity: Added adaptively to maintain stability in steep gradient regions
These techniques ensure the model remains stable under challenging conditions (e.g., wetting/drying, storm surge, steep bathymetry).