3 #ifndef DUNE_ALBERTA_DGFPARSER_HH
4 #define DUNE_ALBERTA_DGFPARSER_HH
25 template<
class Gr
idImp,
class IntersectionImp >
33 template<
int dim,
int dimworld >
39 typedef typename Grid::template Codim<0>::Entity
Element;
40 typedef typename Grid::template Codim<dimension>::Entity
Vertex;
53 template<
class Intersection >
56 return factory_.wasInserted( intersection );
59 template<
class Intersection >
62 return Grid::getRealImplementation( intersection ).boundaryId();
68 return dgf_.haveBndParameters;
71 template <
class GG,
class II >
80 const ReferenceElement< double, dimension > & refElem =
81 ReferenceElements< double, dimension >::general( entity.type() );
82 int corners = refElem.size( face, 1,
dimension );
83 std :: vector< unsigned int > bound( corners );
84 for(
int i=0; i < corners; ++i )
86 const int k = refElem.subEntity( face, 1, i,
dimension );
87 bound[ i ] = factory_.insertionIndex( *entity.template subEntity< dimension >( k ) );
90 DuneGridFormatParser::facemap_t::key_type key( bound,
false );
91 const DuneGridFormatParser::facemap_t::const_iterator pos = dgf_.facemap.find( key );
92 if( pos != dgf_.facemap.end() )
93 return dgf_.facemap.find( key )->second.second;
102 return dgf_.nofelparams;
104 return dgf_.nofvtxparams;
111 if( numParameters< 0 >() <= 0 )
113 DUNE_THROW( InvalidStateException,
114 "Calling DGFGridFactory::parameter is only allowed if there are parameters." );
116 return dgf_.elParams[ factory_.insertionIndex( element ) ];
121 if( numParameters< dimension >() <= 0 )
123 DUNE_THROW( InvalidStateException,
124 "Calling DGFGridFactory::parameter is only allowed if there are parameters." );
126 return dgf_.vtxParams[ factory_.insertionIndex( vertex ) ];
130 bool generate( std::istream &input );
142 template<
int dim,
int dimworld >
161 template<
int dim,
int dimworld >
162 inline DGFGridFactory< AlbertaGrid< dim, dimworld > >
169 DUNE_THROW(
DGFException,
"Error resetting input stream." );
174 template<
int dim,
int dimworld >
179 std::ifstream input( filename.c_str() );
181 DUNE_THROW(
DGFException,
"Macrofile " << filename <<
" not found." );
182 if( !generate( input ) )
189 #endif // #if HAVE_ALBERTA
191 #endif // #ifndef DUNE_ALBERTA_DGFPARSER_HH
MPIHelper::MPICommunicator MPICommunicatorType
Definition: albertagrid/dgfparser.hh:38
Some simple static information for a given GridType.
Definition: io/file/dgfparser/dgfparser.hh:54
exception class for IO errors in the DGF parser
Definition: dgfexception.hh:12
Definition: common.hh:179
bool wasInserted(const Intersection &intersection) const
Definition: albertagrid/dgfparser.hh:54
std::vector< double > & parameter(const Vertex &vertex)
Definition: albertagrid/dgfparser.hh:119
bool haveBoundaryParameters() const
Definition: albertagrid/dgfparser.hh:66
DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
Definition: dgfgridfactory.hh:47
static double refineWeight()
Definition: albertagrid/dgfparser.hh:150
Grid * grid() const
Definition: albertagrid/dgfparser.hh:48
The dimension of the grid.
Definition: common/grid.hh:400
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Pointer to the type of entities that this Intersection belongs to.
Definition: common/intersection.hh:191
int boundaryId(const Intersection &intersection) const
Definition: albertagrid/dgfparser.hh:60
[ provides Dune::Grid ]
Definition: agrid.hh:137
specialization of the generic GridFactory for AlbertaGrid
Grid::template Codim< dimension >::Entity Vertex
Definition: albertagrid/dgfparser.hh:40
Dune::GridFactory< Grid > GridFactory
Definition: albertagrid/dgfparser.hh:41
std::string type
type of additional boundary parameters
Definition: parser.hh:23
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
The DuneGridFormatParser class: reads a DGF file and stores build information in vector structures us...
Definition: parser.hh:44
EntityPointer inside() const
return EntityPointer to the Entity on the inside of this intersection. That is the Entity where we st...
Definition: common/intersection.hh:273
Intersection of a mesh entities of codimension 0 ("elements") with a "neighboring" element or with th...
Definition: albertagrid/dgfparser.hh:26
GridImp::template Codim< 0 >::Entity Entity
Type of entity that this Intersection belongs to.
Definition: common/intersection.hh:188
int indexInInside() const
Local index of codim 1 entity in the inside() entity where intersection is contained in...
Definition: common/intersection.hh:363
const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
Definition: albertagrid/dgfparser.hh:73
static int refineStepsForHalf()
Definition: albertagrid/dgfparser.hh:145
static const type & defaultValue()
default constructor
Definition: parser.hh:26
AlbertaGrid< dim, dimworld > Grid
Definition: albertagrid/dgfparser.hh:36
std::vector< double > & parameter(const Element &element)
Definition: albertagrid/dgfparser.hh:109
Grid::template Codim< 0 >::Entity Element
Definition: albertagrid/dgfparser.hh:39
int numParameters() const
Definition: albertagrid/dgfparser.hh:99