26namespace MPL = MaterialPropertyLib;
28template <
typename ShapeFunction,
int GlobalDim>
50 bool const is_axially_symmetric,
55 std::string_view
const name,
57 int const integration_order)
override;
61 int const process_id)
override;
64 std::vector<double>
const& local_x,
65 std::vector<double>
const& local_x_prev,
66 std::vector<double>& local_rhs_data,
67 std::vector<double>& local_Jac_data)
override;
69 void assemble(
double const t,
double const dt,
70 std::vector<double>
const& local_x,
71 std::vector<double>
const& local_x_prev,
72 std::vector<double>& local_M_data,
73 std::vector<double>& local_K_data,
74 std::vector<double>& local_rhs_data)
override;
78 unsigned const n_integration_points =
81 for (
unsigned ip = 0; ip < n_integration_points; ip++)
84 ip_data.pushBackState();
89 Eigen::VectorXd
const& ,
90 double const ,
double const ,
93 unsigned const n_integration_points =
96 for (
unsigned ip = 0; ip < n_integration_points; ip++)
103 double const t,
double const dt, Eigen::VectorXd
const& local_x,
104 Eigen::VectorXd
const& local_x_prev)
override;
107 const unsigned integration_point)
const override
109 auto const& N =
_ip_data[integration_point].N;
112 return Eigen::Map<const Eigen::RowVectorXd>(N.data(), N.size());
117 std::vector<GlobalVector*>
const& x,
118 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
119 std::vector<double>& cache)
const override;
124 std::vector<GlobalVector*>
const& x,
125 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
126 std::vector<double>& cache)
const override;
131 std::vector<GlobalVector*>
const& x,
132 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
133 std::vector<double>& cache)
const override;
137 std::vector<GlobalVector*>
const& x,
138 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
139 std::vector<double>& cache)
const override;
147 std::vector<IpData, Eigen::aligned_allocator<IpData>>
_ip_data;
EigenFixedShapeMatrixPolicy< ShapeFunction, GlobalDim > ShapeMatrixPolicyType
void postTimestepConcrete(Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const) override
static const int temperature_size
NumLib::GenericIntegrationMethod const & _integration_method
static const int temperature_index
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
std::vector< double > const & getIntPtSaturation(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const override
unsigned getNumberOfIntegrationPoints() const override
std::size_t setIPDataInitialConditions(std::string_view const name, double const *values, int const integration_order) override
IntegrationPointData< ShapeMatricesType > IpData
MeshLib::Element const & _element
ThermoRichardsFlowLocalAssembler(ThermoRichardsFlowLocalAssembler &&)=delete
ThermoRichardsFlowProcessData & _process_data
std::vector< double > const & getIntPtDryDensitySolid(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 & 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 > getSaturation() const override
typename ShapeMatricesType::GlobalDimVectorType GlobalDimVectorType
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
ThermoRichardsFlowLocalAssembler(ThermoRichardsFlowLocalAssembler const &)=delete
std::vector< double > const & getIntPtPorosity(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const 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 > getPorosity() const override
typename ShapeMatricesType::GlobalDimMatrixType GlobalDimMatrixType
bool const _is_axially_symmetric
ShapeMatrixPolicyType< ShapeFunction, GlobalDim > ShapeMatricesType
static const int pressure_index
void computeSecondaryVariableConcrete(double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev) override
void initializeConcrete() override
std::vector< IpData, Eigen::aligned_allocator< IpData > > _ip_data
static const int pressure_size
MatrixType< GlobalDim, GlobalDim > GlobalDimMatrixType
VectorType< GlobalDim > GlobalDimVectorType