18 const double current_time,
19 const bool contact_enabled);
21 Eigen::MatrixXd
sol()
const
27 int dim()
const {
return mesh->dimension(); }
44 const double current_time,
45 const bool contact_enabled);
48 std::unique_ptr<Mesh>
mesh;
52 std::vector<polyfem::basis::ElementBases>
bases;
60 Eigen::SparseMatrix<double>
mass;
65 std::shared_ptr<assembler::Problem>
problem;
main class that contains the polyfem solver and all its state
Caches basis evaluation and geometric mapping at every element.
void init_mass_matrix(const State &state)
std::vector< mesh::LocalBoundary > local_neumann_boundary
mapping from elements to nodes for neumann boundary conditions
std::vector< int > neumann_nodes
per node neumann
void init_assembler(const State &state)
std::unordered_map< int, std::vector< LocalBoundary > > local_pressure_cavity
Eigen::MatrixXd sol() const
std::shared_ptr< assembler::Mass > mass_matrix_assembler
std::vector< int > dirichlet_nodes
per node dirichlet
std::vector< RowVectorNd > neumann_nodes_position
void init_solve_data(const State &state, const double current_time, const bool contact_enabled)
std::shared_ptr< assembler::PressureAssembler > pressure_assembler
void init_mesh(const State &state)
LocalMesh< M > & local_mesh
assembler::AssemblyValsCache assembly_vals_cache
std::vector< mesh::LocalBoundary > local_boundary
mapping from elements to nodes for dirichlet boundary conditions
std::vector< int > pressure_boundary_nodes
solver::SolveData solve_data
std::shared_ptr< assembler::Assembler > assembler
Assembler data.
std::vector< int > boundary_nodes
list of boundary nodes
std::unique_ptr< Mesh > mesh
assembler::AssemblyValsCache mass_assembly_vals_cache
std::vector< RowVectorNd > dirichlet_nodes_position
void init_bases(const State &state)
ipc::CollisionMesh collision_mesh
std::vector< mesh::LocalBoundary > local_pressure_boundary
mapping from elements to nodes for pressure boundary conditions
std::vector< polyfem::basis::ElementBases > bases
Eigen::SparseMatrix< double > mass
std::shared_ptr< assembler::Problem > problem
current problem, it contains rhs and bc
void init_boundary_conditions(const State &state)
class to store time stepping data
Eigen::VectorXd flatten(const Eigen::MatrixXd &X)
Flatten rowwises.