|
| | ADROperator () |
| | Default constructor.
|
| void | initialize (std::shared_ptr< const MatrixFree< dim, Number > > data_in, const ProblemInterface< dim > &problem) |
| | Initialize the operator with MatrixFree data and problem definition.
|
| void | initialize (std::shared_ptr< const MatrixFree< dim, Number > > data_in, const MGConstrainedDoFs &mg_constrained_dofs, unsigned int level, const ProblemInterface< dim > &problem) |
| | Initialize for a multigrid level.
|
| void | clear () override |
| | Clear all data.
|
| void | compute_diagonal () override |
| | Computes the diagonal of the operator (for preconditioning).
|
| bool | is_multigrid_level () const |
| | Check if this is a multigrid level operator.
|
| int | get_mg_level () const |
| | Get the multigrid level (-1 if not a level operator).
|
template<int dim, int fe_degree, typename Number = double>
class HybridADRSolver::ADROperator< dim, fe_degree, Number >
Matrix-free operator for the ADR problem with multigrid support.
This class implements the action of the system matrix on a vector without explicitly storing the matrix. The computation uses:
- Sum factorization for efficient tensor-product evaluation
- Vectorization over multiple cells (SIMD)
- Hybrid MPI+threading parallelization
- Geometric Multigrid (GMG) preconditioning support
The weak form implemented is: \( a(u,v) = (\mu \nabla u, \nabla v) + (\beta \cdot \nabla u, v) + (\gamma
u, v) \)
- Template Parameters
-
| dim | Spatial dimension |
| fe_degree | Polynomial degree of finite elements |
| Number | Floating point type (double or float) |