|
PolyFEM
|
#include <GenericProblem.hpp>
Public Member Functions | |
| GenericScalarProblem (const std::string &name) | |
| void | set_units (const assembler::Assembler &assembler, const Units &units) override |
| void | rhs (const assembler::Assembler &assembler, const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| void | rhs (const assembler::Assembler &assembler, const mesh::Mesh &mesh, const int element_id, const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| bool | is_rhs_zero (const int fe_space_id=-1) const override |
| void | dirichlet_bc (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &uv, const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| void | neumann_bc (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &uv, const Eigen::MatrixXd &pts, const Eigen::MatrixXd &normals, const double t, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| void | initial_solution (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &pts, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| void | dirichlet_nodal_value (const mesh::Mesh &mesh, const int node_id, const RowVectorNd &pt, const double t, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| void | neumann_nodal_value (const mesh::Mesh &mesh, const int node_id, const RowVectorNd &pt, const Eigen::MatrixXd &normal, const double t, Eigen::MatrixXd &val, const int fe_space_id=-1) const override |
| bool | is_nodal_dirichlet_boundary (const int n_id, const int tag, const int fe_space_id=-1) override |
| bool | is_nodal_neumann_boundary (const int n_id, const int tag, const int fe_space_id=-1) override |
| bool | has_nodal_dirichlet (const int fe_space_id=-1) override |
| bool | has_nodal_neumann (const int fe_space_id=-1) override |
| void | update_nodes (const Eigen::VectorXi &in_node_to_node) override |
| bool | has_exact_sol () const override |
| bool | is_scalar () const override |
| bool | is_time_dependent () const override |
| void | set_time_dependent (const bool val) |
| bool | is_constant_in_time () const override |
| bool | might_have_no_dirichlet () override |
| void | set_parameters (const json ¶ms, const std::string &root_path) override |
| void | exact (const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val) const override |
| void | exact_grad (const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val) const override |
| void | clear () override |
Public Member Functions inherited from polyfem::assembler::Problem | |
| Problem (const std::string &name) | |
| virtual | ~Problem () |
| virtual void | init (const mesh::Mesh &mesh) |
| const std::string & | name () const |
| virtual void | pressure_bc (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &uv, const Eigen::MatrixXd &pts, const Eigen::MatrixXd &normals, const double t, Eigen::MatrixXd &val) const |
| virtual double | pressure_cavity_bc (const int boundary_id, const double t) const |
| virtual bool | is_boundary_pressure (const int boundary_id) const |
| virtual void | initial_velocity (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &pts, Eigen::MatrixXd &val, const int fe_space_id=-1) const |
| virtual void | initial_acceleration (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &pts, Eigen::MatrixXd &val, const int fe_space_id=-1) const |
| virtual void | initial_density (const Eigen::MatrixXd &pts, Eigen::MatrixXd &val) const |
| virtual bool | is_dimension_dirichet (const int tag, const int dim, const int fe_space_id=-1) const |
| virtual bool | is_nodal_dimension_dirichlet (const int n_id, const int tag, const int dim, const int fe_space_id=-1) const |
| virtual bool | all_dimensions_dirichlet (const int fe_space_id) const |
| void | setup_bc (const mesh::Mesh &mesh, const BoundaryKind kind, const int fe_space_id, const std::vector< basis::ElementBases > &bases, const std::vector< mesh::LocalBoundary > &local_boundary, std::vector< mesh::LocalBoundary > &selected_local_boundary, std::vector< int > &boundary_nodes, const int value_dim=-1) |
| void | setup_pressure_cavity_bc (const mesh::Mesh &mesh, const int fe_space_id, const std::vector< mesh::LocalBoundary > &local_boundary, std::unordered_map< int, std::vector< mesh::LocalBoundary > > &local_pressure_cavity) |
| void | setup_nodal_bc (const mesh::Mesh &mesh, const BoundaryKind kind, const int fe_space_id, const int n_bases, std::vector< int > &nodes) |
| void | setup_bc (const mesh::Mesh &mesh, const int n_bases, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &geom_bases, const std::vector< basis::ElementBases > &pressure_bases, std::vector< mesh::LocalBoundary > &local_boundary, std::vector< int > &boundary_nodes, std::vector< mesh::LocalBoundary > &local_neumann_boundary, std::vector< mesh::LocalBoundary > &local_pressure_boundary, std::unordered_map< int, std::vector< mesh::LocalBoundary > > &local_pressure_cavity, std::vector< int > &pressure_boundary_nodes, std::vector< int > &dirichlet_nodes, std::vector< int > &neumann_nodes) |
Protected Member Functions | |
| bool | has_boundary (const BoundaryKind kind, const int tag, const int fe_space_id) override |
Private Attributes | |
| std::vector< ScalarBCValue > | neumann_ |
| std::vector< ScalarBCValue > | dirichlet_ |
| std::vector< ScalarInitialValue > | initial_solution_ |
| std::map< int, ScalarBCValue > | nodal_dirichlet_ |
| std::map< int, ScalarBCValue > | nodal_neumann_ |
| std::vector< Eigen::MatrixXd > | nodal_dirichlet_mat_ |
| std::vector< Eigen::MatrixXd > | nodal_neumann_mat_ |
| std::map< int, utils::ExpressionValue > | rhs_ |
| std::vector< ScalarInitialValue > | body_rhs_ |
| utils::ExpressionValue | exact_ |
| std::array< utils::ExpressionValue, 3 > | exact_grad_ |
| bool | is_all_ |
| bool | has_exact_ = false |
| bool | has_exact_grad_ = false |
| bool | is_time_dept_ = false |
Additional Inherited Members | |
Protected Attributes inherited from polyfem::assembler::Problem | |
| std::vector< int > | boundary_ids_ |
| std::vector< int > | neumann_boundary_ids_ |
| std::vector< int > | normal_aligned_neumann_boundary_ids_ |
| std::vector< int > | pressure_boundary_ids_ |
| std::vector< int > | pressure_cavity_ids_ |
| std::vector< int > | splitting_pressure_boundary_ids_ |
| bool | updated_dirichlet_node_ordering_ = false |
| std::string | name_ |
Definition at line 139 of file GenericProblem.hpp.
| polyfem::assembler::GenericScalarProblem::GenericScalarProblem | ( | const std::string & | name | ) |
Definition at line 1211 of file GenericProblem.cpp.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1835 of file GenericProblem.cpp.
References body_rhs_, polyfem::utils::ExpressionValue::clear(), clear(), dirichlet_, exact_, exact_grad_, has_exact_, has_exact_grad_, is_all_, is_time_dept_, neumann_, nodal_dirichlet_, nodal_dirichlet_mat_, nodal_neumann_, nodal_neumann_mat_, rhs_, and polyfem::assembler::Problem::updated_dirichlet_node_ordering_.
Referenced by clear().
|
overridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 1323 of file GenericProblem.cpp.
References polyfem::assembler::Problem::boundary_ids_, dirichlet_, polyfem::mesh::Mesh::get_boundary_id(), and val.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1502 of file GenericProblem.cpp.
References polyfem::assembler::Problem::boundary_ids_, dirichlet_, polyfem::mesh::Mesh::get_node_id(), nodal_dirichlet_mat_, and val.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1393 of file GenericProblem.cpp.
References exact_, has_exact_sol(), val, x, y, and z.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1406 of file GenericProblem.cpp.
References exact_grad_, has_exact_grad_, val, x, y, and z.
|
overrideprotectedvirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1306 of file GenericProblem.cpp.
References polyfem::assembler::Problem::boundary_ids_, polyfem::assembler::Dirichlet, dirichlet_, neumann_, and polyfem::assembler::Problem::neumann_boundary_ids_.
|
inlineoverridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 161 of file GenericProblem.hpp.
References has_exact_.
Referenced by exact().
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1592 of file GenericProblem.cpp.
References nodal_dirichlet_mat_.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1597 of file GenericProblem.cpp.
References nodal_neumann_, and nodal_neumann_mat_.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1361 of file GenericProblem.cpp.
References polyfem::mesh::Mesh::get_body_id(), initial_solution_, and val.
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 165 of file GenericProblem.hpp.
References is_time_dept_.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1557 of file GenericProblem.cpp.
References polyfem::assembler::Problem::boundary_ids_, dirichlet_, and nodal_dirichlet_mat_.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1575 of file GenericProblem.cpp.
References nodal_neumann_, and nodal_neumann_mat_.
|
overridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 1293 of file GenericProblem.cpp.
References body_rhs_, rhs(), and rhs_.
|
inlineoverridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 162 of file GenericProblem.hpp.
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 163 of file GenericProblem.hpp.
References is_time_dept_.
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 166 of file GenericProblem.hpp.
References is_all_.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1341 of file GenericProblem.cpp.
References polyfem::mesh::Mesh::get_boundary_id(), neumann_, polyfem::assembler::Problem::neumann_boundary_ids_, val, x, y, and z.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1531 of file GenericProblem.cpp.
References polyfem::mesh::Mesh::get_node_id(), nodal_neumann_, nodal_neumann_mat_, and val.
|
overridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 1243 of file GenericProblem.cpp.
References rhs(), rhs_, val, x, y, and z.
Referenced by is_rhs_zero(), rhs(), rhs(), and set_units().
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1260 of file GenericProblem.cpp.
References body_rhs_, polyfem::mesh::Mesh::get_body_id(), rhs(), val, polyfem::assembler::ScalarInitialValue::value, x, y, and z.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1634 of file GenericProblem.cpp.
References body_rhs_, polyfem::assembler::Problem::boundary_ids_, polyfem::utils::Interpolation::build(), dirichlet_, entries, exact_, exact_grad_, polyfem::assembler::ScalarBCValue::fe_space_id, has_exact_, has_exact_grad_, polyfem::utils::ExpressionValue::init(), polyfem::assembler::Problem::init(), initial_solution_, polyfem::assembler::ScalarBCValue::interpolation, is_all_, polyfem::utils::is_param_valid(), is_time_dept_, polyfem::log_and_throw_error(), neumann_, polyfem::assembler::Problem::neumann_boundary_ids_, nodal_dirichlet_, nodal_dirichlet_mat_, nodal_neumann_, nodal_neumann_mat_, polyfem::io::read_matrix(), polyfem::utils::resolve_path(), rhs_, and polyfem::assembler::ScalarBCValue::value.
|
inline |
Definition at line 164 of file GenericProblem.hpp.
References is_time_dept_, and val.
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1216 of file GenericProblem.cpp.
References dirichlet_, exact_, exact_grad_, initial_solution_, neumann_, nodal_dirichlet_, nodal_neumann_, rhs(), rhs_, and polyfem::utils::ExpressionValue::set_unit_type().
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 1611 of file GenericProblem.cpp.
References nodal_dirichlet_mat_, nodal_neumann_mat_, and polyfem::assembler::Problem::updated_dirichlet_node_ordering_.
|
private |
Definition at line 186 of file GenericProblem.hpp.
Referenced by clear(), is_rhs_zero(), rhs(), and set_parameters().
|
private |
Definition at line 177 of file GenericProblem.hpp.
Referenced by clear(), dirichlet_bc(), dirichlet_nodal_value(), has_boundary(), is_nodal_dirichlet_boundary(), set_parameters(), and set_units().
|
private |
Definition at line 187 of file GenericProblem.hpp.
Referenced by clear(), exact(), set_parameters(), and set_units().
|
private |
Definition at line 188 of file GenericProblem.hpp.
Referenced by clear(), exact_grad(), set_parameters(), and set_units().
|
private |
Definition at line 190 of file GenericProblem.hpp.
Referenced by clear(), has_exact_sol(), and set_parameters().
|
private |
Definition at line 191 of file GenericProblem.hpp.
Referenced by clear(), exact_grad(), and set_parameters().
|
private |
Definition at line 178 of file GenericProblem.hpp.
Referenced by initial_solution(), set_parameters(), and set_units().
|
private |
Definition at line 189 of file GenericProblem.hpp.
Referenced by clear(), might_have_no_dirichlet(), and set_parameters().
|
private |
Definition at line 192 of file GenericProblem.hpp.
Referenced by clear(), is_constant_in_time(), is_time_dependent(), set_parameters(), and set_time_dependent().
|
private |
Definition at line 176 of file GenericProblem.hpp.
Referenced by clear(), has_boundary(), neumann_bc(), set_parameters(), and set_units().
|
private |
Definition at line 180 of file GenericProblem.hpp.
Referenced by clear(), set_parameters(), and set_units().
|
private |
Definition at line 182 of file GenericProblem.hpp.
Referenced by clear(), dirichlet_nodal_value(), has_nodal_dirichlet(), is_nodal_dirichlet_boundary(), set_parameters(), and update_nodes().
|
private |
Definition at line 181 of file GenericProblem.hpp.
Referenced by clear(), has_nodal_neumann(), is_nodal_neumann_boundary(), neumann_nodal_value(), set_parameters(), and set_units().
|
private |
Definition at line 183 of file GenericProblem.hpp.
Referenced by clear(), has_nodal_neumann(), is_nodal_neumann_boundary(), neumann_nodal_value(), set_parameters(), and update_nodes().
|
private |
Definition at line 185 of file GenericProblem.hpp.
Referenced by clear(), is_rhs_zero(), rhs(), set_parameters(), and set_units().