25#ifndef __BITPIT_SURFACE_KERNEL_HPP__
26#define __BITPIT_SURFACE_KERNEL_HPP__
28#include "patch_kernel.hpp"
29#include "line_kernel.hpp"
31#include "bitpit_common.hpp"
39 BITPIT_PUBLIC_API
static const unsigned short SELECT_TRIANGLE;
40 BITPIT_PUBLIC_API
static const unsigned short SELECT_QUAD;
41 BITPIT_PUBLIC_API
static const unsigned short SELECT_ALL;
46 void setSpaceDimension(
int dimension);
47 int getSpaceDimension(
void)
const;
64 virtual std::array<double, 3>
evalFacetNormal(
long,
const std::array<double, 3> &orientation = {{0., 0., 1.}})
const;
67 std::array<double, 3>
evalVertexNormal(
long,
int, std::size_t,
const long *)
const;
70 virtual void evalVertexNormals(
long id,
int vertex, std::size_t nVertexNeighs,
const long *vertexNeighs,
double limit,
71 std::array<double, 3> *unlimitedNormal, std::array<double, 3> *limitedNormal)
const;
72 virtual void evalEdgeNormals(
long id,
int edge,
double limit, std::array<double, 3> *unlimitedNormal,
73 std::array<double, 3> *limitedNormal)
const;
91 std::vector<double>
computeHistogram(eval_f_ funct_, std::vector<double> &bins,
long &count,
int n_intervals = 8,
unsigned short mask = SELECT_ALL)
const;
94 static const std::map<ElementType, unsigned short> m_selectionTypes;
98 bool compareSelectedTypes(
unsigned short,
ElementType)
const;
99 void displayHistogram(
long,
const std::vector<double>&,
const std::vector<double>&,
const std::string&, std::ostream&,
unsigned int padding = 0)
const;
101 bool haveSameOrientation(
const Cell &cell_A,
int face_A,
const Cell &cell_B,
int face_B)
const;
104#if BITPIT_ENABLE_MPI==1
The Cell class defines the cells.
The PatchKernel class provides an interface for defining patches.
Metafunction for generating a list of elements that can be either stored in an external vectror or,...
The SurfaceKernel class provides an interface for defining surface patches.
int getVolumeCodimension() const override
int getPointCodimension() const override
int getFacetOrderedLocalEdge(const Cell &facet, std::size_t n) const
virtual void evalVertexNormals(long id, int vertex, std::size_t nVertexNeighs, const long *vertexNeighs, double limit, std::array< double, 3 > *unlimitedNormal, std::array< double, 3 > *limitedNormal) const
void displayQualityStats(std::ostream &, unsigned int padding=0) const
virtual double evalAspectRatio(long, int &) const
virtual double evalMinEdgeLength(long, int &) const
void flipCellOrientation(long id)
bool areFacetVerticesOrdered(const Cell &facet) const
int getLineCodimension() const override
std::vector< double > computeHistogram(eval_f_ funct_, std::vector< double > &bins, long &count, int n_intervals=8, unsigned short mask=SELECT_ALL) const
void extractEnvelope(LineKernel &envelope) const
ConstProxyVector< long > getFacetOrderedEdgeIds(const Cell &facet) const
int getSurfaceCodimension() const override
virtual double evalMaxAngleAtVertex(long, int &) const
virtual std::array< double, 3 > evalFacetNormal(long, const std::array< double, 3 > &orientation={{0., 0., 1.}}) const
int getFacetOrderedLocalVertex(const Cell &facet, std::size_t n) const
SurfaceKernel(MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode)
bool areFacetEdgesOrdered(const Cell &facet) const
bool isCellOrientationConsistent() const
std::array< double, 3 > evalEdgeNormal(long, int) const
ConstProxyVector< long > getFacetOrderedVertexIds(const Cell &facet) const
std::array< double, 3 > evalLimitedVertexNormal(long, int, double) const
virtual double evalCellArea(long) const
void evalBarycentricCoordinates(long id, const std::array< double, 3 > &point, double *lambda) const
virtual void evalEdgeNormals(long id, int edge, double limit, std::array< double, 3 > *unlimitedNormal, std::array< double, 3 > *limitedNormal) const
virtual double evalMaxEdgeLength(long, int &) const
virtual double evalMinAngleAtVertex(long, int &) const
double evalCellSize(long id) const override
std::array< double, 3 > evalVertexNormal(long, int) const
virtual double evalAngleAtVertex(long, int) const
bool adjustCellOrientation()
virtual double evalEdgeLength(long, int) const