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
Grid::template Codim< 0 >::Entity Element
Definition: dgfgeogrid.hh:130
Some simple static information for a given GridType.
Definition: io/file/dgfparser/dgfparser.hh:54
int numParameters() const
Definition: dgfgeogrid.hh:176
Wrapper class for entities.
Definition: common/entity.hh:56
exception class for IO errors in the DGF parser
Definition: dgfexception.hh:12
Definition: io/file/dgfparser/blocks/projection.hh:20
Base::RangeVector RangeVector
Definition: coordfunction.hh:103
Base::RangeVector RangeVector
Definition: dgfgeogrid.hh:49
GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
Definition: dgfgeogrid.hh:126
G Grid
Definition: dgfgridfactory.hh:37
bool wasInserted(const Intersection &intersection) const
Definition: dgfgeogrid.hh:164
static double refineWeight()
Definition: dgfgeogrid.hh:218
Base::DomainVector DomainVector
Definition: coordfunction.hh:102
std::vector< double > & parameter(const Entity &entity)
Definition: dgfgeogrid.hh:195
const DGFBoundaryParameter::type & boundaryParameter(const Dune::Intersection< GG, II > &intersection) const
Definition: dgfgeogrid.hh:189
static int refineStepsForHalf()
Definition: dgfgeogrid.hh:213
Definition: io/file/dgfparser/blocks/projection.hh:131
bool haveBoundaryParameters() const
Definition: dgfgeogrid.hh:182
static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
Definition: dgfgeogrid.hh:86
DGFCoordFunctionFactory< HostGrid, CoordFunction > CoordFunctionFactory
Definition: dgfgeogrid.hh:133
The dimension of the grid.
Definition: common/grid.hh:400
static int refineStepsForHalf()
number of globalRefine steps needed to refuce h by 0.5
void evaluate(const DomainVector &x, RangeVector &y) const
Definition: dgfgeogrid.hh:57
std::string type
type of additional boundary parameters
Definition: parser.hh:23
DGFCoordFunction< dimD, dimR > CoordFunction
Definition: dgfgeogrid.hh:106
static const int dimension
Definition: dgfgridfactory.hh:38
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:386
DGFCoordFunction(const Expression *expression)
Definition: dgfgeogrid.hh:53
DGFGridFactory(std::istream &input, MPICommunicator comm=MPIHelper::getCommunicator())
Definition: dgfgeogrid.hh:135
Intersection of a mesh entities of codimension 0 ("elements") with a "neighboring" element or with th...
Definition: albertagrid/dgfparser.hh:26
Grid * grid() const
Definition: dgfgeogrid.hh:158
const Expression * function(const std::string &name) const
Definition: io/file/dgfparser/blocks/projection.hh:90
MPIHelper::MPICommunicator MPICommunicator
Definition: dgfgeogrid.hh:129
Definition: dgfgeogrid.hh:80
int boundaryId(const Intersection &intersection) const
Definition: dgfgeogrid.hh:170
static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
Definition: dgfgeogrid.hh:96
dgf::ProjectionBlock::Expression Expression
Definition: dgfgeogrid.hh:51
provides access to host grid objects
Definition: hostgridaccess.hh:25
Grid::template Codim< dimension >::Entity Vertex
Definition: dgfgeogrid.hh:131
DGFGridFactory(const std::string &filename, MPICommunicator comm=MPIHelper::getCommunicator())
Definition: dgfgeogrid.hh:146
Definition: dgfgeogrid.hh:41
grid wrapper replacing the geometriesGeometryGrid wraps another DUNE grid and replaces its geometry b...
Definition: geometrygrid/declaration.hh:10
virtual void evaluate(const Vector &argument, Vector &result) const =0
Base::DomainVector DomainVector
Definition: dgfgeogrid.hh:48
static CoordFunction * create(std::istream &input, const HostGrid &hostGrid)
Definition: dgfgeogrid.hh:108
Derive an implementation of an analytical coordinate function from this class.
Definition: coordfunction.hh:15