Hermes2D
3.0
|
Provides capabilities to (re-)assemble a matrix / vector only where necessary. See also Solver::keep_element_values() More...
#include <discrete_problem_selective_assembler.h>
Public Member Functions | |
bool | prepare_sparse_structure (SparseMatrix< Scalar > *mat, Vector< Scalar > *rhs, std::vector< SpaceSharedPtr< Scalar > > spaces, Traverse::State **&states, unsigned int &num_states) |
void | set_spaces (std::vector< SpaceSharedPtr< Scalar > > spaces) |
Sets new_ spaces for the instance. | |
void | set_weak_formulation (WeakFormSharedPtr< Scalar > wf) |
Set the weak forms. | |
bool | form_to_be_assembled (MatrixForm< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (MatrixFormVol< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (MatrixFormSurf< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (MatrixFormDG< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (VectorForm< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (VectorFormVol< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (VectorFormSurf< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
bool | form_to_be_assembled (VectorFormDG< Scalar > *form, Traverse::State *current_state) |
Decides if the form will be assembled on this State. | |
![]() | |
WeakFormSharedPtr< Scalar > | get_weak_formulation () const |
Protected Attributes | |
unsigned int | spaces_size |
Spaces. | |
int * | sp_seq |
Seq numbers of Space instances in spaces. | |
bool | matrix_structure_reusable |
SparseMatrix< Scalar > * | previous_mat |
bool | vector_structure_reusable |
Vector< Scalar > * | previous_rhs |
![]() | |
unsigned char | num_threads_used |
std::string | exceptionMessageCaughtInParallelBlock |
![]() | |
bool | rungeKutta |
Turn on Runge-Kutta specific handling of external functions. | |
int | RK_original_spaces_count |
Number of spaces in the original problem in a Runge-Kutta method. | |
bool | force_diagonal_blocks |
Table * | block_weights |
![]() | |
WeakFormSharedPtr< Scalar > | wf |
Weak formulation. | |
Friends | |
class | DiscreteProblem< Scalar > |
class | DiscreteProblemIntegrationOrderCalculator< Scalar > |
class | Solver< Scalar > |
Additional Inherited Members | |
![]() | |
DiscreteProblemRungeKutta () | |
Constructor for multiple components / equations. | |
virtual void | set_RK (int original_spaces_count, bool force_diagonal_blocks=nullptr, Table *block_weights=nullptr) |
Set the special handling of external functions of Runge-Kutta methods, including information how many spaces were there in the original problem. | |
double | block_scaling_coeff (MatrixForm< Scalar > *form) const |
double | block_scaling_coeff (MatrixFormDG< Scalar > *form) const |
![]() | |
DiscreteProblemWeakForm (WeakFormSharedPtr< Scalar > wf=WeakFormSharedPtr< Scalar >(nullptr)) | |
Provides capabilities to (re-)assemble a matrix / vector only where necessary. See also Solver::keep_element_values()
Discrete problem selective assembling class.
Definition at line 38 of file discrete_problem_selective_assembler.h.
bool Hermes::Hermes2D::DiscreteProblemSelectiveAssembler< Scalar >::prepare_sparse_structure | ( | SparseMatrix< Scalar > * | mat, |
Vector< Scalar > * | rhs, | ||
std::vector< SpaceSharedPtr< Scalar > > | spaces, | ||
Traverse::State **& | states, | ||
unsigned int & | num_states | ||
) |
Preassembling. Precalculate matrix sparse structure. If force_diagonal_block == true, then (zero) matrix antries are created in diagonal blocks even if corresponding matrix weak forms do not exist. This is useful if the matrix is later to be merged with a matrix that has nonzeros in these blocks. The Table serves for optional weighting of matrix blocks in systems. Returns false if there are no states to assemble.
Definition at line 42 of file discrete_problem_selective_assembler.cpp.
|
protected |
Matrix structure can be reused. If other conditions apply.
Definition at line 92 of file discrete_problem_selective_assembler.h.