6#include <ipc/collisions/normal/normal_collisions.hpp>
7#include <ipc/collisions/tangential/tangential_collisions.hpp>
21 void init(
const int dimension,
const int ndof,
const int n_time_steps = 0)
26 u_.setZero(ndof, n_time_steps + 1);
27 disp_grad_.assign(n_time_steps + 1, Eigen::MatrixXd::Zero(dimension,dimension));
31 v_.setZero(ndof, n_time_steps + 1);
32 acc_.setZero(ndof, n_time_steps + 1);
21 void init(
const int dimension,
const int ndof,
const int n_time_steps = 0) {
…}
44 const Eigen::MatrixXd &
u,
48 const ipc::TangentialCollisions &friction_constraint_set,
49 const ipc::NormalCollisions &normal_adhesion_set,
50 const ipc::TangentialCollisions &tangential_adhesion_set,
68 const int cur_bdf_order,
69 const Eigen::MatrixXd &
u,
70 const Eigen::MatrixXd &
v,
71 const Eigen::MatrixXd &
acc,
96 const Eigen::MatrixXd &
u,
100 const ipc::NormalCollisions &normal_adhesion_set,
103 u_.col(cur_step) =
u;
119 assert(step <
size());
127 Eigen::VectorXd
u(
int step)
const
129 assert(step <
size());
127 Eigen::VectorXd
u(
int step)
const {
…}
134 Eigen::VectorXd
v(
int step)
const
136 assert(step <
size());
134 Eigen::VectorXd
v(
int step)
const {
…}
141 Eigen::VectorXd
acc(
int step)
const
143 assert(step <
size());
146 return acc_.col(step);
141 Eigen::VectorXd
acc(
int step)
const {
…}
151 assert(step <
size());
160 assert(step <
size());
167 assert(step <
size());
174 assert(step <
size());
181 assert(step <
size());
188 assert(step <
size());
std::vector< ipc::SmoothCollisions > smooth_collision_set_
const ipc::NormalCollisions & collision_set(int step) const
const StiffnessMatrix & gradu_h(int step) const
int bdf_order(int step) const
std::vector< ipc::TangentialCollisions > tangential_adhesion_collision_set_
Eigen::MatrixXd adjoint_mat_
const ipc::TangentialCollisions & friction_collision_set(int step) const
Eigen::MatrixXd disp_grad(int step=0) const
const ipc::SmoothCollisions & smooth_collision_set(int step) const
const ipc::TangentialCollisions & tangential_adhesion_collision_set(int step) const
void cache_quantities_static(const Eigen::MatrixXd &u, const StiffnessMatrix &gradu_h, const ipc::NormalCollisions &collision_set, const ipc::SmoothCollisions &smooth_collision_set, const ipc::TangentialCollisions &friction_constraint_set, const ipc::NormalCollisions &normal_adhesion_set, const ipc::TangentialCollisions &tangential_adhesion_set, const Eigen::MatrixXd &disp_grad)
void init(const int dimension, const int ndof, const int n_time_steps=0)
std::vector< Eigen::MatrixXd > disp_grad_
std::vector< ipc::NormalCollisions > normal_adhesion_collision_set_
void cache_quantities_quasistatic(const int cur_step, const Eigen::MatrixXd &u, const StiffnessMatrix &gradu_h, const ipc::NormalCollisions &collision_set, const ipc::SmoothCollisions &smooth_collision_set, const ipc::NormalCollisions &normal_adhesion_set, const Eigen::MatrixXd &disp_grad)
const Eigen::MatrixXd & adjoint_mat() const
const ipc::NormalCollisions & normal_adhesion_collision_set(int step) const
std::vector< StiffnessMatrix > gradu_h_
Eigen::VectorXd acc(int step) const
void cache_quantities_transient(const int cur_step, const int cur_bdf_order, const Eigen::MatrixXd &u, const Eigen::MatrixXd &v, const Eigen::MatrixXd &acc, const StiffnessMatrix &gradu_h, const ipc::NormalCollisions &collision_set, const ipc::SmoothCollisions &smooth_collision_set, const ipc::TangentialCollisions &friction_collision_set)
void cache_adjoints(const Eigen::MatrixXd &adjoint_mat)
std::vector< ipc::TangentialCollisions > friction_collision_set_
std::vector< ipc::NormalCollisions > collision_set_
Eigen::VectorXi bdf_order_
Eigen::VectorXd v(int step) const
Eigen::VectorXd u(int step) const
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix