OGS
ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim > Struct Template Reference

Detailed Description

template<int DisplacementDim>
struct ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >

Definition at line 26 of file LocalAssemblerInterface.h.

#include <LocalAssemblerInterface.h>

Inheritance diagram for ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >:
[legend]
Collaboration diagram for ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >:
[legend]

Classes

struct  IPDataAccessorForExtrapolation
 
struct  IPDataAccessorForIPWriter
 

Public Member Functions

 LocalAssemblerInterface (MeshLib::Element const &e, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< DisplacementDim > &process_data)
 
std::size_t setIPDataInitialConditions (std::string const &name, double const *values, int const integration_order)
 
unsigned getNumberOfIntegrationPoints () const
 
MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const & getMaterialStateVariablesAt (unsigned integration_point) const
 
void postTimestepConcrete (Eigen::VectorXd const &, double const, double const) override
 
- Public Member Functions inherited from ProcessLib::LocalAssemblerInterface
virtual ~LocalAssemblerInterface ()=default
 
void setInitialConditions (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, double const t, bool const use_monolithic_scheme, 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 assemble (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_xdot, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
 
virtual void assembleForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_xdot, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
 
virtual void assembleWithJacobian (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_xdot, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
 
virtual void assembleWithJacobianForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_xdot, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, 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_dot, 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, double const t, double const dt)
 
void postNonLinearSolver (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, GlobalVector const &xdot, double const t, double const dt, bool const use_monolithic_scheme, 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. More...
 
- Public Member Functions inherited from NumLib::ExtrapolatableElement
virtual Eigen::Map< const Eigen::RowVectorXd > getShapeMatrix (const unsigned integration_point) const =0
 Provides the shape matrix at the given integration point. More...
 
virtual ~ExtrapolatableElement ()=default
 

Static Public Member Functions

static std::vector< IPDataAccessorForExtrapolationgetIPDataAccessorsForExtrapolation ()
 
static std::vector< IPDataAccessorForIPWritergetIPDataAccessorsForIPWriter ()
 

Protected Attributes

ThermoRichardsMechanicsProcessData< DisplacementDim > & process_data_
 
std::vector< StatefulData< DisplacementDim > > current_states_
 
std::vector< StatefulData< DisplacementDim > > prev_states_
 
std::vector< MaterialStateData< DisplacementDim > > material_states_
 
NumLib::GenericIntegrationMethod const & integration_method_
 
MeshLib::Element const & element_
 
bool const is_axially_symmetric_
 
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material_
 
std::vector< OutputData< DisplacementDim > > output_data_
 

Private Member Functions

std::vector< double > getSigma () const
 
std::vector< double > const & getIntPtSigma (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > getSwellingStress () const
 
std::vector< double > const & getIntPtSwellingStress (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > getEpsilon () const
 
std::vector< double > const & getIntPtEpsilon (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > const & getIntPtDarcyVelocity (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > getSaturation () const
 
std::vector< double > const & getIntPtSaturation (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > getPorosity () const
 
std::vector< double > const & getIntPtPorosity (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > getTransportPorosity () const
 
std::vector< double > const & getIntPtTransportPorosity (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > const & getIntPtDryDensitySolid (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > const & getIntPtLiquidDensity (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 
std::vector< double > const & getIntPtViscosity (const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const
 

Constructor & Destructor Documentation

◆ LocalAssemblerInterface()

template<int DisplacementDim>
ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::LocalAssemblerInterface ( MeshLib::Element const &  e,
NumLib::GenericIntegrationMethod const &  integration_method,
bool const  is_axially_symmetric,
ThermoRichardsMechanicsProcessData< DisplacementDim > &  process_data 
)
inline

Definition at line 29 of file LocalAssemblerInterface.h.

34  : process_data_(process_data),
35  integration_method_(integration_method),
36  element_(e),
37  is_axially_symmetric_(is_axially_symmetric),
39  process_data_.solid_materials, process_data_.material_ids,
40  e.getID()))
41  {
42  unsigned const n_integration_points =
44 
45  current_states_.resize(n_integration_points);
46  prev_states_.resize(n_integration_points);
47  output_data_.resize(n_integration_points);
48 
49  material_states_.reserve(n_integration_points);
50  for (unsigned ip = 0; ip < n_integration_points; ++ip)
51  {
52  material_states_.emplace_back(solid_material_);
53  }
54  }
MechanicsBase< DisplacementDim > & selectSolidConstitutiveRelation(std::map< int, std::unique_ptr< MechanicsBase< DisplacementDim >>> const &constitutive_relations, MeshLib::PropertyVector< int > const *const material_ids, std::size_t const element_id)
std::vector< OutputData< DisplacementDim > > output_data_
ThermoRichardsMechanicsProcessData< DisplacementDim > & process_data_
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material_
std::vector< StatefulData< DisplacementDim > > current_states_
std::vector< MaterialStateData< DisplacementDim > > material_states_
std::vector< StatefulData< DisplacementDim > > prev_states_

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::current_states_, NumLib::GenericIntegrationMethod::getNumberOfPoints(), ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::integration_method_, ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::material_states_, ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::output_data_, ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::prev_states_, and ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::solid_material_.

Member Function Documentation

◆ getEpsilon()

template<int DisplacementDim>
std::vector<double> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getEpsilon ( ) const
inlineprivate

Definition at line 181 of file LocalAssemblerInterface.h.

182  {
183  constexpr int kelvin_vector_size =
185 
186  return transposeInPlace<kelvin_vector_size>(
187  [this](std::vector<double>& values)
188  { return getIntPtEpsilon(0, {}, {}, values); });
189  }
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Definition: KelvinVector.h:23
std::vector< double > const & getIntPtEpsilon(const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtEpsilon(), and MathLib::KelvinVector::kelvin_vector_dimensions().

◆ getIntPtDarcyVelocity()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtDarcyVelocity ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 203 of file LocalAssemblerInterface.h.

208  {
209  unsigned const n_integration_points =
211 
212  cache.clear();
213  auto cache_matrix = MathLib::createZeroedMatrix<Eigen::Matrix<
214  double, DisplacementDim, Eigen::Dynamic, Eigen::RowMajor>>(
215  cache, DisplacementDim, n_integration_points);
216 
217  for (unsigned ip = 0; ip < n_integration_points; ip++)
218  {
219  cache_matrix.col(ip).noalias() =
220  output_data_[ip].darcy_data.v_darcy;
221  }
222 
223  return cache;
224  }
Eigen::Map< Matrix > createZeroedMatrix(std::vector< double > &data, Eigen::MatrixXd::Index rows, Eigen::MatrixXd::Index cols)
Definition: EigenMapTools.h:32

References MathLib::createZeroedMatrix(), NumLib::GenericIntegrationMethod::getNumberOfPoints(), ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::integration_method_, and ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::output_data_.

◆ getIntPtDryDensitySolid()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtDryDensitySolid ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 286 of file LocalAssemblerInterface.h.

291  {
293  output_data_,
294  [](auto const& out) -> auto const& {
295  return out.rho_S_data.dry_density_solid;
296  },
297  cache);
298  }
std::vector< double > const & getIntegrationPointScalarData(IntegrationPointDataVector const &ip_data_vector, MemberType IpData::*const member, std::vector< double > &cache)

References ProcessLib::getIntegrationPointScalarData(), and ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::output_data_.

◆ getIntPtEpsilon()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtEpsilon ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 191 of file LocalAssemblerInterface.h.

196  {
197  return ProcessLib::getIntegrationPointKelvinVectorData<DisplacementDim>(
199  [](auto const& cs) -> auto const& { return cs.eps_data.eps; },
200  cache);
201  }

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::current_states_.

Referenced by ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getEpsilon().

◆ getIntPtLiquidDensity()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtLiquidDensity ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 300 of file LocalAssemblerInterface.h.

305  {
307  output_data_,
308  [](auto const& out) -> auto const& {
309  return out.rho_L_data.rho_LR;
310  },
311  cache);
312  }

References ProcessLib::getIntegrationPointScalarData(), and ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::output_data_.

◆ getIntPtPorosity()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtPorosity ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

◆ getIntPtSaturation()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtSaturation ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

◆ getIntPtSigma()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtSigma ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 133 of file LocalAssemblerInterface.h.

138  {
139  return ProcessLib::getIntegrationPointKelvinVectorData<DisplacementDim>(
140  current_states_, [](auto const& cs) -> auto const& {
141  return cs.s_mech_data.sigma_eff;
142  },
143  cache);
144  }

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::current_states_.

Referenced by ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getSigma().

◆ getIntPtSwellingStress()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtSwellingStress ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 156 of file LocalAssemblerInterface.h.

161  {
162  constexpr int kelvin_vector_size =
164  auto const n_integration_points = current_states_.size();
165 
166  cache.clear();
167  auto cache_mat = MathLib::createZeroedMatrix<Eigen::Matrix<
168  double, kelvin_vector_size, Eigen::Dynamic, Eigen::RowMajor>>(
169  cache, kelvin_vector_size, n_integration_points);
170 
171  for (unsigned ip = 0; ip < n_integration_points; ++ip)
172  {
173  auto const& sigma_sw = current_states_[ip].swelling_data.sigma_sw;
174  cache_mat.col(ip) =
176  }
177 
178  return cache;
179  }
Eigen::Matrix< double, 4, 1 > kelvinVectorToSymmetricTensor(Eigen::Matrix< double, 4, 1, Eigen::ColMajor, 4, 1 > const &v)

References MathLib::createZeroedMatrix(), ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::current_states_, MathLib::KelvinVector::kelvin_vector_dimensions(), and MathLib::KelvinVector::kelvinVectorToSymmetricTensor().

Referenced by ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getSwellingStress().

◆ getIntPtTransportPorosity()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtTransportPorosity ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

◆ getIntPtViscosity()

template<int DisplacementDim>
std::vector<double> const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtViscosity ( const double  ,
std::vector< GlobalVector * > const &  ,
std::vector< NumLib::LocalToGlobalIndexMap const * > const &  ,
std::vector< double > &  cache 
) const
inlineprivate

Definition at line 314 of file LocalAssemblerInterface.h.

319  {
321  output_data_, [](auto const& out) -> auto const& {
322  return out.mu_L_data.viscosity;
323  },
324  cache);
325  }

References ProcessLib::getIntegrationPointScalarData(), and ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::output_data_.

◆ getIPDataAccessorsForExtrapolation()

template<int DisplacementDim>
static std::vector<IPDataAccessorForExtrapolation> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIPDataAccessorsForExtrapolation ( )
inlinestatic

Definition at line 372 of file LocalAssemblerInterface.h.

373  {
374  using Self = LocalAssemblerInterface<DisplacementDim>;
375  constexpr auto kv_size =
377 
378  return {{"sigma", kv_size, &Self::getIntPtSigma},
379  {"swelling_stress", kv_size, &Self::getIntPtSwellingStress},
380  {"epsilon", kv_size, &Self::getIntPtEpsilon},
381  {"velocity", DisplacementDim, &Self::getIntPtDarcyVelocity},
382  {"saturation", 1, &Self::getIntPtSaturation},
383  {"porosity", 1, &Self::getIntPtPorosity},
384  {"transport_porosity", 1, &Self::getIntPtTransportPorosity},
385  {"dry_density_solid", 1, &Self::getIntPtDryDensitySolid},
386  {"liquid_density", 1, &Self::getIntPtLiquidDensity},
387  {"viscosity", 1, &Self::getIntPtViscosity}};
388  }

References MathLib::KelvinVector::kelvin_vector_dimensions().

◆ getIPDataAccessorsForIPWriter()

template<int DisplacementDim>
static std::vector<IPDataAccessorForIPWriter> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIPDataAccessorsForIPWriter ( )
inlinestatic

Definition at line 399 of file LocalAssemblerInterface.h.

400  {
401  using Self = LocalAssemblerInterface<DisplacementDim>;
402  constexpr auto kv_size =
404 
405  // TODO (naumov) remove ip suffix. Probably needs modification of the
406  // mesh properties, s.t. there is no "overlapping" with cell/point data.
407  // See getOrCreateMeshProperty.
408  return {
409  {"sigma_ip", kv_size, &Self::getSigma},
410  {"saturation_ip", 1, &Self::getSaturation},
411  {"porosity_ip", 1, &Self::getPorosity},
412  {"transport_porosity_ip", 1, &Self::getTransportPorosity},
413  {"swelling_stress_ip", kv_size, &Self::getSwellingStress},
414  {"epsilon_ip", kv_size, &Self::getEpsilon},
415  };
416  }

References MathLib::KelvinVector::kelvin_vector_dimensions().

Referenced by ProcessLib::ThermoRichardsMechanics::ThermoRichardsMechanicsProcess< DisplacementDim >::ThermoRichardsMechanicsProcess().

◆ getMaterialStateVariablesAt()

template<int DisplacementDim>
MaterialLib::Solids::MechanicsBase< DisplacementDim>::MaterialStateVariables const& ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getMaterialStateVariablesAt ( unsigned  integration_point) const
inline

Definition at line 336 of file LocalAssemblerInterface.h.

337  {
338  return *material_states_[integration_point].material_state_variables;
339  }

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::material_states_.

◆ getNumberOfIntegrationPoints()

template<int DisplacementDim>
unsigned ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getNumberOfIntegrationPoints ( ) const
inline

◆ getPorosity()

template<int DisplacementDim>
std::vector<double> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getPorosity ( ) const
inlineprivate

Definition at line 245 of file LocalAssemblerInterface.h.

246  {
247  std::vector<double> result;
248  getIntPtPorosity(0, {}, {}, result);
249  return result;
250  }
std::vector< double > const & getIntPtPorosity(const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtPorosity().

◆ getSaturation()

template<int DisplacementDim>
std::vector<double> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getSaturation ( ) const
inlineprivate

Definition at line 226 of file LocalAssemblerInterface.h.

227  {
228  std::vector<double> result;
229  getIntPtSaturation(0, {}, {}, result);
230  return result;
231  }
std::vector< double > const & getIntPtSaturation(const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtSaturation().

◆ getSigma()

template<int DisplacementDim>
std::vector<double> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getSigma ( ) const
inlineprivate

Definition at line 123 of file LocalAssemblerInterface.h.

124  {
125  constexpr int kelvin_vector_size =
127 
128  return transposeInPlace<kelvin_vector_size>(
129  [this](std::vector<double>& values)
130  { return getIntPtSigma(0, {}, {}, values); });
131  }
std::vector< double > const & getIntPtSigma(const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtSigma(), and MathLib::KelvinVector::kelvin_vector_dimensions().

◆ getSwellingStress()

template<int DisplacementDim>
std::vector<double> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getSwellingStress ( ) const
inlineprivate

Definition at line 146 of file LocalAssemblerInterface.h.

147  {
148  constexpr int kelvin_vector_size =
150 
151  return transposeInPlace<kelvin_vector_size>(
152  [this](std::vector<double>& values)
153  { return getIntPtSwellingStress(0, {}, {}, values); });
154  }
std::vector< double > const & getIntPtSwellingStress(const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtSwellingStress(), and MathLib::KelvinVector::kelvin_vector_dimensions().

◆ getTransportPorosity()

template<int DisplacementDim>
std::vector<double> ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getTransportPorosity ( ) const
inlineprivate

Definition at line 265 of file LocalAssemblerInterface.h.

266  {
267  std::vector<double> result;
268  getIntPtTransportPorosity(0, {}, {}, result);
269  return result;
270  }
std::vector< double > const & getIntPtTransportPorosity(const double, std::vector< GlobalVector * > const &, std::vector< NumLib::LocalToGlobalIndexMap const * > const &, std::vector< double > &cache) const

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::getIntPtTransportPorosity().

◆ postTimestepConcrete()

template<int DisplacementDim>
void ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::postTimestepConcrete ( Eigen::VectorXd const &  ,
double const  ,
double const   
)
inlineoverridevirtual

◆ setIPDataInitialConditions()

template<int DisplacementDim>
std::size_t ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::setIPDataInitialConditions ( std::string const &  name,
double const *  values,
int const  integration_order 
)
inline

Definition at line 56 of file LocalAssemblerInterface.h.

59  {
60  if (integration_order !=
61  static_cast<int>(integration_method_.getIntegrationOrder()))
62  {
63  OGS_FATAL(
64  "Setting integration point initial conditions; The integration "
65  "order of the local assembler for element {:d} is different "
66  "from the integration order in the initial condition.",
67  element_.getID());
68  }
69 
70  if (name == "sigma_ip")
71  {
72  if (process_data_.initial_stress != nullptr)
73  {
74  OGS_FATAL(
75  "Setting initial conditions for stress from integration "
76  "point data and from a parameter '{:s}' is not possible "
77  "simultaneously.",
78  process_data_.initial_stress->name);
79  }
81  DisplacementDim>(
82  values, current_states_,
83  [](auto& cs) -> auto& { return cs.s_mech_data.sigma_eff; });
84  }
85 
86  if (name == "saturation_ip")
87  {
89  values, current_states_,
90  [](auto& state) -> auto& { return state.S_L_data.S_L; });
91  }
92  if (name == "porosity_ip")
93  {
95  values, current_states_,
96  [](auto& state) -> auto& { return state.poro_data.phi; });
97  }
98  if (name == "transport_porosity_ip")
99  {
101  values, current_states_, [](auto& state) -> auto& {
102  return state.transport_poro_data.phi;
103  });
104  }
105  if (name == "swelling_stress_ip")
106  {
108  DisplacementDim>(
109  values, current_states_,
110  [](auto& cs) -> auto& { return cs.swelling_data.sigma_sw; });
111  }
112  if (name == "epsilon_ip")
113  {
115  DisplacementDim>(
116  values, current_states_,
117  [](auto& cs) -> auto& { return cs.eps_data.eps; });
118  }
119  return 0;
120  }
#define OGS_FATAL(...)
Definition: Error.h:26
virtual std::size_t getID() const final
Returns the ID of the element.
Definition: Element.h:89
std::size_t setIntegrationPointKelvinVectorData(double const *values, IntegrationPointDataVector &ip_data_vector, MemberType IpData::*const member)
std::size_t setIntegrationPointScalarData(double const *values, IntegrationPointDataVector &ip_data_vector, MemberType IpData::*const member)

References ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::current_states_, ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::element_, MeshLib::Element::getID(), NumLib::GenericIntegrationMethod::getIntegrationOrder(), ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::integration_method_, MaterialPropertyLib::name, OGS_FATAL, ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::process_data_, ProcessLib::setIntegrationPointKelvinVectorData(), and ProcessLib::setIntegrationPointScalarData().

Member Data Documentation

◆ current_states_

◆ element_

◆ integration_method_

◆ is_axially_symmetric_

template<int DisplacementDim>
bool const ProcessLib::ThermoRichardsMechanics::LocalAssemblerInterface< DisplacementDim >::is_axially_symmetric_
protected

Definition at line 432 of file LocalAssemblerInterface.h.

◆ material_states_

◆ output_data_

◆ prev_states_

◆ process_data_

◆ solid_material_


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