25namespace HydroMechanics
29template <
typename ShapeMatrixType>
32 std::vector<ShapeMatrixType, Eigen::aligned_allocator<ShapeMatrixType>>
N;
41 bool const is_axially_symmetric,
42 std::size_t n_local_size,
44 dofIndex_to_localIndex)
56 std::vector<double>
const& ,
57 std::vector<double>
const& ,
58 std::vector<double>& ,
59 std::vector<double>& ,
60 std::vector<double>& )
override
63 "HydroMechanicsLocalAssembler: assembly without jacobian is not "
68 std::vector<double>
const& local_x_,
69 std::vector<double>
const& local_x_prev_,
70 std::vector<double>& ,
71 std::vector<double>& ,
72 std::vector<double>& local_b_data,
73 std::vector<double>& local_Jac_data)
override
75 auto const local_dof_size = local_x_.size();
78 for (
unsigned i = 0; i < local_dof_size; i++)
83 for (
unsigned i = 0; i < local_dof_size; i++)
93 local_b_data.resize(local_dof_size);
94 for (
unsigned i = 0; i < local_dof_size; i++)
99 local_Jac_data.resize(local_dof_size * local_dof_size);
100 for (
unsigned i = 0; i < local_dof_size; i++)
102 for (
unsigned j = 0; j < local_dof_size; j++)
104 local_Jac_data[i * local_dof_size + j] =
_local_J(
111 Eigen::VectorXd
const& ,
112 const double t,
double const dt,
116 for (Eigen::Index i = 0; i < local_x_.rows(); i++)
126 std::vector<GlobalVector*>
const& x,
127 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
128 std::vector<double>& cache)
const = 0;
132 std::vector<GlobalVector*>
const& x,
133 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
134 std::vector<double>& cache)
const = 0;
138 std::vector<GlobalVector*>
const& x,
139 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
140 std::vector<double>& cache)
const = 0;
144 std::vector<GlobalVector*>
const& x,
145 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
146 std::vector<double>& cache)
const = 0;
150 std::vector<GlobalVector*>
const& x,
151 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
152 std::vector<double>& cache)
const = 0;
156 std::vector<GlobalVector*>
const& x,
157 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
158 std::vector<double>& cache)
const = 0;
162 std::vector<GlobalVector*>
const& x,
163 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
164 std::vector<double>& cache)
const = 0;
168 double const t,
double const dt, Eigen::VectorXd
const& local_u,
169 Eigen::VectorXd
const& local_u_prev, Eigen::VectorXd& local_b,
170 Eigen::MatrixXd& local_J) = 0;
173 double const t,
double const dt, Eigen::VectorXd
const& local_u) = 0;
Definition of the Element class.
virtual void postTimestepConcreteWithVector(double const t, double const dt, Eigen::VectorXd const &local_u)=0
bool const _is_axially_symmetric
virtual std::vector< double > const & getIntPtFracturePermeability(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
MeshLib::Element const & _element
HydroMechanicsLocalAssemblerInterface(MeshLib::Element const &element, bool const is_axially_symmetric, std::size_t n_local_size, std::vector< unsigned > dofIndex_to_localIndex)
void assembleWithJacobian(double const t, double const dt, std::vector< double > const &local_x_, std::vector< double > const &local_x_prev_, std::vector< double > &, std::vector< double > &, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data) override
virtual void assembleWithJacobianConcrete(double const t, double const dt, Eigen::VectorXd const &local_u, Eigen::VectorXd const &local_u_prev, Eigen::VectorXd &local_b, Eigen::MatrixXd &local_J)=0
virtual 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 =0
virtual std::vector< double > const & getIntPtFractureAperture(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
std::vector< unsigned > const _dofIndex_to_localIndex
virtual std::vector< double > const & getIntPtFractureStress(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
void assemble(double const, double const, std::vector< double > const &, std::vector< double > const &, std::vector< double > &, std::vector< double > &, std::vector< double > &) override
virtual std::vector< double > const & getIntPtEpsilon(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
Eigen::VectorXd _local_u_prev
void postTimestepConcrete(Eigen::VectorXd const &local_x_, Eigen::VectorXd const &, const double t, double const dt, int const) override
virtual std::vector< double > const & getIntPtFractureVelocity(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
virtual std::vector< double > const & getIntPtSigma(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const =0
Used for the extrapolation of the integration point values.
std::vector< ShapeMatrixType, Eigen::aligned_allocator< ShapeMatrixType > > N