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. | |
Public Member Functions inherited from Hermes::Hermes2D::Mixins::DiscreteProblemWeakForm< Scalar > | |
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 |
Protected Attributes inherited from Hermes::Hermes2D::Mixins::Parallel | |
unsigned char | num_threads_used |
std::string | exceptionMessageCaughtInParallelBlock |
Protected Attributes inherited from Hermes::Hermes2D::Mixins::DiscreteProblemRungeKutta< Scalar > | |
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 |
Protected Attributes inherited from Hermes::Hermes2D::Mixins::DiscreteProblemWeakForm< Scalar > | |
WeakFormSharedPtr< Scalar > | wf |
Weak formulation. | |
Friends | |
class | DiscreteProblem< Scalar > |
class | DiscreteProblemIntegrationOrderCalculator< Scalar > |
class | Solver< Scalar > |
Additional Inherited Members | |
Protected Member Functions inherited from Hermes::Hermes2D::Mixins::DiscreteProblemRungeKutta< Scalar > | |
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 |
Protected Member Functions inherited from Hermes::Hermes2D::Mixins::DiscreteProblemWeakForm< Scalar > | |
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.