OGS
VectorMatrixAssembler.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <vector>
7
10
11namespace NumLib
12{
14} // namespace NumLib
15
16namespace ProcessLib
17{
18
20
26{
27public:
28 explicit VectorMatrixAssembler(
29 AbstractJacobianAssembler& jacobian_assembler);
30
31 void preAssemble(const std::size_t mesh_item_id,
32 LocalAssemblerInterface& local_assembler,
33 const NumLib::LocalToGlobalIndexMap& dof_table,
34 const double t, double const dt, const GlobalVector& x);
35
38 void assemble(
39 std::size_t const mesh_item_id,
40 LocalAssemblerInterface& local_assembler,
41 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_tables,
42 double const t, double const dt, std::vector<GlobalVector*> const& x,
43 std::vector<GlobalVector*> const& x_prev, int const process_id,
45
49 std::size_t const mesh_item_id,
50 LocalAssemblerInterface& local_assembler,
51 std::vector<NumLib::LocalToGlobalIndexMap const*> const& dof_tables,
52 const double t, double const dt, std::vector<GlobalVector*> const& x,
53 std::vector<GlobalVector*> const& x_prev, int const process_id,
54 GlobalVector* b, GlobalMatrix* Jac);
55
56private:
57 // temporary data only stored here in order to avoid frequent memory
58 // reallocations.
59 std::vector<double> _local_M_data;
60 std::vector<double> _local_K_data;
61 std::vector<double> _local_b_data;
62 std::vector<double> _local_Jac_data;
63
66
68};
69
70} // namespace ProcessLib
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
Base class for Jacobian assemblers.
void assemble(std::size_t const mesh_item_id, LocalAssemblerInterface &local_assembler, std::vector< NumLib::LocalToGlobalIndexMap const * > 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)
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)
Assembly::LocalMatrixOutput _local_output
AbstractJacobianAssembler & _jacobian_assembler
Used to assemble the Jacobian.
void assembleWithJacobian(std::size_t const mesh_item_id, LocalAssemblerInterface &local_assembler, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, const double t, double const dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, GlobalVector *b, GlobalMatrix *Jac)
Writes local matrices to disk for debugging purposes.