OGS
|
Definition at line 51 of file RichardsMechanicsFEM.h.
#include <RichardsMechanicsFEM.h>
Public Types | |
using | ShapeMatricesTypeDisplacement |
using | ShapeMatricesTypePressure |
using | GlobalDimMatrixType |
using | BMatricesType |
using | KelvinVectorType = typename BMatricesType::KelvinVectorType |
using | IpData |
using | Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize> |
using | SymmetricTensor = Eigen::Matrix<double, KelvinVectorSize, 1> |
Public Member Functions | |
RichardsMechanicsLocalAssembler (RichardsMechanicsLocalAssembler const &)=delete | |
RichardsMechanicsLocalAssembler (RichardsMechanicsLocalAssembler &&)=delete | |
RichardsMechanicsLocalAssembler (MeshLib::Element const &e, std::size_t const, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, RichardsMechanicsProcessData< DisplacementDim > &process_data) | |
void | setInitialConditionsConcrete (Eigen::VectorXd const local_x, double const t, int const process_id) override |
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 | 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 |
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 |
void | initializeConcrete () override |
void | computeSecondaryVariableConcrete (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev) 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::RichardsMechanics::LocalAssemblerInterface< DisplacementDim > | |
LocalAssemblerInterface (MeshLib::Element const &e, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, RichardsMechanicsProcessData< DisplacementDim > &process_data) | |
std::size_t | setIPDataInitialConditions (std::string_view name, double const *values, int const integration_order) |
std::vector< double > | getMaterialStateVariableInternalState (std::function< std::span< double >(typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables &)> const &get_values_span, int const &n_components) const |
unsigned | getNumberOfIntegrationPoints () const |
int | getMaterialID () const |
MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const & | getMaterialStateVariablesAt (unsigned integration_point) const |
void | postTimestepConcrete (Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const) override final |
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 | 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. | |
Public Member Functions inherited from NumLib::ExtrapolatableElement | |
virtual | ~ExtrapolatableElement ()=default |
Static Public Attributes | |
static int const | KelvinVectorSize |
static constexpr auto & | N_u_op |
Private Member Functions | |
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) |
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) |
Static Private Member Functions | |
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) |
Private Attributes | |
std::vector< IpData, Eigen::aligned_allocator< IpData > > | _ip_data |
SecondaryData< typename ShapeMatricesTypeDisplacement::ShapeMatrices::ShapeType > | _secondary_data |
Static Private Attributes | |
static const int | pressure_index = 0 |
static const int | pressure_size = ShapeFunctionPressure::NPOINTS |
static const int | displacement_index = ShapeFunctionPressure::NPOINTS |
static const int | displacement_size |
Additional Inherited Members | |
Static Public Member Functions inherited from ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim > | |
static auto | getReflectionDataForOutput () |
Protected Attributes inherited from ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim > | |
RichardsMechanicsProcessData< DisplacementDim > & | process_data_ |
NumLib::GenericIntegrationMethod const & | integration_method_ |
MeshLib::Element const & | element_ |
bool const | is_axially_symmetric_ |
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & | solid_material_ |
std::vector< StatefulData< DisplacementDim > > | current_states_ |
std::vector< StatefulDataPrev< DisplacementDim > > | prev_states_ |
std::vector< ProcessLib::ThermoRichardsMechanics::MaterialStateData< DisplacementDim > > | material_states_ |
std::vector< OutputData< DisplacementDim > > | output_data_ |
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::BMatricesType |
Definition at line 63 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::GlobalDimMatrixType |
Definition at line 60 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize> |
Definition at line 74 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::IpData |
Definition at line 67 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::KelvinVectorType = typename BMatricesType::KelvinVectorType |
Definition at line 65 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::ShapeMatricesTypeDisplacement |
Definition at line 55 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::ShapeMatricesTypePressure |
Definition at line 57 of file RichardsMechanicsFEM.h.
using ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::SymmetricTensor = Eigen::Matrix<double, KelvinVectorSize, 1> |
Definition at line 76 of file RichardsMechanicsFEM.h.
|
delete |
|
delete |
ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::RichardsMechanicsLocalAssembler | ( | MeshLib::Element const & | e, |
std::size_t const | , | ||
NumLib::GenericIntegrationMethod const & | integration_method, | ||
bool const | is_axially_symmetric, | ||
RichardsMechanicsProcessData< DisplacementDim > & | process_data ) |
Definition at line 122 of file RichardsMechanicsFEM-impl.h.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 342 of file RichardsMechanicsFEM-impl.h.
References MaterialPropertyLib::VariableArray::capillary_pressure, ProcessLib::LinearBMatrix::computeBMatrix(), MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::VariableArray::effective_pore_pressure, MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::formEigenTensor(), MaterialPropertyLib::formEigenTensor< 3 >(), MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::VariableArray::grain_compressibility, NumLib::interpolateXCoordinate(), MathLib::KelvinVector::kelvin_vector_dimensions(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::liquid_saturation, MaterialPropertyLib::VariableArray::mechanical_strain, OGS_FATAL, MaterialPropertyLib::VariableArray::porosity, ParameterLib::SpatialPosition::setElementID(), ParameterLib::SpatialPosition::setIntegrationPoint(), NumLib::detail::shapeFunctionInterpolate(), MaterialPropertyLib::VariableArray::solid_grain_pressure, MaterialPropertyLib::VariableArray::temperature, MathLib::KelvinVector::tensorToKelvin(), MaterialPropertyLib::VariableArray::total_stress, MaterialPropertyLib::VariableArray::transport_porosity, and MaterialPropertyLib::VariableArray::volumetric_strain.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 1071 of file RichardsMechanicsFEM-impl.h.
References MaterialPropertyLib::VariableArray::capillary_pressure, ProcessLib::LinearBMatrix::computeBMatrix(), ProcessLib::RichardsMechanics::createConstitutiveModels(), MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::VariableArray::gas_phase_pressure, NumLib::interpolateXCoordinate(), MathLib::KelvinVector::kelvin_vector_dimensions(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, ParameterLib::SpatialPosition::setElementID(), ParameterLib::SpatialPosition::setIntegrationPoint(), NumLib::detail::shapeFunctionInterpolate(), MaterialPropertyLib::VariableArray::temperature, and MathLib::KelvinVector::tensorToKelvin().
|
staticprivate |
Definition at line 754 of file RichardsMechanicsFEM-impl.h.
References MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::VariableArray::effective_pore_pressure, MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::formEigenTensor(), MaterialLib::Solids::MechanicsBase< DisplacementDim >::getBulkModulus(), ParameterLib::SpatialPosition::getElementID(), ParameterLib::SpatialPosition::getIntegrationPoint(), MaterialPropertyLib::VariableArray::grain_compressibility, MaterialPropertyLib::Medium::hasProperty(), MathLib::KelvinVector::kelvin_vector_dimensions(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MaterialPropertyLib::VariableArray::liquid_saturation, ProcessLib::ThermoRichardsMechanics::MaterialStateData< DisplacementDim >::material_state_variables, MaterialPropertyLib::VariableArray::mechanical_strain, OGS_FATAL, ProcessLib::RichardsMechanics::CapillaryPressureData< DisplacementDim >::p_cap, ProcessLib::RichardsMechanics::CapillaryPressureData< DisplacementDim >::p_cap_prev, MaterialPropertyLib::Medium::phase(), MaterialPropertyLib::VariableArray::porosity, MaterialPropertyLib::Medium::property(), MaterialPropertyLib::VariableArray::solid_grain_pressure, MaterialPropertyLib::VariableArray::total_stress, MaterialPropertyLib::VariableArray::transport_porosity, ProcessLib::RichardsMechanics::updateSwellingStressAndVolumetricStrain(), MaterialPropertyLib::Property::value(), and MaterialPropertyLib::VariableArray::volumetric_strain.
|
private |
Assemble local matrices and vectors arise from the linearized discretized weak form of the residual of the momentum balance equation,
\[ \nabla (\sigma - \alpha_b p \mathrm{I}) = f \]
where \( \sigma\) is the effective stress tensor, \(p\) is the pore pressure, \(\alpha_b\) is the Biot constant, \(\mathrm{I}\) is the identity tensor, and \(f\) is the body force.
t | Time |
dt | Time increment |
local_x | Nodal values of \(x\) of an element. |
local_x_prev | Nodal values of \(x_{prev}\) of an element. |
local_b_data | Right hand side vector of an element. |
local_Jac_data | Element Jacobian matrix for the Newton-Raphson method. |
Definition at line 1497 of file RichardsMechanicsFEM-impl.h.
References OGS_FATAL.
|
private |
Assemble local matrices and vectors arise from the linearized discretized weak form of the residual of the mass balance equation of single phase flow,
\[ \alpha \cdot{p} - \nabla (K (\nabla p + \rho g \nabla z) + \alpha_b \nabla \cdot \dot{u} = Q \]
where \( alpha\) is a coefficient may depend on storage or the fluid density change, \( \rho\) is the fluid density, \(g\) is the gravitational acceleration, \(z\) is the vertical coordinate, \(u\) is the displacement, and \(Q\) is the source/sink term.
t | Time |
dt | Time increment |
local_x | Nodal values of \(x\) of an element. |
local_x_prev | Nodal values of \(x_{prev}\) of an element. |
local_b_data | Right hand side vector of an element. |
local_Jac_data | Element Jacobian matrix for the Newton-Raphson method. |
Definition at line 1483 of file RichardsMechanicsFEM-impl.h.
References OGS_FATAL.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 1511 of file RichardsMechanicsFEM-impl.h.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 1535 of file RichardsMechanicsFEM-impl.h.
References MaterialPropertyLib::VariableArray::capillary_pressure, ProcessLib::LinearBMatrix::computeBMatrix(), MaterialPropertyLib::VariableArray::density, MaterialPropertyLib::VariableArray::effective_pore_pressure, MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::formEigenTensor(), MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::VariableArray::grain_compressibility, NumLib::interpolateToHigherOrderNodes(), NumLib::interpolateXCoordinate(), MathLib::KelvinVector::kelvin_vector_dimensions(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::liquid_saturation, MaterialPropertyLib::VariableArray::mechanical_strain, MaterialPropertyLib::VariableArray::porosity, ParameterLib::SpatialPosition::setElementID(), ParameterLib::SpatialPosition::setIntegrationPoint(), NumLib::detail::shapeFunctionInterpolate(), MaterialPropertyLib::VariableArray::solid_grain_pressure, MaterialPropertyLib::VariableArray::temperature, MaterialPropertyLib::VariableArray::total_stress, MaterialPropertyLib::VariableArray::transport_porosity, ProcessLib::RichardsMechanics::updateSwellingStressAndVolumetricStrain(), and MaterialPropertyLib::VariableArray::volumetric_strain.
|
inlineoverridevirtual |
Provides the shape matrix at the given integration point.
Implements NumLib::ExtrapolatableElement.
Definition at line 165 of file RichardsMechanicsFEM.h.
References ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_secondary_data, and ProcessLib::RichardsMechanics::SecondaryData< ShapeMatrixType >::N_u.
|
inlineoverridevirtual |
Set initial stress from parameter.
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 116 of file RichardsMechanicsFEM.h.
References ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_ip_data, ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::current_states_, ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::element_, MeshLib::Element::getID(), NumLib::GenericIntegrationMethod::getNumberOfPoints(), ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::integration_method_, NumLib::interpolateCoordinates(), ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::material_states_, ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::prev_states_, ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::process_data_, ProcessLib::RichardsMechanics::LocalAssemblerInterface< DisplacementDim >::solid_material_, and MathLib::KelvinVector::symmetricTensorToKelvinVector().
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 203 of file RichardsMechanicsFEM-impl.h.
References MaterialPropertyLib::VariableArray::capillary_pressure, MaterialPropertyLib::VariableArray::gas_phase_pressure, MathLib::KelvinVector::kelvin_vector_dimensions(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::liquid_saturation, ParameterLib::SpatialPosition::setElementID(), ParameterLib::SpatialPosition::setIntegrationPoint(), NumLib::detail::shapeFunctionInterpolate(), and MaterialPropertyLib::VariableArray::temperature.
|
private |
Definition at line 240 of file RichardsMechanicsFEM.h.
|
private |
Definition at line 244 of file RichardsMechanicsFEM.h.
|
staticprivate |
Definition at line 248 of file RichardsMechanicsFEM.h.
|
staticprivate |
Definition at line 249 of file RichardsMechanicsFEM.h.
|
static |
Definition at line 72 of file RichardsMechanicsFEM.h.
|
staticconstexpr |
Definition at line 78 of file RichardsMechanicsFEM.h.
|
staticprivate |
Definition at line 246 of file RichardsMechanicsFEM.h.
|
staticprivate |
Definition at line 247 of file RichardsMechanicsFEM.h.