|
TRUST 1.9.8
HPC thermohydraulic platform
|
Discontinuous Galerkin (DG) methods form a class of finite element methods particularly suited for solving partial differential equations. Unlike continuous Galerkin methods, DG allows for discontinuities between elements, providing greater flexibility and robustness for complex geometries or highly dynamic phenomena [17] [10] [5].
| Pros | Cons |
|---|---|
| High-order accuracy | Large number of unknowns |
| Handles non-conforming meshes | Numerous parameters to tune |
| High arithmetic intensity |
A Symmetric Interior Penalty (SIP) method has been implemented in TRUST for solving the Non-Stationary Heat Equation. The SIP method is more performant than mixed DG methods for first- and second-order approximations.
Considering a face \(f\) shared by two cells \(e_1\) and \(e_2\), the interface average of a quantity \(y\):
\[\{\{ y \}\}_f(x) = \frac{1}{2}\left(y|_{e_1}(x) + y|_{e_2}\right) \]
The interface jump (when the normal of \(f\) is defined from \(e_1\) to \(e_2\)):
\[{\left[\!\left[ y \right]\!\right]}_f(x) = y|_{e_1}(x) - y|_{e_2} \]
and otherwise:
\[{\left[\!\left[ y \right]\!\right]}_f(x) = y|_{e_2}(x) - y|_{e_1} \]
Find \(u \in H^1_0(\Omega)\) such that:
\[-\text{div}(k\nabla u) = s \quad \Rightarrow \quad a_{dg}(u_h, v_h) = \int_\Omega s\,v_h, \quad \forall v_h \in X_{DG} \]
Discrete bilinear form:
\[\begin{aligned} a_{dg}(u_h, v_h) &= \sum_{e \in E} k_e \int_e \nabla u_h \cdot \nabla v_h \\ &\quad - \sum_{f\in F_e} \int_f k_f \{\{\nabla u_h\}\}_f \cdot \vec{n}_f\,\left[\!\left[v_h\right]\!\right] \\ &\quad - \sum_{f\in F_e} \int_f k_f \{\{\nabla v_h\}\}_f \cdot \vec{n}_f\,\left[\!\left[u_h\right]\!\right] \\ &\quad + \sum_{f\in F_e} \frac{\eta}{h_e} \int_f \left[\!\left[u_h\right]\!\right]_f\,\left[\!\left[v_h\right]\!\right]_f \end{aligned} \]
where \(h_e\) is the diameter of the circumscribed circle of \(e\).
The global stiffness matrix \(\mathbf{K}\) has a block-structured form reflecting the element-wise stencil:
\[\mathbf{K} = \begin{bmatrix} \mathbf{K}_{1,1} & \mathbf{K}_{1,2} & 0 & \cdots \\ \mathbf{K}_{1,2}^e & \mathbf{K}_{2,2} & \mathbf{K}_{2,3} & \cdots \\ 0 & \mathbf{K}_{2,3}^e & \mathbf{K}_{3,3} & \cdots \\ \vdots & & & \ddots \end{bmatrix} \]
The stability parameter \(\eta\) is computed automatically to ensure coercivity.
For all \(t \in [0, t_{max}]\), find \(T(t) \in H^1_0(\Omega)\) such that:
\[\rho C_p \frac{dT}{dt} - \text{div}(k\nabla T) = s \]
| Quantity | Description |
|---|---|
| \(k\) | Thermal conductivity (W·m⁻¹·K⁻¹) |
| \(\rho\) | Density (kg·m⁻³) |
| \(C_p\) | Heat capacity (J·kg⁻¹·K⁻¹) |
| \(T\) | Temperature (K) |
| \(s\) | Heat source (W·m⁻³) |
Weak form:
\[\rho C_p\,m_{dg}\!\left(\frac{dT_h}{dt},\theta_h\right) + a_{dg}(T_h,\theta_h) = \int_\Omega s\,\theta_h, \quad \forall\theta_h \in X_{DG},\; \forall t\in[0,t_{max}] \]
Time integration:
In your data file, add an Option_DG block:
order sets the discretization order (only 1 and 2 are currently available). gram_schmidt 1 enables Gram-Schmidt orthonormalization of basis functions, which diagonalizes the mass matrix — useful with explicit schemes.