/usr/include/ASL/aslGeomInc.h is in libasl-dev 0.1.7-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | /*
* Advanced Simulation Library <http://asl.org.il>
*
* Copyright 2015 Avtech Scientific <http://avtechscientific.com>
*
*
* This file is part of Advanced Simulation Library (ASL).
*
* ASL is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* ASL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with ASL. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef ASLGEOMINC_H
#define ASLGEOMINC_H
#include <memory>
#include <vector>
#include "acl/aclHardware.h"
namespace acl
{
class KernelConfiguration;
}
namespace asl {
template <typename T> class AVec;
class Block;
class AbstractDataWithGhostNodes;
typedef std::shared_ptr<AbstractDataWithGhostNodes> SPAbstractDataWithGhostNodes;
class DistanceFunction;
typedef std::shared_ptr<DistanceFunction> SPDistanceFunction;
///generates sphere \ingroup Geom
/**
\param r radius
\param c center
*/
SPDistanceFunction generateDFSphere(double r, const AVec<double> & c);
///generates infinite cylinder \ingroup Geom
/**
\param r radius
\param l orientation
\param c center
*/
SPDistanceFunction generateDFCylinderInf(double r,
const AVec<double> & l,
const AVec<double> & c);
///generates cylinder \ingroup Geom
/**
\param r radius
\param l orientation and length
\param c center
*/
SPDistanceFunction generateDFCylinder(double r,
const AVec<double> & l,
const AVec<double> & c);
///generates cone \ingroup Geom
/**
\param r radius
\param l orientation and length, from apex to base
\param a apex
*/
SPDistanceFunction generateDFCone(double r,
const AVec<double> & l,
const AVec<double> & a);
/// generates a plane \ingroup Geom
/// \param n vector orthogonal to the plane
/// \param p0 point on the plane
SPDistanceFunction generateDFPlane(const AVec<double> & n,
const AVec<double> & p0);
/// generates infinite prism with convex polygon at its base \ingroup Geom
/**
\param points list of points in 3D space.
The prism axis is oriented orthogonal to the plane of the triangle defined by
a center and first two points. Points of the base polygon must
be provided in continuous manner.
*/
SPDistanceFunction generateDFConvexPolygonPrism(std::vector<AVec<double>> points);
///generates pyramid with convex polygon at its base and apex \p a \ingroup Geom
/**
\param points list of points in 3D space.
the pyramid base plane is defined by a center and fist two points
the points should be ordered counter clock rotation for an observer placed in \p a
*/
SPDistanceFunction generateDFConvexPolygonPyramid(std::vector<AVec<double>> points,
AVec<double> a);
/// generates map corresponding to external (ghost) part of the block \ingroup Geom
SPDistanceFunction generateDFInBlock(const Block & b, unsigned int nG);
/// \ingroup Geom
/**
If both operands are not initialized - it leads to an error.
If only one operand is not initialized - it is ignored and the second is returned.
*/
SPDistanceFunction operator&(SPDistanceFunction a, SPDistanceFunction b);
/// \ingroup Geom
/**
If both operands are not initialized - it leads to an error.
If only one operand is not initialized - it is ignored and the second is returned.
*/
SPDistanceFunction operator|(SPDistanceFunction a, SPDistanceFunction b);
/// \ingroup Geom
SPDistanceFunction operator-(SPDistanceFunction a);
/// \ingroup Geom
SPDistanceFunction normalize(SPDistanceFunction a, double dx);
/// \ingroup Geom
SPAbstractDataWithGhostNodes generateDataContainer_SP(const Block &b,
SPDistanceFunction df,
unsigned int gN,
acl::TypeID t);
/// Initialize \p d by \p f
void initData(SPAbstractDataWithGhostNodes d,
SPDistanceFunction f);
/// Initialize \p d by \p f
void initData(SPAbstractDataWithGhostNodes d,
SPDistanceFunction f,
const acl::KernelConfiguration & k);
} // asl
#endif // ASLDISTANCEFUNCTION
|