OGS
CentralDifferencesJacobianAssembler.h
Go to the documentation of this file.
1 
11 #pragma once
12 
13 #include <memory>
15 
16 namespace BaseLib
17 {
18 class ConfigTree;
19 } // BaseLib
20 
21 namespace ProcessLib
22 {
26 {
27 public:
41  std::vector<double>&& absolute_epsilons);
42 
53  void assembleWithJacobian(LocalAssemblerInterface& local_assembler,
54  double const t, double const dt,
55  std::vector<double> const& local_x,
56  std::vector<double> const& local_xdot,
57  const double dxdot_dx, const double dx_dx,
58  std::vector<double>& local_M_data,
59  std::vector<double>& local_K_data,
60  std::vector<double>& local_b_data,
61  std::vector<double>& local_Jac_data) override;
62 
63 private:
64  std::vector<double> const _absolute_epsilons;
65 
66  // temporary data only stored here in order to avoid frequent memory
67  // reallocations.
68  std::vector<double> _local_M_data;
69  std::vector<double> _local_K_data;
70  std::vector<double> _local_b_data;
71  std::vector<double> _local_x_perturbed_data;
72  std::vector<double> _local_xdot_perturbed_data;
73 };
74 
75 std::unique_ptr<CentralDifferencesJacobianAssembler>
77 
78 } // namespace ProcessLib
Base class for Jacobian assemblers.
Assembles the Jacobian matrix using central differences.
CentralDifferencesJacobianAssembler(std::vector< double > &&absolute_epsilons)
void assembleWithJacobian(LocalAssemblerInterface &local_assembler, double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_xdot, const double dxdot_dx, const double dx_dx, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) override
std::unique_ptr< CentralDifferencesJacobianAssembler > createCentralDifferencesJacobianAssembler(BaseLib::ConfigTree const &config)