27namespace MPL = MaterialPropertyLib;
29template <
typename BMatricesType,
typename ShapeMatricesType,
53 DisplacementDim>::MaterialStateVariables>
57 typename ShapeMatricesType::NodalRowVectorType
N;
58 typename ShapeMatricesType::GlobalDimNodalMatrixType
dNdx;
73template <
typename ShapeMatrixType>
76 std::vector<ShapeMatrixType, Eigen::aligned_allocator<ShapeMatrixType>>
N;
119template <
typename ShapeFunction,
int DisplacementDim>
138 using RhsVector =
typename ShapeMatricesType::template VectorType<
139 ShapeFunction::NPOINTS + ShapeFunction::NPOINTS * DisplacementDim>;
141 ShapeFunction::NPOINTS + ShapeFunction::NPOINTS * DisplacementDim,
142 ShapeFunction::NPOINTS + ShapeFunction::NPOINTS * DisplacementDim>;
154 bool const is_axially_symmetric,
159 std::string_view
const name,
160 double const* values,
161 int const integration_order)
override;
164 std::vector<double>
const& ,
165 std::vector<double>
const& ,
166 std::vector<double>& ,
167 std::vector<double>& ,
168 std::vector<double>& )
override
171 "ThermoMechanicsLocalAssembler: assembly without jacobian is not "
176 double const t,
double const dt, Eigen::VectorXd
const& local_x,
177 Eigen::VectorXd
const& local_x_prev,
int const process_id,
178 std::vector<double>& local_b_data,
179 std::vector<double>& local_Jac_data)
override;
182 std::vector<double>
const& local_x,
183 std::vector<double>
const& local_x_prev,
184 std::vector<double>& local_rhs_data,
185 std::vector<double>& local_Jac_data)
override;
189 unsigned const n_integration_points =
191 for (
unsigned ip = 0; ip < n_integration_points; ip++)
209 double>::quiet_NaN() ,
214 ip_data.solid_material.initializeInternalStateVariables(
215 t, x_position, *ip_data.material_state_variables);
217 ip_data.pushBackState();
223 int const process_id)
override;
226 Eigen::VectorXd
const& ,
227 double const ,
double const ,
230 unsigned const n_integration_points =
233 for (
unsigned ip = 0; ip < n_integration_points; ip++)
240 const unsigned integration_point)
const override
245 return Eigen::Map<const Eigen::RowVectorXd>(N.data(), N.size());
277 const double t,
double const dt, Eigen::VectorXd
const& local_x,
278 Eigen::VectorXd
const& local_x_prev, std::vector<double>& local_b_data,
279 std::vector<double>& local_Jac_data);
302 const double t,
double const dt, Eigen::VectorXd
const& local_x,
303 Eigen::VectorXd
const& local_x_prev, std::vector<double>& local_b_data,
304 std::vector<double>& local_Jac_data);
306 std::size_t
setSigma(
double const* values);
311 std::vector<double>
getSigma()
const override;
315 std::vector<GlobalVector*>
const& x,
316 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
317 std::vector<double>& cache)
const override;
321 std::vector<double>
getEpsilon()
const override;
325 std::vector<GlobalVector*>
const& x,
326 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
327 std::vector<double>& cache)
const override;
331 std::vector<GlobalVector*>
const& x,
332 std::vector<NumLib::LocalToGlobalIndexMap const*>
const& dof_table,
333 std::vector<double>& cache)
const override;
344 DisplacementDim>::MaterialStateVariables
const&
350 std::vector<IpData, Eigen::aligned_allocator<IpData>>
_ip_data;
361 ShapeFunction::NPOINTS * DisplacementDim;
EigenFixedShapeMatrixPolicy< ShapeFunction, GlobalDim > ShapeMatrixPolicyType
VectorType< _number_of_dof > NodalForceVectorType
Rhs residual.
std::vector< double > getEpsilonMechanical() const override
std::vector< double > const & getIntPtEpsilonMechanical(const double t, std::vector< GlobalVector * > const &x, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_table, std::vector< double > &cache) const override
typename BMatricesType::NodalForceVectorType NodalForceVectorType
SecondaryData< typename ShapeMatrices::ShapeType > _secondary_data
std::size_t setIPDataInitialConditions(std::string_view const name, double const *values, int const integration_order) override
Returns number of read integration points.
MathLib::KelvinVector::Invariants< KelvinVectorSize > Invariants
std::size_t setSigma(double const *values)
typename ShapeMatricesType::template MatrixType< ShapeFunction::NPOINTS+ShapeFunction::NPOINTS *DisplacementDim, ShapeFunction::NPOINTS+ShapeFunction::NPOINTS *DisplacementDim > JacobianMatrix
BMatrixPolicyType< ShapeFunction, DisplacementDim > BMatricesType
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 override
MeshLib::Element const & _element
static const int temperature_size
void postTimestepConcrete(Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const) override
static const int displacement_size
ThermoMechanicsLocalAssembler(ThermoMechanicsLocalAssembler const &)=delete
MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables const & getMaterialStateVariablesAt(unsigned integration_point) const override
typename ShapeMatricesType::template VectorType< ShapeFunction::NPOINTS+ShapeFunction::NPOINTS *DisplacementDim > RhsVector
std::size_t setEpsilonMechanical(double const *values)
ShapeMatrixPolicyType< ShapeFunction, DisplacementDim > ShapeMatricesType
IntegrationPointData< BMatricesType, ShapeMatricesType, DisplacementDim > IpData
Eigen::Map< const Eigen::RowVectorXd > getShapeMatrix(const unsigned integration_point) const override
Provides the shape matrix at the given integration point.
ThermoMechanicsProcessData< DisplacementDim > & _process_data
unsigned getNumberOfIntegrationPoints() const override
bool const _is_axially_symmetric
NumLib::GenericIntegrationMethod const & _integration_method
static const int displacement_index
void assembleWithJacobianForHeatConductionEquations(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)
int getNumberOfVectorElementsForDeformation() const override
void assembleWithJacobianForDeformationEquations(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)
void initializeConcrete() override
static int const KelvinVectorSize
std::size_t setEpsilon(double const *values)
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 assemble(double const, double const, std::vector< double > const &, std::vector< double > const &, std::vector< double > &, std::vector< double > &, std::vector< double > &) override
typename ShapeMatricesType::ShapeMatrices ShapeMatrices
int getMaterialID() const override
typename ShapeMatricesType::GlobalDimMatrixType GlobalDimMatrixType
std::vector< double > getEpsilon() const override
ThermoMechanicsLocalAssembler(ThermoMechanicsLocalAssembler &&)=delete
static const int temperature_index
std::vector< double > getSigma() const override
std::vector< IpData, Eigen::aligned_allocator< IpData > > _ip_data
void setInitialConditionsConcrete(Eigen::VectorXd const local_x, double const t, int const process_id) override
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 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
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Eigen::Matrix< double, Eigen::MatrixBase< Derived >::RowsAtCompileTime, 1 > symmetricTensorToKelvinVector(Eigen::MatrixBase< Derived > const &v)
std::array< double, 3 > interpolateCoordinates(MeshLib::Element const &e, typename ShapeMatricesType::ShapeMatrices::ShapeType const &N)
NumLib::ShapeMatrices< NodalRowVectorType, DimNodalMatrixType, DimMatrixType, GlobalDimNodalMatrixType > ShapeMatrices
MatrixType< GlobalDim, GlobalDim > GlobalDimMatrixType
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material
BMatricesType::KelvinVectorType eps_prev
ShapeMatricesType::NodalRowVectorType N
double integration_weight
std::unique_ptr< typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables > material_state_variables
ShapeMatricesType::GlobalDimNodalMatrixType dNdx
BMatricesType::KelvinVectorType eps_m_prev
BMatricesType::KelvinVectorType sigma_prev
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
BMatricesType::KelvinVectorType sigma
IntegrationPointData(MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material)
BMatricesType::KelvinVectorType eps_m
BMatricesType::KelvinVectorType eps
std::vector< ShapeMatrixType, Eigen::aligned_allocator< ShapeMatrixType > > N