Loading...
Searching...
No Matches
point_kernel.hpp
1/*---------------------------------------------------------------------------*\
2 *
3 * bitpit
4 *
5 * Copyright (C) 2015-2021 OPTIMAD engineering Srl
6 *
7 * -------------------------------------------------------------------------
8 * License
9 * This file is part of bitpit.
10 *
11 * bitpit is free software: you can redistribute it and/or modify it
12 * under the terms of the GNU Lesser General Public License v3 (LGPL)
13 * as published by the Free Software Foundation.
14 *
15 * bitpit is distributed in the hope that it will be useful, but WITHOUT
16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
18 * License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with bitpit. If not, see <http://www.gnu.org/licenses/>.
22 *
23\*---------------------------------------------------------------------------*/
24
25#ifndef __BITPIT_POINT_KERNEL_HPP__
26#define __BITPIT_POINT_KERNEL_HPP__
27
28#include "patch_kernel.hpp"
29
30namespace bitpit {
31
32class PointKernel : public PatchKernel {
33
34public:
35 int getVolumeCodimension() const override;
36 int getSurfaceCodimension() const override;
37 int getLineCodimension() const override;
38 int getPointCodimension() const override;
39
40 double evalCellSize(long id) const override;
41 virtual double evalPointsDistance(long id1, long id2) const;
42 virtual std::array<double, 3> evalPointsDirection(long id1, long id2) const;
43
44protected:
45#if BITPIT_ENABLE_MPI==1
46 PointKernel(MPI_Comm communicator, AdaptionMode adaptionMode, PartitioningMode partitioningMode);
47 PointKernel(int dimension, MPI_Comm communicator, AdaptionMode adaptionMode, PartitioningMode partitioningMode);
48 PointKernel(int id, int dimension, MPI_Comm communicator, AdaptionMode adaptionMode, PartitioningMode partitioningMode);
49#else
50 PointKernel(AdaptionMode adaptionMode);
51 PointKernel(int dimension, AdaptionMode adaptionMode);
52 PointKernel(int id, int dimension, AdaptionMode adaptionMode);
53#endif
54
55private:
56 void initialize();
57
58};
59
60}
61
62#endif
The PatchKernel class provides an interface for defining patches.
double evalCellSize(long id) const override
int getVolumeCodimension() const override
int getSurfaceCodimension() const override
PointKernel(MPI_Comm communicator, AdaptionMode adaptionMode, PartitioningMode partitioningMode)
virtual std::array< double, 3 > evalPointsDirection(long id1, long id2) const
int getLineCodimension() const override
virtual double evalPointsDistance(long id1, long id2) const
int getPointCodimension() const override
--- layout: doxygen_footer ---