OGS
HydroMechanicsLocalAssemblerMatrixNearFracture.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <unordered_map>
14#include <vector>
15
19
20namespace ProcessLib
21{
22namespace LIE
23{
24namespace HydroMechanics
25{
26template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
27
28 int GlobalDim>
30 : public HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
31 ShapeFunctionPressure,
32
33 GlobalDim>
34{
35 using Base = HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
36 ShapeFunctionPressure,
37
38 GlobalDim>;
39
40public:
45
47 MeshLib::Element const& e,
48 std::size_t const n_variables,
49 std::size_t const local_matrix_size,
50 std::vector<unsigned> const& dofIndex_to_localIndex,
51 NumLib::GenericIntegrationMethod const& integration_method,
52 bool const is_axially_symmetric,
54
55private:
56 void assembleWithJacobianConcrete(double const t, double const dt,
57 Eigen::VectorXd const& local_x,
58 Eigen::VectorXd const& local_x_prev,
59 Eigen::VectorXd& local_b,
60 Eigen::MatrixXd& local_J) override;
61
62 void preTimestepConcrete(std::vector<double> const& /*local_x*/,
63 double const /*t*/,
64 double const /*delta_t*/) override
65 {
66 for (auto& ip_data : _ip_data)
67 {
68 ip_data.pushBackState();
69 }
70 }
71
73 double const t, double const dt,
74 Eigen::VectorXd const& local_x) override;
75
76 using Base::_element;
77 using Base::_ip_data;
84 using typename Base::BMatricesType;
85 using typename Base::IntegrationPointDataType;
87
88 static const int displacement_jump_index =
90
91 std::vector<FractureProperty*> _fracture_props;
92 std::vector<JunctionProperty*> _junction_props;
93 std::unordered_map<int, int> _fracID_to_local;
94 Eigen::Vector3d _e_center_coords;
95};
96
97} // namespace HydroMechanics
98} // namespace LIE
99} // namespace ProcessLib
100
HydroMechanicsLocalAssemblerMatrixNearFracture(HydroMechanicsLocalAssemblerMatrixNearFracture &&)=delete
HydroMechanicsLocalAssemblerMatrixNearFracture(HydroMechanicsLocalAssemblerMatrixNearFracture const &)=delete
void assembleWithJacobianConcrete(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, Eigen::VectorXd &local_b, Eigen::MatrixXd &local_J) override
void preTimestepConcrete(std::vector< double > const &, double const, double const) override
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data
void postTimestepConcreteWithVector(double const t, double const dt, Eigen::VectorXd const &local_x) override
ShapeMatrixPolicyType< ShapeFunctionDisplacement, GlobalDim > ShapeMatricesTypeDisplacement
BMatrixPolicyType< ShapeFunctionDisplacement, GlobalDim > BMatricesType
IntegrationPointDataMatrix< BMatricesType, ShapeMatricesTypeDisplacement, ShapeMatricesTypePressure, GlobalDim, ShapeFunctionDisplacement::NPOINTS > IntegrationPointDataType
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data