Functions in sift5.c
Table of Contents
- AllocateMemory()
- AssignBoxCoordinates()
- AssignHexHedronEdgeNum()
- AssignHexHedronNodeNum()
- ComputeEdgeMultiplicity()
- ComputeParameters()
- ComputeTrngleCentroid()
- DetectBoundEdgeStatus()
- DetectCondBound()
- DetectInnerCond()
- DetectInnerEdgeStatus()
- DetectISourceEdges()
- DetectVSourceEdges()
- DiscretizeFEMVolume
- DiscretizeExterPECPatch()
- FindInterMetalEdges()
- FindTetraHedronFaceNodes()
- GlobalEdgeEndsDiv1()
- GlobalEdgeEndsDiv2()
- Intersection()
- ModifyBoundFaces()
- PrintOutput()
- ReadSIFFile()
- TetraEdgeDiv1()
- TetraEdgeDiv2()
AllocateMemory()
Prototype: void AllocateMemory()Description: To dynamically allocate required memory.
Input value: none
Return value: none
Global value used: TotNumHexHedron, TotNumTetHedron, TotTrngleNum, TotNumEdge, TotNumNode, MediaPerm, EdgeStat, MetalEdgeStat, EdgeFound, MultFound, PlusTrngleIndex, MinusTrngleIndex, GlobalEdgeEnds HexNode, HexEdgeNum, TetNodeNum, TetEdgeNum, TetBoundFaceTetHedronNum, TetBoundFaceFaceNum, TetFaceNode, TetFaceEdge, FaceNode, FaceEdge, EdgeStat, MetalEdgeStat, PlusTrngleDetect, PlusTrngleIndex, MinusTrngleDetect, MinusTrngleIndex, EdgeFound, MultFound ,GlobalEdgeEnds, NodeCord
Global value modified: HexNode, HexEdgeNum, TetNodeNum, TetEdgeNum, TetBoundFaceTetHedronNum, TetBoundFaceFaceNum, TetFaceNode, TetFaceEdge, FaceNode, FaceEdge, EdgeStat, MetalEdgeStat, PlusTrngleDetect, PlusTrngleIndex, MinusTrngleDetect, MinusTrngleIndex, EdgeFound, MultFound ,GlobalEdgeEnds, NodeCord
Subroutines called: INT_Matrix(), FLOAT_Matrix(), INT_Vector()
Click to go back to Table of
Contents.
AssignBoxCoordinates()
Prototype: void AssignBoxCoordinates()Description: To assign Cartesian coordinates for each node of each hexahedron
Input value: none
Return value: none
Global value used: NodeCord, Divisor
Global value modified: NodeCord
Subroutines called: none
Click to go back to Table of Contents.
AssignHexHedronEdgeNum()
Prototype: void AssignHexHedronEdgeNum()Description: To map the local edges to global edges for each hexahedron
Input value: none
Return value: none
Global value used: XdiM, YdiM, HexEdgeNum
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
AssignHexHedronNodeNum()
Prototype: void AssignHexHedronNodeNum()Description: To map the local nodes to the global nodes for each hexahedron.
Input value: none
Return value: none
Global value used: TotNumHexHedron, HexNode, XdiM, YdiM
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
ComputeEdgeMultiplicity( )
Prototype: void ComputeEdgeMultiplicity()Description: To compute the multiplicity of edges.
Input value: none
Return value: none
Global value used: TotNumEdge, EdgeStat, MetalEdgeStat, GlobalEdgeEnds, TotTrngleNum, PlusTrngleIndex, TetFaceEdge, PlusTrngleDetect, MinusTrngleIndex, MinusTrngleDetect, TotBoundEdgeNum, EdgeFound, MultFound, VSourceNum, VsourceEdge, OperateFreq, E_Theta, E_Phi, K_Theta, K_Phi, PlaneWaveE_Mag, ForcdEdgeStat, ForcdEdgeValueReal, ForcdEdgeValueImage, JunctionNum, Junction, flag_default_out, output_num, output_file, OutFilePntr.
Global value modified: TotBoundEdgeNum
Subroutines called: none
Click to go back to Table of
Contents.
ComputeParameters()
Prototype: void ComputeParameters()Description: To compute parameters for the mesh. For example, the total node number, the total triangular element number, the total tetrahedron number.
Input value: none
Return value: none
Global value used: TotCubeNumEdge, TotCubeTrngleNum, TotCubeNumNode, TotNumHexHedron, TotNumTetHedron, TotNumEdge, TotNumNode. TotTrngleNum, TotDipolNumEdge, TotDipolTrngleNum, Xdim, Ydim, Zdim, ExdcondNum, Xextcond, Yextcond, DipolWid, DipolLen, Dipolplane_YZ, Dipolplane_XY, TotInnerEdgeNum, InnerEdgeStat
Global value modified: TotCubeNumEdge, TotCubeTrngleNum, TotCubeNumNode, TotNumHexHedron, TotNumTetHedron, TotNumEdge, TotNumNode. TotTrngleNum, TotInnerEdgeNum, InnerEdgeStat
Subroutines called: INT_Vector()
Click to go back to Table of Contents.
ComputeTrngleCentroid()
Prototype: void ComputeTrngleCentroid(int, double **, int **, double **)Description: To compute the centroid of a triangular patch
Input value:
- int TrngleNum --- the triangle number
- double **Cord, --- the global node table
- int **BFaceNode --- the node of the triangle
- double **CenTroid --- where the results will be stored.
Global value used: none
Global value modified: none
Subroutines called: VTXadd2()
Click to go back to Table of Contents.
DetectBoundEdgeStatus()
Prototype: void DetectBoundEdgeStatus()Description: To find edges located on the surface of the FEM region.
Input value: none
Return value: none
Global value used: XdiM, ZdiM, YdiM, EdgeStat, HexEdgeNum, BndcondNum, Xbndcond, Ybndcond, Zbndcond, MetalEdgeStat, EdgeStat, EdgeStat
Global value modified: FrontWall, BackWall, BottomWall, TopWall, RightWall, LeftWall
Subroutines called: none
Click to go back to Table of Contents.
DetectCondBound( )
Description: To detect whether a conductor or part of a conductor is
located on the FEM surface.
Input value:
Cond pp --- a conductor.
Return value: If ture, return 1, otherwise return 0 none
Global value used: XBoundDim, YBoundDim, ZBoundDim, Xintcond, Yintcond,
Zintcond, DelXintcond, DelYintcond, DelZintcond, Xextcond, Yextcond,
Zextcond, IntcondNum, ExtcondNum, Xbndcond, Ybndcond, Zbndcond,
DelXbndcond, DelYbndcond, DelZbndcond,
Global value modified: none
Subroutines called: Inetersection()
Click to go back to Table of
Contents.
DetectInnerCond()
Description: To detect whether a conductor, or part of the conductor is
inside the FEM volume
Input value:
Cond pp --- a conductor
Return value: none
Global value used: XBoundDim, YBoundDim, XBoundDim, Xintcond, Yintcond,
Zintcond, DelXintcond, DelYintcond, DelZcond, Xextcond, Yextcond,
Zextcond, IntcondNum, ExtcondNum,
Global value modified: none
Subroutines called: Intersection()
Click to go back to Table of
Contents.
DetectISourceEdgeStatus()
Prototype: void DetectISourceEdges()Description: To detect edges that coincides with the current source
Input value: none
Return value: none
Global value used: CellDimension, Xintcond, Yintcond, Zintcond, NodeCord,
IntEsrcAxis, ISourceEdgeStat, ISourceEdgeMag,
TotISourceEdgeNum, IntEsrcMag,
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
DetectInnerEdgeStatus()
Prototype: void DetectInnerEdgeStatus()Description: To find edges located within the FEM region.
Input value: none
Return value: none
Global value used: XdiM, YdiM, EdgeStat, HexEdgeNum,
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
DetectVSourceEdges( )
Prototype: void DetectVSourceEdges()Description: To find edges coinciding with the source.
Input value: none
Return value: none
Global value used: XextVsrc,YextVsrc, ZextVsrc TotNumEdge, ExtVsrcNum, NodeCord, GlobalEdgeEnds, VsourceEdge,VSourceNum
Global value modified: none
Subroutines called: none
Click to go back to Table of
Contents.
DiscretizeFEMVolume()
Prototype: void DiscretizeFEMVolume()Description: To disretize the FEM volume into tetrahedra.
Input value: none
Return value: none
Global value used: CellUnitXNum, CellUnitYNum, CellUnitZNum,
MediaPerm, FaceNode, FaceEdge, TrngleNode, TrngleEdge,
Global value modified: none
Subroutines called: TetraEdgeDiv1(), GlobalEdgeEndsDiv1(),
ComputeTrngleCentroid(), ModifyBoundFaces();
DiscretizeExterPECPatch()
Description: To disretize the external conductative surface into triangles.
Input value: none
Return value: none
Global value used: ExtcondNum, CubeNumNode, CubeTrnglleNum, DipoleWid,
DipolLen, CellDimension, DelXextcond, DelYextcond, DelZextcond,
Dipolplane_XY, Dipolplane_YZ, Dipolplane_XZ, GlobalEdgeEnds
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
FindInterMetalEdges()
Prototype: void FindInterMetalEdges()Description: To detect the inner conductive edges
Input value: none
Return value: none
Global value used: CellDimension, Xintcond, Yintcond, Zintcond, NodeCord
Global value modified: none
Subroutines called: none
Click to go back to Table of
Contents.
FindTetraHedronFaceNodes()
Prototype: void FindTetraHedronFaceNodes(int TetHedronNum)Description: To find tetrahedron faces that lie on the surface of FEM region.
Input value: int TetHedronNum--- index of the tetrahedron
Return value: none
Global value used: EdgeStat,TetNodeNum, NodeCord
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
GlobalEdgeEndsDiv1()
Prototype: void GlobalEdgeEndsDiv1()Description: To assign start and end nodes for the 18 edges associated with one hexahedron. This subroutine is
used accompanying with Tetra-Edge_Div1().
Input value: none
Return value: none
Global value used: GlobalEdgeEnds, HexNode, HexNum,
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
GlobalEdgeEndsDiv2()
Prototype: void GlobalEdgeEndsDiv2()Description: To assign start and end nodes for the 18 edges associated with one hexahedron. This subroutine is
used accompanying with Tetra-Edge_Div2().
Input value: none
Return value: none
Global value used: GlobalEdgeEnds, HexNode, HexNum,
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
Intersection()
int *SubRectNum, RectAngle *SubRect)
Description: detect intersection between two rectangles R1 and R2.
If return value equal to 1, then an intersection is found
and stored in R. Otherwise return 0. SubRectNum returns
the number of rectangles R2 is devided by R1 into. sub-area
stores the rectangle information.
Input value:
RectAngle R1, R2 --- two rectangles to be detected whether there is
an intersection between them
RectAngle *R --- to store the intersection rectangle.
int *SubRectNum --- the number of rectangles that R2 is divided
by R1, except the intersection area.
RectAngle *SubRect --- to store the rest rectangles except the
intersection rectangle
Global value used: none
Glboal value modified: none
Subroutines called: none
Click to go back to Table of
Contents.
ModifyBoundFaces()
Prototype: void ModifyBoundFaces(int TrngleFace)Description: To orient the edges of each tetrahedron face to consistent with the reference direction
Input value:
- int TrngleNum--- the index of the boundary face
Global value used: TetFaceNode, GlobalEdgeEnds,
Global value modified: none
Subroutines called: none
Click to go back to Table of
Contents.
Prototype:
void PrintOutput()
Description: To print out the mesh data,
source information and output specifications to a file.
This file will be used by emap5.
Input value: none
Return value: none
Global value used: XdiM, YdiM, ZdiM,
TotNumEdge, TotNumTetHedron, TotNumNode, TotTrngleNum,
TotBoundEdgeNum, TotInnerEdgeNum, DielBoundEdgeNum,
TotForcdEdgeNum,TetFaceNode, TetFaceEdge, NodeCord,
TetNodeNum, MediaPerm, TetEdgeNum, GlobalEdgeEnds,
PlusTrngleIndex, PlusTrngleDetect, MinusTrngleIndex,
MinusTrngleDetect, InnerEdgeStat, BoundaryEdgeStat,
VsourceMag, VsourceNum, OperateFreq,
Global value modified:
none
Subroutines called: none
Click to go back to Table of Contents.
ReadSIFFile( )
Prototype: void ReadSIFFile()Description: Reads input file
Input value: none
Return value: none
Global value used: CellDim, XdiM, YdiM, ZdiM, XDielmat, YDielmat, ZDielmat, Xintcond, Yintcond, Zintcond, BndcondNum, Xextcond, Yextcond, Zextcond, XextVsrc, YextVsrc, ZextVsrc, XintEsrc, YintEsrc, ZintEsrc, ExtcondNum, BndcondNum, ExtVsrcNum, freq, SourceType, PolInc, ThetaInc, PhiInc, OperateFreq, CellDimension , Min_X = 10000, Min_Y, Min_Z, Epsilon, Sigma, DielmatNum, IntcondNum, VsourceMag, IntEsrcNum,
Global value modified:Min_X, Min_Y, Min_Z, XdiM, YdiM, ZdiM, CellDim, DielmatNum, IntcondNum, BndcondNum, ExtcondNum, ExtVsrcNum, VsourceMag, IntEsrcNum, ThetaInc, PhiInc, OperateFreq, CellDimension ,
Subroutines called: none
Click to go back to Table of Contents.
TetraEdgeDiv1()
Prototype: void TetraEdgeDiv1()Description: To divide one hexahedron into five tetrahedra. There are two methods to do that. This subroutine uses
one method. TetraEdgeDiv2() use the other one.
Input value: none
Return value: none
Global value used: HexNum, TetNodeNum, HexNode, TetEdgeNum, HexEdgeNum,
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.
TetraEdgeDiv2()
Prototype: void TetraEdgeDiv2()Description: To divide one hexahedron into five tetrahedron. There are two methods to do that. TetraEdgeDiv1() uses
one method, TetraEdgeDiv2() uses the other method.
Input value: none
Return value: none
Global value used: HexNum, TetNodeNum, HexNode, TetEdgeNum, HexEdgeNum,
Global value modified: none
Subroutines called: none
Click to go back to Table of Contents.