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

Detailed Description

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

Definition at line 53 of file SmallDeformationFEM.h.

#include <SmallDeformationFEM.h>

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

Public Types

using ShapeMatricesType
using NodalMatrixType = typename ShapeMatricesType::NodalMatrixType
using NodalVectorType = typename ShapeMatricesType::NodalVectorType
using ShapeMatrices = typename ShapeMatricesType::ShapeMatrices
using BMatricesType = BMatrixPolicyType<ShapeFunction, DisplacementDim>
using BMatrixType = typename BMatricesType::BMatrixType
using BBarMatrixType = typename BMatricesType::BBarMatrixType
using StiffnessMatrixType = typename BMatricesType::StiffnessMatrixType
using NodalForceVectorType = typename BMatricesType::NodalForceVectorType
using NodalDisplacementVectorType
using GMatricesType = GMatrixPolicyType<ShapeFunction, DisplacementDim>
using GradientVectorType = typename GMatricesType::GradientVectorType
using GradientMatrixType = typename GMatricesType::GradientMatrixType
using IpData

Public Member Functions

 SmallDeformationLocalAssembler (SmallDeformationLocalAssembler const &)=delete
 SmallDeformationLocalAssembler (SmallDeformationLocalAssembler &&)=delete
 SmallDeformationLocalAssembler (MeshLib::Element const &e, std::size_t const, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, SmallDeformationProcessData< DisplacementDim > &process_data)
void initializeConcrete () override
void setInitialConditionsConcrete (Eigen::VectorXd const local_x, double const, int const) override
ConstitutiveRelations::ConstitutiveData< DisplacementDim > updateConstitutiveRelations (BMatrixType const &B, Eigen::Ref< Eigen::VectorXd const > const &u, Eigen::Ref< Eigen::VectorXd const > const &u_prev, ParameterLib::SpatialPosition const &x_position, double const t, double const dt, typename ConstitutiveRelations::ConstitutiveSetting< DisplacementDim > &CS, MaterialPropertyLib::Medium const &medium, typename ConstitutiveRelations::StatefulData< DisplacementDim > &current_state, typename ConstitutiveRelations::StatefulDataPrev< DisplacementDim > const &prev_state, MaterialStateData< DisplacementDim > &material_state, typename ConstitutiveRelations::OutputData< DisplacementDim > &output_data) const
void assemble (double const, double const, std::vector< double > const &, std::vector< double > const &, std::vector< double > &, std::vector< double > &, std::vector< double > &) override
std::optional< BBarMatrixTypegetDilatationalBBarMatrix () const
void assembleWithJacobian (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) override
void postTimestepConcrete (Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, double const t, double const dt, int const) override
std::vector< double > const & getMaterialForces (std::vector< double > const &local_x, std::vector< double > &nodal_values) override
Eigen::Map< const Eigen::RowVectorXd > getShapeMatrix (const unsigned integration_point) const override
 Provides the shape matrix at the given integration point.
Public Member Functions inherited from ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >
 SmallDeformationLocalAssemblerInterface (MeshLib::Element const &e, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, SmallDeformationProcessData< DisplacementDim > &process_data)
std::size_t setIPDataInitialConditions (std::string_view name, double const *values, int const integration_order)
 Returns number of read integration points.
void computeSecondaryVariableConcrete (double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &) override
unsigned getNumberOfIntegrationPoints () const
int getMaterialID () const
std::vector< double > getMaterialStateVariableInternalState (std::function< std::span< double >(typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables &)> const &get_values_span, int const &n_components) const
MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const & getMaterialStateVariablesAt (unsigned integration_point) const
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 ProcessLib::SmallDeformation::MaterialForcesInterface
virtual ~MaterialForcesInterface ()=default
Public Member Functions inherited from NumLib::ExtrapolatableElement
virtual ~ExtrapolatableElement ()=default

Static Public Attributes

static constexpr auto & N_u_op

Static Private Member Functions

static constexpr auto localDOF (std::vector< double > const &x)

Private Attributes

std::vector< IpData, Eigen::aligned_allocator< IpData > > ip_data_
SecondaryData< typename ShapeMatrices::ShapeType > secondary_data_

Additional Inherited Members

Static Public Member Functions inherited from ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >
static auto getReflectionDataForOutput ()
Protected Attributes inherited from ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >
SmallDeformationProcessData< DisplacementDim > & process_data_
std::vector< MaterialStateData< DisplacementDim > > material_states_
std::vector< typename ConstitutiveRelations::StatefulData< DisplacementDim > > current_states_
std::vector< typename ConstitutiveRelations::StatefulDataPrev< DisplacementDim > > prev_states_
std::vector< typename ConstitutiveRelations::OutputData< DisplacementDim > > output_data_
NumLib::GenericIntegrationMethod const & integration_method_
MeshLib::Element const & element_
bool const is_axially_symmetric_
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material_
ConstitutiveRelations::ConstitutiveSetting< DisplacementDim > constitutive_setting

Member Typedef Documentation

◆ BBarMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::BBarMatrixType = typename BMatricesType::BBarMatrixType

Definition at line 65 of file SmallDeformationFEM.h.

◆ BMatricesType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::BMatricesType = BMatrixPolicyType<ShapeFunction, DisplacementDim>

Definition at line 62 of file SmallDeformationFEM.h.

◆ BMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::BMatrixType = typename BMatricesType::BMatrixType

Definition at line 64 of file SmallDeformationFEM.h.

◆ GMatricesType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::GMatricesType = GMatrixPolicyType<ShapeFunction, DisplacementDim>

Definition at line 71 of file SmallDeformationFEM.h.

◆ GradientMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::GradientMatrixType = typename GMatricesType::GradientMatrixType

Definition at line 73 of file SmallDeformationFEM.h.

◆ GradientVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::GradientVectorType = typename GMatricesType::GradientVectorType

Definition at line 72 of file SmallDeformationFEM.h.

◆ IpData

◆ NodalDisplacementVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::NodalDisplacementVectorType
Initial value:
VectorType< _number_of_dof > NodalForceVectorType
Rhs residual.

Definition at line 68 of file SmallDeformationFEM.h.

◆ NodalForceVectorType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::NodalForceVectorType = typename BMatricesType::NodalForceVectorType

Definition at line 67 of file SmallDeformationFEM.h.

◆ NodalMatrixType

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

Definition at line 59 of file SmallDeformationFEM.h.

◆ NodalVectorType

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

Definition at line 60 of file SmallDeformationFEM.h.

◆ ShapeMatrices

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

Definition at line 61 of file SmallDeformationFEM.h.

◆ ShapeMatricesType

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

Definition at line 57 of file SmallDeformationFEM.h.

◆ StiffnessMatrixType

template<typename ShapeFunction, int DisplacementDim>
using ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::StiffnessMatrixType = typename BMatricesType::StiffnessMatrixType

Definition at line 66 of file SmallDeformationFEM.h.

Constructor & Destructor Documentation

◆ SmallDeformationLocalAssembler() [1/3]

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

◆ SmallDeformationLocalAssembler() [2/3]

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

◆ SmallDeformationLocalAssembler() [3/3]

template<typename ShapeFunction, int DisplacementDim>
ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::SmallDeformationLocalAssembler ( MeshLib::Element const & e,
std::size_t const ,
NumLib::GenericIntegrationMethod const & integration_method,
bool const is_axially_symmetric,
SmallDeformationProcessData< DisplacementDim > & process_data )
inline

Definition at line 84 of file SmallDeformationFEM.h.

92 {
93 unsigned const n_integration_points =
94 this->integration_method_.getNumberOfPoints();
95
98
99 auto const shape_matrices =
103
104 for (unsigned ip = 0; ip < n_integration_points; ip++)
105 {
106 auto& ip_data = ip_data_[ip];
107 auto const& sm = shape_matrices[ip];
108 ip_data_[ip].integration_weight =
109 this->integration_method_.getWeightedPoint(ip).getWeight() *
110 sm.integralMeasure * sm.detJ;
111
112 ip_data.N_u = sm.N;
113 ip_data.dNdx_u = sm.dNdx;
114
116 }
117 }
SecondaryData< typename ShapeMatrices::ShapeType > secondary_data_
ShapeMatrixPolicyType< ShapeFunction, DisplacementDim > ShapeMatricesType
std::vector< IpData, Eigen::aligned_allocator< IpData > > ip_data_
SmallDeformationLocalAssemblerInterface(MeshLib::Element const &e, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, SmallDeformationProcessData< DisplacementDim > &process_data)

References ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::SmallDeformationLocalAssemblerInterface(), NumLib::initShapeMatrices(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::integration_method_, ip_data_, and secondary_data_.

Member Function Documentation

◆ assemble()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< 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 233 of file SmallDeformationFEM.h.

239 {
240 OGS_FATAL(
241 "SmallDeformationLocalAssembler: assembly without jacobian is not "
242 "implemented.");
243 }
#define OGS_FATAL(...)
Definition Error.h:19

References OGS_FATAL.

◆ assembleWithJacobian()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::assembleWithJacobian ( double const t,
double const dt,
std::vector< double > const & local_x,
std::vector< double > const & local_x_prev,
std::vector< double > & local_b_data,
std::vector< double > & local_Jac_data )
inlineoverridevirtual

Reimplemented from ProcessLib::LocalAssemblerInterface.

Definition at line 259 of file SmallDeformationFEM.h.

264 {
265 auto const local_matrix_size = local_x.size();
266
269
272
273 auto [u] = localDOF(local_x);
274 auto [u_prev] = localDOF(local_x_prev);
275
276 unsigned const n_integration_points =
277 this->integration_method_.getNumberOfPoints();
278
281 auto const& medium =
282 *this->process_data_.media_map.getMedium(this->element_.getID());
283
285
286 for (unsigned ip = 0; ip < n_integration_points; ip++)
287 {
288 auto const& w = ip_data_[ip].integration_weight;
289 auto const& N = ip_data_[ip].N_u;
290 auto const& dNdx = ip_data_[ip].dNdx_u;
291
293 std::nullopt, this->element_.getID(),
297 this->element_, N))};
298
299 auto const x_coord =
300 x_position.getCoordinates().value()[0]; // r for axisymetric
305
306 auto const CD = updateConstitutiveRelations(
308 this->current_states_[ip], this->prev_states_[ip],
309 this->material_states_[ip], this->output_data_[ip]);
310
311 auto const& sigma =
313 .sigma;
315 auto const& C =
319
320 local_b.noalias() -=
321 (B.transpose() * sigma - N_u_op(N).transpose() * b) * w;
322 local_Jac.noalias() += B.transpose() * C * B * w;
323 }
324 }
MatrixType< _kelvin_vector_size, _number_of_dof > BMatrixType
ConstitutiveRelations::ConstitutiveData< DisplacementDim > updateConstitutiveRelations(BMatrixType const &B, Eigen::Ref< Eigen::VectorXd const > const &u, Eigen::Ref< Eigen::VectorXd const > const &u_prev, ParameterLib::SpatialPosition const &x_position, double const t, double const dt, typename ConstitutiveRelations::ConstitutiveSetting< DisplacementDim > &CS, MaterialPropertyLib::Medium const &medium, typename ConstitutiveRelations::StatefulData< DisplacementDim > &current_state, typename ConstitutiveRelations::StatefulDataPrev< DisplacementDim > const &prev_state, MaterialStateData< DisplacementDim > &material_state, typename ConstitutiveRelations::OutputData< DisplacementDim > &output_data) const
std::optional< BBarMatrixType > getDilatationalBBarMatrix() const
static constexpr auto localDOF(std::vector< double > const &x)
Eigen::Map< Vector > createZeroedVector(std::vector< double > &data, Eigen::VectorXd::Index size)
Eigen::Map< Matrix > createZeroedMatrix(std::vector< double > &data, Eigen::MatrixXd::Index rows, Eigen::MatrixXd::Index cols)
ConstitutiveRelations::ConstitutiveSetting< DisplacementDim > constitutive_setting
std::vector< typename ConstitutiveRelations::StatefulDataPrev< DisplacementDim > > prev_states_
std::vector< typename ConstitutiveRelations::StatefulData< DisplacementDim > > current_states_
std::vector< typename ConstitutiveRelations::OutputData< DisplacementDim > > output_data_

References ProcessLib::LinearBMatrix::computeBMatrixPossiblyWithBbar(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::constitutive_setting, MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::current_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::element_, ParameterLib::SpatialPosition::getCoordinates(), getDilatationalBBarMatrix(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::integration_method_, NumLib::interpolateCoordinates(), ip_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::is_axially_symmetric_, localDOF(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::material_states_, N_u_op, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::output_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::prev_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::process_data_, and updateConstitutiveRelations().

◆ getDilatationalBBarMatrix()

◆ getMaterialForces()

template<typename ShapeFunction, int DisplacementDim>
std::vector< double > const & ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::getMaterialForces ( std::vector< double > const & local_x,
std::vector< double > & nodal_values )
inlineoverridevirtual

Implements ProcessLib::SmallDeformation::MaterialForcesInterface.

Definition at line 376 of file SmallDeformationFEM.h.

References ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::current_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::element_, ProcessLib::SmallDeformation::getMaterialForces(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::integration_method_, ip_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::is_axially_symmetric_, and ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::output_data_.

◆ getShapeMatrix()

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

Provides the shape matrix at the given integration point.

Implements NumLib::ExtrapolatableElement.

Definition at line 390 of file SmallDeformationFEM.h.

392 {
393 auto const& N = secondary_data_.N[integration_point];
394
395 // assumes N is stored contiguously in memory
396 return Eigen::Map<const Eigen::RowVectorXd>(N.data(), N.size());
397 }

References secondary_data_.

◆ initializeConcrete()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::initializeConcrete ( )
inlineoverridevirtual

Set initial stress from parameter.

Reimplemented from ProcessLib::LocalAssemblerInterface.

Definition at line 119 of file SmallDeformationFEM.h.

120 {
121 unsigned const n_integration_points =
122 this->integration_method_.getNumberOfPoints();
123 for (unsigned ip = 0; ip < n_integration_points; ip++)
124 {
125 auto const& ip_data = ip_data_[ip];
126
128 std::nullopt, this->element_.getID(),
132 this->element_, ip_data.N_u))};
133
135 if (this->process_data_.initial_stress != nullptr)
136 {
138 .sigma.noalias() =
140 DisplacementDim>((*this->process_data_.initial_stress)(
142 double>::quiet_NaN() /* time independent */,
143 x_position));
144 }
145
146 double const t = 0; // TODO (naumov) pass t from top
147 auto& material_state = this->material_states_[ip];
148 this->solid_material_.initializeInternalStateVariables(
149 t, x_position, *material_state.material_state_variables);
150
154
155 material_state.pushBackState();
156 }
157
158 for (unsigned ip = 0; ip < n_integration_points; ip++)
159 {
160 this->prev_states_[ip] = this->current_states_[ip];
161 }
162 }
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material_

References ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::constitutive_setting, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::current_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::element_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::integration_method_, NumLib::interpolateCoordinates(), ip_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::material_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::prev_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::process_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::solid_material_, and MathLib::KelvinVector::symmetricTensorToKelvinVector().

◆ localDOF()

template<typename ShapeFunction, int DisplacementDim>
constexpr auto ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::localDOF ( std::vector< double > const & x)
inlinestaticconstexprprivate

Definition at line 400 of file SmallDeformationFEM.h.

References NumLib::localDOF().

Referenced by assembleWithJacobian().

◆ postTimestepConcrete()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::postTimestepConcrete ( Eigen::VectorXd const & local_x,
Eigen::VectorXd const & local_x_prev,
double const t,
double const dt,
int const  )
inlineoverridevirtual

Reimplemented from ProcessLib::LocalAssemblerInterface.

Definition at line 326 of file SmallDeformationFEM.h.

330 {
331 unsigned const n_integration_points =
332 this->integration_method_.getNumberOfPoints();
333
336
337 auto const& medium =
338 *this->process_data_.media_map.getMedium(this->element_.getID());
339
341
342 for (unsigned ip = 0; ip < n_integration_points; ip++)
343 {
344 auto const& N = ip_data_[ip].N_u;
345 auto const& dNdx = ip_data_[ip].dNdx_u;
346
348 std::nullopt, this->element_.getID(),
352 this->element_, N))};
353
354 auto const x_coord =
355 x_position.getCoordinates().value()[0]; // r for axisymetric
360
364 this->prev_states_[ip], this->material_states_[ip],
365 this->output_data_[ip]);
366
367 this->material_states_[ip].pushBackState();
368 }
369
370 for (unsigned ip = 0; ip < n_integration_points; ip++)
371 {
372 this->prev_states_[ip] = this->current_states_[ip];
373 }
374 }

References ProcessLib::LinearBMatrix::computeBMatrixPossiblyWithBbar(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::constitutive_setting, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::current_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::element_, ParameterLib::SpatialPosition::getCoordinates(), getDilatationalBBarMatrix(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::integration_method_, NumLib::interpolateCoordinates(), ip_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::is_axially_symmetric_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::material_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::output_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::prev_states_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::process_data_, and updateConstitutiveRelations().

◆ setInitialConditionsConcrete()

template<typename ShapeFunction, int DisplacementDim>
void ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::setInitialConditionsConcrete ( Eigen::VectorXd const local_x,
double const ,
int const  )
inlineoverridevirtual

Reimplemented from ProcessLib::LocalAssemblerInterface.

Definition at line 164 of file SmallDeformationFEM.h.

167 {
168 unsigned const n_integration_points =
169 this->integration_method_.getNumberOfPoints();
171
172 for (unsigned ip = 0; ip < n_integration_points; ip++)
173 {
174 auto const& N = ip_data_[ip].N_u;
175 auto const& dNdx = ip_data_[ip].dNdx_u;
177 std::nullopt, this->element_.getID(),
181 this->element_, N))};
182
183 auto const x_coord =
184 x_position.getCoordinates().value()[0]; // r for axisymetric
189
191 .eps.noalias() = B * local_x;
192 }
193 }

References ProcessLib::LinearBMatrix::computeBMatrixPossiblyWithBbar(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::element_, ParameterLib::SpatialPosition::getCoordinates(), getDilatationalBBarMatrix(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::integration_method_, NumLib::interpolateCoordinates(), ip_data_, ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::is_axially_symmetric_, and ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::output_data_.

◆ updateConstitutiveRelations()

template<typename ShapeFunction, int DisplacementDim>
ConstitutiveRelations::ConstitutiveData< DisplacementDim > ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::updateConstitutiveRelations ( BMatrixType const & B,
Eigen::Ref< Eigen::VectorXd const > const & u,
Eigen::Ref< Eigen::VectorXd const > const & u_prev,
ParameterLib::SpatialPosition const & x_position,
double const t,
double const dt,
typename ConstitutiveRelations::ConstitutiveSetting< DisplacementDim > & CS,
MaterialPropertyLib::Medium const & medium,
typename ConstitutiveRelations::StatefulData< DisplacementDim > & current_state,
typename ConstitutiveRelations::StatefulDataPrev< DisplacementDim > const & prev_state,
MaterialStateData< DisplacementDim > & material_state,
typename ConstitutiveRelations::OutputData< DisplacementDim > & output_data ) const
inline

Definition at line 196 of file SmallDeformationFEM.h.

211 {
212 double const T_ref =
213 this->process_data_.reference_temperature
214 ? (*this->process_data_.reference_temperature)(t, x_position)[0]
216
217 auto models =
219 this->process_data_, this->solid_material_);
221 tmp;
223
224 CS.eval(models, t, dt, x_position, //
225 medium, //
226 T_ref, B * u, B * u_prev, //
228 CD);
229
230 return CD;
231 }
ConstitutiveModels< DisplacementDim > createConstitutiveModels(SDProcessData const &process_data, SolidConstitutiveRelation< DisplacementDim > const &solid_material)

References ProcessLib::SmallDeformation::ConstitutiveRelations::createConstitutiveModels(), ProcessLib::SmallDeformation::ConstitutiveRelations::ConstitutiveSetting< DisplacementDim >::eval(), ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::process_data_, and ProcessLib::SmallDeformation::SmallDeformationLocalAssemblerInterface< DisplacementDim >::solid_material_.

Referenced by assembleWithJacobian(), and postTimestepConcrete().

Member Data Documentation

◆ ip_data_

◆ N_u_op

template<typename ShapeFunction, int DisplacementDim>
auto& ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::N_u_op
staticconstexpr
Initial value:
DisplacementDim, typename ShapeMatricesType::NodalRowVectorType>
constexpr Eigen::CwiseNullaryOp< EigenBlockMatrixViewFunctor< D, M >, typename EigenBlockMatrixViewFunctor< D, M >::Matrix > eigenBlockMatrixView(const Eigen::MatrixBase< M > &matrix)
RowVectorType< ShapeFunction::NPOINTS > NodalRowVectorType

Definition at line 77 of file SmallDeformationFEM.h.

Referenced by assembleWithJacobian().

◆ secondary_data_

template<typename ShapeFunction, int DisplacementDim>
SecondaryData<typename ShapeMatrices::ShapeType> ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >::secondary_data_
private

Definition at line 409 of file SmallDeformationFEM.h.

Referenced by SmallDeformationLocalAssembler(), and getShapeMatrix().


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