OGS
ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim > Class Template Reference

Detailed Description

template<typename ShapeFunction, int DisplacementDim>
class ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >

Definition at line 25 of file SmallDeformationLocalAssemblerFracture.h.

#include <SmallDeformationLocalAssemblerFracture.h>

Inheritance diagram for ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >:
[legend]
Collaboration diagram for ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >:
[legend]

Public Types

using ShapeMatricesType
using NodalMatrixType = typename ShapeMatricesType::NodalMatrixType
using NodalVectorType = typename ShapeMatricesType::NodalVectorType
using ShapeMatrices = typename ShapeMatricesType::ShapeMatrices
using HMatricesType = HMatrixPolicyType<ShapeFunction, DisplacementDim>
using HMatrixType = typename HMatricesType::HMatrixType
using StiffnessMatrixType = typename HMatricesType::StiffnessMatrixType
using NodalForceVectorType = typename HMatricesType::NodalForceVectorType
using NodalDisplacementVectorType
using ForceVectorType = typename HMatricesType::ForceVectorType
using GlobalDimVectorType = Eigen::Matrix<double, DisplacementDim, 1>

Public Member Functions

 SmallDeformationLocalAssemblerFracture (SmallDeformationLocalAssemblerFracture const &)=delete
 SmallDeformationLocalAssemblerFracture (SmallDeformationLocalAssemblerFracture &&)=delete
 SmallDeformationLocalAssemblerFracture (MeshLib::Element const &e, std::size_t const n_variables, std::size_t const local_matrix_size, std::vector< unsigned > const &dofIndex_to_localIndex, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, SmallDeformationProcessData< DisplacementDim > &process_data)
void assemble (double const, double const, std::vector< double > const &, std::vector< double > const &, std::vector< double > &, std::vector< double > &, std::vector< double > &) override
void assembleWithJacobian (double const t, double const dt, Eigen::VectorXd const &local_u, Eigen::VectorXd &local_b, Eigen::MatrixXd &local_J) override
void preTimestepConcrete (std::vector< double > const &, double const, double const) override
void computeSecondaryVariableConcreteWithVector (const double t, Eigen::VectorXd const &local_u) override
Eigen::Map< const Eigen::RowVectorXd > getShapeMatrix (const unsigned integration_point) const override
 Provides the shape matrix at the given integration point.
std::vector< double > const & getIntPtSigma (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override
std::vector< double > const & getIntPtEpsilon (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const override
std::vector< double > const & getIntPtFractureStress (const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const override
std::vector< double > const & getIntPtFractureAperture (const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const override
Public Member Functions inherited from ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface
 SmallDeformationLocalAssemblerInterface ()
 SmallDeformationLocalAssemblerInterface (std::size_t n_local_size, std::vector< unsigned > dofIndex_to_localIndex)
void assembleWithJacobian (double const t, double const dt, std::vector< double > const &local_x_, std::vector< double > const &, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) override
void computeSecondaryVariableConcrete (double const t, double const, Eigen::VectorXd const &local_x, Eigen::VectorXd const &) override
Public Member Functions inherited from ProcessLib::LocalAssemblerInterface
virtual ~LocalAssemblerInterface ()=default
virtual void setInitialConditions (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, double const t, int const process_id)
virtual void initialize (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
virtual void preAssemble (double const, double const, std::vector< double > const &)
virtual void assembleForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
virtual void assembleWithJacobianForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
virtual void computeSecondaryVariable (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, double const t, double const dt, std::vector< GlobalVector * > const &x, GlobalVector const &x_prev, int const process_id)
virtual void preTimestep (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, double const t, double const delta_t)
virtual void postTimestep (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id)
void postNonLinearSolver (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id)
virtual Eigen::Vector3d getFlux (MathLib::Point3d const &, double const, std::vector< double > const &) const
virtual Eigen::Vector3d getFlux (MathLib::Point3d const &, double const, std::vector< std::vector< double > > const &) const
 Fits to staggered scheme.
virtual int getNumberOfVectorElementsForDeformation () const
Public Member Functions inherited from NumLib::ExtrapolatableElement
virtual ~ExtrapolatableElement ()=default

Private Types

using IntegrationPointDataType

Private Attributes

SmallDeformationProcessData< DisplacementDim > & _process_data
std::vector< FractureProperty * > _fracture_props
std::vector< JunctionProperty * > _junction_props
std::unordered_map< int, int > _fracID_to_local
FractureProperty const * _fracture_property = nullptr
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data
NumLib::GenericIntegrationMethod const & _integration_method
std::vector< ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > _shape_matrices
MeshLib::Element const & _element
SecondaryData< typename ShapeMatrices::ShapeType > _secondary_data

Member Typedef Documentation

◆ ForceVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::ForceVectorType = typename HMatricesType::ForceVectorType

Definition at line 42 of file SmallDeformationLocalAssemblerFracture.h.

◆ GlobalDimVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::GlobalDimVectorType = Eigen::Matrix<double, DisplacementDim, 1>

Definition at line 43 of file SmallDeformationLocalAssemblerFracture.h.

◆ HMatricesType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::HMatricesType = HMatrixPolicyType<ShapeFunction, DisplacementDim>

Definition at line 34 of file SmallDeformationLocalAssemblerFracture.h.

◆ HMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::HMatrixType = typename HMatricesType::HMatrixType

Definition at line 36 of file SmallDeformationLocalAssemblerFracture.h.

◆ IntegrationPointDataType

◆ NodalDisplacementVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::NodalDisplacementVectorType
Initial value:
VectorType< _number_of_dof > NodalForceVectorType

Definition at line 39 of file SmallDeformationLocalAssemblerFracture.h.

◆ NodalForceVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::NodalForceVectorType = typename HMatricesType::NodalForceVectorType

Definition at line 38 of file SmallDeformationLocalAssemblerFracture.h.

◆ NodalMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::NodalMatrixType = typename ShapeMatricesType::NodalMatrixType

Definition at line 31 of file SmallDeformationLocalAssemblerFracture.h.

◆ NodalVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::NodalVectorType = typename ShapeMatricesType::NodalVectorType

Definition at line 32 of file SmallDeformationLocalAssemblerFracture.h.

◆ ShapeMatrices

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::ShapeMatrices = typename ShapeMatricesType::ShapeMatrices

Definition at line 33 of file SmallDeformationLocalAssemblerFracture.h.

◆ ShapeMatricesType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::ShapeMatricesType
Initial value:
EigenFixedShapeMatrixPolicy< ShapeFunction, GlobalDim > ShapeMatrixPolicyType

Definition at line 29 of file SmallDeformationLocalAssemblerFracture.h.

◆ StiffnessMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::StiffnessMatrixType = typename HMatricesType::StiffnessMatrixType

Definition at line 37 of file SmallDeformationLocalAssemblerFracture.h.

Constructor & Destructor Documentation

◆ SmallDeformationLocalAssemblerFracture() [1/3]

template<typename ShapeFunction, int DisplacementDim>
ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::SmallDeformationLocalAssemblerFracture ( SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim > const & )
delete

◆ SmallDeformationLocalAssemblerFracture() [2/3]

template<typename ShapeFunction, int DisplacementDim>
ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::SmallDeformationLocalAssemblerFracture ( SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim > && )
delete

◆ SmallDeformationLocalAssemblerFracture() [3/3]

template<typename ShapeFunction, int DisplacementDim>
ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::SmallDeformationLocalAssemblerFracture ( MeshLib::Element const & e,
std::size_t const n_variables,
std::size_t const local_matrix_size,
std::vector< unsigned > const & dofIndex_to_localIndex,
NumLib::GenericIntegrationMethod const & integration_method,
bool const is_axially_symmetric,
SmallDeformationProcessData< DisplacementDim > & process_data )

Definition at line 24 of file SmallDeformationLocalAssemblerFracture-impl.h.

42 _element(e)
43{
44 assert(_element.getDimension() == DisplacementDim - 1);
45
46 unsigned const n_integration_points =
47 _integration_method.getNumberOfPoints();
48
51
52 auto mat_id = (*_process_data.mesh_prop_materialIDs)[e.getID()];
53 auto frac_id = _process_data.map_materialID_to_fractureID[mat_id];
54 _fracture_property = &_process_data.fracture_properties[frac_id];
55 for (auto fid : process_data.vec_ele_connected_fractureIDs[e.getID()])
56 {
57 _fracID_to_local.insert({fid, _fracture_props.size()});
58 _fracture_props.push_back(&_process_data.fracture_properties[fid]);
59 }
60
61 _junction_props = process_data.vec_ele_connected_junctionIDs[e.getID()] |
63 [&](auto const jid)
64 { return &_process_data.junction_properties[jid]; }) |
66
67 for (unsigned ip = 0; ip < n_integration_points; ip++)
68 {
69 _ip_data.emplace_back(*_process_data.fracture_model);
70 auto const& sm = _shape_matrices[ip];
71 auto& ip_data = _ip_data[ip];
72
74 std::nullopt, _element.getID(),
77 _element, sm.N))};
78
79 ip_data.integration_weight =
80 _integration_method.getWeightedPoint(ip).getWeight() *
81 sm.integralMeasure * sm.detJ;
82 ip_data.h_matrices.setZero(DisplacementDim,
84
87 HMatrixType>(sm.N, ip_data.h_matrices);
88
89 // Initialize current time step values
90 ip_data.w.setZero(DisplacementDim);
91 ip_data.sigma.setZero(DisplacementDim);
92
93 // Previous time step values are not initialized and are set later.
94 ip_data.sigma_prev.resize(DisplacementDim);
95 ip_data.w_prev.resize(DisplacementDim);
96
98
99 ip_data.aperture0 = _fracture_property->aperture0(0, x_position)[0];
100 ip_data.aperture_prev = ip_data.aperture0;
101
102 _secondary_data.N[ip] = sm.N;
103 }
104}
std::vector< IntegrationPointDataType, Eigen::aligned_allocator< IntegrationPointDataType > > _ip_data
std::vector< ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices > > _shape_matrices
RowVectorType< ShapeFunction::NPOINTS > NodalRowVectorType

References ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface::SmallDeformationLocalAssemblerInterface(), _element, _fracID_to_local, _fracture_property, _fracture_props, _integration_method, _ip_data, _junction_props, _process_data, _secondary_data, _shape_matrices, ProcessLib::computeHMatrix(), MeshLib::Element::getID(), NumLib::interpolateCoordinates(), ProcessLib::LIE::SmallDeformation::SmallDeformationProcessData< DisplacementDim >::vec_ele_connected_fractureIDs, and ProcessLib::LIE::SmallDeformation::SmallDeformationProcessData< DisplacementDim >::vec_ele_connected_junctionIDs.

Member Function Documentation

◆ assemble()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::assemble ( double const ,
double const ,
std::vector< double > const & ,
std::vector< double > const & ,
std::vector< double > & ,
std::vector< double > & ,
std::vector< double > &  )
inlineoverridevirtual

Reimplemented from ProcessLib::LocalAssemblerInterface.

Definition at line 59 of file SmallDeformationLocalAssemblerFracture.h.

65 {
67 "SmallDeformationLocalAssembler: assembly without jacobian is not "
68 "implemented.");
69 }
#define OGS_FATAL(...)
Definition Error.h:19

References OGS_FATAL.

◆ assembleWithJacobian()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::assembleWithJacobian ( double const t,
double const dt,
Eigen::VectorXd const & local_u,
Eigen::VectorXd & local_b,
Eigen::MatrixXd & local_J )
overridevirtual

Reimplemented from ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface.

Definition at line 107 of file SmallDeformationLocalAssemblerFracture-impl.h.

111{
113 auto const n_fractures = _fracture_props.size();
114 auto const n_junctions = _junction_props.size();
115 auto const n_enrich_var = n_fractures + n_junctions;
116
117 //--------------------------------------------------------------------------------------
118 // prepare sub vectors, matrices for regular displacement (u) and
119 // displacement jumps (g)
120 //
121 // example with two fractures with one intersection:
122 // b = |b(g1)|
123 // |b(g2)|
124 //
125 // J = |J(g1,g1) J(g1,g2)|
126 // |J(g2,g1) J(g2,g2)|
127 //--------------------------------------------------------------------------------------
128
129 using BlockVectorType =
131 using BlockMatrixType =
133
135 for (unsigned i = 0; i < n_enrich_var; i++)
136 {
137 vec_local_b_g.push_back(
139 }
141 for (unsigned i = 0; i < n_enrich_var; i++)
142 {
143 for (unsigned j = 0; j < n_enrich_var; j++)
144 {
147 vec_local_J_gg[i].push_back(sub_gg);
148 }
149 }
150
152 for (unsigned i = 0; i < n_enrich_var; i++)
153 {
155 N_DOF_PER_VAR * i);
156 vec_nodal_g.push_back(sub);
157 }
158
159 //------------------------------------------------
160 // integration
161 //------------------------------------------------
162 // the index of a normal (normal to a fracture plane) component
163 // in a displacement vector
164 int const index_normal = DisplacementDim - 1;
165 auto const& R = _fracture_property->R;
166
167 unsigned const n_integration_points =
168 _integration_method.getNumberOfPoints();
169
171 x_position.setElementID(_element.getID());
172
173 for (unsigned ip = 0; ip < n_integration_points; ip++)
174 {
175 auto& ip_data = _ip_data[ip];
176 auto const& integration_weight = ip_data.integration_weight;
177 auto const& H = ip_data.h_matrices;
178 auto& mat = ip_data.fracture_material;
179 auto& sigma = ip_data.sigma;
180 auto const& sigma_prev = ip_data.sigma_prev;
181 auto& w = ip_data.w;
182 auto const& w_prev = ip_data.w_prev;
183 auto& C = ip_data.C;
184 auto& state = *ip_data.material_state_variables;
185 auto const& N = _secondary_data.N[ip];
186
191
192 // du = du^hat + sum_i(enrich^br_i(x) * [u]_i) + sum_i(enrich^junc_i(x)
193 // * [u]_i)
195 nodal_gap.setZero();
196 for (unsigned i = 0; i < n_enrich_var; i++)
197 {
199 }
200
201 // displacement jumps
202 w.noalias() = R * H * nodal_gap;
203
204 // total aperture
205 ip_data.aperture = ip_data.aperture0 + w[index_normal];
206
207 // local C, local stress
208 mat.computeConstitutiveRelation(
209 t, x_position, ip_data.aperture0,
211 // Replace with
212 // initial
213 // stress values
215
216 // r_[u] += H^T*Stress
217 for (unsigned i = 0; i < n_enrich_var; i++)
218 {
219 vec_local_b_g[i].noalias() -= levelsets[i] * H.transpose() *
220 R.transpose() * sigma *
222 }
223
224 // J_[u][u] += H^T*C*H
225 for (unsigned i = 0; i < n_enrich_var; i++)
226 {
227 for (unsigned j = 0; j < n_enrich_var; j++)
228 {
229 // J_[u][u] += (levelset * B)^T * C * (levelset * B)
230 vec_local_J_gg[i][j].noalias() +=
231 (levelsets[i] * H.transpose() * R.transpose()) * C *
233 }
234 }
235 }
236}
std::vector< double > duGlobalEnrichments(std::size_t this_frac_id, std::vector< FractureProperty * > const &frac_props, std::vector< JunctionProperty * > const &junction_props, std::unordered_map< int, int > const &fracID_to_local, Eigen::Vector3d const &x)
Eigen::Vector3d computePhysicalCoordinates(MeshLib::Element const &e, Eigen::MatrixBase< Derived > const &shape)

References _element, _fracID_to_local, _fracture_property, _fracture_props, _integration_method, _ip_data, _junction_props, _secondary_data, ProcessLib::LIE::computePhysicalCoordinates(), ProcessLib::LIE::duGlobalEnrichments(), and ParameterLib::SpatialPosition::setElementID().

◆ computeSecondaryVariableConcreteWithVector()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::computeSecondaryVariableConcreteWithVector ( const double t,
Eigen::VectorXd const & local_u )
overridevirtual

Implements ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface.

Definition at line 239 of file SmallDeformationLocalAssemblerFracture-impl.h.

242{
244 auto const n_fractures = _fracture_props.size();
245 auto const n_junctions = _junction_props.size();
246 auto const n_enrich_var = n_fractures + n_junctions;
247
248 auto const& R = _fracture_property->R;
249
250 // the index of a normal (normal to a fracture plane) component
251 // in a displacement vector
252 int const index_normal = DisplacementDim - 1;
253
254 unsigned const n_integration_points =
255 _integration_method.getNumberOfPoints();
256
258 auto const e_id = _element.getID();
259 x_position.setElementID(e_id);
260
262 for (unsigned i = 0; i < n_enrich_var; i++)
263 {
265 N_DOF_PER_VAR * i);
266 vec_nodal_g.push_back(sub);
267 }
268
269 for (unsigned ip = 0; ip < n_integration_points; ip++)
270 {
271 auto& ip_data = _ip_data[ip];
272 auto const& H = ip_data.h_matrices;
273 auto& mat = ip_data.fracture_material;
274 auto& sigma = ip_data.sigma;
275 auto const& sigma_prev = ip_data.sigma_prev;
276 auto& w = ip_data.w;
277 auto const& w_prev = ip_data.w_prev;
278 auto& C = ip_data.C;
279 auto& state = *ip_data.material_state_variables;
280 auto& b_m = ip_data.aperture;
281 auto const& N = _secondary_data.N[ip];
282
287
288 // du = du^hat + sum_i(enrich^br_i(x) * [u]_i) + sum_i(enrich^junc_i(x)
289 // * [u]_i)
291 nodal_gap.setZero();
292 for (unsigned i = 0; i < n_enrich_var; i++)
293 {
295 }
296
297 // displacement jumps in local coordinates
298 w.noalias() = R * H * nodal_gap;
299
300 // aperture
301 b_m = ip_data.aperture0 + w[index_normal];
302 if (b_m < 0.0)
303 {
304 OGS_FATAL(
305 "Element {:d}, gp {:d}: Fracture aperture is {:g}, but it must "
306 "be non-negative.",
307 _element.getID(), ip, b_m);
308 }
309
310 // local C, local stress
311 mat.computeConstitutiveRelation(
312 t, x_position, ip_data.aperture0,
314 // Replace with
315 // initial
316 // stress values
318 }
319
320 double ele_b = 0;
323
324 for (unsigned ip = 0; ip < n_integration_points; ip++)
325 {
326 auto const& ip_data = _ip_data[ip];
327 ele_b += ip_data.aperture;
328 ele_w += ip_data.w;
329 ele_sigma += ip_data.sigma;
330 }
334 (*_process_data.mesh_prop_b)[_element.getID()] = ele_b;
335
337 &(*_process_data.element_fracture_stresses)[e_id * DisplacementDim]) =
338 ele_sigma;
339
341 &(*_process_data.element_local_jumps)[e_id * DisplacementDim]) = ele_w;
342}

References _element, _fracID_to_local, _fracture_property, _fracture_props, _integration_method, _ip_data, _junction_props, _process_data, _secondary_data, ProcessLib::LIE::computePhysicalCoordinates(), ProcessLib::LIE::duGlobalEnrichments(), OGS_FATAL, and ParameterLib::SpatialPosition::setElementID().

◆ getIntPtEpsilon()

template<typename ShapeFunction, int DisplacementDim>
std::vector< double > const & ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::getIntPtEpsilon ( const double ,
std::vector< GlobalVector * > const & ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & ,
std::vector< double > & cache ) const
inlineoverridevirtual

Implements ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface.

Definition at line 111 of file SmallDeformationLocalAssemblerFracture.h.

116 {
117 cache.resize(0);
118 return cache;
119 }

◆ getIntPtFractureAperture()

template<typename ShapeFunction, int DisplacementDim>
std::vector< double > const & ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::getIntPtFractureAperture ( const double t,
std::vector< GlobalVector * > const & x,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & dof_table,
std::vector< double > & cache ) const
overridevirtual

◆ getIntPtFractureStress()

template<typename ShapeFunction, int DisplacementDim>
std::vector< double > const & ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::getIntPtFractureStress ( const double t,
std::vector< GlobalVector * > const & x,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & dof_table,
std::vector< double > & cache ) const
overridevirtual

◆ getIntPtSigma()

template<typename ShapeFunction, int DisplacementDim>
std::vector< double > const & ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::getIntPtSigma ( const double ,
std::vector< GlobalVector * > const & ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & ,
std::vector< double > & cache ) const
inlineoverridevirtual

Implements ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface.

Definition at line 101 of file SmallDeformationLocalAssemblerFracture.h.

106 {
107 cache.resize(0);
108 return cache;
109 }

◆ getShapeMatrix()

template<typename ShapeFunction, int DisplacementDim>
Eigen::Map< const Eigen::RowVectorXd > ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::getShapeMatrix ( const unsigned integration_point) const
inlineoverridevirtual

Provides the shape matrix at the given integration point.

Implements NumLib::ExtrapolatableElement.

Definition at line 92 of file SmallDeformationLocalAssemblerFracture.h.

94 {
95 auto const& N = _secondary_data.N[integration_point];
96
97 // assumes N is stored contiguously in memory
98 return Eigen::Map<const Eigen::RowVectorXd>(N.data(), N.size());
99 }

References _secondary_data.

◆ preTimestepConcrete()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::preTimestepConcrete ( std::vector< double > const & ,
double const ,
double const  )
inlineoverridevirtual

Reimplemented from ProcessLib::LocalAssemblerInterface.

Definition at line 76 of file SmallDeformationLocalAssemblerFracture.h.

79 {
80 unsigned const n_integration_points =
81 _integration_method.getNumberOfPoints();
82
83 for (unsigned ip = 0; ip < n_integration_points; ip++)
84 {
85 _ip_data[ip].pushBackState();
86 }
87 }

References _integration_method, and _ip_data.

Member Data Documentation

◆ _element

◆ _fracID_to_local

template<typename ShapeFunction, int DisplacementDim>
std::unordered_map<int, int> ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::_fracID_to_local
private

◆ _fracture_property

◆ _fracture_props

◆ _integration_method

◆ _ip_data

◆ _junction_props

◆ _process_data

◆ _secondary_data

◆ _shape_matrices

template<typename ShapeFunction, int DisplacementDim>
std::vector<ShapeMatrices, Eigen::aligned_allocator< typename ShapeMatricesType::ShapeMatrices> > ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >::_shape_matrices
private

The documentation for this class was generated from the following files: