25# ifndef __BITPIT_LEVELSET_KERNEL_HPP__
26# define __BITPIT_LEVELSET_KERNEL_HPP__
32# include <unordered_map>
36# include "bitpit_communications.hpp"
38# include "bitpit_common.hpp"
39# include "bitpit_patchkernel.hpp"
41# include "levelSetCache.hpp"
51 void initializeCommunicator();
52 void freeCommunicator();
74 virtual std::array<double, 3> computeCellCentroid(
long)
const = 0;
75 virtual double computeCellTangentRadius(
long)
const = 0;
76 virtual double computeCellBoundingRadius(
long)
const = 0;
78 virtual bool update(
const std::vector<adaption::Info> &);
80 virtual bool intersectCellPlane(
long,
const std::array<double,3> &,
const std::array<double,3> &,
double);
103 bool update(
const std::vector<adaption::Info> &)
override;
The class ElementCacheCollection allows to store a collection of caches for the elements of a mesh.
Base class for defining kernels that need to cache data.
LevelSetCachedKernel(VolumeKernel *, LevelSetFillIn fillIn)
bool update(const std::vector< adaption::Info > &) override
CellCacheCollection & getCellCacheCollection()
void clearCaches(bool release=false)
std::unique_ptr< CellCacheCollection > m_cellCacheCollection
Mesh specific implementation to calculate the levelset function.
bool isCommunicatorSet() const
virtual ~LevelSetKernel()
virtual VolumeKernel * getMesh() const
LevelSetFillIn getExpectedFillIn() const
virtual bool update(const std::vector< adaption::Info > &)
double getDistanceTolerance() const
double isCellInsideBoundingBox(long, const std::array< double BITPIT_COMMA 3 > &, const std::array< double, 3 > &) const
virtual bool intersectCellPlane(long, const std::array< double, 3 > &, const std::array< double, 3 > &, double)
MPI_Comm getCommunicator() const
bool isPointInCell(long, const std::array< double, 3 > &) const
std::unique_ptr< DataCommunicator > createDataCommunicator() const
LevelSetFillIn m_expectedFillIn
The VolumeKernel class provides an interface for defining volume patches.
#define BITPIT_DEPRECATED(func)