Definition at line 166 of file HydroMechanicsFEM.h.
#include <HydroMechanicsFEM.h>
Public Types | |
using | ShapeMatricesTypeDisplacement |
using | ShapeMatricesTypePressure |
using | Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize> |
using | SymmetricTensor = Eigen::Matrix<double, KelvinVectorSize, 1> |
Public Member Functions | |
HydroMechanicsLocalAssembler (HydroMechanicsLocalAssembler const &)=delete | |
HydroMechanicsLocalAssembler (HydroMechanicsLocalAssembler &&)=delete | |
HydroMechanicsLocalAssembler (MeshLib::Element const &e, std::size_t const, NumLib::GenericIntegrationMethod const &integration_method, bool const is_axially_symmetric, HydroMechanicsProcessData< DisplacementDim > &process_data) | |
std::size_t | setIPDataInitialConditions (std::string_view const name, double const *values, int const integration_order) override |
Returns number of read integration points. | |
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, 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 (const double 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 | postTimestepConcrete (Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, double const t, double const dt, int const process_id) override |
void | computeSecondaryVariableConcrete (double const t, double const dt, Eigen::VectorXd const &local_xs, Eigen::VectorXd const &local_x_prev) override |
void | postNonLinearSolverConcrete (Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, double const t, double const dt, int const process_id) override |
void | setInitialConditionsConcrete (Eigen::VectorXd const local_x, double const t, int const process_id) 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 > | getSigma () const override |
std::vector< double > | getEpsilon () const override |
std::vector< double > | getStrainRateVariable () const override |
std::vector< double > const & | getIntPtDarcyVelocity (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 & | 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 |
![]() | |
![]() | |
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. | |
virtual std::optional< VectorSegment > | getVectorDeformationSegment () const |
![]() | |
virtual | ~ExtrapolatableElement ()=default |
Static Public Attributes | |
static int const | KelvinVectorSize |
static constexpr auto & | N_u_op |
Private Types | |
using | BMatricesType |
using | IpData |
Private Member Functions | |
void | assembleWithJacobianForDeformationEquations (const double t, double const dt, Eigen::VectorXd const &local_x, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) |
void | assembleWithJacobianForPressureEquations (const double 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) |
unsigned | getNumberOfIntegrationPoints () const override |
int | getMaterialID () const override |
MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const & | getMaterialStateVariablesAt (unsigned integration_point) const override |
Private Attributes | |
HydroMechanicsProcessData< DisplacementDim > & | _process_data |
std::vector< IpData, Eigen::aligned_allocator< IpData > > | _ip_data |
NumLib::GenericIntegrationMethod const & | _integration_method |
MeshLib::Element const & | _element |
bool const | _is_axially_symmetric |
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 |
|
private |
Definition at line 386 of file HydroMechanicsFEM.h.
using ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize> |
Definition at line 179 of file HydroMechanicsFEM.h.
|
private |
Definition at line 388 of file HydroMechanicsFEM.h.
using ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::ShapeMatricesTypeDisplacement |
Definition at line 170 of file HydroMechanicsFEM.h.
using ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::ShapeMatricesTypePressure |
Definition at line 174 of file HydroMechanicsFEM.h.
using ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::SymmetricTensor = Eigen::Matrix<double, KelvinVectorSize, 1> |
Definition at line 181 of file HydroMechanicsFEM.h.
|
delete |
|
delete |
ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::HydroMechanicsLocalAssembler | ( | MeshLib::Element const & | e, |
std::size_t const | , | ||
NumLib::GenericIntegrationMethod const & | integration_method, | ||
bool const | is_axially_symmetric, | ||
HydroMechanicsProcessData< DisplacementDim > & | process_data ) |
Definition at line 37 of file HydroMechanicsFEM-impl.h.
References ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_integration_method, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_ip_data, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_process_data, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_secondary_data, MeshLib::Element::getID(), NumLib::GenericIntegrationMethod::getNumberOfPoints(), MathLib::WeightedPoint::getWeight(), NumLib::GenericIntegrationMethod::getWeightedPoint(), NumLib::initShapeMatrices(), MathLib::KelvinVector::kelvin_vector_dimensions(), ProcessLib::HydroMechanics::SecondaryData< ShapeMatrixType >::N_u, and MaterialLib::Solids::selectSolidConstitutiveRelation().
|
inlineoverridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 203 of file HydroMechanicsFEM.h.
References OGS_FATAL.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 103 of file HydroMechanicsFEM-impl.h.
References ProcessLib::LinearBMatrix::computeBMatrix(), MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::formEigenTensor(), MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::getFluidDensityAndViscosity(), NumLib::interpolateXCoordinate(), MathLib::KelvinVector::kelvin_vector_dimensions(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MathLib::KelvinVector::liftVectorToKelvin(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::mechanical_strain, MaterialLib::Solids::selectSolidConstitutiveRelation(), ParameterLib::SpatialPosition::setElementID(), MaterialPropertyLib::VariableArray::temperature, MaterialPropertyLib::VariableArray::total_stress, 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 of all coupled processes. |
local_b_data | Right hand side vector of an element. |
local_Jac_data | Element Jacobian matrix for the Newton-Raphson method. |
Definition at line 630 of file HydroMechanicsFEM-impl.h.
References ProcessLib::LinearBMatrix::computeBMatrix(), MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::getFluidDensity(), NumLib::interpolateXCoordinate(), MathLib::KelvinVector::kelvin_vector_dimensions(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::mechanical_strain, ParameterLib::SpatialPosition::setElementID(), NumLib::detail::shapeFunctionInterpolate(), and MaterialPropertyLib::VariableArray::temperature.
|
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 of all coupled processes. |
local_x_prev | Nodal values of x^{t-1} of an element of all coupled processes. |
local_b_data | Right hand side vector of an element. |
local_Jac_data | Element Jacobian matrix for the Newton-Raphson method. |
Definition at line 459 of file HydroMechanicsFEM-impl.h.
References MathLib::createZeroedMatrix(), MathLib::createZeroedVector(), MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::formEigenTensor(), MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::getFluidDensityAndViscosity(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::mechanical_strain, MaterialLib::Solids::selectSolidConstitutiveRelation(), ParameterLib::SpatialPosition::setElementID(), MaterialPropertyLib::VariableArray::temperature, MaterialPropertyLib::VariableArray::total_stress, and MaterialPropertyLib::VariableArray::volumetric_strain.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 730 of file HydroMechanicsFEM-impl.h.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 1079 of file HydroMechanicsFEM-impl.h.
References MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::getSymmetricTensor(), NumLib::interpolateToHigherOrderNodes(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MathLib::KelvinVector::kelvinVectorToTensor(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::mechanical_strain, ParameterLib::SpatialPosition::setElementID(), MathLib::KelvinVector::tensorToKelvin(), MaterialPropertyLib::VariableArray::total_stress, and MaterialPropertyLib::VariableArray::volumetric_strain.
|
overridevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 1035 of file HydroMechanicsFEM-impl.h.
References MathLib::createZeroedMatrix(), MathLib::KelvinVector::kelvin_vector_dimensions(), and MathLib::KelvinVector::kelvinVectorToSymmetricTensor().
|
overridevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 370 of file HydroMechanicsFEM-impl.h.
References MathLib::createZeroedMatrix(), MaterialPropertyLib::VariableArray::equivalent_plastic_strain, MaterialPropertyLib::formEigenTensor(), MaterialPropertyLib::VariableArray::gas_phase_pressure, MaterialPropertyLib::getFluidDensityAndViscosity(), NumLib::getIndices(), MathLib::KelvinVector::kelvinVectorToSymmetricTensor(), MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialPropertyLib::VariableArray::mechanical_strain, ParameterLib::SpatialPosition::setElementID(), MaterialPropertyLib::VariableArray::temperature, MaterialPropertyLib::VariableArray::total_stress, and MaterialPropertyLib::VariableArray::volumetric_strain.
|
inlineoverridevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 314 of file HydroMechanicsFEM.h.
References ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_ip_data, ProcessLib::HydroMechanics::IntegrationPointData< BMatricesType, ShapeMatricesTypeDisplacement, ShapeMatricesTypePressure, DisplacementDim, NPoints >::eps, and ProcessLib::getIntegrationPointKelvinVectorData().
|
inlineoverridevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 304 of file HydroMechanicsFEM.h.
References ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_ip_data, ProcessLib::getIntegrationPointKelvinVectorData(), and ProcessLib::HydroMechanics::IntegrationPointData< BMatricesType, ShapeMatricesTypeDisplacement, ShapeMatricesTypePressure, DisplacementDim, NPoints >::sigma_eff.
|
overrideprivatevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 1178 of file HydroMechanicsFEM-impl.h.
|
overrideprivatevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 1190 of file HydroMechanicsFEM-impl.h.
|
overrideprivatevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 1169 of file HydroMechanicsFEM-impl.h.
|
inlineoverridevirtual |
Provides the shape matrix at the given integration point.
Implements NumLib::ExtrapolatableElement.
Definition at line 280 of file HydroMechanicsFEM.h.
References ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_secondary_data, and ProcessLib::HydroMechanics::SecondaryData< ShapeMatrixType >::N_u.
|
overridevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 1025 of file HydroMechanicsFEM-impl.h.
References ProcessLib::getIntegrationPointKelvinVectorData().
|
overridevirtual |
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 1061 of file HydroMechanicsFEM-impl.h.
|
inlineoverridevirtual |
Set initial stress from parameter.
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 227 of file HydroMechanicsFEM.h.
References ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_element, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_integration_method, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_ip_data, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::_process_data, MeshLib::Element::getID(), NumLib::GenericIntegrationMethod::getNumberOfPoints(), NumLib::interpolateCoordinates(), and MathLib::KelvinVector::symmetricTensorToKelvinVector().
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 812 of file HydroMechanicsFEM-impl.h.
References ProcessLib::LinearBMatrix::computeBMatrix(), MaterialPropertyLib::EmptyVariableArray, NumLib::interpolateXCoordinate(), MaterialPropertyLib::VariableArray::mechanical_strain, ParameterLib::SpatialPosition::setElementID(), and MaterialPropertyLib::VariableArray::temperature.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 897 of file HydroMechanicsFEM-impl.h.
References MaterialLib::Solids::selectSolidConstitutiveRelation(), ParameterLib::SpatialPosition::setElementID(), and MaterialPropertyLib::VariableArray::temperature.
|
overridevirtual |
Reimplemented from ProcessLib::LocalAssemblerInterface.
Definition at line 754 of file HydroMechanicsFEM-impl.h.
References ProcessLib::LinearBMatrix::computeBMatrix(), NumLib::interpolateXCoordinate(), MaterialPropertyLib::VariableArray::mechanical_strain, and ParameterLib::SpatialPosition::setElementID().
|
overridevirtual |
Returns number of read integration points.
Implements ProcessLib::HydroMechanics::LocalAssemblerInterface< DisplacementDim >.
Definition at line 977 of file HydroMechanicsFEM-impl.h.
References OGS_FATAL, ProcessLib::setIntegrationPointKelvinVectorData(), and ProcessLib::setIntegrationPointScalarData().
|
private |
Definition at line 395 of file HydroMechanicsFEM.h.
|
private |
Definition at line 394 of file HydroMechanicsFEM.h.
Referenced by ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::HydroMechanicsLocalAssembler(), and ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::initializeConcrete().
|
private |
Definition at line 392 of file HydroMechanicsFEM.h.
Referenced by ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::HydroMechanicsLocalAssembler(), ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::getIntPtEpsilon(), ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::getIntPtSigma(), and ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::initializeConcrete().
|
private |
Definition at line 396 of file HydroMechanicsFEM.h.
|
private |
Definition at line 384 of file HydroMechanicsFEM.h.
Referenced by ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::HydroMechanicsLocalAssembler(), and ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::initializeConcrete().
|
private |
Definition at line 399 of file HydroMechanicsFEM.h.
Referenced by ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::HydroMechanicsLocalAssembler(), and ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >::getShapeMatrix().
|
staticprivate |
Definition at line 403 of file HydroMechanicsFEM.h.
|
staticprivate |
Definition at line 404 of file HydroMechanicsFEM.h.
|
static |
Definition at line 177 of file HydroMechanicsFEM.h.
|
staticconstexpr |
Definition at line 183 of file HydroMechanicsFEM.h.
|
staticprivate |
Definition at line 401 of file HydroMechanicsFEM.h.
|
staticprivate |
Definition at line 402 of file HydroMechanicsFEM.h.