|
PolyFEM
|
Storage for additional data required by differntial code. More...
#include <DiffCache.hpp>
Public Member Functions | |
| void | cache_adjoints (const Eigen::MatrixXd &adjoint_mat) |
| 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. | |
| const Eigen::MatrixXd & | adjoint_mat () const |
| const StiffnessMatrix & | basis_nodes_to_gbasis_nodes () const |
| int | size () const |
| int | bdf_order (int step) const |
| Eigen::MatrixXd | disp_grad (int step=0) const |
| Eigen::VectorXd | u (int step) const |
| Eigen::VectorXd | v (int step) const |
| Eigen::VectorXd | acc (int step) const |
| const StiffnessMatrix & | gradu_h (int step) const |
| const ipc::NormalCollisions & | collision_set (int step) const |
| const ipc::SmoothCollisions & | smooth_collision_set (int step) const |
| const ipc::TangentialCollisions & | friction_collision_set (int step) const |
| const ipc::NormalCollisions & | normal_adhesion_collision_set (int step) const |
| const ipc::TangentialCollisions & | tangential_adhesion_collision_set (int step) const |
Public Attributes | |
| InitialConditionOverride | initial_condition_override |
| Initial-condition override storage for initial condition optimization. | |
Private Member Functions | |
| void | init (const int dimension, const int ndof, const int n_time_steps=0) |
| 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 | 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_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) |
Private Attributes | |
| int | n_time_steps_ = 0 |
| int | cur_size_ = 0 |
| StiffnessMatrix | basis_nodes_to_gbasis_nodes_ |
| std::vector< Eigen::MatrixXd > | disp_grad_ |
| Eigen::MatrixXd | u_ |
| Eigen::MatrixXd | v_ |
| Eigen::MatrixXd | acc_ |
| Eigen::VectorXi | bdf_order_ |
| std::vector< StiffnessMatrix > | gradu_h_ |
| std::vector< ipc::NormalCollisions > | collision_set_ |
| std::vector< ipc::SmoothCollisions > | smooth_collision_set_ |
| std::vector< ipc::TangentialCollisions > | friction_collision_set_ |
| std::vector< ipc::NormalCollisions > | normal_adhesion_collision_set_ |
| std::vector< ipc::TangentialCollisions > | tangential_adhesion_collision_set_ |
| Eigen::MatrixXd | adjoint_mat_ |
Storage for additional data required by differntial code.
Definition at line 20 of file DiffCache.hpp.
|
inline |
Definition at line 78 of file DiffCache.hpp.
Referenced by cache_quantities_transient(), and cache_transient().
|
inline |
Definition at line 43 of file DiffCache.hpp.
References adjoint_mat_.
Referenced by cache_adjoints(), and polyfem::get_adjoint_mat().
| const StiffnessMatrix & polyfem::DiffCache::basis_nodes_to_gbasis_nodes | ( | ) | const |
Definition at line 275 of file DiffCache.cpp.
References basis_nodes_to_gbasis_nodes_.
Referenced by polyfem::solver::AdjointTools::dJ_periodic_shape_adjoint_term(), polyfem::solver::AdjointTools::dJ_shape_homogenization_adjoint_term(), polyfem::solver::AdjointTools::dJ_shape_static_adjoint_term(), polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term(), and polyfem::solver::PeriodicContactForceDerivative::force_shape_derivative().
|
inline |
Definition at line 48 of file DiffCache.hpp.
References bdf_order_, and size().
| void polyfem::DiffCache::cache_adjoints | ( | const Eigen::MatrixXd & | adjoint_mat | ) |
Definition at line 273 of file DiffCache.cpp.
References adjoint_mat(), and adjoint_mat_.
Referenced by polyfem::solve_adjoint_cached().
|
private |
Definition at line 254 of file DiffCache.cpp.
References collision_set(), collision_set_, cur_size_, disp_grad(), disp_grad_, gradu_h(), gradu_h_, normal_adhesion_collision_set_, smooth_collision_set(), smooth_collision_set_, u(), and u_.
Referenced by cache_transient().
|
private |
Definition at line 203 of file DiffCache.cpp.
References collision_set(), collision_set_, cur_size_, disp_grad(), disp_grad_, friction_collision_set_, gradu_h(), gradu_h_, normal_adhesion_collision_set_, smooth_collision_set(), smooth_collision_set_, tangential_adhesion_collision_set_, u(), and u_.
Referenced by cache_transient().
|
private |
Definition at line 226 of file DiffCache.cpp.
References acc(), acc_, bdf_order_, collision_set(), collision_set_, cur_size_, friction_collision_set(), friction_collision_set_, gradu_h(), gradu_h_, smooth_collision_set(), smooth_collision_set_, u(), u_, v(), and v_.
Referenced by cache_transient().
| void polyfem::DiffCache::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.
| [in] | step | Current time step. |
| [in] | state | Current forward simulation state. Will mutate it to get latest value. |
| [in] | sol | Current solution. |
| [in] | disp_grad | Pointer to displacement gradient matrix. Assumes zero if nullptr. |
| [in] | pressure | Pointer to pressure matrix. PASS nullptr ONLY. |
Definition at line 283 of file DiffCache.cpp.
References acc(), basis_nodes_to_gbasis_nodes_, cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), disp_grad(), gradu_h(), init(), polyfem::log_and_throw_adjoint_error(), polyfem::log_and_throw_error(), polyfem::time_integrator::ImplicitTimeIntegrator::v_prev(), and polyfem::time_integrator::BDF::weighted_sum_v_prevs().
|
inline |
Definition at line 95 of file DiffCache.hpp.
References collision_set_, and size().
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), polyfem::solver::AdjointTools::dJ_shape_homogenization_adjoint_term(), polyfem::solver::AdjointTools::dJ_shape_static_adjoint_term(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
inline |
Definition at line 56 of file DiffCache.hpp.
References disp_grad_, and size().
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_transient(), and polyfem::solver::AdjointTools::dJ_periodic_shape_adjoint_term().
|
inline |
Definition at line 109 of file DiffCache.hpp.
References friction_collision_set_, and size().
Referenced by cache_quantities_transient(), polyfem::solver::AdjointTools::dJ_friction_transient_adjoint_term(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
inline |
Definition at line 86 of file DiffCache.hpp.
References gradu_h_, and size().
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), cache_transient(), and polyfem::solver::AdjointTools::dJ_dirichlet_static_adjoint_term().
|
private |
Definition at line 181 of file DiffCache.cpp.
References acc_, bdf_order_, collision_set_, cur_size_, disp_grad_, friction_collision_set_, gradu_h_, n_time_steps_, normal_adhesion_collision_set_, smooth_collision_set_, tangential_adhesion_collision_set_, u_, and v_.
Referenced by cache_transient().
|
inline |
Definition at line 116 of file DiffCache.hpp.
References normal_adhesion_collision_set_, and size().
Referenced by polyfem::solver::AdjointTools::dJ_shape_homogenization_adjoint_term(), polyfem::solver::AdjointTools::dJ_shape_static_adjoint_term(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
inline |
Definition at line 47 of file DiffCache.hpp.
References cur_size_.
Referenced by acc(), bdf_order(), collision_set(), polyfem::solver::AdjointForm::compute_adjoint_rhs(), polyfem::solver::StaticForm::compute_adjoint_rhs(), polyfem::solver::MinTargetDistForm::compute_adjoint_rhs(), polyfem::solver::SpatialIntegralForm::compute_adjoint_rhs_step(), disp_grad(), friction_collision_set(), gradu_h(), normal_adhesion_collision_set(), smooth_collision_set(), tangential_adhesion_collision_set(), u(), and v().
|
inline |
Definition at line 102 of file DiffCache.hpp.
References size(), and smooth_collision_set_.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), polyfem::solver::AdjointTools::dJ_shape_homogenization_adjoint_term(), polyfem::solver::AdjointTools::dJ_shape_static_adjoint_term(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
inline |
Definition at line 123 of file DiffCache.hpp.
References size(), and tangential_adhesion_collision_set_.
Referenced by polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
inline |
Definition at line 64 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), polyfem::solver::SpatialIntegralForm::compute_adjoint_rhs_step(), polyfem::solver::NodeTargetForm::compute_adjoint_rhs_step(), polyfem::solver::AdjointTools::dJ_damping_transient_adjoint_term(), polyfem::solver::AdjointTools::dJ_friction_transient_adjoint_term(), polyfem::solver::AdjointTools::dJ_material_transient_adjoint_term(), polyfem::solver::AdjointTools::dJ_pressure_transient_adjoint_term(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
inline |
Definition at line 71 of file DiffCache.hpp.
Referenced by cache_quantities_transient(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
private |
Definition at line 141 of file DiffCache.hpp.
Referenced by acc(), cache_quantities_transient(), and init().
|
private |
Definition at line 155 of file DiffCache.hpp.
Referenced by adjoint_mat(), and cache_adjoints().
|
private |
Definition at line 136 of file DiffCache.hpp.
Referenced by basis_nodes_to_gbasis_nodes(), and cache_transient().
|
private |
Definition at line 143 of file DiffCache.hpp.
Referenced by bdf_order(), cache_quantities_transient(), and init().
|
private |
Definition at line 148 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), collision_set(), and init().
|
private |
Definition at line 133 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), init(), and size().
|
private |
Definition at line 138 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), disp_grad(), and init().
|
private |
Definition at line 150 of file DiffCache.hpp.
Referenced by cache_quantities_static(), cache_quantities_transient(), friction_collision_set(), and init().
|
private |
Definition at line 145 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), gradu_h(), and init().
| InitialConditionOverride polyfem::DiffCache::initial_condition_override |
Initial-condition override storage for initial condition optimization.
Definition at line 24 of file DiffCache.hpp.
Referenced by polyfem::solver::AdjointTools::dJ_friction_transient_adjoint_term().
|
private |
Definition at line 132 of file DiffCache.hpp.
Referenced by init().
|
private |
Definition at line 152 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), init(), and normal_adhesion_collision_set().
|
private |
Definition at line 149 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), init(), and smooth_collision_set().
|
private |
Definition at line 153 of file DiffCache.hpp.
Referenced by cache_quantities_static(), init(), and tangential_adhesion_collision_set().
|
private |
Definition at line 139 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), init(), and u().
|
private |
Definition at line 140 of file DiffCache.hpp.
Referenced by cache_quantities_transient(), init(), and v().