33 const bool is_problem_scalar,
34 const std::vector<basis::ElementBases> &bases,
35 const std::vector<basis::ElementBases> &gbases,
36 const Eigen::VectorXi &disc_orders,
37 const Eigen::VectorXi &disc_ordersq,
39 const Eigen::MatrixXd &fun,
41 Eigen::MatrixXd &result,
42 Eigen::VectorXd &von_mises);
60 const bool is_problem_scalar,
61 const std::vector<basis::ElementBases> &bases,
62 const Eigen::VectorXi &disc_orders,
63 const Eigen::VectorXi &disc_ordersq,
64 const std::map<int, Eigen::MatrixXd> &polys,
65 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
68 const Eigen::MatrixXd &fun,
69 Eigen::MatrixXd &result,
70 const bool use_sampler,
71 const bool boundary_only);
75 const std::vector<basis::ElementBases> &gbasis,
76 const std::vector<basis::ElementBases> &basis,
77 const Eigen::VectorXi &disc_orders,
78 const std::map<int, Eigen::MatrixXd> &polys,
79 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
82 const Eigen::MatrixXd &fun,
83 Eigen::Vector<bool, -1> &result,
84 const bool use_sampler,
85 const bool boundary_only);
103 const int actual_dim,
104 const std::vector<basis::ElementBases> &basis,
105 const Eigen::VectorXi &disc_orders,
106 const Eigen::VectorXi &disc_ordersq,
107 const std::map<int, Eigen::MatrixXd> &polys,
108 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
111 const Eigen::MatrixXd &fun,
112 Eigen::MatrixXd &result,
113 const bool use_sampler,
114 const bool boundary_only);
128 const bool is_problem_scalar,
129 const std::vector<basis::ElementBases> &bases,
130 const std::vector<basis::ElementBases> &gbases,
132 const Eigen::MatrixXd &local_pts,
133 const Eigen::MatrixXd &fun,
134 Eigen::MatrixXd &result,
135 Eigen::MatrixXd &result_grad);
150 const int actual_dim,
151 const std::vector<basis::ElementBases> &bases,
152 const std::vector<basis::ElementBases> &gbases,
154 const Eigen::MatrixXd &local_pts,
155 const Eigen::MatrixXd &fun,
156 Eigen::MatrixXd &result,
157 Eigen::MatrixXd &result_grad);
162 const int actual_dim,
164 const Eigen::MatrixXd &fun,
165 Eigen::MatrixXd &result,
166 Eigen::MatrixXd &result_grad);
185 const bool is_problem_scalar,
186 const std::vector<basis::ElementBases> &bases,
187 const std::vector<basis::ElementBases> &gbases,
188 const Eigen::VectorXi &disc_orders,
189 const Eigen::VectorXi &disc_ordersq,
190 const std::map<int, Eigen::MatrixXd> &polys,
191 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
194 const Eigen::MatrixXd &fun,
196 const bool use_sampler,
197 const bool boundary_only);
217 const bool is_problem_scalar,
218 const std::vector<basis::ElementBases> &bases,
219 const std::vector<basis::ElementBases> &gbases,
220 const Eigen::VectorXi &disc_orders,
221 const Eigen::VectorXi &disc_ordersq,
222 const std::map<int, Eigen::MatrixXd> &polys,
223 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
227 const Eigen::MatrixXd &fun,
229 std::vector<assembler::Assembler::NamedMatrix> &result,
230 const bool use_sampler,
231 const bool boundary_only);
254 const bool is_problem_scalar,
256 const std::vector<basis::ElementBases> &bases,
257 const std::vector<basis::ElementBases> &gbases,
258 const Eigen::VectorXi &disc_orders,
259 const Eigen::VectorXi &disc_ordersq,
260 const std::map<int, Eigen::MatrixXd> &polys,
261 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
266 const Eigen::MatrixXd &fun,
267 std::vector<assembler::Assembler::NamedMatrix> &result_scalar,
268 std::vector<assembler::Assembler::NamedMatrix> &result_tensor,
269 const bool use_sampler,
270 const bool boundary_only);
290 const bool is_problem_scalar,
291 const std::vector<basis::ElementBases> &bases,
292 const std::vector<basis::ElementBases> &gbases,
293 const Eigen::VectorXi &disc_orders,
294 const Eigen::VectorXi &disc_ordersq,
295 const std::map<int, Eigen::MatrixXd> &polys,
296 const std::map<
int, std::pair<Eigen::MatrixXd, Eigen::MatrixXi>> &polys_3d,
300 const Eigen::MatrixXd &fun,
302 std::vector<assembler::Assembler::NamedMatrix> &result,
303 const bool use_sampler,
304 const bool boundary_only);
318 const bool is_problem_scalar,
319 const std::vector<basis::ElementBases> &bases,
320 const std::vector<basis::ElementBases> &gbases,
321 const Eigen::MatrixXd &pts,
322 const Eigen::MatrixXi &
faces,
323 const Eigen::MatrixXd &fun,
324 const bool compute_avg,
325 Eigen::MatrixXd &result);
329 const std::shared_ptr<mesh::MeshNodes> mesh_nodes,
330 const Eigen::MatrixXd &grad);
334 const std::shared_ptr<mesh::MeshNodes> mesh_nodes);
337 const std::vector<basis::ElementBases> &bases,
338 const std::vector<basis::ElementBases> &gbases,
339 const Eigen::MatrixXd &fun,
341 const int actual_dim);
static void average_grad_based_function(const mesh::Mesh &mesh, const bool is_problem_scalar, const int n_bases, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const Eigen::VectorXi &disc_orders, const Eigen::VectorXi &disc_ordersq, const std::map< int, Eigen::MatrixXd > &polys, const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &polys_3d, const assembler::Assembler &assembler, const utils::RefElementSampler &sampler, const double t, const int n_points, const Eigen::MatrixXd &fun, std::vector< assembler::Assembler::NamedMatrix > &result_scalar, std::vector< assembler::Assembler::NamedMatrix > &result_tensor, const bool use_sampler, const bool boundary_only)
computes scalar quantity of funtion (ie von mises for elasticity and norm of velocity for fluid) the ...
static void compute_scalar_value(const mesh::Mesh &mesh, const bool is_problem_scalar, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const Eigen::VectorXi &disc_orders, const Eigen::VectorXi &disc_ordersq, const std::map< int, Eigen::MatrixXd > &polys, const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &polys_3d, const assembler::Assembler &assembler, const utils::RefElementSampler &sampler, const int n_points, const Eigen::MatrixXd &fun, const double t, std::vector< assembler::Assembler::NamedMatrix > &result, const bool use_sampler, const bool boundary_only)
computes scalar quantity of funtion (ie von mises for elasticity and norm of velocity for fluid)
static void compute_tensor_value(const mesh::Mesh &mesh, const bool is_problem_scalar, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const Eigen::VectorXi &disc_orders, const Eigen::VectorXi &disc_ordersq, const std::map< int, Eigen::MatrixXd > &polys, const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &polys_3d, const assembler::Assembler &assembler, const utils::RefElementSampler &sampler, const int n_points, const Eigen::MatrixXd &fun, const double t, std::vector< assembler::Assembler::NamedMatrix > &result, const bool use_sampler, const bool boundary_only)
compute tensor quantity (ie stress tensor or velocy)
bool check_scalar_value(const mesh::Mesh &mesh, const bool is_problem_scalar, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const Eigen::VectorXi &disc_orders, const Eigen::VectorXi &disc_ordersq, const std::map< int, Eigen::MatrixXd > &polys, const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &polys_3d, const assembler::Assembler &assembler, const utils::RefElementSampler &sampler, const Eigen::MatrixXd &fun, const double t, const bool use_sampler, const bool boundary_only)
checks if mises are not nan
static void mark_flipped_cells(const mesh::Mesh &mesh, const std::vector< basis::ElementBases > &gbasis, const std::vector< basis::ElementBases > &basis, const Eigen::VectorXi &disc_orders, const std::map< int, Eigen::MatrixXd > &polys, const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &polys_3d, const utils::RefElementSampler &sampler, const int n_points, const Eigen::MatrixXd &fun, Eigen::Vector< bool, -1 > &result, const bool use_sampler, const bool boundary_only)
static void interpolate_function(const mesh::Mesh &mesh, const bool is_problem_scalar, const std::vector< basis::ElementBases > &bases, const Eigen::VectorXi &disc_orders, const Eigen::VectorXi &disc_ordersq, const std::map< int, Eigen::MatrixXd > &polys, const std::map< int, std::pair< Eigen::MatrixXd, Eigen::MatrixXi > > &polys_3d, const utils::RefElementSampler &sampler, const int n_points, const Eigen::MatrixXd &fun, Eigen::MatrixXd &result, const bool use_sampler, const bool boundary_only)
interpolate the function fun.