31namespace ThermoRichardsFlow
35template <
typename ShapeFunction,
int GlobalDim>
57 bool const is_axially_symmetric,
62 std::string_view
const name,
64 int const integration_order)
override;
68 int const process_id)
override;
71 std::vector<double>
const& local_x,
72 std::vector<double>
const& local_x_prev,
73 std::vector<double>& local_rhs_data,
74 std::vector<double>& local_Jac_data)
override;
76 void assemble(
double const t,
double const dt,
77 std::vector<double>
const& local_x,
78 std::vector<double>
const& local_x_prev,
79 std::vector<double>& local_M_data,
80 std::vector<double>& local_K_data,
81 std::vector<double>& local_rhs_data)
override;
85 unsigned const n_integration_points =
88 for (
unsigned ip = 0; ip < n_integration_points; ip++)
91 ip_data.pushBackState();
96 Eigen::VectorXd
const& ,
97 double const ,
double const ,
100 unsigned const n_integration_points =
103 for (
unsigned ip = 0; ip < n_integration_points; ip++)
110 double const t,
double const dt, Eigen::VectorXd
const& local_x,
111 Eigen::VectorXd
const& local_x_prev)
override;
114 const unsigned integration_point)
const override
116 auto const& N =
_ip_data[integration_point].N;
119 return Eigen::Map<const Eigen::RowVectorXd>(N.data(), N.size());
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;
138 std::vector<GlobalVector*>
const& x,
139 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
140 std::vector<double>& cache)
const override;
144 std::vector<GlobalVector*>
const& x,
145 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
146 std::vector<double>& cache)
const override;
154 std::vector<IpData, Eigen::aligned_allocator<IpData>>
_ip_data;
unsigned getNumberOfPoints() const
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
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
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