PolyFEM
Loading...
Searching...
No Matches
polyfem::refinement::APriori Class Reference

Class for a priori refinement, see 'Decoupling .. ' paper for details. More...

#include <APriori.hpp>

Static Public Member Functions

static void p_refine (const mesh::Mesh &mesh, const double B, const bool h1_formula, const int base_p, const int discr_order_max, io::OutStatsData &stats, Eigen::VectorXi &disc_orders)
 compute a priori prefinement
 

Private Member Functions

 APriori ()
 

Static Private Member Functions

static void p_refine (const mesh::Mesh2D &mesh2d, const double B, const bool h1_formula, const int base_p, const int discr_order_max, io::OutStatsData &stats, Eigen::VectorXi &disc_orders)
 compute a priori prefinement in 2d
 
static void p_refine (const mesh::Mesh3D &mesh3d, const double B, const bool h1_formula, const int base_p, const int discr_order_max, io::OutStatsData &stats, Eigen::VectorXi &disc_orders)
 compute a priori prefinement in 3d
 

Detailed Description

Class for a priori refinement, see 'Decoupling .. ' paper for details.

Definition at line 14 of file APriori.hpp.

Constructor & Destructor Documentation

◆ APriori()

polyfem::refinement::APriori::APriori ( )
inlineprivate

Definition at line 17 of file APriori.hpp.

Member Function Documentation

◆ p_refine() [1/3]

void polyfem::refinement::APriori::p_refine ( const mesh::Mesh mesh,
const double  B,
const bool  h1_formula,
const int  base_p,
const int  discr_order_max,
io::OutStatsData stats,
Eigen::VectorXi &  disc_orders 
)
static

compute a priori prefinement

Parameters
[in]meshmesh
[in]BThe target deviation of the error on elements from perfect element error, for a priori geometry-dependent p-refinement, see 'Decoupling .. ' paper.
[in]h1_formulalgacy code
[in]base_pbase element degree
[in]discr_order_maxmaximum element degree
[out]statsstatistics to record angles, etc
[out]disc_ordersoutput per element order, assumes the array has correct size

Definition at line 242 of file APriori.cpp.

References polyfem::mesh::Mesh::is_volume(), and p_refine().

Referenced by polyfem::State::build_basis(), and p_refine().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ p_refine() [2/3]

void polyfem::refinement::APriori::p_refine ( const mesh::Mesh2D mesh2d,
const double  B,
const bool  h1_formula,
const int  base_p,
const int  discr_order_max,
io::OutStatsData stats,
Eigen::VectorXi &  disc_orders 
)
staticprivate

compute a priori prefinement in 2d

Parameters
[in]mesh2dmesh
[in]BThe target deviation of the error on elements from perfect element error, for a priori geometry-dependent p-refinement, see 'Decoupling .. ' paper.
[in]h1_formulalgacy code
[in]base_pbase element degree
[in]discr_order_maxmaximum element degree
[out]statsstatistics to record angles, etc
[out]disc_ordersoutput per element order, assumes the array has correct size

Definition at line 47 of file APriori.cpp.

References polyfem::mesh::Mesh::face_vertex(), polyfem::mesh::Mesh2D::get_edges(), polyfem::mesh::Mesh2D::get_index_from_face(), polyfem::refinement::get_opt_p(), polyfem::mesh::Mesh::is_simplex(), polyfem::logger(), polyfem::io::OutStatsData::max_angle, polyfem::mesh::Mesh::n_faces(), polyfem::mesh::Mesh2D::next_around_face(), polyfem::mesh::Mesh::point(), polyfem::io::OutStatsData::sigma_avg, polyfem::io::OutStatsData::sigma_max, polyfem::io::OutStatsData::sigma_min, and polyfem::mesh::Mesh2D::switch_face().

Here is the call graph for this function:

◆ p_refine() [3/3]

void polyfem::refinement::APriori::p_refine ( const mesh::Mesh3D mesh3d,
const double  B,
const bool  h1_formula,
const int  base_p,
const int  discr_order_max,
io::OutStatsData stats,
Eigen::VectorXi &  disc_orders 
)
staticprivate

compute a priori prefinement in 3d

Parameters
[in]mesh3dmesh
[in]BThe target deviation of the error on elements from perfect element error, for a priori geometry-dependent p-refinement, see 'Decoupling .. ' paper.
[in]h1_formulalgacy code
[in]base_pbase element degree
[in]discr_order_maxmaximum element degree
[out]statsstatistics to record angles, etc
[out]disc_ordersoutput per element order, assumes the array has correct size

Definition at line 141 of file APriori.cpp.

References polyfem::mesh::Mesh3D::cell_edge(), polyfem::mesh::Mesh::cell_vertex(), polyfem::mesh::Mesh3D::edge_neighs(), polyfem::mesh::Mesh3D::get_edges(), polyfem::refinement::get_opt_p(), polyfem::mesh::Mesh::is_simplex(), polyfem::logger(), polyfem::io::OutStatsData::max_angle, polyfem::mesh::Mesh::n_cells(), polyfem::mesh::Mesh::n_elements(), polyfem::mesh::Mesh::point(), polyfem::io::OutStatsData::sigma_avg, polyfem::io::OutStatsData::sigma_max, polyfem::io::OutStatsData::sigma_min, and V.

Here is the call graph for this function:

The documentation for this class was generated from the following files: