55 static constexpr int dimension = 3 ;
60 const std::array<int,3>& cartesianDimensions(
int level)
const
62 return grid_->
currentData()[level]->logicalCartesianSize();
65 int cartesianSize(
int level)
const
67 return computeCartesianSize(level);
70 int compressedSize(
int level)
const
73 return grid_->currentData()[level]->size(0);
76 int cartesianIndex(
const int compressedElementIndex,
const int level)
const
79 assert( compressedElementIndex >= 0 && compressedElementIndex < grid_->currentData()[level]->size(0) );
80 return grid_->currentData()[level]->globalCell()[compressedElementIndex];
83 void cartesianCoordinate(
const int compressedElementIndexOnLevel, std::array<int,dimension>& coordsOnLevel,
int level)
const
86 grid_->currentData()[level]->getIJK( compressedElementIndexOnLevel, coordsOnLevel);
92 int computeCartesianSize(
int level)
const
94 int size = cartesianDimensions(level)[ 0 ];
95 for(
int d=1; d<dimension; ++d )
96 size *= cartesianDimensions(level)[ d ];
100 void validLevel(
int level)
const
102 if ((level < 0) || (level > grid_->
maxLevel())) {
103 throw std::invalid_argument(
"Invalid level.\n");
const std::vector< std::shared_ptr< Dune::cpgrid::CpGridData > > & currentData() const
Returns either data_ or distributed_data_(if non empty).
Definition CpGrid.cpp:662
int maxLevel() const
Return maximum level defined in this grid. Levels are 0 and 1, maxlevel = 1 (not counting leafview),...
Definition CpGrid.cpp:764