FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
FragmentedUniformGrid3D.hpp
1#ifndef __FIBER_GRID_TYPES_REGULARLYFRAGMENTEDUNIFORMGRIDD_HPP
2#define __FIBER_GRID_TYPES_REGULARLYFRAGMENTEDUNIFORMGRIDD_HPP
3
4#include "RegularlyFragmentedGrid.hpp"
5
6namespace Fiber
7{
8
12{
13
15
18
21
23 {
24 assign( theGrid );
25 }
26
27 FragmentedUniformGrid3D(const Grid&theGrid)
28 {
29 assign( theGrid.self() );
30 }
31
32 ~FragmentedUniformGrid3D();
33
34 bool assign(const RefPtr<Grid>&theGrid)
35 {
36 if (!RegularlyFragmentedGridWithCartesianVertices::assign(theGrid))
37 return false;
38
39 if (FragmentVerticesInCartesianCoordinates &&
40 FragmentVerticesInCartesianCoordinates->getPositions() )
41 {
42 FragmentCoordinates =
43 FragmentVerticesInCartesianCoordinates->getPositions()->getData();
44 }
45 else
46 FragmentCoordinates = nullptr;
47
48 if (PerFragmentDataInCartesianCoordinates &&
49 PerFragmentDataInCartesianCoordinates->getPositions() )
50 {
51 FragmentBathycenters =
52 PerFragmentDataInCartesianCoordinates->getPositions()->getData();
53 }
54 else
55 FragmentBathycenters = nullptr;
56
57 if (!FragmentCoordinates)
58 return false;
59
60 return true;
61 }
62
65 {
66 return getCoordData(I);
67 }
68
69 bool isValid() const
70 {
71 return FragmentCoordinates.valid();
72 }
73
74
79static FragmentedUniformGrid3D
80 create( const MultiIndex<3>&NumberOfFragments,
81 Grid&myGrid,
82 const Eagle::point3&start,
83 const MultiIndex<3>&PerFragmentDims,
84 const Eagle::point3&end,
85 const MultiIndex<3>&Overlap ={1,1,1});
86
87
88
95static FragmentedUniformGrid3D
96 create( const MultiIndex<3>&NumberOfFragments,
97 Grid&myGrid,
98 const Eagle::point3&start,
99 const Eagle::point3&end_hint,
100 const Eagle::tvector3&CellSize,
101 const MultiIndex<3>&Overlap);
102
103
111static FragmentedUniformGrid3D
112 create( const MultiIndex<3> NumberOfFragments,
113 Grid&myGrid,
114 Eagle::point3 start,
115 MultiIndex<3> PerFragmentDims,
116 const Eagle::tvector3 PerFragmentSize,
117 const MultiIndex<3> Overlap,
118 const Eagle::tvector3 CellShift);
119
120
121static FragmentedUniformGrid3D
122 createInternal( const MultiIndex<3>&NumberOfFragments,
123 Grid&myGrid,
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);
129
130};
131
132
133
134
135} // namespace Fiber
136
137#endif // __FIBER_GRID_TYPES_REGULARLYFRAGMENTEDUNIFORMGRIDD_HPP
138
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
A Grid is a set of Skeleton objects, each of them accessed via some unique SkeletonID object.
Definition Grid.hpp:60
Convenience class for procedural linear arrays in cartesian coordinates.
Definition UniformCartesianArray.hpp:22
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
Definition FragmentSkeleton.hpp:155
Definition FragmentedUniformGrid3D.hpp:12
RefPtr< UniformCartesianArray > FragmentBathycenters
The bathycenters of each fragment.
Definition FragmentedUniformGrid3D.hpp:20
RefPtr< CoordsArray_t > getCoords(const MultiIndex< 3 > &I) const
Get the coordinates for the given fragment via its fragment index.
Definition FragmentedUniformGrid3D.hpp:64
RefPtr< UniformCartesianArray > FragmentCoordinates
The coordinates, i.e. corner points, of each fragment.
Definition FragmentedUniformGrid3D.hpp:17
Definition grid/types/RegularlyFragmentedGrid.hpp:294