Class TBoundary

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TBoundary = class(TNodeInBoundaryList, IElement)

Description

TBoundary represents a series of TNodes used to generate the mesh. The nodes are listed in order in FNodes. The boundary may be either open or closed. Closed boundaries have the same node at the beginning and end of FNodes.

Hierarchy

Overview

Fields

Private FQuadMeshCreator: TQuadMeshCreator;
Private FNodes: TNodeList;
Private FSegments: TSegmentObjectList;
Private FSegmentType: TSegmentType;
Private FParent: TBoundary;
Private FSubParts: TBoundaryObjectList;
Private FDesiredSpacing: double;
Private FConverted: boolean;
Private FElementNumber: Integer;
Private FRefCount: Integer;

Methods

Private function GetSubPart(Index: Integer): TBoundary;
Private procedure InsertNodesAlongBoundary;
Private procedure ConvertToClosedBoundary;
Private procedure RenumberNodes;
Private procedure SetNodeTypes(NodeType: TNodeType);
Private procedure CreateBoundaryNodes;
Private procedure SplitSegmentAtNode(ANode: TNodeInBoundary);
Private function SpecialCase: boolean;
Private procedure Split222(FirstIndex: Integer);
Private procedure Split312(FirstIndex: Integer);
Private procedure Split411(FirstIndex: Integer);
Private procedure Split2121(FirstIndex: Integer);
Private procedure RemoveSelfFromAllNodes;
Private procedure ReverseSubBoundaries;
Private function Orientation: Integer;
Private function IndexOfNode(ANode: TNode): Integer;
Private procedure RemoveSelfFromOwnNodes;
Private function GetSubPartCount: Integer;
Private procedure SetCounterClockwiseOrientation;
Private procedure AssignOriginalEdgeAngles;
Private procedure GenerateSegments(DesiredOrientation: Integer);
Private Procedure Split(List: TBoundaryList);
Private constructor Create(QuadMeshCreator: TQuadMeshCreator; SegmentType: TSegmentType; Parent: TBoundary; DesiredSpacing: double);
Private function GetActiveNodeCount: Integer;
Private procedure CheckInvalidElement;
Protected function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
Protected function _AddRef: Integer; stdcall;
Protected function _Release: Integer; stdcall;
Protected function GetActiveNode(Index: Integer): INode;
Protected function GetElementNumber: Integer;
Protected procedure SetElementNumber(Value: Integer);
Public destructor Destroy; override;
Public procedure AddNode(Node: TNode);

Properties

Private property SegmentType: TSegmentType read FSegmentType;
Private property DesiredSpacing: double read FDesiredSpacing;
Private property SubPartCount: Integer read GetSubPartCount;
Private property SubParts[Index:Integer]: TBoundary read GetSubPart;
Public property Nodes[Index:Integer]: INode read GetActiveNode;
Public property ElementNumber: Integer read GetElementNumber write SetElementNumber;
Public property NodeCount: Integer read GetActiveNodeCount;

Description

Fields

Private FQuadMeshCreator: TQuadMeshCreator;
 
Private FNodes: TNodeList;
 
Private FSegments: TSegmentObjectList;
 
Private FSegmentType: TSegmentType;
 
Private FParent: TBoundary;
 
Private FSubParts: TBoundaryObjectList;
 
Private FDesiredSpacing: double;
 
Private FConverted: boolean;
 
Private FElementNumber: Integer;
 
Private FRefCount: Integer;
 

Methods

Private function GetSubPart(Index: Integer): TBoundary;
 
Private procedure InsertNodesAlongBoundary;

InsertNodesAlongBoundary inserts an even number of TNodes around the TBoundary

Private procedure ConvertToClosedBoundary;
 
Private procedure RenumberNodes;
 
Private procedure SetNodeTypes(NodeType: TNodeType);
 
Private procedure CreateBoundaryNodes;

CreateBoundaryNodes creates TNodeInBoundaries along it's edge.

Private procedure SplitSegmentAtNode(ANode: TNodeInBoundary);
 
Private function SpecialCase: boolean;
 
Private procedure Split222(FirstIndex: Integer);
 
Private procedure Split312(FirstIndex: Integer);
 
Private procedure Split411(FirstIndex: Integer);
 
Private procedure Split2121(FirstIndex: Integer);
 
Private procedure RemoveSelfFromAllNodes;
 
Private procedure ReverseSubBoundaries;
 
Private function Orientation: Integer;
 
Private function IndexOfNode(ANode: TNode): Integer;
 
Private procedure RemoveSelfFromOwnNodes;
 
Private function GetSubPartCount: Integer;
 
Private procedure SetCounterClockwiseOrientation;
 
Private procedure AssignOriginalEdgeAngles;
 
Private procedure GenerateSegments(DesiredOrientation: Integer);
 
Private Procedure Split(List: TBoundaryList);
 
Private constructor Create(QuadMeshCreator: TQuadMeshCreator; SegmentType: TSegmentType; Parent: TBoundary; DesiredSpacing: double);
 
Private function GetActiveNodeCount: Integer;
 
Private procedure CheckInvalidElement;
 
Protected function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
 
Protected function _AddRef: Integer; stdcall;
 
Protected function _Release: Integer; stdcall;
 
Protected function GetActiveNode(Index: Integer): INode;
 
Protected function GetElementNumber: Integer;
 
Protected procedure SetElementNumber(Value: Integer);
 
Public destructor Destroy; override;
 
Public procedure AddNode(Node: TNode);
 

Properties

Private property SegmentType: TSegmentType read FSegmentType;
 
Private property DesiredSpacing: double read FDesiredSpacing;

The spacing between neighboring nodes in the final mesh should be no greater than DesiredSpacing.

Private property SubPartCount: Integer read GetSubPartCount;
 
Private property SubParts[Index:Integer]: TBoundary read GetSubPart;
 
Public property Nodes[Index:Integer]: INode read GetActiveNode;
 
Public property ElementNumber: Integer read GetElementNumber write SetElementNumber;
 
Public property NodeCount: Integer read GetActiveNodeCount;
 

Generated by PasDoc 0.12.1 on 2013-05-13 15:41:58