dune-grid 2.10
Loading...
Searching...
No Matches
agrid.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4// vi: set et ts=4 sw=2 sts=2:
5#ifndef DUNE_ALBERTAGRID_IMP_HH
6#define DUNE_ALBERTAGRID_IMP_HH
7
13#if HAVE_ALBERTA || DOXYGEN
14
15#include <cassert>
16#include <cstddef>
17
18#include <algorithm>
19#include <iostream>
20#include <fstream>
21#include <memory>
22#include <vector>
23
24// Dune includes
25#include <dune/common/fvector.hh>
26#include <dune/common/fmatrix.hh>
27#include <dune/common/stdstreams.hh>
28#include <dune/common/parallel/communication.hh>
29
34
35//- Local includes
36// some cpp defines and include of alberta.h
37#include "albertaheader.hh"
38
42
50
51#include "indexsets.hh"
52#include "geometry.hh"
53#include "entity.hh"
54#include "hierarchiciterator.hh"
55#include "treeiterator.hh"
56#include "leveliterator.hh"
57#include "leafiterator.hh"
58
59namespace Dune
60{
61
62 // External Forward Declarations
63 // -----------------------------
64
65 template< class Grid >
66 struct DGFGridFactory;
67
68
69
70 // AlbertaGrid
71 // -----------
72
105 template< int dim, int dimworld = Alberta::dimWorld >
108 < dim, dimworld, Alberta::Real, AlbertaGridFamily< dim, dimworld > >
109 {
113 Base;
114
115 template< int, int, class > friend class AlbertaGridEntity;
116 template< class > friend class AlbertaLevelGridView;
117 template< class > friend class AlbertaLeafGridView;
118 template< int, class, bool > friend class AlbertaGridTreeIterator;
119 template< class > friend class AlbertaGridHierarchicIterator;
120
121 friend class GridFactory< This >;
122 friend struct DGFGridFactory< This >;
123
124 friend class AlbertaGridIntersectionBase< const This >;
125 friend class AlbertaGridLeafIntersection< const This >;
126
127 friend class AlbertaMarkerVector< dim, dimworld >;
128#if (__GNUC__ < 4) && !(defined __ICC)
129 // add additional friend decls for gcc 3.4
130 friend struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities<true>;
131 friend struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities<false>;
132#endif
133 friend class AlbertaGridIndexSet< dim, dimworld >;
135
136 template< class, class >
138
139 public:
142
144
147
148 // the Traits
150
155
158
163
166
167 private:
169 typedef typename Traits::template Codim<0>::LeafIterator LeafIterator;
170
172 typedef AlbertaGridIdSet<dim,dimworld> IdSetImp;
173
175 struct AdaptationState
176 {
177 enum Phase { ComputationPhase, PreAdaptationPhase, PostAdaptationPhase };
178
179 private:
180 Phase phase_;
181 int coarsenMarked_;
182 int refineMarked_;
183
184 public:
185 AdaptationState ()
186 : phase_( ComputationPhase ),
187 coarsenMarked_( 0 ),
188 refineMarked_( 0 )
189 {}
190
191 void mark ( int count )
192 {
193 if( count < 0 )
194 ++coarsenMarked_;
195 if( count > 0 )
196 refineMarked_ += (2 << count);
197 }
198
199 void unmark ( int count )
200 {
201 if( count < 0 )
202 --coarsenMarked_;
203 if( count > 0 )
204 refineMarked_ -= (2 << count);
205 }
206
207 bool coarsen () const
208 {
209 return (coarsenMarked_ > 0);
210 }
211
212 int refineMarked () const
213 {
214 return refineMarked_;
215 }
216
217 void preAdapt ()
218 {
219 if( phase_ != ComputationPhase )
220 error( "preAdapt may only be called in computation phase." );
221 phase_ = PreAdaptationPhase;
222 }
223
224 void adapt ()
225 {
226 if( phase_ != PreAdaptationPhase )
227 error( "adapt may only be called in preadapdation phase." );
228 phase_ = PostAdaptationPhase;
229 }
230
231 void postAdapt ()
232 {
233 if( phase_ != PostAdaptationPhase )
234 error( "postAdapt may only be called in postadaptation phase." );
235 phase_ = ComputationPhase;
236
237 coarsenMarked_ = 0;
238 refineMarked_ = 0;
239 }
240
241 private:
242 void error ( const std::string &message )
243 {
245 }
246 };
247
248 template< class DataHandler >
249 struct AdaptationCallback;
250
251 // max number of allowed levels is 64
252 static const int MAXL = 64;
253
254 typedef Alberta::ElementInfo< dimension > ElementInfo;
255 typedef Alberta::MeshPointer< dimension > MeshPointer;
257 typedef AlbertaGridLevelProvider< dimension > LevelProvider;
258
259 public:
260 AlbertaGrid ( const This & ) = delete;
261 This &operator= ( const This & ) = delete;
262
264 AlbertaGrid ();
265
272 const std::shared_ptr< DuneBoundaryProjection< dimensionworld > > &projection
273 = std::shared_ptr< DuneBoundaryProjection< dimensionworld > >() );
274
275 template< class Proj, class Impl >
277 const Alberta::ProjectionFactoryInterface< Proj, Impl > &projectionFactory );
278
283 AlbertaGrid ( const std::string &macroGridFileName );
284
286 ~AlbertaGrid ();
287
290 int maxLevel () const;
291
293 template<int cd, PartitionIteratorType pitype>
294 typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
295 lbegin (int level) const;
296
298 template<int cd, PartitionIteratorType pitype>
299 typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
300 lend (int level) const;
301
303 template< int codim >
305 lbegin ( int level ) const;
306
308 template< int codim >
310 lend ( int level ) const;
311
313 template< int codim, PartitionIteratorType pitype >
314 typename Traits
315 ::template Codim< codim >::template Partition< pitype >::LeafIterator
316 leafbegin () const;
317
319 template< int codim, PartitionIteratorType pitype >
320 typename Traits
321 ::template Codim< codim >::template Partition< pitype >::LeafIterator
322 leafend () const;
323
325 template< int codim >
327 leafbegin () const;
328
330 template< int codim >
332 leafend () const;
333
338 int size (int level, int codim) const;
339
341 int size (int level, GeometryType type) const;
342
344 int size (int codim) const;
345
347 int size (GeometryType type) const;
348
350 std::size_t numBoundarySegments () const
351 {
352 return numBoundarySegments_;
353 }
354
356 typename Traits::LevelGridView levelGridView ( int level ) const
357 {
358 typedef typename Traits::LevelGridView View;
359 typedef typename View::GridViewImp ViewImp;
360 return View( ViewImp( *this, level ) );
361 }
362
365 {
366 typedef typename Traits::LeafGridView View;
367 typedef typename View::GridViewImp ViewImp;
368 return View( ViewImp( *this ) );
369 }
370
371 public:
372 //***************************************************************
373 // Interface for Adaptation
374 //***************************************************************
375 using Base::getMark;
376 using Base::mark;
377
379 int getMark ( const typename Traits::template Codim< 0 >::Entity &e ) const;
380
382 bool mark ( int refCount, const typename Traits::template Codim< 0 >::Entity &e );
383
385 void globalRefine ( int refCount );
386
387 template< class DataHandle >
388 void globalRefine ( int refCount, AdaptDataHandleInterface< This, DataHandle > &handle );
389
391 bool adapt ();
392
394 template< class DataHandle >
396
398 bool preAdapt ();
399
401 void postAdapt();
402
405 const Communication &comm () const
406 {
407 return comm_;
408 }
409
410 static std::string typeName ()
411 {
412 std::ostringstream s;
413 s << "AlbertaGrid< " << dim << ", " << dimworld << " >";
414 return s.str();
415 }
416
418 template< class EntitySeed >
419 typename Traits::template Codim< EntitySeed::codimension >::Entity
420 entity ( const EntitySeed &seed ) const
421 {
423 return EntityImpl( *this, seed.impl().elementInfo( meshPointer() ), seed.impl().subEntity() );
424 }
425
426 //**********************************************************
427 // End of Interface Methods
428 //**********************************************************
430 bool writeGrid( const std::string &filename, ctype time ) const;
431
433 bool readGrid( const std::string &filename, ctype &time );
434
435 // return hierarchic index set
436 const HierarchicIndexSet & hierarchicIndexSet () const { return hIndexSet_; }
437
439 const typename Traits :: LevelIndexSet & levelIndexSet (int level) const;
440
442 const typename Traits :: LeafIndexSet & leafIndexSet () const;
443
445 const GlobalIdSet &globalIdSet () const
446 {
447 return idSet_;
448 }
449
451 const LocalIdSet &localIdSet () const
452 {
453 return idSet_;
454 }
455
456 // access to mesh pointer, needed by some methods
458 {
459 return mesh_;
460 };
461
462 const MeshPointer &meshPointer () const
463 {
464 return mesh_;
465 }
466
468 {
469 return dofNumbering_;
470 }
471
473 {
474 return levelProvider_;
475 }
476
477 int dune2alberta ( int codim, int i ) const
478 {
479 return numberingMap_.dune2alberta( codim, i );
480 }
481
482 int alberta2dune ( int codim, int i ) const
483 {
484 return numberingMap_.alberta2dune( codim, i );
485 }
486
487 int generic2alberta ( int codim, int i ) const
488 {
489 return genericNumberingMap_.dune2alberta( codim, i );
490 }
491
492 int alberta2generic ( int codim, int i ) const
493 {
494 return genericNumberingMap_.alberta2dune( codim, i );
495 }
496
497 private:
498 typedef std::vector<int> ArrayType;
499
500 void setup ();
501
502 // make the calculation of indexOnLevel and so on.
503 // extra method because of Reihenfolge
504 void calcExtras();
505
506 private:
507 // delete mesh and all vectors
508 void removeMesh();
509
510 //***********************************************************************
511 // MemoryManagement for Entities and Geometries
512 //**********************************************************************
515
516 public:
518
519 template< int codim >
520 static int
522 {
523 return entity.impl().twist();
524 }
525
526 template< int codim >
527 static int
528 getTwist ( const typename Traits::template Codim< 0 >::Entity &entity, int subEntity )
529 {
530 return entity.impl().template twist< codim >( subEntity );
531 }
532
533 static int
534 getTwistInInside ( const typename Traits::LeafIntersection &intersection )
535 {
536 return intersection.impl().twistInInside();
537 }
538
539 static int
540 getTwistInOutside ( const typename Traits::LeafIntersection &intersection )
541 {
542 return intersection.impl().twistInOutside();
543 }
544
545 public:
546 // read global element number from elNumbers_
548 getCoord ( const ElementInfo &elementInfo, int vertex ) const;
549
550 private:
551 // pointer to an Albert Mesh, which contains the data
552 MeshPointer mesh_;
553
554 // communication
555 Communication comm_;
556
557 // maximum level of the mesh
558 int maxlevel_;
559
560 // number of boundary segments within the macro grid
561 size_t numBoundarySegments_;
562
563 // map between ALBERTA and DUNE numbering
566
567 DofNumbering dofNumbering_;
568
569 LevelProvider levelProvider_;
570
571 // hierarchical numbering of AlbertaGrid, unique per codim
572 HierarchicIndexSet hIndexSet_;
573
574 // the id set of this grid
575 IdSetImp idSet_;
576
577 // the level index set, is generated from the HierarchicIndexSet
578 // is generated, when accessed
579 mutable std::vector< typename GridFamily::LevelIndexSetImp * > levelIndexVec_;
580
581 // the leaf index set, is generated from the HierarchicIndexSet
582 // is generated, when accessed
583 mutable typename GridFamily::LeafIndexSetImp* leafIndexSet_;
584
585 SizeCache< This > sizeCache_;
586
587 typedef AlbertaMarkerVector< dim, dimworld > MarkerVector;
588
589 // needed for VertexIterator, mark on which element a vertex is treated
590 mutable MarkerVector leafMarkerVector_;
591
592 // needed for VertexIterator, mark on which element a vertex is treated
593 mutable std::vector< MarkerVector > levelMarkerVector_;
594
595#if DUNE_ALBERTA_CACHE_COORDINATES
597#endif
598
599 // current state of adaptation
600 AdaptationState adaptationState_;
601 };
602
603} // namespace Dune
604
605#include "albertagrid.cc"
606
607// undef all dangerous defines
608#undef DIM
609#undef DIM_OF_WORLD
610
611#ifdef _ABS_NOT_DEFINED_
612#undef ABS
613#endif
614
615#ifdef _MIN_NOT_DEFINED_
616#undef MIN
617#endif
618
619#ifdef _MAX_NOT_DEFINED_
620#undef MAX
621#endif
622
623#ifdef obstack_chunk_alloc
624#undef obstack_chunk_alloc
625#endif
626#ifdef obstack_chunk_free
627#undef obstack_chunk_free
628#endif
630
631// We use MEM_ALLOC, so undefine it here.
632#undef MEM_ALLOC
633
634// We use MEM_REALLOC, so undefine it here.
635#undef MEM_REALLOC
636
637// We use MEM_CALLOC, so undefine it here.
638#undef MEM_CALLOC
639
640// We use MEM_FREE, so undefine it here.
641#undef MEM_FREE
642
643// Macro ERROR may be defined by alberta_util.h. If so, undefine it.
644#ifdef ERROR
645#undef ERROR
646#endif // #ifdef ERROR
647
648// Macro ERROR_EXIT may be defined by alberta_util.h. If so, undefine it.
649#ifdef ERROR_EXIT
650#undef ERROR_EXIT
651#endif // #ifdef ERROR_EXIT
652
653// Macro WARNING may be defined by alberta_util.h. If so, undefine it.
654#ifdef WARNING
655#undef WARNING
656#endif // #ifdef WARNING
657
658// Macro TEST may be defined by alberta_util.h. If so, undefine it.
659#ifdef TEST
660#undef TEST
661#endif // #ifdef TEST
662
663// Macro TEST_EXIT may be defined by alberta_util.h. If so, undefine it.
664#ifdef TEST_EXIT
665#undef TEST_EXIT
666#endif // #ifdef TEST_EXIT
667
668// Macro DEBUG_TEST may be defined by alberta_util.h. If so, undefine it.
669#ifdef DEBUG_TEST
670#undef DEBUG_TEST
671#endif // #ifdef DEBUG_TEST
672
673// Macro DEBUG_TEST_EXIT may be defined by alberta_util.h. If so, undefine it.
674#ifdef DEBUG_TEST_EXIT
675#undef DEBUG_TEST_EXIT
676#endif // #ifdef DEBUG_TEST_EXIT
677
678// Macro INFO may be defined by alberta_util.h. If so, undefine it.
679#ifdef INFO
680#undef INFO
681#endif // #ifdef INFO
682
683// Macro PRINT_INFO may be defined by alberta_util.h. If so, undefine it.
684#ifdef PRINT_INFO
685#undef PRINT_INFO
686#endif // #ifdef PRINT_INFO
687
688// Macro PRINT_INT_VEC may be defined by alberta_util.h. If so, undefine it.
689#ifdef PRINT_INT_VEC
690#undef PRINT_INT_VEC
691#endif // #ifdef PRINT_INT_VEC
692
693// Macro PRINT_REAL_VEC may be defined by alberta_util.h. If so, undefine it.
694#ifdef PRINT_REAL_VEC
695#undef PRINT_REAL_VEC
696#endif // #ifdef PRINT_REAL_VEC
697
698// Macro WAIT may be defined by alberta_util.h. If so, undefine it.
699#ifdef WAIT
700#undef WAIT
701#endif // #ifdef WAIT
702
703// Macro WAIT_REALLY may be defined by alberta_util.h. If so, undefine it.
704#ifdef WAIT_REALLY
705#undef WAIT_REALLY
706#endif // #ifdef WAIT_REALLY
707
708// Macro GET_WORKSPACE may be defined by alberta_util.h. If so, undefine it.
709#ifdef GET_WORKSPACE
710#undef GET_WORKSPACE
711#endif // #ifdef GET_WORKSPACE
712
713// Macro FREE_WORKSPACE may be defined by alberta_util.h. If so, undefine it.
714#ifdef FREE_WORKSPACE
715#undef FREE_WORKSPACE
716#endif // #ifdef FREE_WORKSPACE
717
718// Macro MAT_ALLOC may be defined by alberta_util.h. If so, undefine it.
719#ifdef MAT_ALLOC
720#undef MAT_ALLOC
721#endif // #ifdef MAT_ALLOC
722
723// Macro MAT_FREE may be defined by alberta_util.h. If so, undefine it.
724#ifdef MAT_FREE
725#undef MAT_FREE
726#endif // #ifdef MAT_FREE
727
728// Macro NAME may be defined by alberta_util.h. If so, undefine it.
729#ifdef NAME
730#undef NAME
731#endif // #ifdef NAME
732
733// Macro GET_STRUCT may be defined by alberta_util.h. If so, undefine it.
734#ifdef GET_STRUCT
735#undef GET_STRUCT
736#endif // #ifdef GET_STRUCT
737
738// Macro ADD_PARAMETER may be defined by alberta_util.h. If so, undefine it.
739#ifdef ADD_PARAMETER
740#undef ADD_PARAMETER
741#endif // #ifdef ADD_PARAMETER
742
743// Macro GET_PARAMETER may be defined by alberta_util.h. If so, undefine it.
744#ifdef GET_PARAMETER
745#undef GET_PARAMETER
746#endif // #ifdef GET_PARAMETER
747
748#define _ALBERTA_H_
749
750#endif // HAVE_ALBERTA || DOXYGEN
751
752#endif
Provides size cache classes to implement the grids size method efficiently.
interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
Contains #undefs for all preprocessor macros defined by alberta.
#define ALBERTA
Definition albertaheader.hh:29
Include standard header files.
Definition agrid.hh:60
ALBERTA REAL Real
Definition misc.hh:48
ALBERTA REAL_D GlobalVector
Definition misc.hh:50
Definition dgfgridfactory.hh:38
[ provides Dune::Grid ]
Definition agrid.hh:109
bool readGrid(const std::string &filename, ctype &time)
read Grid from file filename and store time of mesh in time
Definition albertagrid.cc:585
const DofNumbering & dofNumbering() const
Definition agrid.hh:467
int generic2alberta(int codim, int i) const
Definition agrid.hh:487
static std::string typeName()
Definition agrid.hh:410
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
return LeafIterator which points to first leaf entity
const HierarchicIndexSet & hierarchicIndexSet() const
Definition agrid.hh:436
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
static const int dimension
Definition agrid.hh:145
int dune2alberta(int codim, int i) const
Definition agrid.hh:477
Traits::Communication Communication
type of communication
Definition agrid.hh:165
int maxLevel() const
Definition albertagrid.cc:483
AlbertaGrid()
create an empty grid
Definition albertagrid.cc:42
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
const LevelProvider & levelProvider() const
Definition agrid.hh:472
static int getTwistInOutside(const typename Traits::LeafIntersection &intersection)
Definition agrid.hh:540
const Alberta::GlobalVector & getCoord(const ElementInfo &elementInfo, int vertex) const
Definition albertagrid.cc:471
Traits::template Codim< codim >::LevelIterator lend(int level) const
one past the end on this level
Traits::LeafGridView leafGridView() const
View for the leaf grid for All_Partition.
Definition agrid.hh:364
bool adapt()
Refine all positive marked leaf entities, coarsen all negative marked entities if possible.
Definition albertagrid.cc:415
static const int dimensionworld
Definition agrid.hh:146
static int getTwistInInside(const typename Traits::LeafIntersection &intersection)
Definition agrid.hh:534
void postAdapt()
clean up some markers
Definition albertagrid.cc:356
Traits::template Codim< codim >::LeafIterator leafbegin() const
return LeafIterator which points to first leaf entity
const LocalIdSet & localIdSet() const
return local IdSet
Definition agrid.hh:451
std::size_t numBoundarySegments() const
number of boundary segments within the macro grid
Definition agrid.hh:350
GridFamily::ctype ctype
Definition agrid.hh:143
AlbertaGrid(const This &)=delete
Traits::template Codim< codim >::LeafIterator leafend() const
return LeafIterator which points behind last leaf entity
const Traits::LevelIndexSet & levelIndexSet(int level) const
return level index set for given level
Definition albertagrid.cc:520
int alberta2generic(int codim, int i) const
Definition agrid.hh:492
static int getTwist(const typename Traits::template Codim< codim >::Entity &entity)
Definition agrid.hh:521
const Communication & comm() const
return reference to communication, if MPI found this is specialisation for MPI
Definition agrid.hh:405
ALBERTA MESH * getMesh() const
Definition agrid.hh:457
int size(int level, int codim) const
Number of grid entities per level and codim because lbegin and lend are none const,...
Definition albertagrid.cc:490
Traits::HierarchicIndexSet HierarchicIndexSet
type of hierarchic index set
Definition agrid.hh:157
const Traits::LeafIndexSet & leafIndexSet() const
return leaf index set
Definition albertagrid.cc:535
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
return LeafIterator which points behind last leaf entity
bool writeGrid(const std::string &filename, ctype time) const
write Grid to file in Xdr
Definition albertagrid.cc:575
Traits::LevelGridView levelGridView(int level) const
View for a grid level for All_Partition.
Definition agrid.hh:356
int alberta2dune(int codim, int i) const
Definition agrid.hh:482
This & operator=(const This &)=delete
AlbertaGridFamily< dim, dimworld >::Traits Traits
Definition agrid.hh:149
static int getTwist(const typename Traits::template Codim< 0 >::Entity &entity, int subEntity)
Definition agrid.hh:528
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
const GlobalIdSet & globalIdSet() const
return global IdSet
Definition agrid.hh:445
void globalRefine(int refCount)
uses the interface, mark on entity and refineLocal
Definition albertagrid.cc:304
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
returns adaptation mark for given entity
Definition albertagrid.cc:408
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
obtain Entity from EntitySeed.
Definition agrid.hh:420
~AlbertaGrid()
destructor
Definition albertagrid.cc:196
bool preAdapt()
returns true, if a least one element is marked for coarsening
Definition albertagrid.cc:348
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition albertagrid.cc:385
const MeshPointer & meshPointer() const
Definition agrid.hh:462
Definition coordcache.hh:25
Definition albertagrid/datahandle.hh:27
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition common/intersection.hh:164
Implementation & impl()
access to the underlying implementation
Definition common/intersection.hh:178
Definition treeiterator.hh:189
Definition hierarchiciterator.hh:29
Definition albertagrid/intersection.hh:105
Definition albertagrid/intersectioniterator.hh:27
Definition albertagrid/entity.hh:46
Definition albertagrid/indexsets.hh:42
hierarchic index set of AlbertaGrid
Definition albertagrid/indexsets.hh:518
Definition albertagrid/indexsets.hh:329
Definition albertagrid/gridfamily.hh:83
static const int dimension
Definition albertagrid/gridfamily.hh:88
static const int dimensionworld
Definition albertagrid/gridfamily.hh:89
AlbertaGridIndexSet< dim, dimworld > LeafIndexSetImp
Definition albertagrid/gridfamily.hh:92
Alberta::Real ctype
Definition albertagrid/gridfamily.hh:86
Definition albertagrid/gridfamily.hh:98
Dune::Communication< No_Comm > Communication
Definition albertagrid/gridfamily.hh:148
Definition albertagrid/gridfamily.hh:117
Definition albertagrid/gridview.hh:76
Definition albertagrid/gridview.hh:287
Definition albertagrid/intersection.hh:32
int alberta2dune(int codim, int i) const
Definition misc.hh:397
int dune2alberta(int codim, int i) const
Definition misc.hh:390
Definition albertagrid/projection.hh:80
marker assigning subentities to one element containing them
Definition treeiterator.hh:35
Interface class for the Grid's adapt method where the parameter is a AdaptDataHandleInterface.
Definition adaptcallback.hh:33
Store a reference to an entity with a minimal memory footprint.
Definition common/entityseed.hh:26
Implementation & impl()
access to the underlying implementation
Definition common/entityseed.hh:59
Definition common/grid.hh:848
bool mark(int refCount, const typename Traits ::template Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition common/grid.hh:929
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
returns adaptation mark for given entity, i.e. here the default implementation returns 0.
Definition common/grid.hh:941
A Traits struct that collects all associated types of one implementation.
Definition common/grid.hh:411
Definition common/grid.hh:1121
Provide a generic factory class for unstructured grids.
Definition common/gridfactory.hh:275
Grid view abstract base class.
Definition common/gridview.hh:66
organizes the caching of sizes for one grid and one GeometryType
Definition sizecache.hh:33
Provide a generic factory class for unstructured grids.
provides the GridFamily for AlbertaGrid
Implementation of the IntersectionIterator for AlbertaGrid.
Different resources needed by all grid implementations.