OGS
AbstractJacobianAssembler.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 <Eigen/Core>
7#include <range/v3/view.hpp>
8#include <range/v3/view/transform.hpp>
9#include <vector>
10
11#include "BaseLib/Error.h"
12
13namespace ProcessLib
14{
16
19{
20public:
23 virtual void assembleWithJacobian(std::size_t const mesh_item_id,
24 LocalAssemblerInterface& local_assembler,
25 double const t, double const dt,
26 std::vector<double> const& local_x,
27 std::vector<double> const& local_x_prev,
28 std::vector<double>& local_b_data,
29 std::vector<double>& local_Jac_data) = 0;
30
34 LocalAssemblerInterface& /*local_assembler*/, double const /*t*/,
35 double const /*dt*/, Eigen::VectorXd const& /*local_x*/,
36 Eigen::VectorXd const& /*local_x_prev*/, int const /*process_id*/,
37 std::vector<double>& /*local_b_data*/,
38 std::vector<double>& /*local_Jac_data*/)
39 {
40 // TODO make pure virtual.
41 OGS_FATAL("not implemented.");
42 }
43
44 virtual std::unique_ptr<AbstractJacobianAssembler> copy() const = 0;
45
46 virtual ~AbstractJacobianAssembler() = default;
47
53 int const max_non_deformation_dofs_per_node) const = 0;
54
56 std::vector<int> const& non_deformation_component_ids) = 0;
57
59 std::vector<int> const& non_deformation_component_ids) = 0;
60
61 virtual bool needsPicardAssembly() const = 0;
62
63 virtual void preIteration(const unsigned /*iter*/) {};
64};
65
66} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:10
Base class for Jacobian assemblers.
virtual void setNonDeformationComponentIDs(std::vector< int > const &non_deformation_component_ids)=0
virtual void setNonDeformationComponentIDsNoSizeCheck(std::vector< int > const &non_deformation_component_ids)=0
virtual std::unique_ptr< AbstractJacobianAssembler > copy() const =0
virtual void checkPerturbationSize(int const max_non_deformation_dofs_per_node) 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 void assembleWithJacobian(std::size_t const mesh_item_id, 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 bool needsPicardAssembly() const =0
virtual ~AbstractJacobianAssembler()=default