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