ASPECT
|
Inherits Base< dim, ::LinearAlgebra::distributed::Vector< number > >.
Public Member Functions | |
ABlockOperator () | |
void | clear () override |
void | set_cell_data (const OperatorCellData< dim, number > &data) |
void | compute_diagonal () override |
void | set_diagonal (const ::LinearAlgebra::distributed::Vector< number > &diag) |
Private Member Functions | |
void | inner_cell_operation (FEEvaluation< dim, degree_v, degree_v+1, dim, number > &velocity) const |
void | cell_operation (FEEvaluation< dim, degree_v, degree_v+1, dim, number > &velocity) const |
void | apply_add (::LinearAlgebra::distributed::Vector< number > &dst, const ::LinearAlgebra::distributed::Vector< number > &src) const override |
void | local_apply (const ::MatrixFree< dim, number > &data, ::LinearAlgebra::distributed::Vector< number > &dst, const ::LinearAlgebra::distributed::Vector< number > &src, const std::pair< unsigned int, unsigned int > &cell_range) const |
Private Attributes | |
const OperatorCellData< dim, number > * | cell_data |
Operator for the A block of the Stokes matrix. The same class is used for both active and level mesh operators.
Definition at line 322 of file stokes_matrix_free.h.
aspect::MatrixFreeStokesOperators::ABlockOperator< dim, degree_v, number >::ABlockOperator | ( | ) |
Constructor
|
override |
Reset the operator.
void aspect::MatrixFreeStokesOperators::ABlockOperator< dim, degree_v, number >::set_cell_data | ( | const OperatorCellData< dim, number > & | data | ) |
Pass in a reference to the problem data.
|
override |
Computes the diagonal of the matrix. Since matrix-free operators have not access to matrix elements, we must apply the matrix-free operator to the unit vectors to recover the diagonal.
void aspect::MatrixFreeStokesOperators::ABlockOperator< dim, degree_v, number >::set_diagonal | ( | const ::LinearAlgebra::distributed::Vector< number > & | diag | ) |
Manually set the diagonal inside the matrix-free object. This function is needed when using tangential constraints as the function compute_diagonal() cannot handle non-Dirichlet boundary conditions.
|
private |
Defines the inner-most operator on a single cell batch with the loop over quadrature points.
|
private |
Defines the operation on a single cell batch including load/store and calls inner_cell_operation().
|
overrideprivate |
Performs the application of the matrix-free operator. This function is called by vmult() functions MatrixFreeOperators::Base.
|
private |
Defines the application of the cell matrix.
|
private |
A pointer to the current cell data that contains viscosity and other required parameters per cell.
Definition at line 396 of file stokes_matrix_free.h.