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, typename ShapeFunctionPressure,
28 
29  int GlobalDim>
31  : public HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
32  ShapeFunctionPressure,
33 
34  GlobalDim>
35 {
36  using Base = HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
37  ShapeFunctionPressure,
38 
39  GlobalDim>;
40 
41 public:
46 
48  MeshLib::Element const& e,
49  std::size_t const n_variables,
50  std::size_t const local_matrix_size,
51  std::vector<unsigned> const& dofIndex_to_localIndex,
52  NumLib::GenericIntegrationMethod const& integration_method,
53  bool const is_axially_symmetric,
55 
56 private:
57  void assembleWithJacobianConcrete(double const t, double const dt,
58  Eigen::VectorXd const& local_x,
59  Eigen::VectorXd const& local_x_dot,
60  Eigen::VectorXd& local_b,
61  Eigen::MatrixXd& local_J) override;
62 
63  void preTimestepConcrete(std::vector<double> const& /*local_x*/,
64  double const /*t*/,
65  double const /*delta_t*/) override
66  {
67  for (auto& ip_data : _ip_data)
68  {
69  ip_data.pushBackState();
70  }
71  }
72 
74  double const t, double const dt,
75  Eigen::VectorXd const& local_x) override;
76 
77  using Base::_element;
78  using Base::_ip_data;
79  using Base::_process_data;
84  using Base::pressure_size;
85  using typename Base::BMatricesType;
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 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
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
ShapeMatrixPolicyType< ShapeFunctionDisplacement, GlobalDim > ShapeMatricesTypeDisplacement
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data
BMatrixPolicyType< ShapeFunctionDisplacement, GlobalDim > BMatricesType
static const double t