foam to Tecplot360 converter
[OpenFOAM-1.6.x.git] / applications / utilities / postProcessing / dataConversion / foamToTecplot360 / tecio / tecsrc / FACE.h
blobc0c89a9b432872f32760eb47191dc162c18af7df
1 /*
2 * NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM
4 * Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide.
6 * Tecplot hereby grants OpenCFD limited authority to distribute without
7 * alteration the source code to the Tecplot Input/Output library, known
8 * as TecIO, as part of its distribution of OpenFOAM and the
9 * OpenFOAM_to_Tecplot converter. Users of this converter are also hereby
10 * granted access to the TecIO source code, and may redistribute it for the
11 * purpose of maintaining the converter. However, no authority is granted
12 * to alter the TecIO source code in any form or manner.
14 * This limited grant of distribution does not supersede Tecplot, Inc.'s
15 * copyright in TecIO. Contact Tecplot, Inc. for further information.
17 * Tecplot, Inc.
18 * 3535 Factoria Blvd, Ste. 550
19 * Bellevue, WA 98006, USA
20 * Phone: +1 425 653 1200
21 * http://www.tecplot.com/
25 ******************************************************************
26 ******************************************************************
27 ******* ********
28 ****** (C) 1988-2008 Tecplot, Inc. *******
29 ******* ********
30 ******************************************************************
31 ******************************************************************
33 #ifndef _FACE_H_
34 #define _FACE_H_
36 #if defined EXTERN
37 #undef EXTERN
38 #endif
39 #if defined FACEMODULE
40 #define EXTERN
41 #else
42 #define EXTERN extern
43 #endif
45 namespace tecplot
47 namespace kernel
49 class SubElemValueProducerInterface;
54 /**
56 inline Boolean_t IsCellFaceLogicallyCollapsed(LgIndex_t I1,
57 LgIndex_t I2,
58 LgIndex_t I3,
59 LgIndex_t I4)
61 return ((I1 == I2 && I3 == I4) ||
62 (I1 == I4 && I2 == I3) ||
63 (I1 == I3) ||
64 (I2 == I4));
67 /**
68 * IMPORTANT NOTE:
69 * A face obscuration of FaceObscuration_LogicallyObscured means that the
70 * face is entirely obscured by either an implicit neighbor for inside faces
71 * of ordered data or an auto generated neighbor for finite element data. In
72 * either case, logical obscuration is not considered if user defined
73 * neighbors have been specified for the face. Therefore, interior faces of
74 * ordered data can have an indication of FaceObscuration_PartiallyObscured.
76 typedef enum
78 FaceObscuration_NotObscured,
79 FaceObscuration_PartiallyObscured,
80 FaceObscuration_EntirelyObscured,
81 FaceObscuration_LogicallyObscured,
82 END_FaceObscuration_e,
83 FaceObscuration_Invalid = BadEnumValue
84 } FaceObscuration_e;
86 /**
88 EXTERN LgIndex_t GetLogicalOrderedNeighbor(LgIndex_t NumIPts,
89 LgIndex_t NumJPts,
90 LgIndex_t NumKPts,
91 LgIndex_t Element,
92 LgIndex_t Face);
94 /**
95 * Function to determine a cell's neighbor. It calls FaceNeighborGetSurfaceCellNeighbor()
96 * for classic zones.
98 EXTERN void GetSurfaceCellNeighbor(CZInfo_s const* CZInfo,
99 CZData_s const* CZData,
100 LgIndex_t SurfaceCellIndex,
101 tecplot::kernel::SubElemValueProducerInterface* NodeValueProducer,
102 ElemFaceOffset_t PlaneOrFaceOffset,
103 ElemFaceOffset_t Edge,
104 LgIndex_t* NeighborSurfaceCellElem,
105 EntIndex_t* NeighborSurfaceCellZone);
108 EXTERN FaceObscuration_e GetFaceObscuration(CZInfo_s const* CZInfo,
109 CZData_s const* CZData,
110 Set_pa ActiveRelevantZones,
111 LgIndex_t Element,
112 LgIndex_t FOffset,
113 Boolean_t ConsiderValueBlanking,
114 Boolean_t ConsiderIJKBlanking,
115 Boolean_t ConsiderDepthBlanking);
117 EXTERN EntIndex_t GetNodesPerElementFace(ZoneType_e ZoneType);
119 EXTERN EntIndex_t GetFacesPerElement(ZoneType_e ZoneType,
120 LgIndex_t IMax,
121 LgIndex_t JMax,
122 LgIndex_t KMax);
124 EXTERN CollapsedStatus_e GetSurfaceCellCollapsedStatus(CZInfo_s const* CZInfo,
125 CZData_s const* CZData,
126 tecplot::kernel::SubElemValueProducerInterface* SubElemValueProducer);
127 EXTERN CollapsedStatus_e GetSurfaceCellCollapsedStatus(CZInfo_s const* CZInfo,
128 CZData_s const* CZData,
129 LgIndex_t I1,
130 LgIndex_t I2,
131 LgIndex_t I3,
132 LgIndex_t I4);
133 EXTERN CollapsedStatus_e GetSurfaceCellLogicalCollapsedStatus(ZoneType_e ZoneType,
134 LgIndex_t I1,
135 LgIndex_t I2,
136 LgIndex_t I3,
137 LgIndex_t I4);
138 EXTERN CollapsedStatus_e GetSurfEdgeOrVolFaceLogicalCollapsedStatus(NodeMap_pa NodeMap,
139 LgIndex_t Element,
140 EntIndex_t Face);
141 #if defined ALLOW_USERDEF_NO_NEIGHBORING_ELEMENT
144 EXTERN Boolean_t IsUserDefFaceNeighborBoundary(FaceNeighbor_pa FaceNeighbor,
145 LgIndex_t Element,
146 LgIndex_t Face);
147 #endif
149 #endif