Go to the documentation of this file.
3 #ifndef DUNE_GRID_YASPGRID_COORDINATES_HH
4 #define DUNE_GRID_YASPGRID_COORDINATES_HH
10 #include <dune/common/fvector.hh>
25 template<
class ct,
int dim>
67 inline int size(
int d)
const
81 std::array<int,dim> news;
82 Dune::FieldVector<ct,dim> newh;
84 for (
int i=0; i<dim; i++)
103 s <<
"Printing equidistant coordinate information:" << std::endl;
104 s <<
"Meshsize: " << _h << std::endl <<
"Size: " << _s << std::endl;
108 Dune::FieldVector<ct,dim> _h;
109 std::array<int,dim> _s;
112 template<
class ct,
int dim>
123 template<
class ct,
int dim>
143 : _origin(
origin), _h(h), _s(s) {}
160 return _origin[d] + i*_h[d];
188 std::array<int,dim> news;
189 Dune::FieldVector<ct,dim> newh;
191 for (
int i=0; i<dim; i++)
202 newh[i] = _h[i] / 2.;
210 s <<
"Printing equidistant coordinate information:" << std::endl;
211 s <<
"Meshsize: " << _h << std::endl <<
"Size: " << _s << std::endl;
212 s <<
"Offset to origin: " << _origin << std::endl;
216 Dune::FieldVector<ct,dim> _origin;
217 Dune::FieldVector<ct,dim> _h;
218 std::array<int,dim> _s;
221 template<
class ct,
int dim>
232 template<
class ct,
int dim>
251 : _c(c),_offset(offset)
260 return _c[d][i+1-_offset[d]] - _c[d][i-_offset[d]];
269 return _c[d][i-_offset[d]];
277 return _c[d].size() - 1;
288 std::array<std::vector<ct>,dim> newcoords;
289 std::array<int,dim> newoffset(_offset);
290 for (
int i=0; i<dim; i++)
295 int newsize = 2 * _c[i].size() - 1;
306 newcoords[i].resize(newsize);
308 typename std::vector<ct>::const_iterator it = _c[i].begin();
309 typename std::vector<ct>::const_iterator end = _c[i].end()-1;
310 typename std::vector<ct>::iterator iit = newcoords[i].begin() - 1;
317 *(++iit) = (*it + *(++it)) / 2.;
326 *(++iit) = (*it + *(++it)) / 2.;
329 if (++iit != newcoords[i].end())
338 s <<
"Printing TensorProduct Coordinate information:" << std::endl;
339 for (
int i=0; i<dim; i++)
341 s <<
"Direction " << i <<
": " << _c[i].size() <<
" coordinates" << std::endl;
342 for (std::size_t j=0; j<_c[i].size(); j++)
343 s << _c[i][j] << std::endl;
348 std::array<std::vector<ct>,dim> _c;
349 std::array<int,dim> _offset;
352 template<
class ct,
int dim>
360 template<
class ctype, std::
size_t dim>
363 for (std::size_t i=0; i<dim; i++)
365 if (coords[i].size() <= 1)
367 for (std::size_t j=1; j<coords[i].size(); j++)
368 if (coords[i][j] < coords[i][j-1])
ct origin(int d) const
Definition: coordinates.hh:174
bool checkIfMonotonous(const std::array< std::vector< ctype >, dim > &coords)
Definition: coordinates.hh:361
static const int dimension
export dimension
Definition: coordinates.hh:130
EquidistantCoordinates(const Dune::FieldVector< ct, dim > &h, const std::array< int, dim > &s)
construct a container with all necessary information
Definition: coordinates.hh:43
ct ctype
export the coordinate type
Definition: coordinates.hh:30
ct ctype
export the coordinate type
Definition: coordinates.hh:128
Include standard header files.
Definition: agrid.hh:59
ct meshsize(int d, int i) const
Definition: coordinates.hh:50
static const int dimension
export dimension
Definition: coordinates.hh:239
int size(int d) const
Definition: coordinates.hh:67
ct meshsize(int d, int i) const
Definition: coordinates.hh:149
void print(std::ostream &s) const
print information on this container
Definition: coordinates.hh:208
Overlap overlap
PartitionSet for the overlap partition.
Definition: partitionset.hh:226
int size(int d) const
Definition: coordinates.hh:275
TensorProductCoordinates(const std::array< std::vector< ct >, dim > &c, const std::array< int, dim > &offset)
construct a container with all necessary information
Definition: coordinates.hh:250
Container for equidistant coordinates in a YaspGrid with non-trivial origin.
Definition: coordinates.hh:124
ct coordinate(int d, int i) const
Definition: coordinates.hh:59
ct meshsize(int d, int i) const
Definition: coordinates.hh:258
std::ostream & operator<<(std::ostream &out, const PartitionType &type)
write a PartitionType to a stream
Definition: gridenums.hh:70
Coordinate container for a tensor product YaspGrid.
Definition: coordinates.hh:233
int size(int d) const
Definition: coordinates.hh:166
Container for equidistant coordinates in a YaspGrid.
Definition: coordinates.hh:26
void print(std::ostream &s) const
print information on this container
Definition: coordinates.hh:101
EquidistantOffsetCoordinates()
default constructor
Definition: coordinates.hh:133
EquidistantOffsetCoordinates(const Dune::FieldVector< ct, dim > &origin, const Dune::FieldVector< ct, dim > &h, const std::array< int, dim > &s)
construct a container with all necessary information
Definition: coordinates.hh:142
TensorProductCoordinates()
the default constructor
Definition: coordinates.hh:242
ct coordinate(int d, int i) const
Definition: coordinates.hh:158
static const int dimension
export dimension
Definition: coordinates.hh:32
void print(std::ostream &s) const
print information on this container
Definition: coordinates.hh:336
EquidistantCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
Definition: coordinates.hh:78
EquidistantCoordinates()
default constructor
Definition: coordinates.hh:35
EquidistantOffsetCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
Definition: coordinates.hh:185
TensorProductCoordinates< ct, dim > refine(std::bitset< dim > ovlp_low, std::bitset< dim > ovlp_up, int overlap, bool keep_ovlp) const
Definition: coordinates.hh:286
ct coordinate(int d, int i) const
Definition: coordinates.hh:267
ct ctype
export the coordinate type
Definition: coordinates.hh:237