|
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, varform::DifferentiableVarForm &varform, const Eigen::MatrixXd &sol, 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 | |
| std::optional< varform::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 21 of file DiffCache.hpp.
|
inline |
Definition at line 77 of file DiffCache.hpp.
Referenced by cache_quantities_transient(), and cache_transient().
|
inline |
Definition at line 42 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 279 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 47 of file DiffCache.hpp.
References bdf_order_, and size().
| void polyfem::DiffCache::cache_adjoints | ( | const Eigen::MatrixXd & | adjoint_mat | ) |
Definition at line 277 of file DiffCache.cpp.
References adjoint_mat(), and adjoint_mat_.
Referenced by polyfem::solve_adjoint_cached().
|
private |
Definition at line 258 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 207 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 230 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, |
| varform::DifferentiableVarForm & | varform, | ||
| const Eigen::MatrixXd & | sol, | ||
| const Eigen::MatrixXd * | pressure | ||
| ) |
Cache time-dependent adjoint optimization data.
| [in] | step | Current time step. |
| [in] | varform | Current forward simulation varform. Will mutate it to get latest value. |
| [in] | sol | Current solution. |
| [in] | pressure | Pointer to pressure matrix. PASS nullptr ONLY. |
Definition at line 287 of file DiffCache.cpp.
References acc(), basis_nodes_to_gbasis_nodes_, cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), polyfem::mesh::Mesh::dimension(), disp_grad(), polyfem::varform::DifferentiableVarForm::displacement_gradient(), polyfem::varform::DifferentiableVarForm::get_args(), polyfem::varform::DifferentiableVarForm::get_mesh(), polyfem::varform::DifferentiableVarForm::get_problem(), gradu_h(), init(), polyfem::assembler::Problem::is_time_dependent(), polyfem::log_and_throw_adjoint_error(), polyfem::log_and_throw_error(), polyfem::varform::FESpace::ndof(), polyfem::varform::DifferentiableVarForm::primary_space(), polyfem::varform::DifferentiableVarForm::solve_data(), polyfem::time_integrator::ImplicitTimeIntegrator::v_prev(), and polyfem::time_integrator::BDF::weighted_sum_v_prevs().
|
inline |
Definition at line 94 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 55 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 108 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 85 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 185 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 115 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 46 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 101 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 122 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 63 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 70 of file DiffCache.hpp.
Referenced by cache_quantities_transient(), and polyfem::solver::AdjointTools::dJ_shape_transient_adjoint_term().
|
private |
Definition at line 140 of file DiffCache.hpp.
Referenced by acc(), cache_quantities_transient(), and init().
|
private |
Definition at line 154 of file DiffCache.hpp.
Referenced by adjoint_mat(), and cache_adjoints().
|
private |
Definition at line 135 of file DiffCache.hpp.
Referenced by basis_nodes_to_gbasis_nodes(), and cache_transient().
|
private |
Definition at line 142 of file DiffCache.hpp.
Referenced by bdf_order(), cache_quantities_transient(), and init().
|
private |
Definition at line 147 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), collision_set(), and init().
|
private |
Definition at line 132 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), init(), and size().
|
private |
Definition at line 137 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), disp_grad(), and init().
|
private |
Definition at line 149 of file DiffCache.hpp.
Referenced by cache_quantities_static(), cache_quantities_transient(), friction_collision_set(), and init().
|
private |
Definition at line 144 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), gradu_h(), and init().
| std::optional<varform::InitialConditionOverride> polyfem::DiffCache::initial_condition_override |
Initial-condition override storage for initial condition optimization.
Definition at line 25 of file DiffCache.hpp.
Referenced by polyfem::solver::AdjointTools::dJ_friction_transient_adjoint_term().
|
private |
Definition at line 131 of file DiffCache.hpp.
Referenced by init().
|
private |
Definition at line 151 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), init(), and normal_adhesion_collision_set().
|
private |
Definition at line 148 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), init(), and smooth_collision_set().
|
private |
Definition at line 152 of file DiffCache.hpp.
Referenced by cache_quantities_static(), init(), and tangential_adhesion_collision_set().
|
private |
Definition at line 138 of file DiffCache.hpp.
Referenced by cache_quantities_quasistatic(), cache_quantities_static(), cache_quantities_transient(), init(), and u().
|
private |
Definition at line 139 of file DiffCache.hpp.
Referenced by cache_quantities_transient(), init(), and v().