/usr/include/dune/grid/albertagrid/intersection.hh is in libdune-grid-dev 2.4.1-1.
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 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#ifndef DUNE_ALBERTA_INTERSECTION_HH
#define DUNE_ALBERTA_INTERSECTION_HH
#include <dune/grid/common/intersection.hh>
#include <dune/grid/albertagrid/transformation.hh>
#include <dune/grid/albertagrid/elementinfo.hh>
#include <dune/grid/albertagrid/geometry.hh>
#if HAVE_ALBERTA
namespace Dune
{
// External Forward Declarations
// -----------------------------
template< int codim, int dim, class GridImp >
class AlbertaGridEntity;
// AlbertaGridIntersectionBase
// ---------------------------
template< class Grid >
class AlbertaGridIntersectionBase
{
typedef AlbertaGridIntersectionBase< Grid > This;
public:
typedef typename Grid::ctype ctype;
static const int dimension = Grid::dimension;
static const int dimensionworld = Grid::dimensionworld;
typedef FieldVector< ctype, dimensionworld > NormalVector;
typedef FieldVector< ctype, dimension-1 > LocalCoordType;
typedef typename Grid::template Codim< 0 >::Entity Entity;
typedef typename Grid::template Codim< 0 >::EntityPointer EntityPointer;
typedef typename Grid::template Codim< 1 >::Geometry Geometry;
typedef typename Grid::template Codim< 1 >::LocalGeometry LocalGeometry;
typedef Alberta::ElementInfo< dimension > ElementInfo;
protected:
typedef AlbertaGridEntity< 0, dimension, Grid > EntityImp;
typedef typename Grid::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
typedef typename Grid::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
struct GlobalCoordReader;
struct LocalCoordReader;
public:
AlbertaGridIntersectionBase ();
AlbertaGridIntersectionBase ( const EntityImp &entity, const int oppVertex );
Entity inside () const;
bool boundary () const;
int boundaryId () const;
size_t boundarySegmentIndex () const;
int indexInInside () const;
GeometryType type () const;
NormalVector centerIntegrationOuterNormal () const;
NormalVector centerOuterNormal () const;
NormalVector centerUnitOuterNormal () const;
NormalVector integrationOuterNormal ( const LocalCoordType &local ) const;
NormalVector outerNormal ( const LocalCoordType &local ) const;
NormalVector unitOuterNormal ( const LocalCoordType &local ) const;
AlbertaTransformation transformation () const;
const Grid &grid () const;
const ElementInfo &elementInfo () const;
protected:
const Grid *grid_;
ElementInfo elementInfo_;
int oppVertex_;
};
// AlbertaGridLeafIntersection
// ---------------------------
template< class GridImp >
class AlbertaGridLeafIntersection
: public AlbertaGridIntersectionBase< GridImp >
{
typedef AlbertaGridLeafIntersection< GridImp > This;
typedef AlbertaGridIntersectionBase< GridImp > Base;
friend class AlbertaGridEntity< 0, GridImp::dimension, GridImp >;
public:
typedef This ImplementationType;
static const int dimension = Base::dimension;
static const int dimensionworld = Base::dimensionworld;
typedef typename Base::NormalVector NormalVector;
typedef typename Base::LocalCoordType LocalCoordType;
typedef typename Base::Entity Entity;
typedef typename Base::EntityPointer EntityPointer;
typedef typename Base::Geometry Geometry;
typedef typename Base::LocalGeometry LocalGeometry;
typedef typename Base::ElementInfo ElementInfo;
protected:
typedef typename Base::EntityImp EntityImp;
typedef typename Base::GeometryImpl GeometryImpl;
typedef typename Base::LocalGeometryImpl LocalGeometryImpl;
typedef typename Base::GlobalCoordReader GlobalCoordReader;
typedef typename Base::LocalCoordReader LocalCoordReader;
public:
using Base::grid;
using Base::elementInfo;
using Base::inside;
AlbertaGridLeafIntersection ()
{}
AlbertaGridLeafIntersection ( const EntityImp &entity, const int n );
AlbertaGridLeafIntersection ( const This &other );
bool equals( const AlbertaGridLeafIntersection& other ) const
{
return (*this) == other;
}
This &operator= ( const This &other );
bool operator== ( const This &other ) const;
void next ();
typename GridImp::template Codim< 0 >::Entity
outside () const;
bool neighbor () const;
bool conforming () const;
LocalGeometry geometryInInside () const;
LocalGeometry geometryInOutside () const;
Geometry geometry () const;
int indexInOutside () const;
int twistInInside () const;
int twistInOutside () const;
protected:
using Base::oppVertex_;
private:
mutable ElementInfo neighborInfo_;
};
} // namespace Dune
#endif // #if HAVE_ALBERTA
#endif // #ifndef DUNE_ALBERTA_INTERSECTION_HH
|