OGS
AbstractJacobianAssembler.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <Eigen/Core>
14#include <vector>
15
16#include "BaseLib/Error.h"
17
18namespace ProcessLib
19{
20class LocalAssemblerInterface;
21
24{
25public:
28 virtual void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
29 double const t, double const dt,
30 std::vector<double> const& local_x,
31 std::vector<double> const& local_x_prev,
32 std::vector<double>& local_M_data,
33 std::vector<double>& local_K_data,
34 std::vector<double>& local_b_data,
35 std::vector<double>& local_Jac_data) = 0;
36
40 LocalAssemblerInterface& /*local_assembler*/, double const /*t*/,
41 double const /*dt*/, Eigen::VectorXd const& /*local_x*/,
42 Eigen::VectorXd const& /*local_x_prev*/, int const /*process_id*/,
43 std::vector<double>& /*local_M_data*/,
44 std::vector<double>& /*local_K_data*/,
45 std::vector<double>& /*local_b_data*/,
46 std::vector<double>& /*local_Jac_data*/)
47 {
48 // TODO make pure virtual.
49 OGS_FATAL("not implemented.");
50 }
51
52 virtual std::unique_ptr<AbstractJacobianAssembler> copy() const = 0;
53
54 virtual ~AbstractJacobianAssembler() = default;
55};
56
57} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:26
Base class for Jacobian assemblers.
virtual void assembleWithJacobianForStaggeredScheme(LocalAssemblerInterface &, double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &, int const, std::vector< double > &, std::vector< double > &, std::vector< double > &, std::vector< double > &)
virtual std::unique_ptr< AbstractJacobianAssembler > copy() const =0
virtual void assembleWithJacobian(LocalAssemblerInterface &local_assembler, double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)=0
virtual ~AbstractJacobianAssembler()=default