3 #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH
4 #define DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH
13 #include <dune/common/exceptions.hh>
14 #include <dune/common/fvector.hh>
15 #include <dune/common/parallel/mpihelper.hh>
79 struct DGFGridFactory< UGGrid< dim > >
82 typedef UGGrid< dim >
Grid;
93 dgf_( rank( comm ), size( comm ) )
103 dgf_( rank( comm ), size( comm ) )
105 std::ifstream input( filename.c_str() );
107 DUNE_THROW( DGFException,
"Error: Macrofile " << filename <<
" not found" );
118 template<
class GG,
class II >
121 return factory_.wasInserted( intersection );
125 template<
class GG,
class II >
132 template<
int codim >
136 return dgf_.nofelparams;
138 return dgf_.nofvtxparams;
144 template<
class Entity >
147 return numParameters< Entity::codimension >();
151 std::vector< double > &
parameter (
const typename Grid::template Codim< 0 >::Entity &element )
153 if( numParameters< 0 >() <= 0 )
155 DUNE_THROW( InvalidStateException,
156 "Calling DGFGridFactory::parameter is only allowed if there are parameters." );
158 return dgf_.elParams[ factory_.insertionIndex( element ) ];
162 std::vector< double > &
parameter (
const typename Grid::template Codim< dimension >::Entity &
vertex )
164 if( numParameters< dimension >() <= 0 )
166 DUNE_THROW( InvalidStateException,
167 "Calling DGFGridFactory::parameter is only allowed if there are parameters." );
169 return dgf_.vtxParams[ factory_.insertionIndex( vertex ) ];
175 return dgf_.haveBndParameters;
179 template<
class GG,
class II >
187 const ReferenceElement< double, dimension > &refElem
188 = ReferenceElements< double, dimension >::general( entity.type() );
189 int corners = refElem.size( face, 1,
dimension );
190 std::vector< unsigned int > bound( corners );
191 for(
int i = 0; i < corners; ++i )
193 const int k = refElem.subEntity( face, 1, i,
dimension );
194 bound[ i ] = factory_.insertionIndex( *entity.template subEntity< dimension >( k ) );
197 DuneGridFormatParser::facemap_t::key_type key( bound,
false );
198 const DuneGridFormatParser::facemap_t::const_iterator pos = dgf_.facemap.find( key );
199 if( pos != dgf_.facemap.end() )
200 return dgf_.facemap.find( key )->second.second;
207 void generate ( std::istream &input );
214 MPI_Comm_rank( MPICOMM, &rank );
224 MPI_Comm_size( MPICOMM, &size );
230 GridFactory< UGGrid< dim > > factory_;
231 DuneGridFormatParser dgf_;
233 #endif // #if ENABLE_UG
237 #endif // #ifndef DUNE_GRID_IO_FILE_DGFPARSER_DGFUG_HH
Some simple static information for a given GridType.
Definition: io/file/dgfparser/dgfparser.hh:54
static double refineWeight()
UGGridParameterBlock(std::istream &input)
constructor taking istream
Definition: dgfug.cc:16
bool haveBoundaryParameters() const
Definition: dgfgridfactory.hh:156
bool noCopy() const
returns true if no copies are made for UGGrid elements
Definition: dgfug.hh:44
Definition: common.hh:179
G Grid
Definition: dgfgridfactory.hh:37
DGFGridFactory(std::istream &input, MPICommunicatorType comm=MPIHelper::getCommunicator())
Definition: dgfgridfactory.hh:47
Common Grid parametersFor each grid implementation there is a set of parameters that can be passed vi...
Definition: gridparameter.hh:31
const DGFBoundaryParameter::type & boundaryParameter(const Intersection< GG, II > &intersection) const
Definition: dgfgridfactory.hh:163
size_t boundarySegmentIndex() const
index of the boundary segment within the macro grid
Definition: common/intersection.hh:259
bool noClosure_
Definition: dgfug.hh:49
[ provides Dune::Grid ]
Definition: uggrid.hh:202
size_t heapSize_
Definition: dgfug.hh:51
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Pointer to the type of entities that this Intersection belongs to.
Definition: common/intersection.hh:191
static int refineStepsForHalf()
number of globalRefine steps needed to refuce h by 0.5
std::string type
type of additional boundary parameters
Definition: parser.hh:23
static const int dimension
Definition: dgfgridfactory.hh:38
bool wasInserted(const Intersection &intersection) const
Definition: dgfgridfactory.hh:101
int boundaryId(const Intersection &intersection) const
Definition: dgfgridfactory.hh:107
MPIHelper::MPICommunicator MPICommunicatorType
Definition: dgfgridfactory.hh:39
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
Grid * grid()
Definition: dgfgridfactory.hh:95
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
bool noCopy_
Definition: dgfug.hh:50
static const type & defaultValue()
default constructor
Definition: parser.hh:26
std::vector< double > & parameter(const Element &element)
Definition: dgfgridfactory.hh:129
int numParameters() const
Definition: dgfgridfactory.hh:113
size_t heapSize() const
returns heap size used on construction of the grid
Definition: dgfug.hh:46
bool noClosure() const
returns true if no closure should be used for UGGrid
Definition: dgfug.hh:42