29 assign( theGrid.self() );
32 ~FragmentedUniformGrid3D();
34 bool assign(
const RefPtr<Grid>&theGrid)
36 if (!RegularlyFragmentedGridWithCartesianVertices::assign(theGrid))
39 if (FragmentVerticesInCartesianCoordinates &&
40 FragmentVerticesInCartesianCoordinates->getPositions() )
43 FragmentVerticesInCartesianCoordinates->getPositions()->getData();
46 FragmentCoordinates =
nullptr;
48 if (PerFragmentDataInCartesianCoordinates &&
49 PerFragmentDataInCartesianCoordinates->getPositions() )
51 FragmentBathycenters =
52 PerFragmentDataInCartesianCoordinates->getPositions()->getData();
55 FragmentBathycenters =
nullptr;
57 if (!FragmentCoordinates)
66 return getCoordData(
I);
79static FragmentedUniformGrid3D
80 create(
const MultiIndex<3>&NumberOfFragments,
82 const Eagle::point3&start,
83 const MultiIndex<3>&PerFragmentDims,
84 const Eagle::point3&end,
85 const MultiIndex<3>&Overlap ={1,1,1});
95static FragmentedUniformGrid3D
96 create(
const MultiIndex<3>&NumberOfFragments,
98 const Eagle::point3&start,
99 const Eagle::point3&end_hint,
100 const Eagle::tvector3&CellSize,
101 const MultiIndex<3>&Overlap);
111static FragmentedUniformGrid3D
112 create(
const MultiIndex<3> NumberOfFragments,
115 MultiIndex<3> PerFragmentDims,
116 const Eagle::tvector3 PerFragmentSize,
117 const MultiIndex<3> Overlap,
118 const Eagle::tvector3 CellShift);
121static FragmentedUniformGrid3D
122 createInternal(
const MultiIndex<3>&NumberOfFragments,
124 const Eagle::point3&start,
125 const Eagle::tvector3&CellSize,
126 const MultiIndex<3>&Overlap,
127 const MultiIndex<3>&PerFragmentDims,
128 const Eagle::point3&EndAsIntegerMultipleOfCellSize);