initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / applications / utilities / postProcessing / graphics / ensightFoamReader / USERD_get_part_element_ids_by_type.H
blob67c3478880a2a571e42ce6aeff068c8d5c105369
1 int USERD_get_part_element_ids_by_type
3     int part_number,
4     int element_type,
5     int *elemid_array
9 #ifdef ENSIGHTDEBUG
10     Info << "Entering: USERD_get_part_element_ids_by_type" << endl 
11         << "part_number = " << part_number << endl 
12         << "element_type = " << element_type << endl << flush;
13 #endif
15     if (part_number == 1)
16     {
17         const cellShapeList& cellShapes = meshPtr->cellShapes();
18         const cellList& cells = meshPtr->cells();
20         label nCells = cells.size();
22         label nPen06 = 0;
23         label nHex08 = 0;
24         label nPyr05 = 0;
25         label nTet04 = 0;
26         label nFaced = 0;
28         if (element_type == Z_HEX08)
29         {
30             for (label n=0; n<nCells; n++)
31             {
32                 label nFaces = cells[n].size();
33                 labelList points = cellShapes[n];
34                 
35                 if ((nFaces == 6) && (points.size() == 8))
36                 {
37                     elemid_array[nHex08++] = n + 1;
38                 }
39             }
40         }
41         else if (element_type == Z_PEN06)
42         {
43             for (label n=0; n<nCells; n++)
44             {
45                 label nFaces = cells[n].size();
46                 labelList points = cellShapes[n];
47                 
48                 if ((nFaces == 5) && (points.size() == 6))
49                 {
50                     elemid_array[nPen06++] = n + 1;
51                 }
52             }
53         }
54         else if (element_type == Z_PYR05)
55         {
56             for (label n=0; n<nCells; n++)
57             {
58                 label nFaces = cells[n].size();
59                 labelList points = cellShapes[n];
60                 
61                 if ((nFaces == 5) && (points.size() == 5))
62                 {
63                     elemid_array[nPyr05++] = n + 1;
64                 }
65             }
66         }
67         else if (element_type == Z_TET04)
68         {
69             for (label n=0; n<nCells; n++)
70             {
71                 label nFaces = cells[n].size();
72                 labelList points = cellShapes[n];
73                 
74                 if ((nFaces == 4) && (points.size() == 4))
75                 {
76                     elemid_array[nTet04++] = n + 1;
77                 }
78             }
79         }
80         else if (element_type == Z_NFACED)
81         {
82             for (label n=0; n<nCells; n++)
83             {
84                 label nFaces = cells[n].size();
85                 labelList points = cellShapes[n];
86                 if ((nFaces == 6) && (points.size() == 8))
87                 {}
88                 else if ((nFaces == 5) && (points.size() == 6))
89                 {}
90                 else if ((nFaces == 5) && (points.size() == 5))
91                 {}
92                 else if ((nFaces == 4) && (points.size() == 4))
93                 {}
94                 else
95                 {
96                     elemid_array[nFaced++] = n + 1;
97                 }
99             }
100         }
101     }
102     else if (part_number < nPatches+2)
103     {
104      
105         const polyBoundaryMesh& bMesh = meshPtr->boundaryMesh();
106         label patchi = part_number - 2;
108         label nTri03 = 0;
109         label nQuad04 = 0;
110         label nPoly = 0;
112         if (element_type == Z_TRI03)
113         {
114             forAll(bMesh[patchi], facei)
115             {
116                 if (bMesh[patchi][facei].size() == 3)
117                 {
118                     elemid_array[nTri03++] = facei + 1;
119                 }
120             }
121         }
122         else if (element_type == Z_QUA04)
123         {
124             forAll(bMesh[patchi], facei)
125             {
126                 if (bMesh[patchi][facei].size() == 4)
127                 {
128                     elemid_array[nQuad04++] = facei + 1;
129                 }
130             }            
131         }
132         else if (element_type == Z_NSIDED)
133         {
134             forAll(bMesh[patchi], facei)
135             {
136                 label nPoints = bMesh[patchi][facei].size();
137                 if ((nPoints != 3) && (nPoints != 4))
138                 {
139                     elemid_array[nPoly++] = facei + 1;
140                 }
141             }
142         }
144     }
145     else if (part_number == nPatches+2)
146     {
147         for (label n=0; n<sprayPtr->size(); n++)
148         {
149             elemid_array[n] = n + 1;
150         }
151     }
152     else
153     {
154         return Z_ERR;
155     }
157 #ifdef ENSIGHTDEBUG
158     Info << "Leaving: USERD_get_part_element_ids_by_type" << endl << flush;
159 #endif
161     return Z_OK;