37namespace RichardsMechanics
43template <
typename ShapeMatrixType>
46 std::vector<ShapeMatrixType, Eigen::aligned_allocator<ShapeMatrixType>>
N_u;
49template <
typename ShapeFunctionDisplacement,
typename ShapeFunctionPressure,
70 ShapeFunctionDisplacement::NPOINTS>;
90 bool const is_axially_symmetric,
95 int const process_id)
override;
97 void assemble(
double const t,
double const dt,
98 std::vector<double>
const& local_x,
99 std::vector<double>
const& local_x_prev,
100 std::vector<double>& local_M_data,
101 std::vector<double>& local_K_data,
102 std::vector<double>& local_rhs_data)
override;
105 std::vector<double>
const& local_x,
106 std::vector<double>
const& local_x_prev,
107 std::vector<double>& local_rhs_data,
108 std::vector<double>& local_Jac_data)
override;
111 double const t,
double const dt, Eigen::VectorXd
const& local_x,
112 Eigen::VectorXd
const& local_x_prev,
int const process_id,
113 std::vector<double>& local_b_data,
114 std::vector<double>& local_Jac_data)
override;
118 unsigned const n_integration_points =
121 for (
unsigned ip = 0; ip < n_integration_points; ip++)
129 ShapeFunctionDisplacement,
136 std::get<ProcessLib::ThermoRichardsMechanics::
137 ConstitutiveStress_StrainTemperature::
138 EffectiveStressData<DisplacementDim>>(SD)
146 double>::quiet_NaN() ,
162 double const t,
double const dt, Eigen::VectorXd
const& local_x,
163 Eigen::VectorXd
const& local_x_prev)
override;
166 const unsigned integration_point)
const override
171 return Eigen::Map<const Eigen::RowVectorXd>(N_u.data(), N_u.size());
194 double const t,
double const dt, Eigen::VectorXd
const& local_x,
195 Eigen::VectorXd
const& local_x_prev, std::vector<double>& local_b_data,
196 std::vector<double>& local_Jac_data);
220 double const t,
double const dt, Eigen::VectorXd
const& local_x,
221 Eigen::VectorXd
const& local_x_prev, std::vector<double>& local_b_data,
222 std::vector<double>& local_Jac_data);
226 double const t,
double const dt,
234 std::optional<MicroPorosityParameters>
const& micro_porosity_parameters,
238 material_state_data);
240 std::vector<IpData, Eigen::aligned_allocator<IpData>>
_ip_data;
243 typename ShapeMatricesTypeDisplacement::ShapeMatrices::ShapeType>
250 ShapeFunctionDisplacement::NPOINTS * DisplacementDim;
std::size_t getID() const
Returns the ID of the element.
unsigned getNumberOfPoints() const
VectorType< _kelvin_vector_size > KelvinVectorType
ShapeMatrixPolicyType< ShapeFunctionDisplacement, DisplacementDim > ShapeMatricesTypeDisplacement
static const int pressure_size
IntegrationPointData< BMatricesType, ShapeMatricesTypeDisplacement, ShapeMatricesTypePressure, DisplacementDim, ShapeFunctionDisplacement::NPOINTS > IpData
void assembleWithJacobianForPressureEquations(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
BMatrixPolicyType< ShapeFunctionDisplacement, DisplacementDim > BMatricesType
static const int displacement_index
static constexpr auto & N_u_op
SecondaryData< typename ShapeMatricesTypeDisplacement::ShapeMatrices::ShapeType > _secondary_data
void computeSecondaryVariableConcrete(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev) override
Eigen::Matrix< double, KelvinVectorSize, 1 > SymmetricTensor
RichardsMechanicsLocalAssembler(RichardsMechanicsLocalAssembler &&)=delete
static int const KelvinVectorSize
static void assembleWithJacobianEvalConstitutiveSetting(double const t, double const dt, ParameterLib::SpatialPosition const &x_position, IpData &ip_data, MPL::VariableArray &variables, MPL::VariableArray &variables_prev, MPL::Medium const *const medium, TemperatureData const T_data, CapillaryPressureData< DisplacementDim > const &p_cap_data, ConstitutiveData< DisplacementDim > &CD, StatefulData< DisplacementDim > &SD, StatefulDataPrev< DisplacementDim > const &SD_prev, std::optional< MicroPorosityParameters > const µ_porosity_parameters, MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material, ProcessLib::ThermoRichardsMechanics::MaterialStateData< DisplacementDim > &material_state_data)
static const int displacement_size
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_rhs_data, std::vector< double > &local_Jac_data) override
Eigen::Map< const Eigen::RowVectorXd > getShapeMatrix(const unsigned integration_point) const override
Provides the shape matrix at the given integration point.
typename BMatricesType::KelvinVectorType KelvinVectorType
typename ShapeMatricesTypePressure::GlobalDimMatrixType GlobalDimMatrixType
ShapeMatrixPolicyType< ShapeFunctionPressure, DisplacementDim > ShapeMatricesTypePressure
void initializeConcrete() override
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) override
RichardsMechanicsLocalAssembler(RichardsMechanicsLocalAssembler const &)=delete
void assembleWithJacobianForDeformationEquations(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
static const int pressure_index
void assemble(double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_rhs_data) override
void setInitialConditionsConcrete(Eigen::VectorXd const local_x, double const t, int const process_id) override
std::vector< IpData, Eigen::aligned_allocator< IpData > > _ip_data
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Eigen::Matrix< double, Eigen::MatrixBase< Derived >::RowsAtCompileTime, 1 > symmetricTensorToKelvinVector(Eigen::MatrixBase< Derived > const &v)
constexpr Eigen::CwiseNullaryOp< EigenBlockMatrixViewFunctor< D, M >, typename EigenBlockMatrixViewFunctor< D, M >::Matrix > eigenBlockMatrixView(const Eigen::MatrixBase< M > &matrix)
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
std::tuple< StrainData< DisplacementDim >, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature:: EffectiveStressData< DisplacementDim >, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature:: SwellingDataStateful< DisplacementDim >, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature:: MechanicalStrainData< DisplacementDim >, ProcessLib::ThermoRichardsMechanics::SaturationData, ProcessLib::ThermoRichardsMechanics::PorosityData, ProcessLib::ThermoRichardsMechanics::TransportPorosityData, MicroPressure, MicroSaturation > StatefulData
Data whose state must be tracked by the TRM process.
ProcessLib::ConstitutiveRelations::PrevStateOf< StatefulData< DisplacementDim > > StatefulDataPrev
std::tuple< StiffnessTensor< DisplacementDim >, ProcessLib::ThermoRichardsMechanics::PorosityData, Density, LiquidDensity, ProcessLib::ThermoRichardsMechanics::BiotData, ProcessLib::ThermoRichardsMechanics::SaturationDataDeriv, ProcessLib::ThermoRichardsMechanics::LiquidViscosityData, ProcessLib::ThermoRichardsMechanics::SolidCompressibilityData, ProcessLib::ThermoRichardsMechanics::BishopsData, PrevState< ProcessLib::ThermoRichardsMechanics::BishopsData >, ProcessLib::ThermoRichardsMechanics::PermeabilityData< DisplacementDim >, SaturationSecantDerivative > ConstitutiveData
Data that is needed for the equation system assembly.
MatrixType< GlobalDim, GlobalDim > GlobalDimMatrixType
RowVectorType< ShapeFunction::NPOINTS > NodalRowVectorType
std::vector< ShapeMatrixType, Eigen::aligned_allocator< ShapeMatrixType > > N_u
std::vector< StatefulData< DisplacementDim > > current_states_
std::vector< StatefulDataPrev< DisplacementDim > > prev_states_
RichardsMechanicsProcessData< DisplacementDim > & process_data_
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material_
std::vector< ProcessLib::ThermoRichardsMechanics::MaterialStateData< DisplacementDim > > material_states_
MeshLib::Element const & element_
NumLib::GenericIntegrationMethod const & integration_method_
std::vector< ShapeMatrixType, Eigen::aligned_allocator< ShapeMatrixType > > N_u