Pointwise Plugin SDK
apiGridModel.cxx
Go to the documentation of this file.
1 /****************************************************************************
2  *
3  * CAEP Plugin example
4  *
5  * (C) 2021 Cadence Design Systems, Inc. All rights reserved worldwide.
6  *
7  ***************************************************************************/
8 
9 // See comments in core code for information on adding new PWGM API functions.
10 
11 #include <cctype>
12 #include <climits>
13 #include <cerrno>
14 #include <sstream>
15 #include <string>
16 
17 // Define these on the build command line for verbose build messages
18 // #define SHOW_PWP_MESSAGES
19 // #define SHOW_PWGM_MESSAGES
20 #include "apiGridModel.h"
21 
22 #include "apiPWPUtils.h"
23 
24 // If this asserts, PWGM_ASSEMBLER_DATA has increased in size! This will
25 // increase memory usage during face grid importing. Are you sure?
27 
29 #define MODEL_OUT PWGM_HGRIDMODEL_OUT_GMIMPL(model)
30 #define BLKMODEL_OUT PWGM_HBLOCK_OUT_GMIMPL(block)
31 #define DOMMODEL_OUT PWGM_HDOMAIN_OUT_GMIMPL(domain)
32 #define VERTMODEL_OUT PWGM_HVERTEX_OUT_GMIMPL(vertex)
33 #define ELEMMODEL_OUT PWGM_HELEMENT_OUT_GMIMPL(element)
34 #define BNDRYMODEL_OUT PWGM_HBNDRY_OUT_GMIMPL(boundary)
35 #define CNXNMODEL_OUT PWGM_HCNXN_OUT_GMIMPL(connection)
36 
37 #define MODEL_IN PWGM_HGRIDMODEL_IN_GMIMPL(model)
38 #define BLKMODEL_IN PWGM_HBLOCK_IN_GMIMPL(block)
39 #define DOMMODEL_IN PWGM_HDOMAIN_IN_GMIMPL(domain)
40 #define CONMODEL_IN PWGM_HCONNECTOR_IN_GMIMPL(connector)
41 #define VLISTMODEL_IN PWGM_HVERTEXLIST_IN_GMIMPL(vertlist)
42 #define BLKASMMODEL_IN PWGM_HBLOCKASSEMBLER_IN_GMIMPL(blkAsm)
43 
44 static const PWGM_HBLOCK badBlock = PWGM_HBLOCK_INIT;
45 static const PWGM_HDOMAIN badDomain = PWGM_HDOMAIN_INIT;
46 
47 #if !defined(PWGM_HIDE_IMPORT_API)
48 static const PWGM_HCONNECTOR badConnector = PWGM_HCONNECTOR_INIT;
49 static const PWGM_HVERTEXLIST badVertexList = PWGM_HVERTEXLIST_INIT;
50 static const PWGM_HBLOCKASSEMBLER badAssembler = PWGM_HBLOCKASSEMBLER_INIT;
51 
52 static const char * PropSubType{ "SubType" };
53 static const char * PropUserName{ "UserName" };
54 static const char * PropUserId{ "UserId" };
55 static const char * PropTypeName{ "TypeName" };
56 static const char * PropTypeId{ "TypeId" };
57 
58 static const char * SubTypeBoundary{ "Boundary" };
59 
60 #endif /* PWGM_HIDE_IMPORT_API */
61 
62 #if !defined(PWGM_HIDE_UNSTRUCTURED_API)
63 static const PWGM_HVERTEX badVertex = PWGM_HVERTEX_INIT;
64 static const PWGM_HELEMENT badElement = PWGM_HELEMENT_INIT;
65 #endif /* PWGM_HIDE_UNSTRUCTURED_API */
66 
67 #if !defined(PWGM_HIDE_STRUCTURED_API)
68 static const PWGM_HBNDRY badBoundary = PWGM_HBNDRY_INIT;
69 static const PWGM_HCNXN badConnection = PWGM_HCNXN_INIT;
70 #endif /* PWGM_HIDE_STRUCTURED_API */
71 
72 
73 #ifdef WINDOWS
74 # define strcasecmp stricmp
75 # define strncasecmp strnicmp
76 #endif /* WINDOWS */
77 
79 
80 
81 
84 {
85  return (MODEL_OUT && MODEL_OUT->PwModBlockCountCB) ?
86  MODEL_OUT->PwModBlockCountCB(model) : 0;
87 }
88 
89 
92 {
93  return (MODEL_OUT && MODEL_OUT->PwModEnumBlocksCB) ?
94  MODEL_OUT->PwModEnumBlocksCB(model, ndx) : badBlock;
95 }
96 
97 
100 {
101  return (pCondData && PWGM_HBLOCK_ISVALID(block) && BLKMODEL_OUT &&
102  BLKMODEL_OUT->PwBlkConditionCB) ?
103  BLKMODEL_OUT->PwBlkConditionCB(block, pCondData) : PWP_FALSE;
104 }
105 
106 
107 PWP_BOOL
108 PwBlock(PWGM_HBLOCK block, PWGM_BLOCKDATA *pBlockData)
109 {
110  return (pBlockData && PWGM_HBLOCK_ISVALID(block) && BLKMODEL_OUT &&
111  BLKMODEL_OUT->PwBlockCB) ? BLKMODEL_OUT->PwBlockCB(block, pBlockData) :
112  PWP_FALSE;
113 }
114 
115 
116 PWP_BOOL
117 PwBlkSetExportName(PWGM_HBLOCK block, const char *name)
118 {
119  return (PWGM_HBLOCK_ISVALID(block) && BLKMODEL_OUT &&
120  BLKMODEL_OUT->PwBlkSetExportNameCB) ?
121  BLKMODEL_OUT->PwBlkSetExportNameCB(block, name) : PWP_FALSE;
122 }
123 
124 
125 PWP_BOOL
126 PwModGetAttributeValue(PWGM_HGRIDMODEL model, const char *name,
127  PWP_ENUM_VALTYPE bufType, void *buf, PWP_UINT count)
128 {
129  return (MODEL_OUT && MODEL_OUT->PwModGetAttributeValueCB) ?
130  MODEL_OUT->PwModGetAttributeValueCB(model, name, bufType, buf, count) :
131  PWP_FALSE;
132 }
133 
134 
135 PWP_BOOL
136 PwModGetAttributeString(PWGM_HGRIDMODEL model, const char *name,
137  const char ** val)
138 {
139  return PwModGetAttributeValue(model, name, PWP_VALTYPE_STRING, val, 1);
140 }
141 
142 
143 PWP_BOOL
144 PwModGetAttributeUINT(PWGM_HGRIDMODEL model, const char *name,
145  PWP_UINT *val)
146 {
147  return PwModGetAttributeValue(model, name, PWP_VALTYPE_UINT, val, 1);
148 }
149 
150 
151 PWP_BOOL
152 PwModGetAttributeUINT32(PWGM_HGRIDMODEL model, const char *name,
153  PWP_UINT32 *val)
154 {
155  PWP_UINT locVal = 0;
156  PWP_BOOL ret = PwModGetAttributeUINT(model, name, &locVal);
157  if (ret && val) {
158  *val = (PWP_UINT32)locVal;
159  }
160  return ret;
161 }
162 
163 
164 PWP_BOOL
165 PwModGetAttributeINT(PWGM_HGRIDMODEL model, const char *name,
166  PWP_INT *val)
167 {
168  return PwModGetAttributeValue(model, name, PWP_VALTYPE_INT, val, 1);
169 }
170 
171 
172 PWP_BOOL
173 PwModGetAttributeINT32(PWGM_HGRIDMODEL model, const char *name,
174  PWP_INT32 *val)
175 {
176  PWP_INT locVal = 0;
177  PWP_BOOL ret = val && PwModGetAttributeINT(model, name, &locVal);
178  if (ret && val) {
179  *val = (PWP_INT32)locVal;
180  }
181  return ret;
182 }
183 
184 
185 PWP_BOOL
186 PwModGetAttributeREAL(PWGM_HGRIDMODEL model, const char *name,
187  PWP_REAL *val)
188 {
189  return PwModGetAttributeValue(model, name, PWP_VALTYPE_REAL, val, 1);
190 }
191 
192 
193 PWP_BOOL
194 PwModGetAttributeFLOAT(PWGM_HGRIDMODEL model, const char *name,
195  PWP_FLOAT *val)
196 {
197  PWP_REAL locVal = 0;
198  PWP_BOOL ret = val && PwModGetAttributeREAL(model, name, &locVal);
199  if (ret && val) {
200  *val = (PWP_FLOAT)locVal;
201  }
202  return ret;
203 }
204 
205 
206 PWP_BOOL
207 PwModGetAttributeBOOL(PWGM_HGRIDMODEL model, const char *name,
208  PWP_BOOL *val)
209 {
210  return PwModGetAttributeValue(model, name, PWP_VALTYPE_BOOL, val, 1);
211 }
212 
213 
214 PWP_BOOL
215 PwModGetAttributeEnum(PWGM_HGRIDMODEL model, const char *name,
216  const char ** val)
217 {
218  return PwModGetAttributeValue(model, name, PWP_VALTYPE_ENUM, val, 1);
219 }
220 
221 
222 #if !defined(PWGM_HIDE_UNSTRUCTURED_API)
223 
224 
227 {
228  return (MODEL_OUT && MODEL_OUT->PwModDomainCountCB) ?
229  MODEL_OUT->PwModDomainCountCB(model) : 0;
230 }
231 
232 
235 {
236  return (MODEL_OUT && MODEL_OUT->PwModEnumDomainsCB) ?
237  MODEL_OUT->PwModEnumDomainsCB(model, ndx) : badDomain;
238 }
239 
240 
243 {
244  return (MODEL_OUT && MODEL_OUT->PwModEnumVerticesCB) ?
245  MODEL_OUT->PwModEnumVerticesCB(model, ndx) : badVertex;
246 }
247 
248 
251 {
252  return (MODEL_OUT && MODEL_OUT->PwModVertexCountCB) ?
253  MODEL_OUT->PwModVertexCountCB(model) : 0;
254 }
255 
256 
257 PWP_BOOL
259  void *data)
260 {
261  return (MODEL_OUT && MODEL_OUT->PwModCustomIndexSchemeReadyCB) ?
262  MODEL_OUT->PwModCustomIndexSchemeReadyCB(model, cb, data) : PWP_FALSE;
263 }
264 
265 PWP_BOOL
268  PWGM_ENDSTREAMCB endCB, void *userData)
269 {
270  return (MODEL_OUT && MODEL_OUT->PwModStreamFacesCB) ?
271  MODEL_OUT->PwModStreamFacesCB(model, order, beginCB, faceCB, endCB,
272  userData) : PWP_FALSE;
273 }
274 
275 
278 {
279  return (MODEL_OUT && MODEL_OUT->PwModEnumElementCountCB) ?
280  MODEL_OUT->PwModEnumElementCountCB(model, pCounts) : 0;
281 }
282 
283 
286 {
287  return (MODEL_OUT && MODEL_OUT->PwModEnumElementsCB) ?
288  MODEL_OUT->PwModEnumElementsCB(model, ndx) : badElement;
289 }
290 
291 
292 PWP_BOOL
294 {
295  return (MODEL_OUT && MODEL_OUT->PwModAppendEnumElementOrderCB) ?
296  MODEL_OUT->PwModAppendEnumElementOrderCB(model, order) : 0;
297 }
298 
299 
300 PWP_VOID
302 {
303  // PWGM_ELEMTYPE_SIZE triggers core to reset the ordering
304  PwModAppendEnumElementOrder(model, PWGM_ELEMORDER_SIZE);
305 }
306 
307 
310 {
311  return (PWGM_HBLOCK_ISVALID(block) && BLKMODEL_OUT->PwBlkElementCountCB) ?
312  BLKMODEL_OUT->PwBlkElementCountCB(block, pCounts) : 0;
313 }
314 
315 
318 {
319  return (PWGM_HBLOCK_ISVALID(block) && BLKMODEL_OUT->PwBlkEnumElementsCB) ?
320  BLKMODEL_OUT->PwBlkEnumElementsCB(block, ndx) : badElement;
321 }
322 
323 
326 {
327  return (PWGM_HDOMAIN_ISVALID(domain) && DOMMODEL_OUT->PwDomElementCountCB) ?
328  DOMMODEL_OUT->PwDomElementCountCB(domain, pCounts) : 0;
329 }
330 
331 
334 {
335  return (PWGM_HDOMAIN_ISVALID(domain) && DOMMODEL_OUT->PwDomEnumElementsCB) ?
336  DOMMODEL_OUT->PwDomEnumElementsCB(domain, ndx) : badElement;
337 }
338 
339 
340 PWP_BOOL
342 {
343  return (pCondData && PWGM_HDOMAIN_ISVALID(domain) &&
344  DOMMODEL_OUT->PwDomConditionCB) ?
345  DOMMODEL_OUT->PwDomConditionCB(domain, pCondData) : PWP_FALSE;
346 }
347 
348 
349 PWP_BOOL
351 {
352  return (pVertData && PWGM_HVERTEX_ISVALID(vertex) &&
353  VERTMODEL_OUT->PwVertDataModCB) ?
354  VERTMODEL_OUT->PwVertDataModCB(vertex, pVertData) : PWP_FALSE;
355 }
356 
357 
358 PWP_BOOL
360 {
361  return (pIndex && PWGM_HVERTEX_ISVALID(vertex) &&
362  VERTMODEL_OUT->PwVertIndexModCB) ?
363  VERTMODEL_OUT->PwVertIndexModCB(vertex, pIndex) : PWP_FALSE;
364 }
365 
366 
367 PWP_BOOL
369 {
370  return (pVal && PWGM_HVERTEX_ISVALID(vertex) &&
371  VERTMODEL_OUT->PwVertXyzValCB) ?
372  VERTMODEL_OUT->PwVertXyzValCB(vertex, which, pVal) : PWP_FALSE;
373 }
374 
375 
376 PWP_BOOL
378 {
379  return (pElemData && PWGM_HELEMENT_ISVALID(element) &&
380  ELEMMODEL_OUT->PwElemDataModCB) ?
381  ELEMMODEL_OUT->PwElemDataModCB(element, pElemData) : PWP_FALSE;
382 }
383 
384 
385 PWP_BOOL
387 {
388  return (pEnumElemData && PWGM_HELEMENT_ISVALID(element) &&
389  ELEMMODEL_OUT->PwElemDataModEnumCB) ?
390  ELEMMODEL_OUT->PwElemDataModEnumCB(element, pEnumElemData) : PWP_FALSE;
391 }
392 
393 
394 PWP_BOOL
396 {
397  // polyh[]:
398  // NumUniqueIndices
399  // indices[NumUniqueIndices]
400  // NumFaces
401  // offsets[NumFaces]
402  // NumFaceIndices
403  // faceIndices[NumFaceIndices]
404  const PWP_BOOL ret = (PWGM_ELEMTYPE_POLYH == eData->type);
405  if (ret) {
406  using PP = PWP_UINT64* const*;
407  const PWP_UINT64* polyh = *(reinterpret_cast<PP>(&eData->index[0]));
408  polyData->type = eData->type;
409 
410  polyData->vertCnt = polyh[0];
411  polyData->indices = &polyh[1];
412 
413  polyData->numFaces = polyh[polyData->vertCnt + 1];
414  polyData->offsets = &polyData->indices[polyData->vertCnt + 1];
415 
416  polyData->numFaceIndices = polyData->offsets[polyData->numFaces];
417  polyData->faceIndices = &polyData->offsets[polyData->numFaces + 1];
418  }
419  return ret;
420 }
421 
422 
423 const char *
425 {
426  const char * ret = "!Invalid";
427  switch (faceOrder) {
428  case PWGM_FACEORDER_DONTCARE: ret = "DontCare"; break;
429  case PWGM_FACEORDER_BOUNDARYFIRST: ret = "BoundaryFirst"; break;
430  case PWGM_FACEORDER_INTERIORFIRST: ret = "InteriorFirst"; break;
431  case PWGM_FACEORDER_BOUNDARYONLY: ret = "BoundaryOnly"; break;
432  case PWGM_FACEORDER_INTERIORONLY: ret = "InteriorOnly"; break;
433  case PWGM_FACEORDER_BCGROUPSFIRST: ret = "BcGroupsFirst"; break;
434  case PWGM_FACEORDER_BCGROUPSLAST: ret = "BcGroupsLast"; break;
435  case PWGM_FACEORDER_BCGROUPSONLY: ret = "BcGroupsOnly"; break;
436  case PWGM_FACEORDER_VCGROUPSBCLAST: ret = "VcGroupsBcLast"; break;
437  case PWGM_FACEORDER_BCGROUPSONLY_BYVC: ret = "BcGroupsOnlyByVc"; break;
438  case PWGM_FACEORDER_SIZE: break; // silence compiler warning
439  }
440  return ret;
441 }
442 
443 
444 const char *
446 {
447  const char * ret = "!Invalid";
448  switch (type) {
449  case PWGM_ELEMTYPE_BAR: ret = "Bar"; break;
450  case PWGM_ELEMTYPE_HEX: ret = "Hex"; break;
451  case PWGM_ELEMTYPE_QUAD: ret = "Quad"; break;
452  case PWGM_ELEMTYPE_TRI: ret = "Tri"; break;
453  case PWGM_ELEMTYPE_TET: ret = "Tet"; break;
454  case PWGM_ELEMTYPE_WEDGE: ret = "Wedge"; break;
455  case PWGM_ELEMTYPE_PYRAMID: ret = "Pyramid"; break;
456  case PWGM_ELEMTYPE_POINT: ret = "Point"; break;
457  case PWGM_ELEMTYPE_SIZE: // silence compiler warning
458  default: break;
459  }
460  return ret;
461 }
462 
463 #endif // !defined(PWGM_HIDE_UNSTRUCTURED_API)
464 
465 
466 
467 //***************************************************************************
468 //***************************************************************************
469 //***************************************************************************
470 //***************************************************************************
471 
472 #if !defined(PWGM_HIDE_STRUCTURED_API)
473 
474 
477 {
478  return (MODEL_OUT && MODEL_OUT->PwModBoundaryCountCB) ?
479  MODEL_OUT->PwModBoundaryCountCB(model) : 0;
480 }
481 
482 
485 {
486  return (MODEL_OUT && MODEL_OUT->PwModEnumBoundariesCB) ?
487  MODEL_OUT->PwModEnumBoundariesCB(model, ndx) : badBoundary;
488 }
489 
490 
493 {
494  return (MODEL_OUT && MODEL_OUT->PwModConnectionCountCB) ?
495  MODEL_OUT->PwModConnectionCountCB(model) : 0;
496 }
497 
498 
501 {
502  return (MODEL_OUT && MODEL_OUT->PwModEnumConnectionsCB) ?
503  MODEL_OUT->PwModEnumConnectionsCB(model, ndx) : badConnection;
504 }
505 
506 
507 PWP_BOOL
509  PWGM_BNDRYDATA *pBndryData)
510 {
511  return (MODEL_OUT && MODEL_OUT->PwModNdxBoundaryCB) ?
512  MODEL_OUT->PwModNdxBoundaryCB(model, ndx, pBndryData) :
513  PWP_FALSE;
514 }
515 
516 
517 PWP_BOOL
519  PWGM_BNDRYDATA *pBndryData, PWGM_CONDDATA *pCondData)
520 {
521  return (MODEL_OUT && MODEL_OUT->PwModNdxBoundaryAndConditionCB &&
522  (pBndryData || pCondData)) ?
523  MODEL_OUT->PwModNdxBoundaryAndConditionCB(model, ndx, pBndryData,
524  pCondData) : PWP_FALSE;
525 }
526 
527 
528 PWP_BOOL
530  PWGM_CNXNDATA *pCnxnData)
531 {
532  return (MODEL_OUT && MODEL_OUT->PwModNdxConnectionCB && pCnxnData) ?
533  MODEL_OUT->PwModNdxConnectionCB(model, ndx, pCnxnData) : PWP_FALSE;
534 }
535 
536 
537 PWP_BOOL
539 {
540  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkSizeCB) ?
541  BLKMODEL_OUT->PwBlkSizeCB(block, pSize) : PWP_FALSE;
542 }
543 
544 
545 PWP_BOOL
547 {
548  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkNdxVertDataCB) ?
549  BLKMODEL_OUT->PwBlkNdxVertDataCB(block, ndx3, pVertData) : PWP_FALSE;
550 }
551 
552 
553 PWP_BOOL
555  void *data)
556 {
557  return (MODEL_OUT && MODEL_OUT->PwModCustomIndex3SchemeReadyCB) ?
558  MODEL_OUT->PwModCustomIndex3SchemeReadyCB(model, cb, data) : PWP_FALSE;
559 }
560 
561 
564 {
565  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkBoundaryCountCB) ?
566  BLKMODEL_OUT->PwBlkBoundaryCountCB(block) : 0;
567 }
568 
569 
572 {
573  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkEnumBoundariesCB) ?
574  BLKMODEL_OUT->PwBlkEnumBoundariesCB(block, ndx) : badBoundary;
575 }
576 
577 
580 {
581  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkConnectionCountCB) ?
582  BLKMODEL_OUT->PwBlkConnectionCountCB(block) : 0;
583 }
584 
585 
588 {
589  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkEnumConnectionsCB) ?
590  BLKMODEL_OUT->PwBlkEnumConnectionsCB(block, ndx) : badConnection;
591 }
592 
593 
594 PWP_BOOL
596 {
597  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkNdxBoundaryCB && pBndryData) ?
598  BLKMODEL_OUT->PwBlkNdxBoundaryCB(block, ndx, pBndryData) : PWP_FALSE;
599 }
600 
601 
602 PWP_BOOL
604  PWGM_BNDRYDATA *pBndryData, PWGM_CONDDATA *pCondData)
605 {
606  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkNdxBoundaryAndConditionCB &&
607  (pBndryData || pCondData)) ?
608  BLKMODEL_OUT->PwBlkNdxBoundaryAndConditionCB(block, ndx, pBndryData,
609  pCondData) : PWP_FALSE;
610 }
611 
612 
613 PWP_BOOL
615 {
616  return (BLKMODEL_OUT && BLKMODEL_OUT->PwBlkNdxConnectionCB && pCnxnData) ?
617  BLKMODEL_OUT->PwBlkNdxConnectionCB(block, ndx, pCnxnData) : PWP_FALSE;
618 }
619 
620 
621 PWP_BOOL
622 PwBoundary(PWGM_HBNDRY boundary, PWGM_BNDRYDATA *pBndryData)
623 {
624  return (BNDRYMODEL_OUT && BNDRYMODEL_OUT->PwBoundaryCB && pBndryData) ?
625  BNDRYMODEL_OUT->PwBoundaryCB(boundary, pBndryData) : PWP_FALSE;
626 }
627 
628 
629 PWP_BOOL
631 {
632  return (BNDRYMODEL_OUT && BNDRYMODEL_OUT->PwBndryConditionCB) ?
633  BNDRYMODEL_OUT->PwBndryConditionCB(boundary, pCondData) : PWP_FALSE;
634 }
635 
636 
637 PWP_BOOL
638 PwConnection(PWGM_HCNXN connection, PWGM_CNXNDATA *pCnxnData)
639 {
640  return (CNXNMODEL_OUT && CNXNMODEL_OUT->PwConnectionCB && pCnxnData) ?
641  CNXNMODEL_OUT->PwConnectionCB(connection, pCnxnData) : PWP_FALSE;
642 }
643 
644 
645 PWP_BOOL
647 {
648  // XFORM2 XFORM
649  // ------ -------
650  // A B C A B 0 C
651  // D E F ==> D E 0 F
652  // 0 0 1 0
653  PWP_BOOL ret = (pX2 && pX3) ? PWP_TRUE : PWP_FALSE;
654  if (ret) {
655  // row 0
656  pX3->m[0][0] = pX2->m[0][0];
657  pX3->m[0][1] = pX2->m[0][1];
658  pX3->m[0][2] = 0;
659  pX3->m[0][0] = pX2->m[0][2];
660  // row 1
661  pX3->m[1][0] = pX2->m[1][0];
662  pX3->m[1][1] = pX2->m[1][1];
663  pX3->m[1][2] = 0;
664  pX3->m[1][0] = pX2->m[1][2];
665  // row 2
666  pX3->m[2][0] = 0;
667  pX3->m[2][1] = 0;
668  pX3->m[2][2] = 1;
669  pX3->m[2][0] = 0;
670  }
671  return ret;
672 }
673 
674 
675 PWP_BOOL
677 {
678  // XFORM XFORM2
679  // ------- ------
680  // A B C D A B D
681  // E F G H ==> E F H
682  // I J K L
683  PWP_BOOL ret = (pX2 && pX3) ? PWP_TRUE : PWP_FALSE;
684  if (ret) {
685  // row 0
686  pX2->m[0][0] = pX3->m[0][0];
687  pX2->m[0][1] = pX3->m[0][1];
688  pX2->m[0][2] = pX3->m[0][3];
689  // row 1
690  pX2->m[1][0] = pX3->m[1][0];
691  pX2->m[1][1] = pX3->m[1][1];
692  pX2->m[1][2] = pX3->m[1][3];
693  }
694  return ret;
695 }
696 
697 
700 {
701  PWGM_INDEX3 ret;
702  ret.i = pX3->m[0][0] * ijk.i + pX3->m[0][1] * ijk.j + pX3->m[0][2] * ijk.k
703  + pX3->m[0][3];
704  ret.j = pX3->m[1][0] * ijk.i + pX3->m[1][1] * ijk.j + pX3->m[1][2] * ijk.k
705  + pX3->m[1][3];
706  ret.k = pX3->m[2][0] * ijk.i + pX3->m[2][1] * ijk.j + pX3->m[2][2] * ijk.k
707  + pX3->m[2][3];
708  return ret;
709 }
710 
711 
714  PWP_BOOL *pFlipped)
715 {
716  PWGM_ENUM_IJK transformedAxis = PWGM_IJK_SIZE; /* invalid */
717  PWGM_INDEX3 ijk = { 0, 0, 0 };
718  PWGM_INDEX3 ijk2 = { 0, 0, 0 };
719  if (pFlipped) {
720  *pFlipped = PWP_FALSE;
721  }
722  /* construct axis vec for localAxis that will be rotated below */
723  switch (localAxis) {
724  case PWGM_IJK_I: ijk.i = 1; break;
725  case PWGM_IJK_J: ijk.j = 1; break;
726  case PWGM_IJK_K: ijk.k = 1; break;
727  case PWGM_IJK_SIZE: break; // silence compiler warning
728  }
729  /* apply rotation only */
730  ijk2.i = pX3->m[0][0] * ijk.i + pX3->m[0][1] * ijk.j + pX3->m[0][2] * ijk.k;
731  ijk2.j = pX3->m[1][0] * ijk.i + pX3->m[1][1] * ijk.j + pX3->m[1][2] * ijk.k;
732  ijk2.k = pX3->m[2][0] * ijk.i + pX3->m[2][1] * ijk.j + pX3->m[2][2] * ijk.k;
733  /* determine which axis it is in the transformed coord system */
734  if ((0 != ijk2.i) && (0 == ijk2.j) && (0 == ijk2.k)) {
735  transformedAxis = PWGM_IJK_I;
736  if (pFlipped) {
737  *pFlipped = ((1 == ijk2.i) ? PWP_FALSE : PWP_TRUE);
738  }
739  }
740  else if ((0 != ijk2.j) && (0 == ijk2.i) && (0 == ijk2.k)) {
741  transformedAxis = PWGM_IJK_J;
742  if (pFlipped) {
743  *pFlipped = ((1 == ijk2.j) ? PWP_FALSE : PWP_TRUE);
744  }
745  }
746  else if ((0 != ijk2.k) && (0 == ijk2.i) && (0 == ijk2.j)) {
747  transformedAxis = PWGM_IJK_K;
748  if (pFlipped) {
749  *pFlipped = ((1 == ijk2.k) ? PWP_FALSE : PWP_TRUE);
750  }
751  }
752  return transformedAxis;
753 }
754 
755 
758 {
759  PWGM_INDEX3 ret;
760  ret.i = pX2->m[0][0] * ijk.i + pX2->m[0][1] * ijk.j + pX2->m[0][2];
761  ret.j = pX2->m[1][0] * ijk.i + pX2->m[1][1] * ijk.j + pX2->m[1][2];
762  ret.k = ijk.k;
763  return ret;
764 }
765 
766 
769  PWP_BOOL *pFlipped)
770 {
771  PWGM_ENUM_IJK ret = PWGM_IJK_SIZE;
772  PWGM_INDEX_XFORM x3;
773  if (PwXform2to3(pX2, &x3)) {
774  ret = PwXformFollows(&x3, localAxis, pFlipped);
775  }
776  return ret;
777 }
778 
779 
780 PWP_BOOL
782 {
783  return (ijk.i >= pRange->beg.i) && (ijk.i <= pRange->end.i) &&
784  (ijk.j >= pRange->beg.j) && (ijk.j <= pRange->end.j) &&
785  (ijk.k >= pRange->beg.k) && (ijk.k <= pRange->end.k);
786 }
787 
788 #endif // !defined(PWGM_HIDE_STRUCTURED_API)
789 
790 
791 
792 //***************************************************************************
793 //***************************************************************************
794 //***************************************************************************
795 //***************************************************************************
796 
797 #if !defined(PWGM_HIDE_IMPORT_API)
798 
801 {
802  return (MODEL_IN && MODEL_IN->PwModCreateConCB) ?
803  MODEL_IN->PwModCreateConCB(model, size) : badConnector;
804 }
805 
806 
809 {
810  return (BLKMODEL_IN && BLKMODEL_IN->PwBlkGetVertexListCB) ?
811  BLKMODEL_IN->PwBlkGetVertexListCB(block) : badVertexList;
812 }
813 
814 
817 {
818  return (DOMMODEL_IN && DOMMODEL_IN->PwDomGetVertexListCB) ?
819  DOMMODEL_IN->PwDomGetVertexListCB(domain) : badVertexList;
820 }
821 
822 
825 {
826  return (CONMODEL_IN && CONMODEL_IN->PwConGetVertexListCB) ?
827  CONMODEL_IN->PwConGetVertexListCB(connector) : badVertexList;
828 }
829 
830 
831 PWP_BOOL
832 PwConSetName(PWGM_HCONNECTOR connector, const char *name)
833 {
834  return (CONMODEL_IN && CONMODEL_IN->PwConSetNameCB) ?
835  CONMODEL_IN->PwConSetNameCB(connector, name) : PWP_FALSE;
836 }
837 
838 
839 PWP_BOOL
840 PwBlkSetName(PWGM_HBLOCK block, const char *name)
841 {
842  return (BLKMODEL_IN && BLKMODEL_IN->PwBlkSetNameCB) ?
843  BLKMODEL_IN->PwBlkSetNameCB(block, name) : PWP_FALSE;
844 }
845 
846 
847 PWP_BOOL
848 PwDomSetName(PWGM_HDOMAIN domain, const char *name)
849 {
850  return (DOMMODEL_IN && DOMMODEL_IN->PwDomSetNameCB) ?
851  DOMMODEL_IN->PwDomSetNameCB(domain, name) : PWP_FALSE;
852 }
853 
854 
855 PWP_BOOL
857 {
858  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstIsUnstructuredCB) ?
859  VLISTMODEL_IN->PwVlstIsUnstructuredCB(vertlist) : PWP_FALSE;
860 }
861 
862 
863 PWP_BOOL
865 {
866  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstIsUnstructuredCB) ?
867  !VLISTMODEL_IN->PwVlstIsUnstructuredCB(vertlist) : PWP_FALSE;
868 }
869 
870 
871 PWP_UINT
873 {
874  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstGetIndexDimensionalityCB) ?
875  VLISTMODEL_IN->PwVlstGetIndexDimensionalityCB(vertlist) : 0;
876 }
877 
878 
881 {
882  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstGetBlkElemDimensionalityCB) ?
883  VLISTMODEL_IN->PwVlstGetBlkElemDimensionalityCB(vertlist) :
884  PWP_DIMENSION_SIZE;
885 }
886 
887 
888 PWP_BOOL
890  const PWGM_ENUM_XYZ which, const PWGM_XYZVAL val)
891 {
892  const PWGM_INDEX3 ndx3 = { PWP_INT32(ndx), 0, 0 };
893  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZVal3CB) ?
894  VLISTMODEL_IN->PwVlstSetXYZVal3CB(vertlist, ndx3, which, val) :
895  PWP_FALSE;
896 }
897 
898 
899 PWP_BOOL
900 PwVlstSetXYZ(PWGM_HVERTEXLIST vertlist, const PWP_UINT ndx, const PWGM_XYZVAL x,
901  const PWGM_XYZVAL y, const PWGM_XYZVAL z)
902 {
903  const PWGM_INDEX3 ndx3 = { PWP_INT32(ndx), 0, 0 };
904  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZ3CB) ?
905  VLISTMODEL_IN->PwVlstSetXYZ3CB(vertlist, ndx3, x, y, z) : PWP_FALSE;
906 }
907 
908 
909 PWP_BOOL
911  const PWGM_VERTDATA &v)
912 {
913  const PWGM_INDEX3 ndx3 = { PWP_INT32(ndx), 0, 0 };
914  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZ3CB) ?
915  VLISTMODEL_IN->PwVlstSetXYZ3CB(vertlist, ndx3, v.x, v.y, v.z) :
916  PWP_FALSE;
917 }
918 
919 
920 PWP_BOOL
922  const PWGM_ENUM_XYZ which, const PWGM_XYZVAL val)
923 {
924  const PWGM_INDEX3 ndx3 = { ndx2.i, ndx2.j, 0 };
925  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZVal3CB) ?
926  VLISTMODEL_IN->PwVlstSetXYZVal3CB(vertlist, ndx3, which, val) :
927  PWP_FALSE;
928 }
929 
930 
931 PWP_BOOL
933  const PWGM_XYZVAL x, const PWGM_XYZVAL y, const PWGM_XYZVAL z)
934 {
935  const PWGM_INDEX3 ndx3 = { ndx2.i, ndx2.j, 0 };
936  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZ3CB) ?
937  VLISTMODEL_IN->PwVlstSetXYZ3CB(vertlist, ndx3, x, y, z) : PWP_FALSE;
938 }
939 
940 
941 PWP_BOOL
943  const PWGM_VERTDATA &v)
944 {
945  const PWGM_INDEX3 ndx3 = { ndx2.i, ndx2.j, 0 };
946  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZ3CB) ?
947  VLISTMODEL_IN->PwVlstSetXYZ3CB(vertlist, ndx3, v.x, v.y, v.z) :
948  PWP_FALSE;
949 }
950 
951 
952 PWP_BOOL
954  const PWGM_ENUM_XYZ which, const PWGM_XYZVAL val)
955 {
956  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZVal3CB) ?
957  VLISTMODEL_IN->PwVlstSetXYZVal3CB(vertlist, ndx3, which, val) :
958  PWP_FALSE;
959 }
960 
961 
962 PWP_BOOL
964  const PWGM_XYZVAL x, const PWGM_XYZVAL y, const PWGM_XYZVAL z)
965 {
966  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZ3CB) ?
967  VLISTMODEL_IN->PwVlstSetXYZ3CB(vertlist, ndx3, x, y, z) : PWP_FALSE;
968 }
969 
970 
971 PWP_BOOL
973  const PWGM_VERTDATA &v)
974 {
975  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstSetXYZ3CB) ?
976  VLISTMODEL_IN->PwVlstSetXYZ3CB(vertlist, ndx3, v.x, v.y, v.z) :
977  PWP_FALSE;
978 }
979 
980 
981 PWP_BOOL
982 PwBlkSetProperty(PWGM_HBLOCK block, const char *key, const char *val)
983 {
984  return (BLKMODEL_IN && BLKMODEL_IN->PwBlkSetPropertyCB) ?
985  BLKMODEL_IN->PwBlkSetPropertyCB(block, key, val) : PWP_FALSE;
986 }
987 
988 
989 PWP_BOOL
990 PwDomSetProperty(PWGM_HDOMAIN domain, const char *key, const char *val)
991 {
992  return (DOMMODEL_IN && DOMMODEL_IN->PwDomSetPropertyCB) ?
993  DOMMODEL_IN->PwDomSetPropertyCB(domain, key, val) : PWP_FALSE;
994 }
995 
996 
997 PWP_BOOL
998 PwConSetProperty(PWGM_HCONNECTOR connector, const char *key, const char *val)
999 {
1000  return (CONMODEL_IN && CONMODEL_IN->PwConSetPropertyCB) ?
1001  CONMODEL_IN->PwConSetPropertyCB(connector, key, val) : PWP_FALSE;
1002 }
1003 
1004 
1005 PWP_BOOL
1007  const char *key, const char *val)
1008 {
1009  return (BLKASMMODEL_IN && BLKASMMODEL_IN->PwAsmSetPropertyCB) ?
1010  BLKASMMODEL_IN->PwAsmSetPropertyCB(blkAsm, propertySetId, key, val) :
1011  PWP_FALSE;
1012 }
1013 
1014 
1015 PWP_BOOL
1016 PwBlkSetConditionUserName(PWGM_HBLOCK block, const char *userName)
1017 {
1018  return PwBlkSetProperty(block, PropUserName, userName);
1019 }
1020 
1021 
1022 PWP_BOOL
1024 {
1025  std::ostringstream oss;
1026  oss << userId;
1027  return PwBlkSetProperty(block, PropUserId, oss.str().c_str());
1028 }
1029 
1030 
1031 PWP_BOOL
1032 PwBlkSetConditionTypeName(PWGM_HBLOCK block, const char *typeName)
1033 {
1034  return PwBlkSetProperty(block, PropTypeName, typeName);
1035 }
1036 
1037 
1038 PWP_BOOL
1040 {
1041  std::ostringstream oss;
1042  oss << typeId;
1043  return PwBlkSetProperty(block, PropTypeId, oss.str().c_str());
1044 }
1045 
1046 
1047 PWP_BOOL
1049 {
1050  const bool ret = PwBlkSetConditionUserName(block, condData.name) &&
1051  PwBlkSetConditionUserId(block, condData.id) &&
1052  PwBlkSetConditionTypeName(block, condData.type) &&
1053  PwBlkSetConditionTypeId(block, condData.tid);
1054  return PWP_CAST_BOOL(ret);
1055 }
1056 
1057 
1058 PWP_BOOL
1059 PwDomSetConditionUserName(PWGM_HDOMAIN domain, const char *userName)
1060 {
1061  return PwDomSetProperty(domain, PropUserName, userName);
1062 }
1063 
1064 
1065 PWP_BOOL
1067 {
1068  std::ostringstream oss;
1069  oss << userId;
1070  return PwDomSetProperty(domain, PropUserId, oss.str().c_str());
1071 }
1072 
1073 
1074 PWP_BOOL
1075 PwDomSetConditionTypeName(PWGM_HDOMAIN domain, const char *typeName)
1076 {
1077  return PwDomSetProperty(domain, PropTypeName, typeName);
1078 }
1079 
1080 
1081 PWP_BOOL
1083 {
1084  std::ostringstream oss;
1085  oss << typeId;
1086  return PwDomSetProperty(domain, PropTypeId, oss.str().c_str());
1087 }
1088 
1089 
1090 PWP_BOOL
1092 {
1093  const bool ret = PwDomSetConditionUserName(domain, condData.name) &&
1094  PwDomSetConditionUserId(domain, condData.id) &&
1095  PwDomSetConditionTypeName(domain, condData.type) &&
1096  PwDomSetConditionTypeId(domain, condData.tid);
1097  return PWP_CAST_BOOL(ret);
1098 }
1099 
1100 
1101 PWP_BOOL
1102 PwConSetConditionUserName(PWGM_HCONNECTOR connector, const char *userName)
1103 {
1104  return PwConSetProperty(connector, PropUserName, userName);
1105 }
1106 
1107 
1108 PWP_BOOL
1110 {
1111  std::ostringstream oss;
1112  oss << userId;
1113  return PwConSetProperty(connector, PropUserId, oss.str().c_str());
1114 }
1115 
1116 
1117 PWP_BOOL
1118 PwConSetConditionTypeName(PWGM_HCONNECTOR connector, const char *typeName)
1119 {
1120  return PwConSetProperty(connector, PropTypeName, typeName);
1121 }
1122 
1123 
1124 PWP_BOOL
1126 {
1127  std::ostringstream oss;
1128  oss << typeId;
1129  return PwConSetProperty(connector, PropTypeId, oss.str().c_str());
1130 }
1131 
1132 
1133 PWP_BOOL
1135 {
1136  const bool ret = PwConSetConditionUserName(connector, condData.name) &&
1137  PwConSetConditionUserId(connector, condData.id) &&
1138  PwConSetConditionTypeName(connector, condData.type) &&
1139  PwConSetConditionTypeId(connector, condData.tid);
1140  return PWP_CAST_BOOL(ret);
1141 }
1142 
1143 
1144 PWP_BOOL
1146  const char *userName)
1147 {
1148  return PwAsmSetProperty(h, (PWP_UINT32)key, PropUserName, userName);
1149 }
1150 
1151 
1152 PWP_BOOL
1154  const PWP_UINT32 userId)
1155 {
1156  std::ostringstream oss;
1157  oss << userId;
1158  return PwAsmSetProperty(h, (PWP_UINT32)key, PropUserId, oss.str().c_str());
1159 }
1160 
1161 
1162 PWP_BOOL
1164  const char *typeName)
1165 {
1166  return PwAsmSetProperty(h, (PWP_UINT32)key, PropTypeName, typeName);
1167 }
1168 
1169 
1170 PWP_BOOL
1172  const PWP_UINT32 typeId)
1173 {
1174  std::ostringstream oss;
1175  oss << typeId;
1176  return PwAsmSetProperty(h, (PWP_UINT32)key, PropTypeId, oss.str().c_str());
1177 }
1178 
1179 
1180 PWP_BOOL
1182  const PWGM_CONDDATA &condData)
1183 {
1184  const bool ret = PwAsmSetConditionUserName(h, key, condData.name) &&
1185  PwAsmSetConditionUserId(h, key, condData.id) &&
1186  PwAsmSetConditionTypeName(h, key, condData.type) &&
1187  PwAsmSetConditionTypeId(h, key, condData.tid);
1188  return PWP_CAST_BOOL(ret);
1189 }
1190 
1191 
1192 PWP_BOOL
1194  const PWGM_CONDKEY key, const PWP_UINT32 startCell,
1195  const PWP_UINT32 endCell)
1196 {
1197  return (BLKASMMODEL_IN && BLKASMMODEL_IN->PwAsmSetCellSpanConditionKeyCB) ?
1198  BLKASMMODEL_IN->PwAsmSetCellSpanConditionKeyCB(blkAsm, key, startCell, endCell) :
1199  PWP_FALSE;
1200 }
1201 
1202 
1203 PWP_BOOL
1205  const PWP_UINT32 cell)
1206 {
1207  return PwAsmSetCellSpanConditionKey(assembler, key, cell, cell);
1208 }
1209 
1210 
1211 PWP_BOOL
1212 PwVlstReadFile(PWGM_HVERTEXLIST vertlist, FILE *file,
1213  const PWGM_XYZ_CLUSTERING fileClustering,
1214  const PWP_ENDIANNESS fileByteOrder, const PWP_ENUM_PRECISION filePrecision)
1215 {
1216  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstReadFileCB) ?
1217  VLISTMODEL_IN->PwVlstReadFileCB(vertlist, file, fileClustering,
1218  fileByteOrder, filePrecision) : PWP_FALSE;
1219 }
1220 
1221 
1224  const PWP_ENUM_DIMENSION blkElemDimty)
1225 {
1226  return (MODEL_IN && MODEL_IN->PwModCreateUnsVertexListCB) ?
1227  MODEL_IN->PwModCreateUnsVertexListCB(model, blkElemDimty) :
1228  badVertexList;
1229 }
1230 
1231 
1234 {
1236 }
1237 
1238 
1241 {
1243 }
1244 
1245 
1246 PWP_BOOL
1248 {
1249  return VLISTMODEL_IN && VLISTMODEL_IN->PwVlstAllocateCB &&
1250  VLISTMODEL_IN->PwVlstAllocateCB(vertlist, n);
1251 }
1252 
1253 
1256 {
1257  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstCreateUnsBlockCB) ?
1258  VLISTMODEL_IN->PwVlstCreateUnsBlockCB(vertlist) : badBlock;
1259 }
1260 
1261 
1262 PWP_BOOL
1264  const PWP_UINT count)
1265 {
1266  return (BLKMODEL_IN && BLKMODEL_IN->PwUnsBlkAllocateElementsCB) ?
1267  BLKMODEL_IN->PwUnsBlkAllocateElementsCB(block, cellType, count) :
1268  PWP_FALSE;
1269 }
1270 
1271 
1272 PWP_BOOL
1274 {
1276  PwBlkGetVertexList(block))) {
1277  // only assign 3-D block element counts
1279  PWGM_ECNT_Hex(counts)) &&
1281  PWGM_ECNT_Pyramid(counts)) &&
1283  PWGM_ECNT_Tet(counts)) &&
1285  PWGM_ECNT_Wedge(counts));
1286  }
1287  // only assign 2-D block element counts
1289  PWGM_ECNT_Quad(counts)) &&
1291  PWGM_ECNT_Tri(counts));
1292 }
1293 
1294 
1295 PWP_BOOL
1297  const PWGM_ELEMDATA *eData)
1298 {
1299  return (BLKMODEL_IN && BLKMODEL_IN->PwUnsBlkSetElementCB) ?
1300  BLKMODEL_IN->PwUnsBlkSetElementCB(block, ndx, eData) : PWP_FALSE;
1301 }
1302 
1303 
1306 {
1307  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstCreateUnsDomainCB) ?
1308  VLISTMODEL_IN->PwVlstCreateUnsDomainCB(vertlist) : badDomain;
1309 }
1310 
1311 
1314 {
1315  PWGM_HDOMAIN hDom = PwVlstCreateUnsDomain(vertlist);
1316  if (!PwDomSetProperty(hDom, PropSubType, SubTypeBoundary)) {
1317  // not good
1318  hDom = PWGM_HDOMAIN_INIT;
1319  }
1320  return hDom;
1321 }
1322 
1323 
1324 PWP_BOOL
1326  const PWP_UINT n)
1327 {
1328  return (DOMMODEL_IN && DOMMODEL_IN->PwUnsDomAllocateElementsCB) ?
1329  DOMMODEL_IN->PwUnsDomAllocateElementsCB(domain, cellType, n): PWP_FALSE;
1330 }
1331 
1332 
1333 PWP_BOOL
1335 {
1337  PWGM_ECNT_Tri(counts)) &&
1339  PWGM_ECNT_Quad(counts));
1340 }
1341 
1342 
1343 PWP_BOOL
1345  const PWGM_ELEMDATA *eData)
1346 {
1347  return (DOMMODEL_IN && DOMMODEL_IN->PwUnsDomSetElementCB) ?
1348  DOMMODEL_IN->PwUnsDomSetElementCB(domain, ndx, eData) : PWP_FALSE;
1349 }
1350 
1351 
1354 {
1355  return (VLISTMODEL_IN && VLISTMODEL_IN->PwVlstCreateBlockAssemblerCB) ?
1356  VLISTMODEL_IN->PwVlstCreateBlockAssemblerCB(vertlist) : badAssembler;
1357 }
1358 
1359 
1360 PWP_BOOL
1362  const PWGM_ASSEMBLER_DATA *face)
1363 {
1364  return (BLKASMMODEL_IN && BLKASMMODEL_IN->PwAsmPushElementFaceCB) ?
1365  BLKASMMODEL_IN->PwAsmPushElementFaceCB(blkAsm, face) : PWP_FALSE;
1366 }
1367 
1368 
1369 PWP_BOOL
1371 {
1372  return (BLKASMMODEL_IN && BLKASMMODEL_IN->PwAsmFinalizeCB) ?
1373  BLKASMMODEL_IN->PwAsmFinalizeCB(blkAsm) : PWP_FALSE;
1374 }
1375 
1376 
1379 {
1380  return (BLKASMMODEL_IN && BLKASMMODEL_IN->PwAsmGetVertexListCB) ?
1381  BLKASMMODEL_IN->PwAsmGetVertexListCB(blkAsm) : badVertexList;
1382 }
1383 
1384 
1387 {
1388  return (MODEL_IN && MODEL_IN->PwModCreateStrBlockCB) ?
1389  MODEL_IN->PwModCreateStrBlockCB(model, blkSize) : badBlock;
1390 }
1391 
1392 
1395 {
1396  return (MODEL_IN && MODEL_IN->PwModCreateStrDomainCB) ?
1397  MODEL_IN->PwModCreateStrDomainCB(model, domSize) : badDomain;
1398 }
1399 
1400 #endif // !defined(PWGM_HIDE_IMPORT_API)
faceCB
static PWP_UINT32 faceCB(PWGM_FACESTREAM_DATA *data)
Definition: CaeUnsGridModel.cxx:63
PWGM_INDEX3::j
PWP_INT32 j
j-coordinate used for 3D and 2D grids
Definition: apiGridModel.h:890
PWP_VALTYPE_STRING
@ PWP_VALTYPE_STRING
transfer value is a const char*
Definition: apiPWP.h:697
PwAsmSetCellConditionKey
PWP_BOOL PwAsmSetCellConditionKey(PWGM_HBLOCKASSEMBLER assembler, const PWGM_CONDKEY key, const PWP_UINT32 cell)
Tags a single cells with the condition identified by key.
Definition: apiGridModel.cxx:1204
PwVlstCreateUnsBlock
PWGM_HBLOCK PwVlstCreateUnsBlock(PWGM_HVERTEXLIST vertlist)
Creates an unstructured block that uses vertices from an unstructured vertex list.
Definition: apiGridModel.cxx:1255
PWGM_HELEMENT
Grid element handle declaration.
Definition: apiGridModel.h:427
PWGM_FACEORDER_BCGROUPSONLY
@ PWGM_FACEORDER_BCGROUPSONLY
BoundaryOnly grouped by BCs.
Definition: apiGridModel.h:1067
PwBlkNdxVertData
PWP_BOOL PwBlkNdxVertData(PWGM_HBLOCK block, PWGM_INDEX3 ndx3, PWGM_VERTDATA *pVertData)
Get the block's vertex data at the given index location.
Definition: apiGridModel.cxx:546
PwElemDataModEnum
PWP_BOOL PwElemDataModEnum(PWGM_HELEMENT element, PWGM_ENUMELEMDATA *pEnumElemData)
Get the enumerated element data relative to the model's index space.
Definition: apiGridModel.cxx:386
PWGM_HBLOCKASSEMBLER
An opaque handle to an unstructured block assembler.
Definition: apiGridModel.h:566
PwVlstCreateUnsBoundary
PWGM_HDOMAIN PwVlstCreateUnsBoundary(PWGM_HVERTEXLIST vertlist)
Definition: apiGridModel.cxx:1313
PwModNdxBoundary
PWP_BOOL PwModNdxBoundary(PWGM_HGRIDMODEL model, PWP_UINT32 ndx, PWGM_BNDRYDATA *pBndryData)
Get the data for the model's nth structured boundary.
Definition: apiGridModel.cxx:508
PwModEnumVertices
PWGM_HVERTEX PwModEnumVertices(PWGM_HGRIDMODEL model, PWP_UINT32 ndx)
Sequentially enumerate the model vertex elements.
Definition: apiGridModel.cxx:242
PwVertIndexMod
PWP_BOOL PwVertIndexMod(PWGM_HVERTEX vertex, PWP_UINT32 *pIndex)
Get the vertex index relative to the model's index space.
Definition: apiGridModel.cxx:359
PwModCreateUnsVertexList2
PWGM_HVERTEXLIST PwModCreateUnsVertexList2(PWGM_HGRIDMODEL model)
Creates an empty, unstructured vertex list in a model for 2-D blocks and 1-D domains.
Definition: apiGridModel.cxx:1240
PwDomElementCount
PWP_UINT32 PwDomElementCount(PWGM_HDOMAIN domain, PWGM_ELEMCOUNTS *pCounts)
Get the number of domain elements.
Definition: apiGridModel.cxx:325
PwVlstSetXYZ2
PWP_BOOL PwVlstSetXYZ2(PWGM_HVERTEXLIST vertlist, const PWGM_INDEX2 ndx2, const PWGM_XYZVAL x, const PWGM_XYZVAL y, const PWGM_XYZVAL z)
Set the XYZ of a point in a 2D structured vertex list.
Definition: apiGridModel.cxx:932
PwFaceOrderToText
const char * PwFaceOrderToText(PWGM_ENUM_FACEORDER faceOrder)
Maps a PWGM_ENUM_FACEORDER value to a human readable string.
Definition: apiGridModel.cxx:424
PwVlstSetXYZ2Data
PWP_BOOL PwVlstSetXYZ2Data(PWGM_HVERTEXLIST vertlist, const PWGM_INDEX2 ndx2, const PWGM_VERTDATA &v)
Set the XYZ of a point in a 2D structured vertex list using a PWGM_VERTDATA value.
Definition: apiGridModel.cxx:942
PwModEnumDomains
PWGM_HDOMAIN PwModEnumDomains(PWGM_HGRIDMODEL model, PWP_UINT32 ndx)
Sequentially enumerate the model domain elements.
Definition: apiGridModel.cxx:234
PWP_DIMENSION_3D
@ PWP_DIMENSION_3D
Definition: apiPWP.h:765
PwXform2Follows
PWGM_ENUM_IJK PwXform2Follows(const PWGM_INDEX_XFORM2 *pX2, PWGM_ENUM_IJK localAxis, PWP_BOOL *pFlipped)
For a given localAxis, determine the corresponding axis in the transformed system.
Definition: apiGridModel.cxx:768
PwVlstSetXYZVal2
PWP_BOOL PwVlstSetXYZVal2(PWGM_HVERTEXLIST vertlist, const PWGM_INDEX2 ndx2, const PWGM_ENUM_XYZ which, const PWGM_XYZVAL val)
Set an XYZ component of a point in a 2D structured vertex list.
Definition: apiGridModel.cxx:921
PWP_ENUM_VALTYPE
PWP_ENUM_VALTYPE
Supported PWP-API getValue() transfer types.
Definition: apiPWP.h:696
PWGM_ELEMTYPE_TET
@ PWGM_ELEMTYPE_TET
3D, 4-sided (tetrahedral) grid element
Definition: apiGridModel.h:677
PwConSetConditionUserId
PWP_BOOL PwConSetConditionUserId(PWGM_HCONNECTOR connector, const PWP_UINT32 userId)
Sets the condition data for a connector.
Definition: apiGridModel.cxx:1109
PWGM_FACEORDER_VCGROUPSBCLAST
@ PWGM_FACEORDER_VCGROUPSBCLAST
InteriorFirst grouped by VCs then BCs.
Definition: apiGridModel.h:1068
PWP_UINT32
unsigned int PWP_UINT32
32-bit unsigned integer
Definition: apiPWP.h:210
PwModNdxBoundaryAndCondition
PWP_BOOL PwModNdxBoundaryAndCondition(PWGM_HGRIDMODEL model, PWP_UINT32 ndx, PWGM_BNDRYDATA *pBndryData, PWGM_CONDDATA *pCondData)
Get the PWGM_BNDRYDATA and PWGM_CONDDATA for the model's nth structured boundary.
Definition: apiGridModel.cxx:518
PWGM_FACESTREAMCB
PWP_UINT32(* PWGM_FACESTREAMCB)(PWGM_FACESTREAM_DATA *data)
The face stream callback function signature.
Definition: apiGridModel.h:1165
PWGM_IJK_J
@ PWGM_IJK_J
J-component id.
Definition: apiGridModel.h:1017
PwBlkSetName
PWP_BOOL PwBlkSetName(PWGM_HBLOCK block, const char *name)
Set a block's name.
Definition: apiGridModel.cxx:840
PwModVertexCount
PWP_UINT32 PwModVertexCount(PWGM_HGRIDMODEL model)
Get the number of model vertex elements.
Definition: apiGridModel.cxx:250
PwUnsDomAllocateElementCounts
PWP_BOOL PwUnsDomAllocateElementCounts(PWGM_HDOMAIN domain, const PWGM_ELEMCOUNTS &counts)
Allocates element storage in an unstructured domain.
Definition: apiGridModel.cxx:1334
PWGM_FACEORDER_BOUNDARYFIRST
@ PWGM_FACEORDER_BOUNDARYFIRST
all cell faces in boundary, interior order
Definition: apiGridModel.h:1061
PwVlstSetXYZ3Data
PWP_BOOL PwVlstSetXYZ3Data(PWGM_HVERTEXLIST vertlist, const PWGM_INDEX3 ndx3, const PWGM_VERTDATA &v)
Set the XYZ of a point in a 3D structured vertex list using a PWGM_VERTDATA value.
Definition: apiGridModel.cxx:972
PwModDomainCount
PWP_UINT32 PwModDomainCount(PWGM_HGRIDMODEL model)
Get the number of domain elements in the model.
Definition: apiGridModel.cxx:226
PWGM_CONDDATA::id
PWP_UINT32 id
grid-defined condition id
Definition: apiGridModel.h:646
PWGM_HDOMAIN
An opaque handle to a grid domain element.
Definition: apiGridModel.h:372
PWGM_CONDDATA::tid
PWP_UINT32 tid
cae-defined condition id
Definition: apiGridModel.h:648
PwBlock
PWP_BOOL PwBlock(PWGM_HBLOCK block, PWGM_BLOCKDATA *pBlockData)
Get the block data.
Definition: apiGridModel.cxx:108
PwDomSetConditionUserId
PWP_BOOL PwDomSetConditionUserId(PWGM_HDOMAIN domain, const PWP_UINT32 userId)
Sets the condition data for a domain.
Definition: apiGridModel.cxx:1066
PwModCreateStrBlock
PWGM_HBLOCK PwModCreateStrBlock(PWGM_HGRIDMODEL model, const PWGM_STR_SIZE blkSize)
Creates a structured block in a model.
Definition: apiGridModel.cxx:1386
PwBlkEnumElements
PWGM_HELEMENT PwBlkEnumElements(PWGM_HBLOCK block, PWP_UINT32 ndx)
Sequentially enumerate the block elements.
Definition: apiGridModel.cxx:317
PwModEnumElementCount
PWP_UINT32 PwModEnumElementCount(PWGM_HGRIDMODEL model, PWGM_ELEMCOUNTS *pCounts)
Get the number of enumerated model block elements.
Definition: apiGridModel.cxx:277
PwDomSetConditionTypeId
PWP_BOOL PwDomSetConditionTypeId(PWGM_HDOMAIN domain, const PWP_UINT32 typeId)
Sets the condition data for a domain.
Definition: apiGridModel.cxx:1082
PWGM_FACEORDER_DONTCARE
@ PWGM_FACEORDER_DONTCARE
all cell faces in any order
Definition: apiGridModel.h:1060
PWGM_INDEXMAPPERCB
PWP_UINT64(* PWGM_INDEXMAPPERCB)(const PWP_UINT64 pwgmNdx, void *data)
The custom, unstructured IndexScheme mapper callback function signature.
Definition: apiGridModel.h:1225
PWGM_CONDDATA::name
const char * name
grid-defined condition name
Definition: apiGridModel.h:645
PWP_INT32
int PWP_INT32
32-bit integer
Definition: apiPWP.h:207
PwElemDataCastToPoly
PWP_BOOL PwElemDataCastToPoly(const PWGM_ELEMDATA *eData, PWGM_POLYELEMDATA *polyData)
Cast a PWGM_ELEMDATA to a PWGM_POLYELEMDATA.
Definition: apiGridModel.cxx:395
PWGM_VERTDATA::x
PWGM_XYZVAL x
x-component
Definition: apiGridModel.h:608
PwBlkSize
PWP_BOOL PwBlkSize(PWGM_HBLOCK block, PWGM_STR_SIZE *pSize)
Get the block's vertex-size.
Definition: apiGridModel.cxx:538
PWGM_HDOMAIN_ISVALID
#define PWGM_HDOMAIN_ISVALID(h)
returns non-zero value if handle is valid
Definition: apiGridModel.h:374
PwUnsDomAllocateElements
PWP_BOOL PwUnsDomAllocateElements(PWGM_HDOMAIN domain, const PWGM_ENUM_ELEMTYPE cellType, const PWP_UINT n)
Allocates element storage in an unstructured domain.
Definition: apiGridModel.cxx:1325
PWGM_HGRIDMODEL
An opaque handle to a grid model.
Definition: apiGridModel.h:326
PwBlkNdxBoundary
PWP_BOOL PwBlkNdxBoundary(PWGM_HBLOCK block, PWP_UINT32 ndx, PWGM_BNDRYDATA *pBndryData)
Get the data for the block's nth structured boundary.
Definition: apiGridModel.cxx:595
PWP_VOID
void PWP_VOID
no value
Definition: apiPWP.h:317
ASSERT_COMPILE
ASSERT_COMPILE(sizeof(PWGM_ASSEMBLER_DATA)<=sizeof(PWP_UINT32) *8)
PWGM_POLYELEMDATA::numFaces
PWP_UINT64 numFaces
Definition: apiGridModel.h:763
PwAsmPushElementFace
PWP_BOOL PwAsmPushElementFace(PWGM_HBLOCKASSEMBLER blkAsm, const PWGM_ASSEMBLER_DATA *face)
Adds a face to an unstructured block face assembler.
Definition: apiGridModel.cxx:1361
PWGM_ENDSTREAMCB
PWP_UINT32(* PWGM_ENDSTREAMCB)(PWGM_ENDSTREAM_DATA *data)
The face stream callback function signature.
Definition: apiGridModel.h:1181
PWGM_FACEORDER_BCGROUPSONLY_BYVC
@ PWGM_FACEORDER_BCGROUPSONLY_BYVC
BoundariesOnly grouped by VCs.
Definition: apiGridModel.h:1069
PWP_UINT
PWP_UINT32 PWP_UINT
unsigned integer same size as void*
Definition: apiPWP.h:285
PwModDefaultEnumElementOrder
PWP_VOID PwModDefaultEnumElementOrder(PWGM_HGRIDMODEL model)
Reset the enumElements() ordering sequence to the default (none).
Definition: apiGridModel.cxx:301
PwBndryCondition
PWP_BOOL PwBndryCondition(PWGM_HBNDRY boundary, PWGM_CONDDATA *pCondData)
Get the boundary's condition data.
Definition: apiGridModel.cxx:630
PwAsmSetConditionTypeName
PWP_BOOL PwAsmSetConditionTypeName(PWGM_HBLOCKASSEMBLER h, const PWGM_CONDKEY key, const char *typeName)
Sets the type name of the condition identified by key.
Definition: apiGridModel.cxx:1163
PwConSetName
PWP_BOOL PwConSetName(PWGM_HCONNECTOR connector, const char *name)
Set a connector's name.
Definition: apiGridModel.cxx:832
PWGM_HCNXN
An opaque handle to a structured, inter-block connection.
Definition: apiGridModel.h:482
PWGM_POLYELEMDATA::vertCnt
PWP_UINT64 vertCnt
Definition: apiGridModel.h:761
PWP_DIMENSION_2D
@ PWP_DIMENSION_2D
Definition: apiPWP.h:764
PwModGetAttributeUINT32
PWP_BOOL PwModGetAttributeUINT32(PWGM_HGRIDMODEL model, const char *name, PWP_UINT32 *val)
Definition: apiGridModel.cxx:152
PwModGetAttributeFLOAT
PWP_BOOL PwModGetAttributeFLOAT(PWGM_HGRIDMODEL model, const char *name, PWP_FLOAT *val)
Definition: apiGridModel.cxx:194
PWGM_HBLOCK_ISVALID
#define PWGM_HBLOCK_ISVALID(h)
Returns non-zero value if handle is valid.
Definition: apiGridModel.h:348
PwAsmFinalize
PWP_BOOL PwAsmFinalize(PWGM_HBLOCKASSEMBLER blkAsm)
Stitches together all the faces added to the assembler into cells and blocks.
Definition: apiGridModel.cxx:1370
PwXform3to2
PWP_BOOL PwXform3to2(const PWGM_INDEX_XFORM *pX3, PWGM_INDEX_XFORM2 *pX2)
Convert a 3D transform matrix to it's 2D equivalent.
Definition: apiGridModel.cxx:676
PWGM_INDEX_XFORM2::m
PWP_INT32 m[2][3]
m[row][col]
Definition: apiGridModel.h:933
PWGM_CONDKEY
PWP_UINT32 PWGM_CONDKEY
The condition key integral type.
Definition: apiGridModel.h:1189
PwDomSetConditionUserName
PWP_BOOL PwDomSetConditionUserName(PWGM_HDOMAIN domain, const char *userName)
Sets the condition name for a domain.
Definition: apiGridModel.cxx:1059
PWGM_CONDDATA::type
const char * type
cae-defined condition physical type name
Definition: apiGridModel.h:647
PWGM_ELEMDATA::index
PWP_UINT32 index[8]
The vertex indices.
Definition: apiGridModel.h:741
endCB
static PWP_UINT32 endCB(PWGM_ENDSTREAM_DATA *data)
Definition: CaeUnsGridModel.cxx:71
PWGM_ELEMDATA::type
PWGM_ENUM_ELEMTYPE type
One of the PWGM_ELEMTYPE_XXX values.
Definition: apiGridModel.h:738
PwModEnumConnections
PWGM_HCNXN PwModEnumConnections(PWGM_HGRIDMODEL model, PWP_UINT32 ndx)
Sequentially enumerate the model's connections.
Definition: apiGridModel.cxx:500
apiGridModel.h
Pointwise Grid Model API Specification (PWGM-API)
PWGM_ELEMDATA
Element descriptor data type.
Definition: apiGridModel.h:737
PWGM_ENUM_ELEMORDER
PWGM_ENUM_ELEMORDER
Types of element orderings.
Definition: apiGridModel.h:699
PwBlkElementCount
PWP_UINT32 PwBlkElementCount(PWGM_HBLOCK block, PWGM_ELEMCOUNTS *pCounts)
Get the number of block elements.
Definition: apiGridModel.cxx:309
PWGM_INDEX_XFORM2
The 2D transform matrix data type.
Definition: apiGridModel.h:932
PWGM_IJK_K
@ PWGM_IJK_K
K-component id.
Definition: apiGridModel.h:1018
PWGM_ELEMTYPE_POLYH
@ PWGM_ELEMTYPE_POLYH
3D, polyhedron
Definition: apiGridModel.h:681
PWGM_INDEX3::i
PWP_INT32 i
i-coordinate used for 3D and 2D grids
Definition: apiGridModel.h:889
PWGM_ELEMTYPE_TRI
@ PWGM_ELEMTYPE_TRI
2D, 3-sided grid element
Definition: apiGridModel.h:676
PWGM_HVERTEX_ISVALID
#define PWGM_HVERTEX_ISVALID(h)
returns non-zero value if handle is valid
Definition: apiGridModel.h:400
PWGM_INDEX3
Structured grid ijk index data type.
Definition: apiGridModel.h:888
PwElemDataMod
PWP_BOOL PwElemDataMod(PWGM_HELEMENT element, PWGM_ELEMDATA *pElemData)
Get the element data relative to the model's index space.
Definition: apiGridModel.cxx:377
PwDomEnumElements
PWGM_HELEMENT PwDomEnumElements(PWGM_HDOMAIN domain, PWP_UINT32 ndx)
Sequentially enumerate the domain elements.
Definition: apiGridModel.cxx:333
PWP_CAST_BOOL
#define PWP_CAST_BOOL(v)
Cast a value to a PWP_BOOL value (PWP_TRUE or PWP_FALSE)
Definition: apiPWP.h:312
PWGM_ECNT_Tri
#define PWGM_ECNT_Tri(ecs)
Extract the Tri count from a PWGM_ELEMCOUNTS struct.
Definition: apiGridModel.h:812
PwBlkNdxConnection
PWP_BOOL PwBlkNdxConnection(PWGM_HBLOCK block, PWP_UINT32 ndx, PWGM_CNXNDATA *pCnxnData)
Get the data for the block's nth connection.
Definition: apiGridModel.cxx:614
PWGM_ELEMTYPE_POINT
@ PWGM_ELEMTYPE_POINT
0D, point grid element
Definition: apiGridModel.h:680
PWGM_POLYELEMDATA::type
PWGM_ENUM_ELEMTYPE type
Definition: apiGridModel.h:760
PWGM_ELEMTYPE_PYRAMID
@ PWGM_ELEMTYPE_PYRAMID
3D, 5-sided, quad-based grid element
Definition: apiGridModel.h:679
PWGM_ECNT_Tet
#define PWGM_ECNT_Tet(ecs)
Extract the Tet count from a PWGM_ELEMCOUNTS struct.
Definition: apiGridModel.h:818
PwUnsBlkSetElement
PWP_BOOL PwUnsBlkSetElement(PWGM_HBLOCK block, const PWP_UINT ndx, const PWGM_ELEMDATA *eData)
Sets the connectivity for an unstructured block element.
Definition: apiGridModel.cxx:1296
PwModBlockCount
PWP_UINT32 PwModBlockCount(PWGM_HGRIDMODEL model)
Get the number of block elements in the model.
Definition: apiGridModel.cxx:83
PWGM_FACEORDER_INTERIORFIRST
@ PWGM_FACEORDER_INTERIORFIRST
all cell faces in interior, boundary order
Definition: apiGridModel.h:1062
PwModCustomIndex3SchemeReady
PWP_BOOL PwModCustomIndex3SchemeReady(PWGM_HGRIDMODEL model, PWGM_INDEX3MAPPERCB cb, void *data)
Notifys the Pointwise export framework that the custom, structured index3 map is ready.
Definition: apiGridModel.cxx:554
PWGM_POLYELEMDATA::faceIndices
const PWP_UINT64 * faceIndices
Definition: apiGridModel.h:766
PWP_VALTYPE_REAL
@ PWP_VALTYPE_REAL
transfer value is a PWP_REAL
Definition: apiPWP.h:700
PwBlkSetConditionUserId
PWP_BOOL PwBlkSetConditionUserId(PWGM_HBLOCK block, const PWP_UINT32 userId)
Sets the condition data for a grid entity.
Definition: apiGridModel.cxx:1023
PWGM_INDEX3MAPPERCB
PWGM_INDEX3(* PWGM_INDEX3MAPPERCB)(const PWGM_INDEX3 pwgmNdx, void *data)
The custom, structured Index3Scheme mapper callback function signature.
Definition: apiGridModel.h:1233
PWGM_ELEMTYPE_BAR
@ PWGM_ELEMTYPE_BAR
1D, linear grid element
Definition: apiGridModel.h:673
PwAsmSetConditionTypeId
PWP_BOOL PwAsmSetConditionTypeId(PWGM_HBLOCKASSEMBLER h, const PWGM_CONDKEY key, const PWP_UINT32 typeId)
Sets the type id of the condition identified by key.
Definition: apiGridModel.cxx:1171
PwBlkCondition
PWP_BOOL PwBlkCondition(PWGM_HBLOCK block, PWGM_CONDDATA *pCondData)
Get the block condition data.
Definition: apiGridModel.cxx:99
PwInRange
PWP_BOOL PwInRange(PWGM_INDEX3 ijk, const PWGM_STR_RANGE *pRange)
Determines if an PWGM_INDEX3 is within a PWGM_STR_RANGE.
Definition: apiGridModel.cxx:781
PWGM_BEGINSTREAMCB
PWP_UINT32(* PWGM_BEGINSTREAMCB)(PWGM_BEGINSTREAM_DATA *data)
The begin stream callback function signature.
Definition: apiGridModel.h:1099
PwDomCondition
PWP_BOOL PwDomCondition(PWGM_HDOMAIN domain, PWGM_CONDDATA *pCondData)
Get the domain condition data.
Definition: apiGridModel.cxx:341
PWGM_INDEX2
Structured grid ijk index data type.
Definition: apiGridModel.h:897
PWGM_ECNT_Quad
#define PWGM_ECNT_Quad(ecs)
Extract the Quad count from a PWGM_ELEMCOUNTS struct.
Definition: apiGridModel.h:806
PWP_REAL
double PWP_REAL
64-bit real
Definition: apiPWP.h:264
PwBlkEnumConnections
PWGM_HCNXN PwBlkEnumConnections(PWGM_HBLOCK block, PWP_UINT32 ndx)
Sequentially enumerate the block's connections.
Definition: apiGridModel.cxx:587
PwVlstSetXYZData
PWP_BOOL PwVlstSetXYZData(PWGM_HVERTEXLIST vertlist, const PWP_UINT ndx, const PWGM_VERTDATA &v)
Set the XYZ of a point in a 1D vertex list using a PWGM_VERTDATA value.
Definition: apiGridModel.cxx:910
PwModEnumBoundaries
PWGM_HBNDRY PwModEnumBoundaries(PWGM_HGRIDMODEL model, PWP_UINT32 ndx)
Sequentially enumerate the model's boundaries.
Definition: apiGridModel.cxx:484
PwModCreateStrDomain
PWGM_HDOMAIN PwModCreateStrDomain(PWGM_HGRIDMODEL model, const PWGM_STR_SIZE domSize)
Creates a structured domain in a model.
Definition: apiGridModel.cxx:1394
PWGM_ENUM_ELEMTYPE
PWGM_ENUM_ELEMTYPE
Element type ids.
Definition: apiGridModel.h:672
PwAsmSetConditionUserId
PWP_BOOL PwAsmSetConditionUserId(PWGM_HBLOCKASSEMBLER h, const PWGM_CONDKEY key, const PWP_UINT32 userId)
Sets the user id of the condition identified by key.
Definition: apiGridModel.cxx:1153
PwVlstSetXYZ
PWP_BOOL PwVlstSetXYZ(PWGM_HVERTEXLIST vertlist, const PWP_UINT ndx, const PWGM_XYZVAL x, const PWGM_XYZVAL y, const PWGM_XYZVAL z)
Set the XYZ of a point in a 1D vertex list.
Definition: apiGridModel.cxx:900
PWGM_VERTDATA
Vertex descriptor data type.
Definition: apiGridModel.h:607
PWGM_FACEORDER_BCGROUPSFIRST
@ PWGM_FACEORDER_BCGROUPSFIRST
BoundaryFirst grouped by BCs.
Definition: apiGridModel.h:1065
PWGM_ECNT_Wedge
#define PWGM_ECNT_Wedge(ecs)
Extract the Wedge count from a PWGM_ELEMCOUNTS struct.
Definition: apiGridModel.h:824
PwBlkEnumBoundaries
PWGM_HBNDRY PwBlkEnumBoundaries(PWGM_HBLOCK block, PWP_UINT32 ndx)
Sequentially enumerate the block's boundaries.
Definition: apiGridModel.cxx:571
PwAsmSetCellSpanConditionKey
PWP_BOOL PwAsmSetCellSpanConditionKey(PWGM_HBLOCKASSEMBLER blkAsm, const PWGM_CONDKEY key, const PWP_UINT32 startCell, const PWP_UINT32 endCell)
Tags a contiguous span of cells with the condition identified by key.
Definition: apiGridModel.cxx:1193
PWGM_INDEX2::j
PWP_INT32 j
j-coordinate used for 2D grids
Definition: apiGridModel.h:899
PwXformApply
PWGM_INDEX3 PwXformApply(const PWGM_INDEX_XFORM *pX3, PWGM_INDEX3 ijk)
Apply a PWGM_INDEX_XFORM transform to a PWGM_INDEX3 value.
Definition: apiGridModel.cxx:699
PWGM_FACEORDER_BCGROUPSLAST
@ PWGM_FACEORDER_BCGROUPSLAST
InteriorFirst grouped by BCs.
Definition: apiGridModel.h:1066
PwVlstReadFile
PWP_BOOL PwVlstReadFile(PWGM_HVERTEXLIST vertlist, FILE *file, const PWGM_XYZ_CLUSTERING fileClustering, const PWP_ENDIANNESS fileByteOrder, const PWP_ENUM_PRECISION filePrecision)
Definition: apiGridModel.cxx:1212
PWGM_HBLOCK
An opaque handle to a grid block element.
Definition: apiGridModel.h:345
PWGM_STR_RANGE::end
PWGM_INDEX3 end
ending index
Definition: apiGridModel.h:911
PWGM_BLOCKDATA
Block data type.
Definition: apiGridModel.h:1005
PwModGetAttributeREAL
PWP_BOOL PwModGetAttributeREAL(PWGM_HGRIDMODEL model, const char *name, PWP_REAL *val)
Definition: apiGridModel.cxx:186
PWGM_ELEMCOUNTS
Element count information.
Definition: apiGridModel.h:774
PwVlstIsStructured
PWP_BOOL PwVlstIsStructured(PWGM_HVERTEXLIST vertlist)
Check the type of a vertex list.
Definition: apiGridModel.cxx:864
PWGM_POLYELEMDATA::numFaceIndices
PWP_UINT64 numFaceIndices
Definition: apiGridModel.h:765
PWP_FALSE
#define PWP_FALSE
PWP_BOOL logical "false" value.
Definition: apiPWP.h:306
PwModGetAttributeValue
PWP_BOOL PwModGetAttributeValue(PWGM_HGRIDMODEL model, const char *name, PWP_ENUM_VALTYPE bufType, void *buf, PWP_UINT count)
Get an attribute's value.
Definition: apiGridModel.cxx:126
PwModGetAttributeBOOL
PWP_BOOL PwModGetAttributeBOOL(PWGM_HGRIDMODEL model, const char *name, PWP_BOOL *val)
Definition: apiGridModel.cxx:207
PWGM_ELEMTYPE_WEDGE
@ PWGM_ELEMTYPE_WEDGE
3D, extruded, tri/quad grid element
Definition: apiGridModel.h:678
PwModConnectionCount
PWP_UINT32 PwModConnectionCount(PWGM_HGRIDMODEL model)
Get the number of structured grid connections in the model.
Definition: apiGridModel.cxx:492
PwModBoundaryCount
PWP_UINT32 PwModBoundaryCount(PWGM_HGRIDMODEL model)
Get the number of structured grid boundaries in the model.
Definition: apiGridModel.cxx:476
PwAsmSetProperty
PWP_BOOL PwAsmSetProperty(PWGM_HBLOCKASSEMBLER blkAsm, const PWP_UINT32 propertySetId, const char *key, const char *val)
Sets the text value of a property identified by key.
Definition: apiGridModel.cxx:1006
PWP_FLOAT
float PWP_FLOAT
32-bit real
Definition: apiPWP.h:261
PWGM_INDEX3::k
PWP_INT32 k
k-coordinate used for 3D grids only
Definition: apiGridModel.h:891
PwVlstSetXYZVal3
PWP_BOOL PwVlstSetXYZVal3(PWGM_HVERTEXLIST vertlist, const PWGM_INDEX3 ndx3, const PWGM_ENUM_XYZ which, const PWGM_XYZVAL val)
Set an XYZ component of a point in a 3D structured vertex list.
Definition: apiGridModel.cxx:953
PwVertXyzVal
PWP_BOOL PwVertXyzVal(PWGM_HVERTEX vertex, PWGM_ENUM_XYZ which, PWGM_XYZVAL *pVal)
Get a vertex's x, y, or z component value.
Definition: apiGridModel.cxx:368
PWGM_BNDRYDATA
Structured grid boundary data type.
Definition: apiGridModel.h:980
PWGM_FACEORDER_BOUNDARYONLY
@ PWGM_FACEORDER_BOUNDARYONLY
only boundary cell faces
Definition: apiGridModel.h:1063
PwVlstSetXYZVal
PWP_BOOL PwVlstSetXYZVal(PWGM_HVERTEXLIST vertlist, const PWP_UINT ndx, const PWGM_ENUM_XYZ which, const PWGM_XYZVAL val)
Set an XYZ component of a point in a 1D vertex list.
Definition: apiGridModel.cxx:889
PwBlkSetConditionUserName
PWP_BOOL PwBlkSetConditionUserName(PWGM_HBLOCK block, const char *userName)
Sets the condition name for a grid entity.
Definition: apiGridModel.cxx:1016
PWGM_ECNT_Pyramid
#define PWGM_ECNT_Pyramid(ecs)
Extract the Pyramid count from a PWGM_ELEMCOUNTS struct.
Definition: apiGridModel.h:830
PwBlkGetVertexList
PWGM_HVERTEXLIST PwBlkGetVertexList(PWGM_HBLOCK block)
Get the vertex list associated with an unstructured or structured block.
Definition: apiGridModel.cxx:808
PwVlstCreateBlockAssembler
PWGM_HBLOCKASSEMBLER PwVlstCreateBlockAssembler(PWGM_HVERTEXLIST vertlist)
Creates an unstructured block face assembler that uses vertices from an unstructured vertex list.
Definition: apiGridModel.cxx:1353
PWGM_VERTDATA::y
PWGM_XYZVAL y
y-component
Definition: apiGridModel.h:609
PWGM_STR_RANGE::beg
PWGM_INDEX3 beg
begining index
Definition: apiGridModel.h:910
PwBlkConnectionCount
PWP_UINT32 PwBlkConnectionCount(PWGM_HBLOCK block)
Get the number of connections in the block.
Definition: apiGridModel.cxx:579
PWGM_POLYELEMDATA::indices
const PWP_UINT64 * indices
Definition: apiGridModel.h:762
PwBlkSetConditionTypeId
PWP_BOOL PwBlkSetConditionTypeId(PWGM_HBLOCK block, const PWP_UINT32 typeId)
Sets the condition data for a grid entity.
Definition: apiGridModel.cxx:1039
PWGM_VERTDATA::z
PWGM_XYZVAL z
z-component
Definition: apiGridModel.h:610
PWGM_INDEX_XFORM
The 3D transform matrix data type.
Definition: apiGridModel.h:921
PWP_ENDIANNESS
PWP_ENDIANNESS
Flags used to indicate endianness or control endian behaviors in functions.
Definition: apiPWP.h:822
PwModGetAttributeINT
PWP_BOOL PwModGetAttributeINT(PWGM_HGRIDMODEL model, const char *name, PWP_INT *val)
Definition: apiGridModel.cxx:165
PwModCreateUnsVertexList3
PWGM_HVERTEXLIST PwModCreateUnsVertexList3(PWGM_HGRIDMODEL model)
Creates an empty, unstructured vertex list in a model for 3-D blocks and 2-D domains.
Definition: apiGridModel.cxx:1233
PWGM_INDEX2::i
PWP_INT32 i
i-coordinate used for 2D grids
Definition: apiGridModel.h:898
PWP_INT
PWP_INT32 PWP_INT
integer same size as void*
Definition: apiPWP.h:282
PwConGetVertexList
PWGM_HVERTEXLIST PwConGetVertexList(PWGM_HCONNECTOR connector)
Get the vertex list associated with a connector.
Definition: apiGridModel.cxx:824
PWP_VALTYPE_BOOL
@ PWP_VALTYPE_BOOL
transfer value is a PWP_BOOL
Definition: apiPWP.h:702
PwModEnumElements
PWGM_HELEMENT PwModEnumElements(PWGM_HGRIDMODEL model, PWP_UINT32 ndx)
Sequentially enumerate the model's block elements.
Definition: apiGridModel.cxx:285
PWP_BOOL
int PWP_BOOL
logical value
Definition: apiPWP.h:303
PWP_VALTYPE_INT
@ PWP_VALTYPE_INT
transfer value is a PWP_INT
Definition: apiPWP.h:698
PwModGetAttributeINT32
PWP_BOOL PwModGetAttributeINT32(PWGM_HGRIDMODEL model, const char *name, PWP_INT32 *val)
Definition: apiGridModel.cxx:173
PwVlstAllocate
PWP_BOOL PwVlstAllocate(PWGM_HVERTEXLIST vertlist, const PWP_UINT n)
Allocates storage in an unstructured vertex list.
Definition: apiGridModel.cxx:1247
PwVertDataMod
PWP_BOOL PwVertDataMod(PWGM_HVERTEX vertex, PWGM_VERTDATA *pVertData)
Get the vertex data relative to the model's index space.
Definition: apiGridModel.cxx:350
PwUnsBlkAllocateElementCounts
PWP_BOOL PwUnsBlkAllocateElementCounts(PWGM_HBLOCK block, const PWGM_ELEMCOUNTS &counts)
Allocates element storage in an unstructured block.
Definition: apiGridModel.cxx:1273
PwConSetConditionUserName
PWP_BOOL PwConSetConditionUserName(PWGM_HCONNECTOR connector, const char *userName)
Sets the condition name for a connector.
Definition: apiGridModel.cxx:1102
PwModNdxConnection
PWP_BOOL PwModNdxConnection(PWGM_HGRIDMODEL model, PWP_UINT32 ndx, PWGM_CNXNDATA *pCnxnData)
Get the data for the model's nth connection.
Definition: apiGridModel.cxx:529
PwXform2to3
PWP_BOOL PwXform2to3(const PWGM_INDEX_XFORM2 *pX2, PWGM_INDEX_XFORM *pX3)
Convert a 2D transform matrix to it's 3D equivalent.
Definition: apiGridModel.cxx:646
PWGM_CONDDATA
Condition descriptor data type.
Definition: apiGridModel.h:644
PwBlkSetConditionTypeName
PWP_BOOL PwBlkSetConditionTypeName(PWGM_HBLOCK block, const char *typeName)
Sets the condition data for a grid entity.
Definition: apiGridModel.cxx:1032
PWGM_HBNDRY
An opaque handle to a structured block boundary.
Definition: apiGridModel.h:457
PwDomSetCondition
PWP_BOOL PwDomSetCondition(PWGM_HDOMAIN domain, const PWGM_CONDDATA &condData)
Sets the condition data for a domain.
Definition: apiGridModel.cxx:1091
PwXformFollows
PWGM_ENUM_IJK PwXformFollows(const PWGM_INDEX_XFORM *pX3, PWGM_ENUM_IJK localAxis, PWP_BOOL *pFlipped)
For a given localAxis, determine the corresponding axis in the transformed system.
Definition: apiGridModel.cxx:713
PWP_TRUE
#define PWP_TRUE
PWP_BOOL logical "true" value.
Definition: apiPWP.h:309
PWGM_STR_SIZE
PWGM_INDEX3 PW_DLL_IMPEXP PWGM_STR_SIZE
Structured grid ijk size data type.
Definition: apiGridModel.h:904
PwBlkSetCondition
PWP_BOOL PwBlkSetCondition(PWGM_HBLOCK block, const PWGM_CONDDATA &condData)
Sets the condition data for a grid entity.
Definition: apiGridModel.cxx:1048
PwModEnumBlocks
PWGM_HBLOCK PwModEnumBlocks(PWGM_HGRIDMODEL model, PWP_UINT32 ndx)
Sequentially enumerate the model block elements.
Definition: apiGridModel.cxx:91
PwVlstCreateUnsDomain
PWGM_HDOMAIN PwVlstCreateUnsDomain(PWGM_HVERTEXLIST vertlist)
Creates an unstructured domain that uses vertices from an unstructured vertex list.
Definition: apiGridModel.cxx:1305
PWGM_XYZVAL
PWP_REAL PWGM_XYZVAL
XYZ component data type.
Definition: apiGridModel.h:600
PwConSetCondition
PWP_BOOL PwConSetCondition(PWGM_HCONNECTOR connector, const PWGM_CONDDATA &condData)
Sets the condition data for a connector.
Definition: apiGridModel.cxx:1134
PwBlkBoundaryCount
PWP_UINT32 PwBlkBoundaryCount(PWGM_HBLOCK block)
Get the number of boundaries in the block.
Definition: apiGridModel.cxx:563
PwUnsDomSetElement
PWP_BOOL PwUnsDomSetElement(PWGM_HDOMAIN domain, const PWP_UINT ndx, const PWGM_ELEMDATA *eData)
Sets the connectivity for an unstructured domain element.
Definition: apiGridModel.cxx:1344
PwModGetAttributeString
PWP_BOOL PwModGetAttributeString(PWGM_HGRIDMODEL model, const char *name, const char **val)
Get an attribute value as a specific type.
Definition: apiGridModel.cxx:136
PwDomSetConditionTypeName
PWP_BOOL PwDomSetConditionTypeName(PWGM_HDOMAIN domain, const char *typeName)
Sets the condition data for a domain.
Definition: apiGridModel.cxx:1075
PWGM_IJK_I
@ PWGM_IJK_I
I-component id.
Definition: apiGridModel.h:1016
PwModStreamFaces
PWP_BOOL PwModStreamFaces(PWGM_HGRIDMODEL model, PWGM_ENUM_FACEORDER order, PWGM_BEGINSTREAMCB beginCB, PWGM_FACESTREAMCB faceCB, PWGM_ENDSTREAMCB endCB, void *userData)
Stream the grid model's faces to a callback function in the specified order.
Definition: apiGridModel.cxx:266
PwConSetConditionTypeId
PWP_BOOL PwConSetConditionTypeId(PWGM_HCONNECTOR connector, const PWP_UINT32 typeId)
Sets the condition data for a connector.
Definition: apiGridModel.cxx:1125
PWGM_FACEORDER_INTERIORONLY
@ PWGM_FACEORDER_INTERIORONLY
only interior cell faces
Definition: apiGridModel.h:1064
PwVlstSetXYZ3
PWP_BOOL PwVlstSetXYZ3(PWGM_HVERTEXLIST vertlist, const PWGM_INDEX3 ndx3, const PWGM_XYZVAL x, const PWGM_XYZVAL y, const PWGM_XYZVAL z)
Set the XYZ of a point in a 3D structured vertex list.
Definition: apiGridModel.cxx:963
PwConSetProperty
PWP_BOOL PwConSetProperty(PWGM_HCONNECTOR connector, const char *key, const char *val)
Sets the text value of a property identified by key.
Definition: apiGridModel.cxx:998
PWP_VALTYPE_ENUM
@ PWP_VALTYPE_ENUM
transfer value is a const char*
Definition: apiPWP.h:701
PWGM_CNXNDATA
Structured grid, inter-block, connection data type.
Definition: apiGridModel.h:990
PWGM_HVERTEX
An opaque handle to a grid vertex element.
Definition: apiGridModel.h:398
apiPWPUtils.h
Data and functions useful to PWP-API compliant plugins.
PwModAppendEnumElementOrder
PWP_BOOL PwModAppendEnumElementOrder(PWGM_HGRIDMODEL model, PWGM_ENUM_ELEMORDER order)
Append an element order to the enumElements() ordering sequence.
Definition: apiGridModel.cxx:293
PWGM_POLYELEMDATA
Polygon or polyhedron element descriptor data type.
Definition: apiGridModel.h:759
PwConnection
PWP_BOOL PwConnection(PWGM_HCNXN connection, PWGM_CNXNDATA *pCnxnData)
Get the connection data.
Definition: apiGridModel.cxx:638
PwDomSetName
PWP_BOOL PwDomSetName(PWGM_HDOMAIN domain, const char *name)
Set a domain's name.
Definition: apiGridModel.cxx:848
PwConSetConditionTypeName
PWP_BOOL PwConSetConditionTypeName(PWGM_HCONNECTOR connector, const char *typeName)
Sets the condition data for a connector.
Definition: apiGridModel.cxx:1118
PwModCreateUnsVertexList
PWGM_HVERTEXLIST PwModCreateUnsVertexList(PWGM_HGRIDMODEL model, const PWP_ENUM_DIMENSION blkElemDimty)
Creates an empty, unstructured vertex list in a model.
Definition: apiGridModel.cxx:1223
PwVlstGetIndexDimensionality
PWP_UINT PwVlstGetIndexDimensionality(PWGM_HVERTEXLIST vertlist)
Get the index dimensionality of a vertex list.
Definition: apiGridModel.cxx:872
PwDomGetVertexList
PWGM_HVERTEXLIST PwDomGetVertexList(PWGM_HDOMAIN domain)
Get the vertex list associated with an unstructured or structured domain.
Definition: apiGridModel.cxx:816
PwBlkSetProperty
PWP_BOOL PwBlkSetProperty(PWGM_HBLOCK block, const char *key, const char *val)
Sets the text value of a property identified by key.
Definition: apiGridModel.cxx:982
PWP_UINT64
unsigned long long PWP_UINT64
64-bit unsigned integer
Definition: apiPWP.h:243
PwBoundary
PWP_BOOL PwBoundary(PWGM_HBNDRY boundary, PWGM_BNDRYDATA *pBndryData)
Get the boundary data.
Definition: apiGridModel.cxx:622
PWGM_HCONNECTOR
An opaque handle to a grid connector element.
Definition: apiGridModel.h:507
PWP_ENUM_DIMENSION
PWP_ENUM_DIMENSION
Supported dimensionality values.
Definition: apiPWP.h:763
PWGM_ECNT_Hex
#define PWGM_ECNT_Hex(ecs)
Extract the Hex count from a PWGM_ELEMCOUNTS struct.
Definition: apiGridModel.h:800
PWP_VALTYPE_UINT
@ PWP_VALTYPE_UINT
transfer value is a PWP_UINT
Definition: apiPWP.h:699
PWGM_ASSEMBLER_DATA
Face descriptor data type. Used for face assembler functions.
Definition: apiGridModel.h:1211
PWGM_ENUM_IJK
PWGM_ENUM_IJK
IJK component type ids.
Definition: apiGridModel.h:1015
PwBlkNdxBoundaryAndCondition
PWP_BOOL PwBlkNdxBoundaryAndCondition(PWGM_HBLOCK block, PWP_UINT32 ndx, PWGM_BNDRYDATA *pBndryData, PWGM_CONDDATA *pCondData)
Get the PWGM_BNDRYDATA and PWGM_CONDDATA for the block's nth structured boundary.
Definition: apiGridModel.cxx:603
PwAsmSetCondition
PWP_BOOL PwAsmSetCondition(PWGM_HBLOCKASSEMBLER h, const PWGM_CONDKEY key, const PWGM_CONDDATA &condData)
Sets the condition data of the condition identified by key.
Definition: apiGridModel.cxx:1181
beginCB
static PWP_UINT32 beginCB(PWGM_BEGINSTREAM_DATA *data)
Definition: CaeUnsGridModel.cxx:55
PWGM_ENUM_XYZ
PWGM_ENUM_XYZ
XYZ component type ids.
Definition: apiGridModel.h:850
PwAsmSetConditionUserName
PWP_BOOL PwAsmSetConditionUserName(PWGM_HBLOCKASSEMBLER h, const PWGM_CONDKEY key, const char *userName)
Sets the user name of the condition identified by key.
Definition: apiGridModel.cxx:1145
PwAsmGetVertexList
PWGM_HVERTEXLIST PwAsmGetVertexList(PWGM_HBLOCKASSEMBLER blkAsm)
Get the vertex list associated with an unstructured block assembler.
Definition: apiGridModel.cxx:1378
PWGM_ENUM_FACEORDER
PWGM_ENUM_FACEORDER
The orderings supported by face streaming.
Definition: apiGridModel.h:1059
PwDomSetProperty
PWP_BOOL PwDomSetProperty(PWGM_HDOMAIN domain, const char *key, const char *val)
Sets the text value of a property identified by key.
Definition: apiGridModel.cxx:990
PwModCustomIndexSchemeReady
PWP_BOOL PwModCustomIndexSchemeReady(PWGM_HGRIDMODEL model, PWGM_INDEXMAPPERCB cb, void *data)
Notifys the Pointwise export framework that the custom, unstructured index map is ready.
Definition: apiGridModel.cxx:258
PWGM_POLYELEMDATA::offsets
const PWP_UINT64 * offsets
Definition: apiGridModel.h:764
PwXform2Apply
PWGM_INDEX3 PwXform2Apply(const PWGM_INDEX_XFORM2 *pX2, PWGM_INDEX3 ijk)
Apply a PWGM_INDEX_XFORM2 transform to a PWGM_INDEX3 value.
Definition: apiGridModel.cxx:757
PWGM_ENUMELEMDATA
Enumerated model element descriptor data type.
Definition: apiGridModel.h:749
PwModCreateCon
PWGM_HCONNECTOR PwModCreateCon(PWGM_HGRIDMODEL model, PWP_UINT size)
Creates a connector in a model.
Definition: apiGridModel.cxx:800
PWP_ENUM_PRECISION
PWP_ENUM_PRECISION
File precision values.
Definition: apiPWP.h:802
PWGM_STR_RANGE
Structured grid ijk range data type.
Definition: apiGridModel.h:909
PwUnsBlkAllocateElements
PWP_BOOL PwUnsBlkAllocateElements(PWGM_HBLOCK block, const PWGM_ENUM_ELEMTYPE cellType, const PWP_UINT count)
Allocates element storage in an unstructured block.
Definition: apiGridModel.cxx:1263
PwVlstIsUnstructured
PWP_BOOL PwVlstIsUnstructured(PWGM_HVERTEXLIST vertlist)
Check the type of a vertex list.
Definition: apiGridModel.cxx:856
PwVlstGetBlkElemDimensionality
PWP_ENUM_DIMENSION PwVlstGetBlkElemDimensionality(PWGM_HVERTEXLIST vertlist)
Get the block element dimensionality of a vertex list.
Definition: apiGridModel.cxx:880
PWGM_HVERTEXLIST
Grid vertex list handle declaration.
Definition: apiGridModel.h:536
PwElemTypeToText
const char * PwElemTypeToText(PWGM_ENUM_ELEMTYPE type)
Maps a PWGM_ENUM_ELEMTYPE value to a human readable string.
Definition: apiGridModel.cxx:445
PwModGetAttributeUINT
PWP_BOOL PwModGetAttributeUINT(PWGM_HGRIDMODEL model, const char *name, PWP_UINT *val)
Definition: apiGridModel.cxx:144
PWGM_HELEMENT_ISVALID
#define PWGM_HELEMENT_ISVALID(h)
returns non-zero value if handle is valid
Definition: apiGridModel.h:429
PWGM_ELEMTYPE_QUAD
@ PWGM_ELEMTYPE_QUAD
2D, 4-sided grid element
Definition: apiGridModel.h:675
PWGM_ELEMTYPE_HEX
@ PWGM_ELEMTYPE_HEX
3D, 6-sided (block) grid element
Definition: apiGridModel.h:674
PwModGetAttributeEnum
PWP_BOOL PwModGetAttributeEnum(PWGM_HGRIDMODEL model, const char *name, const char **val)
Definition: apiGridModel.cxx:215
PWGM_INDEX_XFORM::m
PWP_INT32 m[3][4]
m[row][col]
Definition: apiGridModel.h:922
PwBlkSetExportName
PWP_BOOL PwBlkSetExportName(PWGM_HBLOCK block, const char *name)
Set the name used to identify the block or group of blocks in the exported grid.
Definition: apiGridModel.cxx:117