|
PolyFEM
|
#include <NonlinearElasticVarForm.hpp>
Public Member Functions | |
| void | init (const std::string &formulation, const Units &units, const json &args, const std::string &out_path) override |
| Initialize the variational formulation with the given parameters. | |
| bool | is_contact_enabled () const override |
| Check if contact is enabled for the variational formulation, for output purposes. | |
| io::OutputSpace | output_space () const override |
| Get the output space of the variational formulation, for output purposes. | |
| std::vector< io::OutputField > | output_fields (const io::OutputSample &sample, const Eigen::MatrixXd &solution, const io::OutputFieldOptions &options) const override |
| Get the output fields of the variational formulation, for output purposes. | |
Public Member Functions inherited from polyfem::varform::ElasticVarForm | |
| void | save_json (const Eigen::MatrixXd &solution, std::ostream &out) const override |
| Save the solution to a JSON file, for output purposes. | |
| void | export_data (const Eigen::MatrixXd &solution) const override |
| io::OutStatsData | compute_errors (const Eigen::MatrixXd &solution) override |
| Get the error statistics of the variational formulation, for output purposes. | |
Public Member Functions inherited from polyfem::varform::VarForm | |
| virtual | ~VarForm ()=default |
| virtual std::string | name () const =0 |
| Get the name of the variational formulation. | |
| void | set_args (const json &args) |
| Reset the internal state of the variational formulation, e.g. | |
| void | set_mesh (std::unique_ptr< mesh::Mesh > mesh, const double loading_mesh_time=0) |
| Set the mesh for the variational formulation. | |
| void | solve (Eigen::MatrixXd &sol) |
| Solve the variational formulation and store the solution in the given matrix. | |
| void | set_time_callback (const std::function< void(int, int, double, double)> &callback) |
| int | problem_dimension () const |
| Get the problem dimension of the variational formulation, for output purposes. | |
| const io::OutRuntimeData & | output_timings () const |
| Get the runtime timings of the variational formulation, for output purposes. | |
| void | save_json (const Eigen::MatrixXd &solution) const |
| Save the solution to a JSON file, for output purposes. | |
Protected Member Functions | |
| void | reset () override |
| void | load_mesh (const mesh::Mesh &mesh, const json &args) override |
| void | build_basis (mesh::Mesh &mesh, const bool iso_parametric, const json &args) override |
| void | build_rhs_assembler () override |
| void | init_solve (Eigen::MatrixXd &sol, const double t) |
| void | init_forms (const json &args, const int dim, Eigen::MatrixXd &sol, const double t) |
| void | solve_tensor_nonlinear (int step, Eigen::MatrixXd &sol, const bool init_lagging=true) |
| std::shared_ptr< assembler::PressureAssembler > | build_pressure_assembler () const |
| void | build_collision_mesh (const mesh::Mesh &mesh, const json &args) |
| void | preprocess_contact_parameters () |
| void | build_collision_mesh (const mesh::Mesh &mesh, const int n_bases, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &geom_bases, const std::vector< mesh::LocalBoundary > &total_local_boundary, const mesh::Obstacle &obstacle, const json &args, const std::function< std::string(const std::string &)> &resolve_input_path, const Eigen::VectorXi &in_node_to_node, ipc::CollisionMesh &collision_mesh) |
| int | n_obstacle_vertices () const override |
Protected Member Functions inherited from polyfem::varform::ElasticVarForm | |
| void | assemble_rhs (const mesh::Mesh &mesh) override |
| void | assemble_mass_mat (const mesh::Mesh &mesh, const json &args) override |
| void | initial_velocity (Eigen::MatrixXd &velocity) const |
| void | initial_acceleration (Eigen::MatrixXd &acceleration) const |
| void | initial_elastic_solution (Eigen::MatrixXd &solution) const |
| QuadratureOrders | elastic_boundary_samples () const |
| std::vector< int > | elastic_primitive_to_node () const |
| std::vector< int > | elastic_node_to_primitive () const |
| void | build_mesh_matrices (Eigen::MatrixXd &V, Eigen::MatrixXi &F) const |
| void | save_elastic_step_state (const double t0, const double dt, const int t, const time_integrator::ImplicitTimeIntegrator *time_integrator) const |
| std::vector< io::OutputField > | elastic_output_fields (const io::OutputSample &sample, const Eigen::MatrixXd &solution, const io::OutputFieldOptions &options, const mesh::Obstacle *obstacle, const time_integrator::ImplicitTimeIntegrator *time_integrator, const std::vector< std::pair< std::string, std::shared_ptr< solver::Form > > > &named_forms, const solver::Form *elastic_form, const solver::ContactForm *contact_form=nullptr) const |
| void | append_primary_output_fields (std::vector< io::OutputField > &fields, const io::OutputSample &sample, const Eigen::MatrixXd &solution, const io::OutputFieldOptions &options, const mesh::Obstacle *obstacle=nullptr) const |
| Eigen::MatrixXd | displaced_output_normals (const io::OutputSample &sample, const Eigen::MatrixXd &solution) const |
Protected Member Functions inherited from polyfem::varform::VarForm | |
| std::string | resolve_output_path (const std::string &path) const |
| std::string | resolve_input_path (const std::string &path, const bool only_if_exists=false) const |
| void | set_materials (assembler::Assembler &assembler, const int size) const |
| void | assign_discr_orders (const json &discr_order, const mesh::Mesh &mesh, Eigen::VectorXi &disc_orders) |
| virtual void | solve_problem (Eigen::MatrixXd &sol)=0 |
| void | prepare () |
| QuadratureOrders | n_boundary_samples (const int discr_order, const int gdiscr_order) const |
| void | build_fe_space (mesh::Mesh &mesh, const bool iso_parametric, const Eigen::VectorXi &disc_orders, const std::string &basis_type, const std::string &poly_basis_type, const assembler::Assembler &space_assembler, const int value_dim, const int quadrature_order, const int mass_quadrature_order, const bool use_corner_quadrature, const int n_harmonic_samples, const int integral_constraints, FESpace &space, VarFormBoundaryState &boundary, std::shared_ptr< GeometryMapping > geometry=nullptr) |
| std::shared_ptr< time_integrator::BDF > | make_bdf_time_integrator () const |
| void | save_step_state (const double t0, const double dt, const int t, const time_integrator::ImplicitTimeIntegrator *time_integrator, const bool rest_mesh_written=false) const |
| void | ensure_output_sampler () const |
| void | save_restart_json (const double t0, const double dt, const int t, const bool rest_mesh_written) const |
| void | save_timestep (const double time, const int t, const double t0, const double dt, const Eigen::MatrixXd &solution) const |
| void | save_subsolve (const int i, const int t, const Eigen::MatrixXd &solution) const |
| int | output_file_index (const int t) const |
| void | notify_time_step (const int t, const int time_steps, const double t0, const double dt) const |
| io::OutGeometryData::ExportOptions | export_options (const io::OutputSpace &space) const |
| io::OutputFieldFunction | output_field_function (const Eigen::MatrixXd &solution, const io::OutGeometryData::ExportOptions &opts) const |
Additional Inherited Members | |
Static Protected Member Functions inherited from polyfem::varform::VarForm | |
| static bool | read_initial_x_from_file (const std::string &state_path, const std::string &x_name, const bool reorder, const Eigen::VectorXi &in_node_to_node, const int dim, Eigen::MatrixXd &x) |
| static void | rebuild_node_positions (const std::vector< basis::ElementBases > &bases, const std::vector< int > &node_ids, std::vector< RowVectorNd > &positions) |
Definition at line 15 of file NonlinearElasticVarForm.hpp.
|
overrideprotectedvirtual |
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 220 of file NonlinearElasticVarForm.cpp.
References polyfem::mesh::Mesh::dimension(), polyfem::logger(), and space_.
|
protected |
Definition at line 307 of file NonlinearElasticVarForm.cpp.
References polyfem::utils::append_rows(), polyfem::mesh::build_collision_proxy(), polyfem::mesh::Obstacle::codim_v(), polyfem::mesh::Mesh::dimension(), polyfem::mesh::Obstacle::e(), polyfem::io::OutGeometryData::extract_boundary_mesh(), polyfem::mesh::Obstacle::f(), polyfem::utils::json_as_array(), polyfem::mesh::load_collision_proxy(), polyfem::logger(), polyfem::mesh::Obstacle::n_vertices(), polyfem::utils::resolve_path(), and polyfem::mesh::Obstacle::v().
|
protected |
Definition at line 297 of file NonlinearElasticVarForm.cpp.
References space_.
|
protected |
Definition at line 434 of file NonlinearElasticVarForm.cpp.
References space_.
|
overrideprotectedvirtual |
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 278 of file NonlinearElasticVarForm.cpp.
References space_.
|
overridevirtual |
Initialize the variational formulation with the given parameters.
| formulation | name of the variational formulation |
| units | unit system to use for the formulation |
| args | json input arguments, used to initialize the formulation |
| out_path | output path for the formulation, used to save intermediate data |
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 47 of file NonlinearElasticVarForm.cpp.
References polyfem::varform::VarForm::args, contact_dhat_was_explicit_, polyfem::varform::ElasticVarForm::init(), and polyfem::varform::VarForm::units.
|
protected |
Definition at line 573 of file NonlinearElasticVarForm.cpp.
References polyfem::mesh::Obstacle::ndof(), and space_.
|
protected |
Definition at line 651 of file NonlinearElasticVarForm.cpp.
References polyfem::log_and_throw_error(), polyfem::logger(), POLYFEM_SCOPED_TIMER, space_, polyfem::utils::unflatten(), and polyfem::io::OBJWriter::write().
|
inlineoverridevirtual |
Check if contact is enabled for the variational formulation, for output purposes.
Reimplemented from polyfem::varform::VarForm.
Definition at line 20 of file NonlinearElasticVarForm.hpp.
References polyfem::varform::VarForm::args.
Referenced by output_space().
|
overrideprotectedvirtual |
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 69 of file NonlinearElasticVarForm.cpp.
References polyfem::varform::VarForm::args, polyfem::mesh::Mesh::dimension(), polyfem::utils::json_as_array(), polyfem::varform::ElasticVarForm::load_mesh(), polyfem::logger(), obstacle, polyfem::mesh::read_obstacle_geometry(), polyfem::varform::VarForm::root_path, and polyfem::varform::VarForm::units.
|
inlineoverrideprotectedvirtual |
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 66 of file NonlinearElasticVarForm.hpp.
References polyfem::mesh::Obstacle::n_vertices(), and obstacle.
|
overridevirtual |
Get the output fields of the variational formulation, for output purposes.
| sample | Output sample |
| solution | Solution matrix |
| options | Output field options |
Implements polyfem::varform::VarForm.
Definition at line 90 of file NonlinearElasticVarForm.cpp.
References polyfem::varform::VarForm::args, collision_mesh, polyfem::io::OutputSample::Contact, polyfem::solver::SolveData::contact_form, polyfem::io::OutputSample::domain, polyfem::solver::SolveData::elastic_form, polyfem::varform::ElasticVarForm::elastic_output_fields(), polyfem::io::OutputFieldOptions::fields, polyfem::varform::VarForm::mesh_, polyfem::varform::VarForm::name(), polyfem::solver::SolveData::named_forms(), obstacle, polyfem::io::OutputField::Point, polyfem::io::OutputSample::points, polyfem::varform::VarForm::problem, solve_data, polyfem::solver::SolveData::time_integrator, and polyfem::utils::unflatten().
|
overridevirtual |
Get the output space of the variational formulation, for output purposes.
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 82 of file NonlinearElasticVarForm.cpp.
References collision_mesh, is_contact_enabled(), obstacle, and polyfem::varform::ElasticVarForm::output_space().
|
protected |
Definition at line 247 of file NonlinearElasticVarForm.cpp.
References polyfem::Units::convert(), and polyfem::logger().
|
overrideprotectedvirtual |
Reimplemented from polyfem::varform::ElasticVarForm.
Definition at line 56 of file NonlinearElasticVarForm.cpp.
References polyfem::mesh::Obstacle::clear(), collision_mesh, contact_dhat_was_explicit_, damping_assembler, damping_prev_assembler, elasticity_pressure_assembler, forms, obstacle, polyfem::varform::ElasticVarForm::reset(), and solve_data.
|
protected |
Definition at line 753 of file NonlinearElasticVarForm.cpp.
References polyfem::utils::count_invalid(), polyfem::solver::FullNLProblem::finish(), polyfem::solver::NLProblem::full_to_reduced(), polyfem::solver::NLProblem::gradient(), polyfem::solver::FullNLProblem::init(), polyfem::solver::NLProblem::init_lagging(), polyfem::logger(), polyfem::solver::FullNLProblem::max_lagging_iterations(), polyfem::solver::NLProblem::normalize_forms(), POLYFEM_SCOPED_TIMER, polyfem::solver::ALSolver::post_subsolve, polyfem::solver::NLProblem::reduced_to_full(), polyfem::solver::ALSolver::solve_al(), polyfem::solver::ALSolver::solve_reduced(), space_, polyfem::solver::NLProblem::update_lagging(), polyfem::solver::FullNLProblem::uses_lagging(), and x.
|
protected |
Definition at line 55 of file NonlinearElasticVarForm.hpp.
Referenced by output_fields(), output_space(), and reset().
|
protected |
Definition at line 64 of file NonlinearElasticVarForm.hpp.
|
protected |
Definition at line 57 of file NonlinearElasticVarForm.hpp.
Referenced by reset().
|
protected |
Definition at line 58 of file NonlinearElasticVarForm.hpp.
Referenced by reset().
|
protected |
Definition at line 56 of file NonlinearElasticVarForm.hpp.
Referenced by reset().
|
protected |
Definition at line 63 of file NonlinearElasticVarForm.hpp.
Referenced by reset().
|
protected |
Definition at line 60 of file NonlinearElasticVarForm.hpp.
Referenced by load_mesh(), n_obstacle_vertices(), output_fields(), output_space(), and reset().
|
protected |
Definition at line 62 of file NonlinearElasticVarForm.hpp.
Referenced by output_fields(), and reset().