Dune Core Modules (2.5.2)

agrid.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_ALBERTAGRID_IMP_HH
4 #define DUNE_ALBERTAGRID_IMP_HH
5 
11 #if HAVE_ALBERTA || DOXYGEN
12 
13 #include <cassert>
14 #include <cstddef>
15 
16 #include <algorithm>
17 #include <iostream>
18 #include <fstream>
19 #include <memory>
20 #include <vector>
21 
22 // Dune includes
24 #include <dune/common/fvector.hh>
25 #include <dune/common/fmatrix.hh>
28 
29 #include <dune/grid/common/grid.hh>
33 
34 //- Local includes
35 // some cpp defines and include of alberta.h
36 #include "albertaheader.hh"
37 
38 #include <dune/grid/albertagrid/misc.hh>
39 #include <dune/grid/albertagrid/capabilities.hh>
40 #include <dune/grid/albertagrid/backuprestore.hh>
41 
42 #include <dune/grid/albertagrid/coordcache.hh>
44 #include <dune/grid/albertagrid/level.hh>
45 #include <dune/grid/albertagrid/intersection.hh>
47 #include <dune/grid/albertagrid/datahandle.hh>
48 #include <dune/grid/albertagrid/entityseed.hh>
49 
50 #include "indexsets.hh"
51 #include "geometry.hh"
52 #include "entity.hh"
53 #include "entitypointer.hh"
54 #include "hierarchiciterator.hh"
55 #include "treeiterator.hh"
56 #include "leveliterator.hh"
57 #include "leafiterator.hh"
58 
59 namespace Dune
60 {
61 
62  // External Forward Declarations
63  // -----------------------------
64 
65  template< class Grid >
66  struct DGFGridFactory;
67 
68 
69 
70  // AlbertaGrid
71  // -----------
72 
136  template< int dim, int dimworld = Alberta::dimWorld >
139  < dim, dimworld, Alberta::Real, AlbertaGridFamily< dim, dimworld > >
140  {
143  < dim, dimworld, Alberta::Real, AlbertaGridFamily< dim, dimworld > >
144  Base;
145 
146  template< int, int, class > friend class AlbertaGridEntity;
147  template< int, class > friend class AlbertaGridEntityPointer;
148  template< class > friend class AlbertaLevelGridView;
149  template< class > friend class AlbertaLeafGridView;
150 
151  friend class GridFactory< This >;
152  friend struct DGFGridFactory< This >;
153 
154  friend class AlbertaGridHierarchicIterator< This >;
155 
156  friend class AlbertaGridIntersectionBase< const This >;
157  friend class AlbertaGridLeafIntersection< const This >;
158 
159  friend class AlbertaMarkerVector< dim, dimworld >;
160 #if (__GNUC__ < 4) && !(defined __ICC)
161  // add additional friend decls for gcc 3.4
162  friend struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities<true>;
163  friend struct AlbertaMarkerVector< dim, dimworld >::MarkSubEntities<false>;
164 #endif
165  friend class AlbertaGridIndexSet< dim, dimworld >;
166  friend class AlbertaGridHierarchicIndexSet< dim, dimworld >;
167 
168  template< class, class >
169  friend class Alberta::AdaptRestrictProlongHandler;
170 
171  public:
173  typedef AlbertaGridFamily< dim, dimworld > GridFamily;
174 
175  typedef typename GridFamily::ctype ctype;
176 
177  static const int dimension = GridFamily::dimension;
178  static const int dimensionworld = GridFamily::dimensionworld;
179 
180  // the Traits
181  typedef typename AlbertaGridFamily< dim, dimworld >::Traits Traits;
182 
187 
189  typedef typename Traits::HierarchicIndexSet HierarchicIndexSet;
190 
194  typedef typename Traits::LocalIdSet LocalIdSet;
195 
198 
199  private:
201  typedef typename Traits::template Codim<0>::LeafIterator LeafIterator;
202 
204  typedef AlbertaGridIdSet<dim,dimworld> IdSetImp;
205 
207  struct AdaptationState
208  {
209  enum Phase { ComputationPhase, PreAdaptationPhase, PostAdaptationPhase };
210 
211  private:
212  Phase phase_;
213  int coarsenMarked_;
214  int refineMarked_;
215 
216  public:
217  AdaptationState ()
218  : phase_( ComputationPhase ),
219  coarsenMarked_( 0 ),
220  refineMarked_( 0 )
221  {}
222 
223  void mark ( int count )
224  {
225  if( count < 0 )
226  ++coarsenMarked_;
227  if( count > 0 )
228  refineMarked_ += (2 << count);
229  }
230 
231  void unmark ( int count )
232  {
233  if( count < 0 )
234  --coarsenMarked_;
235  if( count > 0 )
236  refineMarked_ -= (2 << count);
237  }
238 
239  bool coarsen () const
240  {
241  return (coarsenMarked_ > 0);
242  }
243 
244  int refineMarked () const
245  {
246  return refineMarked_;
247  }
248 
249  void preAdapt ()
250  {
251  if( phase_ != ComputationPhase )
252  error( "preAdapt may only be called in computation phase." );
253  phase_ = PreAdaptationPhase;
254  }
255 
256  void adapt ()
257  {
258  if( phase_ != PreAdaptationPhase )
259  error( "adapt may only be called in preadapdation phase." );
260  phase_ = PostAdaptationPhase;
261  }
262 
263  void postAdapt ()
264  {
265  if( phase_ != PostAdaptationPhase )
266  error( "postAdapt may only be called in postadaptation phase." );
267  phase_ = ComputationPhase;
268 
269  coarsenMarked_ = 0;
270  refineMarked_ = 0;
271  }
272 
273  private:
274  void error ( const std::string &message )
275  {
276  DUNE_THROW( InvalidStateException, message );
277  }
278  };
279 
280  template< class DataHandler >
281  struct AdaptationCallback;
282 
283  // max number of allowed levels is 64
284  static const int MAXL = 64;
285 
286  typedef Alberta::ElementInfo< dimension > ElementInfo;
287  typedef Alberta::MeshPointer< dimension > MeshPointer;
288  typedef Alberta::HierarchyDofNumbering< dimension > DofNumbering;
289  typedef AlbertaGridLevelProvider< dimension > LevelProvider;
290 
291  // forbid copying and assignment
292  AlbertaGrid ( const This & );
293  This &operator= ( const This & );
294 
295  public:
297  AlbertaGrid ();
298 
304  AlbertaGrid ( const Alberta::MacroData< dimension > &macroData,
305  const std::shared_ptr< DuneBoundaryProjection< dimensionworld > > &projection
306  = std::shared_ptr< DuneBoundaryProjection< dimensionworld > >() );
307 
308  template< class Proj, class Impl >
309  AlbertaGrid ( const Alberta::MacroData< dimension > &macroData,
310  const Alberta::ProjectionFactoryInterface< Proj, Impl > &projectionFactory );
311 
316  AlbertaGrid ( const std::string &macroGridFileName );
317 
319  ~AlbertaGrid ();
320 
323  int maxLevel () const;
324 
326  template<int cd, PartitionIteratorType pitype>
327  typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
328  lbegin (int level) const;
329 
331  template<int cd, PartitionIteratorType pitype>
332  typename Traits::template Codim<cd>::template Partition<pitype>::LevelIterator
333  lend (int level) const;
334 
336  template< int codim >
337  typename Traits::template Codim< codim >::LevelIterator
338  lbegin ( int level ) const;
339 
341  template< int codim >
342  typename Traits::template Codim< codim >::LevelIterator
343  lend ( int level ) const;
344 
346  template< int codim, PartitionIteratorType pitype >
347  typename Traits
348  ::template Codim< codim >::template Partition< pitype >::LeafIterator
349  leafbegin () const;
350 
352  template< int codim, PartitionIteratorType pitype >
353  typename Traits
354  ::template Codim< codim >::template Partition< pitype >::LeafIterator
355  leafend () const;
356 
358  template< int codim >
359  typename Traits::template Codim< codim >::LeafIterator
360  leafbegin () const;
361 
363  template< int codim >
364  typename Traits::template Codim< codim >::LeafIterator
365  leafend () const;
366 
371  int size (int level, int codim) const;
372 
374  int size (int level, GeometryType type) const;
375 
377  int size (int codim) const;
378 
380  int size (GeometryType type) const;
381 
383  std::size_t numBoundarySegments () const
384  {
385  return numBoundarySegments_;
386  }
387 
389  typename Traits::LevelGridView levelGridView ( int level ) const
390  {
391  typedef typename Traits::LevelGridView View;
392  typedef typename View::GridViewImp ViewImp;
393  return View( ViewImp( *this, level ) );
394  }
395 
398  {
399  typedef typename Traits::LeafGridView View;
400  typedef typename View::GridViewImp ViewImp;
401  return View( ViewImp( *this ) );
402  }
403 
404  public:
405  //***************************************************************
406  // Interface for Adaptation
407  //***************************************************************
408  using Base::getMark;
409  using Base::mark;
410 
412  int getMark ( const typename Traits::template Codim< 0 >::Entity &e ) const;
413 
415  bool mark ( int refCount, const typename Traits::template Codim< 0 >::Entity &e );
416 
418  void globalRefine ( int refCount );
419 
420  template< class DataHandle >
421  void globalRefine ( int refCount, AdaptDataHandleInterface< This, DataHandle > &handle );
422 
424  bool adapt ();
425 
427  template< class DataHandle >
429 
431  bool preAdapt ();
432 
434  void postAdapt();
435 
439  {
440  return comm_;
441  }
442 
443  static std::string typeName ()
444  {
445  std::ostringstream s;
446  s << "AlbertaGrid< " << dim << ", " << dimworld << " >";
447  return s.str();
448  }
449 
451  template< class EntitySeed >
452  typename Traits::template Codim< EntitySeed::codimension >::Entity
453  entity ( const EntitySeed &seed ) const
454  {
455  typedef typename Traits::template Codim< EntitySeed::codimension >::EntityImpl EntityImpl;
456  return EntityImpl( *this, this->getRealImplementation(seed).elementInfo( meshPointer() ), this->getRealImplementation(seed).subEntity() );
457  }
458 
459  //**********************************************************
460  // End of Interface Methods
461  //**********************************************************
463  bool writeGrid( const std::string &filename, ctype time ) const;
464 
466  bool readGrid( const std::string &filename, ctype &time );
467 
468  // return hierarchic index set
469  const HierarchicIndexSet & hierarchicIndexSet () const { return hIndexSet_; }
470 
472  const typename Traits :: LevelIndexSet & levelIndexSet (int level) const;
473 
475  const typename Traits :: LeafIndexSet & leafIndexSet () const;
476 
478  const GlobalIdSet &globalIdSet () const
479  {
480  return idSet_;
481  }
482 
484  const LocalIdSet &localIdSet () const
485  {
486  return idSet_;
487  }
488 
489  // access to mesh pointer, needed by some methods
490  ALBERTA MESH* getMesh () const
491  {
492  return mesh_;
493  };
494 
495  const MeshPointer &meshPointer () const
496  {
497  return mesh_;
498  }
499 
500  const DofNumbering &dofNumbering () const
501  {
502  return dofNumbering_;
503  }
504 
505  const LevelProvider &levelProvider () const
506  {
507  return levelProvider_;
508  }
509 
510  int dune2alberta ( int codim, int i ) const
511  {
512  return numberingMap_.dune2alberta( codim, i );
513  }
514 
515  int alberta2dune ( int codim, int i ) const
516  {
517  return numberingMap_.alberta2dune( codim, i );
518  }
519 
520  int generic2alberta ( int codim, int i ) const
521  {
522  return genericNumberingMap_.dune2alberta( codim, i );
523  }
524 
525  int alberta2generic ( int codim, int i ) const
526  {
527  return genericNumberingMap_.alberta2dune( codim, i );
528  }
529 
530  // write ALBERTA mesh file
531  bool
532  DUNE_DEPRECATED_MSG("Deprecated in Dune 3.0, use writeGrid instead.")
533  writeGridXdr ( const std::string &filename, ctype time ) const;
534 
536  bool
537  DUNE_DEPRECATED_MSG("Deprecated in Dune 3.0, use readGrid instead.")
538  readGridXdr ( const std::string &filename, ctype &time );
539 
540  private:
541  using Base::getRealImplementation;
542 
543  typedef std::vector<int> ArrayType;
544 
545  void setup ();
546 
547  // make the calculation of indexOnLevel and so on.
548  // extra method because of Reihenfolge
549  void calcExtras();
550 
551  private:
552  // delete mesh and all vectors
553  void removeMesh();
554 
555  //***********************************************************************
556  // MemoryManagement for Entitys and Geometrys
557  //**********************************************************************
558  typedef MakeableInterfaceObject< typename Traits::template Codim< 0 >::Entity >
559  EntityObject;
560 
561  public:
562  friend class AlbertaGridLeafIntersectionIterator< const This >;
563 
564  template< int codim >
565  static int
566  getTwist ( const typename Traits::template Codim< codim >::Entity &entity )
567  {
568  return getRealImplementation( entity ).twist();
569  }
570 
571  template< int codim >
572  static int
573  getTwist ( const typename Traits::template Codim< 0 >::Entity &entity, int subEntity )
574  {
575  return getRealImplementation( entity ).template twist< codim >( subEntity );
576  }
577 
578  static int
579  getTwistInInside ( const typename Traits::LeafIntersection &intersection )
580  {
581  return getRealImplementation( intersection ).twistInInside();
582  }
583 
584  static int
585  getTwistInOutside ( const typename Traits::LeafIntersection &intersection )
586  {
587  return getRealImplementation( intersection ).twistInOutside();
588  }
589 
590  const AlbertaGridLeafIntersection< const This > &
591  getRealIntersection ( const typename Traits::LeafIntersection &intersection ) const
592  {
593  return getRealImplementation( intersection );
594  }
595 
596  public:
597  // read global element number from elNumbers_
598  const Alberta::GlobalVector &
599  getCoord ( const ElementInfo &elementInfo, int vertex ) const;
600 
601  private:
602  // pointer to an Albert Mesh, which contains the data
603  MeshPointer mesh_;
604 
605  // collective communication
607 
608  // maximum level of the mesh
609  int maxlevel_;
610 
611  // number of boundary segments within the macro grid
612  size_t numBoundarySegments_;
613 
614  // map between ALBERTA and DUNE numbering
615  Alberta::NumberingMap< dimension, Alberta::Dune2AlbertaNumbering > numberingMap_;
616  Alberta::NumberingMap< dimension, Alberta::Generic2AlbertaNumbering > genericNumberingMap_;
617 
618  DofNumbering dofNumbering_;
619 
620  LevelProvider levelProvider_;
621 
622  // hierarchical numbering of AlbertaGrid, unique per codim
623  HierarchicIndexSet hIndexSet_;
624 
625  // the id set of this grid
626  IdSetImp idSet_;
627 
628  // the level index set, is generated from the HierarchicIndexSet
629  // is generated, when accessed
630  mutable std::vector< typename GridFamily::LevelIndexSetImp * > levelIndexVec_;
631 
632  // the leaf index set, is generated from the HierarchicIndexSet
633  // is generated, when accessed
634  mutable typename GridFamily::LeafIndexSetImp* leafIndexSet_;
635 
636  SizeCache< This > sizeCache_;
637 
638  typedef AlbertaMarkerVector< dim, dimworld > MarkerVector;
639 
640  // needed for VertexIterator, mark on which element a vertex is treated
641  mutable MarkerVector leafMarkerVector_;
642 
643  // needed for VertexIterator, mark on which element a vertex is treated
644  mutable std::vector< MarkerVector > levelMarkerVector_;
645 
646 #if DUNE_ALBERTA_CACHE_COORDINATES
647  Alberta::CoordCache< dimension > coordCache_;
648 #endif
649 
650  // current state of adaptation
651  AdaptationState adaptationState_;
652  };
653 
654 } // namespace Dune
655 
656 #include "albertagrid.cc"
657 
658 // undef all dangerous defines
659 #undef DIM
660 #undef DIM_OF_WORLD
661 
662 #ifdef _ABS_NOT_DEFINED_
663 #undef ABS
664 #endif
665 
666 #ifdef _MIN_NOT_DEFINED_
667 #undef MIN
668 #endif
669 
670 #ifdef _MAX_NOT_DEFINED_
671 #undef MAX
672 #endif
673 
674 #ifdef obstack_chunk_alloc
675 #undef obstack_chunk_alloc
676 #endif
677 #ifdef obstack_chunk_free
678 #undef obstack_chunk_free
679 #endif
681 
682 // We use MEM_ALLOC, so undefine it here.
683 #undef MEM_ALLOC
684 
685 // We use MEM_REALLOC, so undefine it here.
686 #undef MEM_REALLOC
687 
688 // We use MEM_CALLOC, so undefine it here.
689 #undef MEM_CALLOC
690 
691 // We use MEM_FREE, so undefine it here.
692 #undef MEM_FREE
693 
694 // Macro ERROR may be defined by alberta_util.h. If so, undefine it.
695 #ifdef ERROR
696 #undef ERROR
697 #endif // #ifdef ERROR
698 
699 // Macro ERROR_EXIT may be defined by alberta_util.h. If so, undefine it.
700 #ifdef ERROR_EXIT
701 #undef ERROR_EXIT
702 #endif // #ifdef ERROR_EXIT
703 
704 // Macro WARNING may be defined by alberta_util.h. If so, undefine it.
705 #ifdef WARNING
706 #undef WARNING
707 #endif // #ifdef WARNING
708 
709 // Macro TEST may be defined by alberta_util.h. If so, undefine it.
710 #ifdef TEST
711 #undef TEST
712 #endif // #ifdef TEST
713 
714 // Macro TEST_EXIT may be defined by alberta_util.h. If so, undefine it.
715 #ifdef TEST_EXIT
716 #undef TEST_EXIT
717 #endif // #ifdef TEST_EXIT
718 
719 // Macro DEBUG_TEST may be defined by alberta_util.h. If so, undefine it.
720 #ifdef DEBUG_TEST
721 #undef DEBUG_TEST
722 #endif // #ifdef DEBUG_TEST
723 
724 // Macro DEBUG_TEST_EXIT may be defined by alberta_util.h. If so, undefine it.
725 #ifdef DEBUG_TEST_EXIT
726 #undef DEBUG_TEST_EXIT
727 #endif // #ifdef DEBUG_TEST_EXIT
728 
729 // Macro INFO may be defined by alberta_util.h. If so, undefine it.
730 #ifdef INFO
731 #undef INFO
732 #endif // #ifdef INFO
733 
734 // Macro PRINT_INFO may be defined by alberta_util.h. If so, undefine it.
735 #ifdef PRINT_INFO
736 #undef PRINT_INFO
737 #endif // #ifdef PRINT_INFO
738 
739 // Macro PRINT_INT_VEC may be defined by alberta_util.h. If so, undefine it.
740 #ifdef PRINT_INT_VEC
741 #undef PRINT_INT_VEC
742 #endif // #ifdef PRINT_INT_VEC
743 
744 // Macro PRINT_REAL_VEC may be defined by alberta_util.h. If so, undefine it.
745 #ifdef PRINT_REAL_VEC
746 #undef PRINT_REAL_VEC
747 #endif // #ifdef PRINT_REAL_VEC
748 
749 // Macro WAIT may be defined by alberta_util.h. If so, undefine it.
750 #ifdef WAIT
751 #undef WAIT
752 #endif // #ifdef WAIT
753 
754 // Macro WAIT_REALLY may be defined by alberta_util.h. If so, undefine it.
755 #ifdef WAIT_REALLY
756 #undef WAIT_REALLY
757 #endif // #ifdef WAIT_REALLY
758 
759 // Macro GET_WORKSPACE may be defined by alberta_util.h. If so, undefine it.
760 #ifdef GET_WORKSPACE
761 #undef GET_WORKSPACE
762 #endif // #ifdef GET_WORKSPACE
763 
764 // Macro FREE_WORKSPACE may be defined by alberta_util.h. If so, undefine it.
765 #ifdef FREE_WORKSPACE
766 #undef FREE_WORKSPACE
767 #endif // #ifdef FREE_WORKSPACE
768 
769 // Macro MAT_ALLOC may be defined by alberta_util.h. If so, undefine it.
770 #ifdef MAT_ALLOC
771 #undef MAT_ALLOC
772 #endif // #ifdef MAT_ALLOC
773 
774 // Macro MAT_FREE may be defined by alberta_util.h. If so, undefine it.
775 #ifdef MAT_FREE
776 #undef MAT_FREE
777 #endif // #ifdef MAT_FREE
778 
779 // Macro NAME may be defined by alberta_util.h. If so, undefine it.
780 #ifdef NAME
781 #undef NAME
782 #endif // #ifdef NAME
783 
784 // Macro GET_STRUCT may be defined by alberta_util.h. If so, undefine it.
785 #ifdef GET_STRUCT
786 #undef GET_STRUCT
787 #endif // #ifdef GET_STRUCT
788 
789 // Macro ADD_PARAMETER may be defined by alberta_util.h. If so, undefine it.
790 #ifdef ADD_PARAMETER
791 #undef ADD_PARAMETER
792 #endif // #ifdef ADD_PARAMETER
793 
794 // Macro GET_PARAMETER may be defined by alberta_util.h. If so, undefine it.
795 #ifdef GET_PARAMETER
796 #undef GET_PARAMETER
797 #endif // #ifdef GET_PARAMETER
798 
799 #define _ALBERTA_H_
800 
801 #endif // HAVE_ALBERTA || DOXYGEN
802 
803 #endif
interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
provides the GridFamily for AlbertaGrid
Implementation of the IntersectionIterator for AlbertaGrid.
Interface class for the Grid's adapt method where the parameter is a AdaptDataHandleInterface.
Definition: adaptcallback.hh:31
EntityPointer implementation for AlbertaGrid.
Definition: entitypointer.hh:19
Definition: entity.hh:47
Definition: hierarchiciterator.hh:29
hierarchic index set of AlbertaGrid
Definition: indexsets.hh:537
[ provides Dune::Grid ]
Definition: agrid.hh:140
bool readGrid(const std::string &filename, ctype &time)
read Grid from file filename and store time of mesh in time
Definition: albertagrid.cc:599
Traits ::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
return LeafIterator which points to first leaf entity
bool mark(int refCount, const typename Traits ::template Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition: grid.hh:973
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: grid.hh:985
int maxLevel() const
Definition: albertagrid.cc:481
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: albertagrid.cc:204
AlbertaGrid()
create an empty grid
Definition: albertagrid.cc:40
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator lend(int level) const
one past the end on this level
Definition: albertagrid.cc:224
Traits::LeafGridView leafGridView() const
View for the leaf grid for All_Partition.
Definition: agrid.hh:397
bool adapt()
Refine all positive marked leaf entities, coarsen all negative marked entities if possible.
Definition: albertagrid.cc:413
bool readGridXdr(const std::string &filename, ctype &time)
reads ALBERTA mesh file
Definition: albertagrid.cc:581
const LocalIdSet & localIdSet() const
return local IdSet
Definition: agrid.hh:484
void postAdapt()
clean up some markers
Definition: albertagrid.cc:354
std::size_t numBoundarySegments() const
number of boundary segments within the macro grid
Definition: agrid.hh:383
const CollectiveCommunication & comm() const
return reference to collective communication, if MPI found this is specialisation for MPI
Definition: agrid.hh:438
AlbertaGridFamily< dim, dimworld > GridFamily
the grid family of AlbertaGrid
Definition: agrid.hh:173
const Traits ::LevelIndexSet & levelIndexSet(int level) const
return level index set for given level
Definition: albertagrid.cc:518
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:488
Traits::HierarchicIndexSet HierarchicIndexSet
type of hierarchic index set
Definition: agrid.hh:189
const Traits ::LeafIndexSet & leafIndexSet() const
return leaf index set
Definition: albertagrid.cc:533
bool writeGrid(const std::string &filename, ctype time) const
write Grid to file in Xdr
Definition: albertagrid.cc:589
Traits::LevelGridView levelGridView(int level) const
View for a grid level for All_Partition.
Definition: agrid.hh:389
Traits ::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
return LeafIterator which points behind last leaf entity
void globalRefine(int refCount)
uses the interface, mark on entity and refineLocal
Definition: albertagrid.cc:302
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
obtain Entity from EntitySeed.
Definition: agrid.hh:453
~AlbertaGrid()
desctructor
Definition: albertagrid.cc:194
const GlobalIdSet & globalIdSet() const
return global IdSet
Definition: agrid.hh:478
bool preAdapt()
returns true, if a least one element is marked for coarsening
Definition: albertagrid.cc:346
Traits::CollectiveCommunication CollectiveCommunication
type of collective communication
Definition: agrid.hh:197
marker assigning subentities to one element containing them
Definition: treeiterator.hh:30
Collective communication interface and sequential default implementation.
Definition: collectivecommunication.hh:79
Store a reference to an entity with a minimal memory footprint.
Definition: entityseed.hh:24
Unique label for each type of entities that can occur in DUNE grids.
Definition: type.hh:268
Definition: grid.hh:920
bool mark(int refCount, const typename Traits ::template Codim< 0 >::Entity &e)
Marks an entity to be refined/coarsened in a subsequent adapt.
Definition: grid.hh:973
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: grid.hh:985
Provide a generic factory class for unstructured grids.
Definition: gridfactory.hh:263
Grid view abstract base class.
Definition: gridview.hh:60
Id Set Interface.
Definition: indexidset.hh:402
Index Set Interface base class.
Definition: indexidset.hh:76
Default exception if a function was called while the object is not in a valid state for that function...
Definition: exceptions.hh:279
Implements an utility class that provides collective communication methods for sequential programs.
Wrapper and interface class for a static iterator (EntityPointer)
Different resources needed by all grid implementations.
Provide a generic factory class for unstructured grids.
Definition of the DUNE_DEPRECATED macro for the case that config.h is not available.
Implements a matrix constructed from a given type representing a field and compile-time given number ...
Implements a vector constructed from a given type representing a field and a compile-time given size.
struct DUNE_DEPRECATED_MSG("Use <type_traits> instead!") ConstantVolatileTraits
Determines whether a type is const or volatile and provides the unqualified types.
Definition: typetraits.hh:57
#define DUNE_THROW(E, m)
Definition: exceptions.hh:216
Dune namespace.
Definition: alignment.hh:11
Provides size cache classes to implement the grids size method efficiently.
Standard Dune debug streams.
Static tag representing a codimension.
Definition: dimension.hh:22
Interface class for vertex projection at the boundary.
Definition: boundaryprojection.hh:24
Contains #undefs for all preprocessor macros defined by alberta.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 14, 22:30, 2024)