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_b_data,
33 std::vector<double>& local_Jac_data) = 0;
34
38 LocalAssemblerInterface& /*local_assembler*/, double const /*t*/,
39 double const /*dt*/, Eigen::VectorXd const& /*local_x*/,
40 Eigen::VectorXd const& /*local_x_prev*/, int const /*process_id*/,
41 std::vector<double>& /*local_b_data*/,
42 std::vector<double>& /*local_Jac_data*/)
43 {
44 // TODO make pure virtual.
45 OGS_FATAL("not implemented.");
46 }
47
48 virtual std::unique_ptr<AbstractJacobianAssembler> copy() const = 0;
49
50 virtual ~AbstractJacobianAssembler() = default;
51};
52
53} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:26
Base class for Jacobian assemblers.
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_b_data, std::vector< double > &local_Jac_data)=0
virtual std::unique_ptr< AbstractJacobianAssembler > copy() const =0
virtual void assembleWithJacobianForStaggeredScheme(LocalAssemblerInterface &, double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &, int const, std::vector< double > &, std::vector< double > &)
virtual ~AbstractJacobianAssembler()=default