9#include <ipc/collisions/normal/normal_collisions.hpp>
10#include <ipc/collisions/tangential/tangential_collisions.hpp>
39 const Eigen::MatrixXd &sol,
41 const Eigen::MatrixXd *pressure);
50 assert(step <
size());
58 assert(step <
size());
64 Eigen::VectorXd
u(
int step)
const
66 assert(step <
size());
71 Eigen::VectorXd
v(
int step)
const
73 assert(step <
size());
78 Eigen::VectorXd
acc(
int step)
const
80 assert(step <
size());
83 return acc_.col(step);
88 assert(step <
size());
97 assert(step <
size());
104 assert(step <
size());
111 assert(step <
size());
118 assert(step <
size());
125 assert(step <
size());
157 void init(
const int dimension,
const int ndof,
const int n_time_steps = 0);
160 const Eigen::MatrixXd &
u,
164 const ipc::TangentialCollisions &friction_constraint_set,
165 const ipc::NormalCollisions &normal_adhesion_set,
166 const ipc::TangentialCollisions &tangential_adhesion_set,
171 const int cur_bdf_order,
172 const Eigen::MatrixXd &
u,
173 const Eigen::MatrixXd &
v,
174 const Eigen::MatrixXd &
acc,
183 const Eigen::MatrixXd &
u,
187 const ipc::NormalCollisions &normal_adhesion_set,
Storage for additional data required by differntial code.
void cache_transient(int step, State &state, const Eigen::MatrixXd &sol, const Eigen::MatrixXd *disp_grad, const Eigen::MatrixXd *pressure)
Cache time-dependent adjoint optimization data.
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
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
std::vector< ipc::SmoothCollisions > smooth_collision_set_
std::vector< ipc::TangentialCollisions > tangential_adhesion_collision_set_
InitialConditionOverride initial_condition_override
Initial-condition override storage for initial condition optimization.
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
Runtime override for initial-condition histories.
main class that contains the polyfem solver and all its state
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix