OGS
VectorMatrixAssembler.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <vector>
14
17
18namespace NumLib
19{
20class LocalToGlobalIndexMap;
21} // namespace NumLib
22
23namespace ProcessLib
24{
25
26class LocalAssemblerInterface;
27
33{
34public:
35 explicit VectorMatrixAssembler(
36 AbstractJacobianAssembler& jacobian_assembler);
37
38 void preAssemble(const std::size_t mesh_item_id,
39 LocalAssemblerInterface& local_assembler,
40 const NumLib::LocalToGlobalIndexMap& dof_table,
41 const double t, double const dt, const GlobalVector& x);
42
45 void assemble(std::size_t const mesh_item_id,
46 LocalAssemblerInterface& local_assembler,
47 std::vector<std::reference_wrapper<
48 NumLib::LocalToGlobalIndexMap>> const& dof_tables,
49 double const t, double const dt,
50 std::vector<GlobalVector*> const& x,
51 std::vector<GlobalVector*> const& x_prev,
52 int const process_id, GlobalMatrix& M, GlobalMatrix& K,
53 GlobalVector& b);
54
58 std::size_t const mesh_item_id,
59 LocalAssemblerInterface& local_assembler,
60 std::vector<
61 std::reference_wrapper<NumLib::LocalToGlobalIndexMap>> const&
62 dof_tables,
63 const double t, double const dt, std::vector<GlobalVector*> const& x,
64 std::vector<GlobalVector*> const& x_prev, int const process_id,
66
67private:
68 // temporary data only stored here in order to avoid frequent memory
69 // reallocations.
70 std::vector<double> _local_M_data;
71 std::vector<double> _local_K_data;
72 std::vector<double> _local_b_data;
73 std::vector<double> _local_Jac_data;
74
77
79};
80
81} // namespace ProcessLib
Global vector based on Eigen vector.
Definition EigenVector.h:25
Base class for Jacobian assemblers.
VectorMatrixAssembler(AbstractJacobianAssembler &jacobian_assembler)
void preAssemble(const std::size_t mesh_item_id, LocalAssemblerInterface &local_assembler, const NumLib::LocalToGlobalIndexMap &dof_table, const double t, double const dt, const GlobalVector &x)
void assembleWithJacobian(std::size_t const mesh_item_id, LocalAssemblerInterface &local_assembler, std::vector< std::reference_wrapper< NumLib::LocalToGlobalIndexMap > > const &dof_tables, const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b, GlobalMatrix &Jac)
void assemble(std::size_t const mesh_item_id, LocalAssemblerInterface &local_assembler, std::vector< std::reference_wrapper< NumLib::LocalToGlobalIndexMap > > const &dof_tables, double const t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b)
Assembly::LocalMatrixOutput _local_output
AbstractJacobianAssembler & _jacobian_assembler
Used to assemble the Jacobian.
Writes local matrices to disk for debugging purposes.