Hermes2D  3.0
Hermes::Hermes2D::DiscreteProblemSelectiveAssembler< Scalar > Singleton Reference

Provides capabilities to (re-)assemble a matrix / vector only where necessary. See also Solver::keep_element_values() More...

#include <discrete_problem_selective_assembler.h>

+ Inheritance diagram for Hermes::Hermes2D::DiscreteProblemSelectiveAssembler< Scalar >:

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))
 

Detailed Description

template<typename Scalar>
singleton Hermes::Hermes2D::DiscreteProblemSelectiveAssembler< Scalar >

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.

Member Function Documentation

template<typename Scalar >
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.

Todo:
do not get the assembly list again if the element was not changed.

Definition at line 42 of file discrete_problem_selective_assembler.cpp.

Member Data Documentation

template<typename Scalar>
bool Hermes::Hermes2D::DiscreteProblemSelectiveAssembler< Scalar >::matrix_structure_reusable
protected

Matrix structure can be reused. If other conditions apply.

Definition at line 92 of file discrete_problem_selective_assembler.h.


The documentation for this singleton was generated from the following files: