9#include <ipc/collisions/normal/normal_collisions.hpp>
10#include <ipc/collisions/tangential/tangential_collisions.hpp>
39 const Eigen::MatrixXd &sol,
40 const Eigen::MatrixXd *pressure);
49 assert(step <
size());
57 assert(step <
size());
63 Eigen::VectorXd
u(
int step)
const
65 assert(step <
size());
70 Eigen::VectorXd
v(
int step)
const
72 assert(step <
size());
77 Eigen::VectorXd
acc(
int step)
const
79 assert(step <
size());
82 return acc_.col(step);
87 assert(step <
size());
96 assert(step <
size());
103 assert(step <
size());
110 assert(step <
size());
117 assert(step <
size());
124 assert(step <
size());
156 void init(
const int dimension,
const int ndof,
const int n_time_steps = 0);
159 const Eigen::MatrixXd &
u,
163 const ipc::TangentialCollisions &friction_constraint_set,
164 const ipc::NormalCollisions &normal_adhesion_set,
165 const ipc::TangentialCollisions &tangential_adhesion_set,
170 const int cur_bdf_order,
171 const Eigen::MatrixXd &
u,
172 const Eigen::MatrixXd &
v,
173 const Eigen::MatrixXd &
acc,
182 const Eigen::MatrixXd &
u,
186 const ipc::NormalCollisions &normal_adhesion_set,
Storage for additional data required by differntial code.
int bdf_order(int step) const
std::vector< StiffnessMatrix > gradu_h_
std::vector< ipc::NormalCollisions > normal_adhesion_collision_set_
std::vector< ipc::TangentialCollisions > friction_collision_set_
const ipc::NormalCollisions & collision_set(int step) const
Eigen::MatrixXd disp_grad(int step=0) const
std::optional< varform::InitialConditionOverride > initial_condition_override
Initial-condition override storage for initial condition optimization.
Eigen::MatrixXd adjoint_mat_
Eigen::VectorXd v(int step) const
StiffnessMatrix basis_nodes_to_gbasis_nodes_
std::vector< Eigen::MatrixXd > disp_grad_
const ipc::TangentialCollisions & friction_collision_set(int step) const
const Eigen::MatrixXd & adjoint_mat() 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)
Eigen::VectorXd acc(int step) const
void cache_transient(int step, varform::DifferentiableVarForm &varform, const Eigen::MatrixXd &sol, const Eigen::MatrixXd *pressure)
Cache time-dependent adjoint optimization data.
std::vector< ipc::SmoothCollisions > smooth_collision_set_
std::vector< ipc::TangentialCollisions > tangential_adhesion_collision_set_
const StiffnessMatrix & basis_nodes_to_gbasis_nodes() const
Eigen::VectorXi bdf_order_
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)
std::vector< ipc::NormalCollisions > collision_set_
const ipc::SmoothCollisions & smooth_collision_set(int step) const
Eigen::VectorXd u(int step) const
void cache_adjoints(const Eigen::MatrixXd &adjoint_mat)
const StiffnessMatrix & gradu_h(int step) const
void init(const int dimension, const int ndof, const int n_time_steps=0)
const ipc::NormalCollisions & normal_adhesion_collision_set(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)
const ipc::TangentialCollisions & tangential_adhesion_collision_set(int step) const
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix