OGS
HydroMechanicsLocalAssemblerMatrixNearFracture.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 <unordered_map>
7#include <vector>
8
12
13namespace ProcessLib
14{
15namespace LIE
16{
17namespace HydroMechanics
18{
19template <typename ShapeFunctionDisplacement, typename ShapeFunctionPressure,
20
21 int DisplacementDim>
23 : public HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
24 ShapeFunctionPressure,
25
26 DisplacementDim>
27{
28 using Base = HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement,
29 ShapeFunctionPressure,
30
31 DisplacementDim>;
32
33public:
38
40 MeshLib::Element const& e,
41 std::size_t const n_variables,
42 std::size_t const local_matrix_size,
43 std::vector<unsigned> const& dofIndex_to_localIndex,
44 NumLib::GenericIntegrationMethod const& integration_method,
45 bool const is_axially_symmetric,
47
48private:
49 void assembleWithJacobianConcrete(double const t, double const dt,
50 Eigen::VectorXd const& local_x,
51 Eigen::VectorXd const& local_x_prev,
52 Eigen::VectorXd& local_b,
53 Eigen::MatrixXd& local_J) override;
54
55 void preTimestepConcrete(std::vector<double> const& /*local_x*/,
56 double const /*t*/,
57 double const /*delta_t*/) override
58 {
59 for (auto& ip_data : _ip_data)
60 {
61 ip_data.pushBackState();
62 }
63 }
64
66 double const t, double const dt,
67 Eigen::VectorXd const& local_x) override;
68
69 using Base::_element;
70 using Base::_ip_data;
77 using typename Base::BMatricesType;
78 using typename Base::IntegrationPointDataType;
80
81 static const int displacement_jump_index =
83
84 std::vector<FractureProperty*> _fracture_props;
85 std::vector<JunctionProperty*> _junction_props;
86 std::unordered_map<int, int> _fracID_to_local;
87 Eigen::Vector3d _e_center_coords;
88};
89
90} // namespace HydroMechanics
91} // namespace LIE
92} // namespace ProcessLib
93
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data
void preTimestepConcrete(std::vector< double > const &, double const, double const) override
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 postTimestepConcreteWithVector(double const t, double const dt, Eigen::VectorXd const &local_x) override
HydroMechanicsLocalAssemblerMatrix< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim > Base
HydroMechanicsLocalAssemblerMatrixNearFracture(HydroMechanicsLocalAssemblerMatrixNearFracture &&)=delete
HydroMechanicsLocalAssemblerMatrixNearFracture(HydroMechanicsLocalAssemblerMatrixNearFracture const &)=delete
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data
BMatrixPolicyType< ShapeFunctionDisplacement, DisplacementDim > BMatricesType
ShapeMatrixPolicyType< ShapeFunctionDisplacement, DisplacementDim > ShapeMatricesTypeDisplacement
HydroMechanicsLocalAssemblerMatrix(HydroMechanicsLocalAssemblerMatrix const &)=delete
IntegrationPointDataMatrix< BMatricesType, ShapeMatricesTypeDisplacement, ShapeMatricesTypePressure, DisplacementDim, ShapeFunctionDisplacement::NPOINTS > IntegrationPointDataType