OGS
|
A mixin providing assembly functionality to a specific Process
.
The process must be derived from this class (CRTP).
Definition at line 99 of file AssemblyMixin.h.
#include <AssemblyMixin.h>
Public Member Functions | |
void | initializeAssemblyOnSubmeshes (std::vector< std::reference_wrapper< MeshLib::Mesh > > const &submeshes, std::vector< std::vector< std::string > > const &residuum_names) |
void | updateActiveElements () |
void | assemble (double const t, double const dt, std::vector< GlobalVector * > const &, std::vector< GlobalVector * > const &, int const process_id, GlobalMatrix &, GlobalMatrix &, GlobalVector &) |
void | assembleWithJacobian (double const t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, GlobalVector &b, GlobalMatrix &Jac) |
Private Member Functions | |
Process & | derived () |
Process const & | derived () const |
AssemblyMixinBase (AbstractJacobianAssembler &jacobian_assembler) | |
Private Member Functions inherited from ProcessLib::AssemblyMixinBase | |
AssemblyMixinBase (AbstractJacobianAssembler &jacobian_assembler) | |
void | initializeAssemblyOnSubmeshes (MeshLib::Mesh &bulk_mesh, std::vector< std::reference_wrapper< MeshLib::Mesh > > const &submeshes, std::vector< std::vector< std::string > > const &residuum_names, std::vector< std::vector< std::reference_wrapper< ProcessVariable > > > const &pvs) |
void | updateActiveElements (ProcessLib::Process const &process) |
Private Attributes | |
friend | Process |
Private Attributes inherited from ProcessLib::AssemblyMixinBase | |
std::vector< SubmeshAssemblyData > | submesh_assembly_data_ |
std::vector< std::vector< std::reference_wrapper< MeshLib::PropertyVector< double > > > > | residuum_vectors_bulk_ |
std::size_t | b_submesh_id_ = 0 |
ID of the b vector on submeshes, cf. NumLib::VectorProvider. | |
Assembly::ParallelVectorMatrixAssembler | pvma_ |
Additional Inherited Members | |
Static Private Member Functions inherited from ProcessLib::AssemblyMixinBase | |
static void | copyResiduumVectorsToBulkMesh (GlobalVector const &rhs, NumLib::LocalToGlobalIndexMap const &local_to_global_index_map, std::vector< std::reference_wrapper< MeshLib::PropertyVector< double > > > residuum_vectors) |
static void | copyResiduumVectorsToSubmesh (int const process_id, GlobalVector const &rhs, NumLib::LocalToGlobalIndexMap const &local_to_global_index_map, SubmeshAssemblyData const &sad) |
|
inline |
Implementation similar to assembleWithJacobian calling Assembly::ParallelVectorMatrixAssembler::assemble function. Residuum must be correctly computed.
Definition at line 143 of file AssemblyMixin.h.
|
inline |
Definition at line 158 of file AssemblyMixin.h.
References ProcessLib::Assembly::ParallelVectorMatrixAssembler::assembleWithJacobian(), MathLib::LinAlg::axpy(), ProcessLib::AssemblyMixinBase::b_submesh_id_, ProcessLib::AssemblyMixinBase::copyResiduumVectorsToBulkMesh(), ProcessLib::AssemblyMixinBase::copyResiduumVectorsToSubmesh(), DBUG(), ProcessLib::AssemblyMixin< Process >::derived(), ProcessLib::Process::getDOFTables(), NumLib::VectorProvider::getVector(), NumLib::GlobalVectorProvider::provider, ProcessLib::AssemblyMixinBase::pvma_, NumLib::VectorProvider::releaseVector(), ProcessLib::AssemblyMixinBase::residuum_vectors_bulk_, MathLib::EigenVector::setZero(), and ProcessLib::AssemblyMixinBase::submesh_assembly_data_.
|
inlineexplicitprivate |
Definition at line 51 of file AssemblyMixin.h.
|
inlineprivate |
Definition at line 205 of file AssemblyMixin.h.
Referenced by ProcessLib::AssemblyMixin< Process >::assembleWithJacobian(), ProcessLib::AssemblyMixin< Process >::initializeAssemblyOnSubmeshes(), and ProcessLib::AssemblyMixin< Process >::updateActiveElements().
|
inlineprivate |
Definition at line 206 of file AssemblyMixin.h.
|
inline |
Specifies that the assembly of the process should take place on the passed submeshes
.
residuum_names
matters and must match the order of the residuum vectors in the process. Otherwise residuum output on submeshes will be wrong.Definition at line 128 of file AssemblyMixin.h.
References ProcessLib::AssemblyMixin< Process >::derived(), getMesh(), and ProcessLib::AssemblyMixinBase::initializeAssemblyOnSubmeshes().
|
inline |
Definition at line 137 of file AssemblyMixin.h.
References ProcessLib::AssemblyMixin< Process >::derived(), and ProcessLib::AssemblyMixinBase::updateActiveElements().
|
private |
Definition at line 104 of file AssemblyMixin.h.