PolyFEM
Loading...
Searching...
No Matches
OutputData.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <polyfem/Common.hpp>
7
8#include <Eigen/Dense>
9
10#include <functional>
11#include <map>
12#include <string>
13#include <vector>
14
15namespace polyfem::mesh
16{
17 class Obstacle;
18} // namespace polyfem::mesh
19
20namespace ipc
21{
22 class CollisionMesh;
23} // namespace ipc
24
25namespace polyfem::io
26{
28 {
29 std::vector<std::string> fields;
30
31 bool export_field(const std::string &field) const;
32 };
33
35 {
36 enum class Domain
37 {
38 Unknown,
39 Volume,
40 Surface,
41 Contact,
42 Wire,
43 Points,
44 Grid
45 };
46
47 Eigen::MatrixXd points;
48 Eigen::MatrixXd local_points;
49 Eigen::VectorXi element_ids;
50 Eigen::VectorXi primitive_ids;
51 Eigen::VectorXi node_ids;
52 Eigen::MatrixXd normals;
53 std::vector<std::string> requested_fields;
55 int cell_count = 0;
56 double time = 0;
57 double dt = 0;
58 };
59
61 {
62 enum class Association
63 {
64 Point,
65 Cell
66 };
67
68 std::string name;
69 Eigen::MatrixXd values;
71 };
72
73 using OutputFieldFunction = std::function<std::vector<OutputField>(const OutputSample &)>;
74
76 {
77 const mesh::Mesh *mesh = nullptr;
78 const std::vector<basis::ElementBases> *geometry_bases = nullptr;
79 Eigen::VectorXi output_orders;
80 const std::map<int, Eigen::MatrixXd> *polys = nullptr;
81 const std::map<int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> *polys_3d = nullptr;
82 const std::vector<mesh::LocalBoundary> *total_local_boundary = nullptr;
83 const mesh::Obstacle *obstacle = nullptr;
84 const ipc::CollisionMesh *collision_mesh = nullptr;
85 const std::vector<int> *dirichlet_nodes = nullptr;
86 const std::vector<RowVectorNd> *dirichlet_nodes_position = nullptr;
87 };
88} // namespace polyfem::io
Abstract mesh class to capture 2d/3d conforming and non-conforming meshes.
Definition Mesh.hpp:41
std::function< std::vector< OutputField >(const OutputSample &)> OutputFieldFunction
Eigen::MatrixXd values
bool export_field(const std::string &field) const
Definition OutData.cpp:51
std::vector< std::string > fields
Eigen::VectorXi node_ids
Eigen::MatrixXd normals
Eigen::VectorXi primitive_ids
std::vector< std::string > requested_fields
Eigen::VectorXi element_ids
Eigen::MatrixXd local_points
const mesh::Mesh * mesh
Eigen::VectorXi output_orders
const std::vector< mesh::LocalBoundary > * total_local_boundary
const std::vector< basis::ElementBases > * geometry_bases
const std::vector< RowVectorNd > * dirichlet_nodes_position
const std::vector< int > * dirichlet_nodes
const std::map< int, Eigen::MatrixXd > * polys
const mesh::Obstacle * obstacle
const ipc::CollisionMesh * collision_mesh
const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > * polys_3d