3 #ifndef DUNE_DGFGEOGRID_HH
4 #define DUNE_DGFGEOGRID_HH
6 #include <dune/common/typetraits.hh>
32 template<
class Gr
idImp,
class IntersectionImp >
40 template<
int dimD,
int dimR >
54 : expression_( expression )
59 std::vector< double > vx( dimD );
60 std::vector< double > vy;
61 for(
int i = 0; i < dimD; ++i )
64 assert( vy.size() == size_t( dimR ) );
65 for(
int i = 0; i < dimR; ++i )
78 template<
class HostGrid,
class CoordFunction,
79 bool discrete = GeoGrid::isDiscreteCoordFunctionInterface< typename CoordFunction::Interface >::value >
83 template<
class HostGr
id,
class CoordFunction >
86 static CoordFunction *
create ( std::istream &input,
const HostGrid &hostGrid )
88 return new CoordFunction;
93 template<
class HostGr
id,
class CoordFunction >
96 static CoordFunction *
create ( std::istream &input,
const HostGrid &hostGrid )
98 return new CoordFunction( hostGrid );
103 template<
class HostGr
id,
int dimD,
int dimR >
112 if( expression == 0 )
113 DUNE_THROW(
DGFException,
"no coordfunction specified in DGF file." );
123 template<
class HostGr
id,
class CoordFunction,
class Allocator >
130 typedef typename Grid::template Codim<0>::Entity
Element;
131 typedef typename Grid::template Codim<dimension>::Entity
Vertex;
137 : dgfHostFactory_( input, comm ),
140 HostGrid *hostGrid = dgfHostFactory_.grid();
141 assert( hostGrid != 0 );
142 CoordFunction *coordFunction = CoordFunctionFactory::create( input, *hostGrid );
143 grid_ =
new Grid( hostGrid, coordFunction );
148 : dgfHostFactory_( filename, comm ),
151 HostGrid *hostGrid = dgfHostFactory_.grid();
152 assert( hostGrid != 0 );
153 std::ifstream input( filename.c_str() );
154 CoordFunction *coordFunction = CoordFunctionFactory::create( input, *hostGrid );
155 grid_ =
new Grid( hostGrid, coordFunction );
163 template<
class Intersection >
169 template<
class Intersection >
175 template<
int codim >
178 return dgfHostFactory_.template numParameters< codim >();
184 return dgfHostFactory_.haveBoundaryParameters();
187 template<
class GG,
class II >
194 template<
class Entity >
210 template<
class HostGr
id,
class CoordFunction,
class Allocator >
226 #endif // #ifndef DUNE_DGFGEOGRID_HH
Intersection of a mesh entities of codimension 0 ("elements") with a "neighboring" element or with th...
Definition: albertagrid/dgfparser.hh:26
DGFCoordFunction(const Expression *expression)
Definition: dgfgeogrid.hh:53
Definition: io/file/dgfparser/blocks/projection.hh:20
static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
Definition: dgfgeogrid.hh:86
int numParameters() const
Definition: dgfgeogrid.hh:176
DGFGridFactory(const std::string &filename, MPICommunicator comm=MPIHelper::getCommunicator())
Definition: dgfgeogrid.hh:146
Definition: io/file/dgfparser/blocks/projection.hh:131
Wrapper class for entities.
Definition: common/entity.hh:61
const Expression * function(const std::string &name) const
Definition: io/file/dgfparser/blocks/projection.hh:90
static int refineStepsForHalf()
Definition: dgfgeogrid.hh:213
GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
Definition: dgfgeogrid.hh:126
static const int dimension
Definition: dgfgridfactory.hh:38
grid wrapper replacing the geometriesGeometryGrid wraps another DUNE grid and replaces its geometry b...
Definition: geometrygrid/declaration.hh:10
bool haveBoundaryParameters() const
Definition: dgfgeogrid.hh:182
Definition: dgfgeogrid.hh:80
DGFCoordFunctionFactory< HostGrid, CoordFunction > CoordFunctionFactory
Definition: dgfgeogrid.hh:133
const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
Definition: dgfgeogrid.hh:189
Derive an implementation of an analytical coordinate function from this class.
Definition: coordfunction.hh:15
Base::RangeVector RangeVector
Definition: coordfunction.hh:103
virtual void evaluate(const Vector &argument, Vector &result) const =0
Base::DomainVector DomainVector
Definition: coordfunction.hh:102
static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
Definition: dgfgeogrid.hh:96
bool wasInserted(const Intersection &intersection) const
Definition: dgfgeogrid.hh:164
std::vector< double > & parameter(const Entity &entity)
Definition: dgfgeogrid.hh:195
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:388
Some simple static information for a given GridType.
Definition: io/file/dgfparser/dgfparser.hh:54
G Grid
Definition: dgfgridfactory.hh:37
Base::DomainVector DomainVector
Definition: dgfgeogrid.hh:48
Definition: dgfgeogrid.hh:41
DGFGridFactory(std::istream &input, MPICommunicator comm=MPIHelper::getCommunicator())
Definition: dgfgeogrid.hh:135
Grid * grid() const
Definition: dgfgeogrid.hh:158
void evaluate(const DomainVector &x, RangeVector &y) const
Definition: dgfgeogrid.hh:57
std::string type
type of additional boundary parameters
Definition: parser.hh:23
static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
Definition: dgfgeogrid.hh:108
DGFCoordFunction< dimD, dimR > CoordFunction
Definition: dgfgeogrid.hh:106
static int refineStepsForHalf()
number of globalRefine steps needed to refuce h by 0.5
The dimension of the grid.
Definition: common/grid.hh:402
int boundaryId(const Intersection &intersection) const
Definition: dgfgeogrid.hh:170
Grid::template Codim< dimension >::Entity Vertex
Definition: dgfgeogrid.hh:131
dgf::ProjectionBlock::Expression Expression
Definition: dgfgeogrid.hh:51
exception class for IO errors in the DGF parser
Definition: dgfexception.hh:12
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:37
MPIHelper::MPICommunicator MPICommunicator
Definition: dgfgeogrid.hh:129
static double refineWeight()
Definition: dgfgeogrid.hh:218
Grid::template Codim< 0 >::Entity Element
Definition: dgfgeogrid.hh:130
Base::RangeVector RangeVector
Definition: dgfgeogrid.hh:49