150 lines
6.5 KiB
C
150 lines
6.5 KiB
C
|
/*
|
||
|
* NOTICE and LICENSE for Tecplot Input/Output Library (TecIO) - OpenFOAM
|
||
|
*
|
||
|
* Copyright (C) 1988-2009 Tecplot, Inc. All rights reserved worldwide.
|
||
|
*
|
||
|
* Tecplot hereby grants OpenCFD limited authority to distribute without
|
||
|
* alteration the source code to the Tecplot Input/Output library, known
|
||
|
* as TecIO, as part of its distribution of OpenFOAM and the
|
||
|
* OpenFOAM_to_Tecplot converter. Users of this converter are also hereby
|
||
|
* granted access to the TecIO source code, and may redistribute it for the
|
||
|
* purpose of maintaining the converter. However, no authority is granted
|
||
|
* to alter the TecIO source code in any form or manner.
|
||
|
*
|
||
|
* This limited grant of distribution does not supersede Tecplot, Inc.'s
|
||
|
* copyright in TecIO. Contact Tecplot, Inc. for further information.
|
||
|
*
|
||
|
* Tecplot, Inc.
|
||
|
* 3535 Factoria Blvd, Ste. 550
|
||
|
* Bellevue, WA 98006, USA
|
||
|
* Phone: +1 425 653 1200
|
||
|
* http://www.tecplot.com/
|
||
|
*
|
||
|
*/
|
||
|
/*
|
||
|
******************************************************************
|
||
|
******************************************************************
|
||
|
******* ********
|
||
|
****** (C) 1988-2008 Tecplot, Inc. *******
|
||
|
******* ********
|
||
|
******************************************************************
|
||
|
******************************************************************
|
||
|
*/
|
||
|
#ifndef _FACE_H_
|
||
|
#define _FACE_H_
|
||
|
|
||
|
#if defined EXTERN
|
||
|
#undef EXTERN
|
||
|
#endif
|
||
|
#if defined FACEMODULE
|
||
|
#define EXTERN
|
||
|
#else
|
||
|
#define EXTERN extern
|
||
|
#endif
|
||
|
|
||
|
namespace tecplot
|
||
|
{
|
||
|
namespace kernel
|
||
|
{
|
||
|
class SubElemValueProducerInterface;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
*/
|
||
|
inline Boolean_t IsCellFaceLogicallyCollapsed(LgIndex_t I1,
|
||
|
LgIndex_t I2,
|
||
|
LgIndex_t I3,
|
||
|
LgIndex_t I4)
|
||
|
{
|
||
|
return ((I1 == I2 && I3 == I4) ||
|
||
|
(I1 == I4 && I2 == I3) ||
|
||
|
(I1 == I3) ||
|
||
|
(I2 == I4));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* IMPORTANT NOTE:
|
||
|
* A face obscuration of FaceObscuration_LogicallyObscured means that the
|
||
|
* face is entirely obscured by either an implicit neighbor for inside faces
|
||
|
* of ordered data or an auto generated neighbor for finite element data. In
|
||
|
* either case, logical obscuration is not considered if user defined
|
||
|
* neighbors have been specified for the face. Therefore, interior faces of
|
||
|
* ordered data can have an indication of FaceObscuration_PartiallyObscured.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
FaceObscuration_NotObscured,
|
||
|
FaceObscuration_PartiallyObscured,
|
||
|
FaceObscuration_EntirelyObscured,
|
||
|
FaceObscuration_LogicallyObscured,
|
||
|
END_FaceObscuration_e,
|
||
|
FaceObscuration_Invalid = BadEnumValue
|
||
|
} FaceObscuration_e;
|
||
|
|
||
|
/**
|
||
|
*/
|
||
|
EXTERN LgIndex_t GetLogicalOrderedNeighbor(LgIndex_t NumIPts,
|
||
|
LgIndex_t NumJPts,
|
||
|
LgIndex_t NumKPts,
|
||
|
LgIndex_t Element,
|
||
|
LgIndex_t Face);
|
||
|
|
||
|
/**
|
||
|
* Function to determine a cell's neighbor. It calls FaceNeighborGetSurfaceCellNeighbor()
|
||
|
* for classic zones.
|
||
|
*/
|
||
|
EXTERN void GetSurfaceCellNeighbor(CZInfo_s const* CZInfo,
|
||
|
CZData_s const* CZData,
|
||
|
LgIndex_t SurfaceCellIndex,
|
||
|
tecplot::kernel::SubElemValueProducerInterface* NodeValueProducer,
|
||
|
ElemFaceOffset_t PlaneOrFaceOffset,
|
||
|
ElemFaceOffset_t Edge,
|
||
|
LgIndex_t* NeighborSurfaceCellElem,
|
||
|
EntIndex_t* NeighborSurfaceCellZone);
|
||
|
/**
|
||
|
*/
|
||
|
EXTERN FaceObscuration_e GetFaceObscuration(CZInfo_s const* CZInfo,
|
||
|
CZData_s const* CZData,
|
||
|
Set_pa ActiveRelevantZones,
|
||
|
LgIndex_t Element,
|
||
|
LgIndex_t FOffset,
|
||
|
Boolean_t ConsiderValueBlanking,
|
||
|
Boolean_t ConsiderIJKBlanking,
|
||
|
Boolean_t ConsiderDepthBlanking);
|
||
|
|
||
|
EXTERN EntIndex_t GetNodesPerElementFace(ZoneType_e ZoneType);
|
||
|
|
||
|
EXTERN EntIndex_t GetFacesPerElement(ZoneType_e ZoneType,
|
||
|
LgIndex_t IMax,
|
||
|
LgIndex_t JMax,
|
||
|
LgIndex_t KMax);
|
||
|
|
||
|
EXTERN CollapsedStatus_e GetSurfaceCellCollapsedStatus(CZInfo_s const* CZInfo,
|
||
|
CZData_s const* CZData,
|
||
|
tecplot::kernel::SubElemValueProducerInterface* SubElemValueProducer);
|
||
|
EXTERN CollapsedStatus_e GetSurfaceCellCollapsedStatus(CZInfo_s const* CZInfo,
|
||
|
CZData_s const* CZData,
|
||
|
LgIndex_t I1,
|
||
|
LgIndex_t I2,
|
||
|
LgIndex_t I3,
|
||
|
LgIndex_t I4);
|
||
|
EXTERN CollapsedStatus_e GetSurfaceCellLogicalCollapsedStatus(ZoneType_e ZoneType,
|
||
|
LgIndex_t I1,
|
||
|
LgIndex_t I2,
|
||
|
LgIndex_t I3,
|
||
|
LgIndex_t I4);
|
||
|
EXTERN CollapsedStatus_e GetSurfEdgeOrVolFaceLogicalCollapsedStatus(NodeMap_pa NodeMap,
|
||
|
LgIndex_t Element,
|
||
|
EntIndex_t Face);
|
||
|
#if defined ALLOW_USERDEF_NO_NEIGHBORING_ELEMENT
|
||
|
/**
|
||
|
*/
|
||
|
EXTERN Boolean_t IsUserDefFaceNeighborBoundary(FaceNeighbor_pa FaceNeighbor,
|
||
|
LgIndex_t Element,
|
||
|
LgIndex_t Face);
|
||
|
#endif
|
||
|
|
||
|
#endif
|