DUNE PDELab (2.8)

structuredyaspgridfactory.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_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH
4#define DUNE_GRID_YASPGRID_STRUCTUREDYASPGRIDFACTORY_HH
5
6#include <memory>
7
9
14namespace Dune
15{
25 template<class ctype, int dim>
27 {
29 static const int dimworld = GridType::dimensionworld;
30
31 public:
42 static std::unique_ptr<GridType>
44 const FieldVector<ctype,dimworld>& upperRight,
45 const std::array<unsigned int,dim>& elements)
46 {
47 using std::abs;
48 for(int d = 0; d < dimworld; ++d)
49 if(abs(lowerLeft[d]) > abs(upperRight[d])*1e-10)
50 DUNE_THROW(GridError, className<StructuredGridFactory>()
51 << "::createCubeGrid(): You have to use Yaspgrid<dim"
52 ", EquidistantOffsetCoordinates<ctype,dim> > as your"
53 "grid type for non-trivial origin." );
54
55 // construct array of ints instead of unsigned ints
56 std::array<int, dim> elem;
57 std::copy(elements.begin(), elements.end(), elem.begin());
58
59 return std::make_unique<GridType>(upperRight, elem,
60 std::bitset<dim>(), 1); // default constructor of bitset sets to zero
61 }
62
68 static std::unique_ptr<GridType>
70 const FieldVector<ctype,dimworld>& upperRight,
71 const std::array<unsigned int,dim>& elements)
72 {
73 DUNE_THROW(GridError, className<StructuredGridFactory>()
74 << "::createSimplexGrid(): Simplices are not supported "
75 "by YaspGrid.");
76 }
77
78 };
79
87 template<class ctype, int dim>
90 static const int dimworld = GridType::dimensionworld;
91
92 public:
99 static std::unique_ptr<GridType>
101 const FieldVector<ctype,dimworld>& upperRight,
102 const std::array<unsigned int,dim>& elements)
103 {
104 // construct array of ints instead of unsigned ints
105 std::array<int, dim> elem;
106 std::copy(elements.begin(), elements.end(), elem.begin());
107
108 return std::make_unique<GridType>(lowerLeft, upperRight, elem,
109 std::bitset<dim>(), 1); // default constructor of bitset sets to zero
110 }
111
117 static std::unique_ptr<GridType>
119 const FieldVector<ctype,dimworld>& upperRight,
120 const std::array<unsigned int,dim>& elements)
121 {
122 DUNE_THROW(GridError, className<StructuredGridFactory>()
123 << "::createSimplexGrid(): Simplices are not supported "
124 "by YaspGrid.");
125 }
126
127 };
128
129} // namespace Dune
130#endif
Container for equidistant coordinates in a YaspGrid.
Definition: coordinates.hh:27
Container for equidistant coordinates in a YaspGrid with non-trivial origin.
Definition: coordinates.hh:129
vector space out of a tensor product of fields.
Definition: fvector.hh:95
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:18
static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
Create a structured cube grid.
Definition: structuredyaspgridfactory.hh:43
static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
Create a structured simplex grid.
Definition: structuredyaspgridfactory.hh:69
static std::unique_ptr< GridType > createCubeGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
Create a structured cube grid.
Definition: structuredyaspgridfactory.hh:100
static std::unique_ptr< GridType > createSimplexGrid(const FieldVector< ctype, dimworld > &lowerLeft, const FieldVector< ctype, dimworld > &upperRight, const std::array< unsigned int, dim > &elements)
Create a structured simplex grid.
Definition: structuredyaspgridfactory.hh:118
Construct structured cube and simplex grids in unstructured grid managers.
Definition: structuredgridfactory.hh:29
[ provides Dune::Grid ]
Definition: yaspgrid.hh:160
#define DUNE_THROW(E, m)
Definition: exceptions.hh:216
Dune namespace.
Definition: alignedallocator.hh:11
A class to construct structured cube and simplex grids using the grid factory.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 21, 23:30, 2024)