PolyFEM
|
#include <ProblemWithSolution.hpp>
Public Member Functions | |
ProblemWithSolution (const std::string &name) | |
virtual void | rhs (const assembler::Assembler &assembler, const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val) const override |
virtual 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 override |
virtual void | exact (const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val) const override |
virtual void | exact_grad (const Eigen::MatrixXd &pts, const double t, Eigen::MatrixXd &val) const override |
virtual bool | has_exact_sol () const override |
virtual bool | is_rhs_zero () const override |
virtual | ~ProblemWithSolution () |
Public Member Functions inherited from polyfem::assembler::Problem | |
Problem (const std::string &name) | |
virtual void | set_units (const assembler::Assembler &assembler, const Units &units) |
virtual | ~Problem () |
virtual void | init (const mesh::Mesh &mesh) |
const std::string & | name () const |
virtual bool | is_scalar () const =0 |
virtual 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 |
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 | dirichlet_nodal_value (const mesh::Mesh &mesh, const int node_id, const RowVectorNd &pt, const double t, Eigen::MatrixXd &val) const |
virtual 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 |
virtual bool | is_nodal_dirichlet_boundary (const int n_id, const int tag) |
virtual bool | is_nodal_neumann_boundary (const int n_id, const int tag) |
virtual bool | has_nodal_dirichlet () |
virtual bool | has_nodal_neumann () |
virtual void | clear () |
virtual bool | is_time_dependent () const |
virtual bool | is_constant_in_time () const |
virtual void | initial_solution (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &pts, Eigen::MatrixXd &val) const |
virtual void | initial_velocity (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &pts, Eigen::MatrixXd &val) const |
virtual void | initial_acceleration (const mesh::Mesh &mesh, const Eigen::MatrixXi &global_ids, const Eigen::MatrixXd &pts, Eigen::MatrixXd &val) const |
virtual void | initial_density (const Eigen::MatrixXd &pts, Eigen::MatrixXd &val) const |
virtual void | set_parameters (const json ¶ms) |
virtual bool | might_have_no_dirichlet () |
virtual bool | is_dimension_dirichet (const int tag, const int dim) const |
virtual bool | is_nodal_dimension_dirichlet (const int n_id, const int tag, const int dim) const |
virtual bool | all_dimensions_dirichlet () const |
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) |
virtual void | update_nodes (const Eigen::VectorXi &in_node_to_node) |
Protected Member Functions | |
virtual VectorNd | eval_fun (const VectorNd &pt, double t) const =0 |
virtual AutodiffGradPt | eval_fun (const AutodiffGradPt &pt, double t) const =0 |
virtual AutodiffHessianPt | eval_fun (const AutodiffHessianPt &pt, double t) const =0 |
virtual int | size_for (const Eigen::MatrixXd &pts) const |
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_ |
Definition at line 12 of file ProblemWithSolution.hpp.
polyfem::problem::ProblemWithSolution::ProblemWithSolution | ( | const std::string & | name | ) |
Definition at line 7 of file ProblemWithSolution.cpp.
|
inlinevirtual |
Definition at line 26 of file ProblemWithSolution.hpp.
|
overridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 31 of file ProblemWithSolution.cpp.
|
protectedpure virtual |
Implemented in polyfem::problem::ElasticProblemExact, polyfem::problem::CompressionElasticProblemExact, polyfem::problem::QuadraticElasticProblemExact, polyfem::problem::LinearElasticProblemExact, polyfem::problem::FrankeProblem, polyfem::problem::FrankeProblemOld, polyfem::problem::KernelProblem, polyfem::problem::LinearProblem, polyfem::problem::QuadraticProblem, polyfem::problem::CubicProblem, polyfem::problem::SineProblem, polyfem::problem::ZeroBCProblem, polyfem::problem::SimpleStokeProblemExact, polyfem::problem::SineStokeProblemExact, polyfem::problem::TestProblem, and polyfem::problem::GenericScalarProblemExact.
|
protectedpure virtual |
Implemented in polyfem::problem::ElasticProblemExact, polyfem::problem::CompressionElasticProblemExact, polyfem::problem::QuadraticElasticProblemExact, polyfem::problem::LinearElasticProblemExact, polyfem::problem::FrankeProblem, polyfem::problem::FrankeProblemOld, polyfem::problem::KernelProblem, polyfem::problem::LinearProblem, polyfem::problem::QuadraticProblem, polyfem::problem::CubicProblem, polyfem::problem::SineProblem, polyfem::problem::ZeroBCProblem, polyfem::problem::SimpleStokeProblemExact, polyfem::problem::SineStokeProblemExact, polyfem::problem::TestProblem, and polyfem::problem::GenericScalarProblemExact.
|
protectedpure virtual |
Implemented in polyfem::problem::ElasticProblemExact, polyfem::problem::CompressionElasticProblemExact, polyfem::problem::QuadraticElasticProblemExact, polyfem::problem::LinearElasticProblemExact, polyfem::problem::FrankeProblem, polyfem::problem::FrankeProblemOld, polyfem::problem::KernelProblem, polyfem::problem::LinearProblem, polyfem::problem::QuadraticProblem, polyfem::problem::CubicProblem, polyfem::problem::SineProblem, polyfem::problem::ZeroBCProblem, polyfem::problem::SimpleStokeProblemExact, polyfem::problem::SineStokeProblemExact, polyfem::problem::TestProblem, and polyfem::problem::GenericScalarProblemExact.
Referenced by exact(), exact_grad(), and rhs().
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 36 of file ProblemWithSolution.cpp.
References eval_fun(), size_for(), and val.
Referenced by dirichlet_bc(), and polyfem::problem::GenericScalarProblemExact::initial_solution().
|
overridevirtual |
Reimplemented from polyfem::assembler::Problem.
Definition at line 46 of file ProblemWithSolution.cpp.
References eval_fun(), DiffScalarBase::setVariableCount(), size_for(), and val.
|
inlineoverridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 23 of file ProblemWithSolution.hpp.
|
inlineoverridevirtual |
Implements polyfem::assembler::Problem.
Definition at line 24 of file ProblemWithSolution.hpp.
|
overridevirtual |
Implements polyfem::assembler::Problem.
Reimplemented in polyfem::problem::KernelProblem, and polyfem::problem::GenericScalarProblemExact.
Definition at line 12 of file ProblemWithSolution.cpp.
References polyfem::assembler::Assembler::compute_rhs(), eval_fun(), DiffScalarBase::setVariableCount(), size_for(), and val.
Referenced by polyfem::problem::GenericScalarProblemExact::rhs().
|
inlineprotectedvirtual |
Definition at line 33 of file ProblemWithSolution.hpp.
References polyfem::assembler::Problem::is_scalar().
Referenced by exact(), exact_grad(), polyfem::problem::KernelProblem::rhs(), and rhs().