Class TQuadMeshCreator

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TQuadMeshCreator = class(TInterfacedObject, IMesh)

Description

Hierarchy

Overview

Fields

Private FMinX: double;
Private FMinY: double;
Private FMaxX: double;
Private FMaxY: double;
Private FCharacteristicLength: double;
Private FBoundaries: TBoundaryObjectList;
Private FCostsArray: TCost3ObjectList;
Private FSixNodeClosureMethod: TSixNodeClosureMethod;
Private FNodeAdjustmentMethod: TNodeAdjustmentMethod;
Private FGrowthRate: double;
Private FNodes: TNodeObjectList;
Private FElementList: TIElementList;
Private FNodeList: TINodeList;
Private FBoundaryNodes: TNodeInBoundaryObjectList;

Methods

Private procedure InvalidateCosts(List: TBoundary; LowestCost: TCost);
Private procedure InsertNodesAlongBoundaries;
Private procedure ConvertToClosedBoundaries;
Private procedure MakeSingleBoundary;
Private procedure SetNodeTypes;
Private procedure AssignOriginalEdgeAngles;
Private procedure ComputeCharacteristicLength;
Private procedure GenerateSegments;
Private procedure SetSegmentTypes;
Private procedure CreateBoundaryNodes;
Private function GetBoundaryCount: Integer;
Private function GetCost(Node1, Node2: TNodeInBoundary): TCost;
Private procedure SetSixNodeClosureMethod(const Value: TSixNodeClosureMethod);
Private procedure SetNodeAdjustmentMethod(const Value: TNodeAdjustmentMethod);
Private procedure AdjustPositionLagrange;
Private procedure AdjustPositionGiuliani;
Private procedure AssignDesiredSpacings;
Private function GetActiveNodeCount: Integer;
Private function GetNodeObject(Index: Integer): TNode;
Private procedure RenumberNodes;
Private function GetActiveElementCount: Integer;
Private function GetActiveElement(Index: Integer): IElement;
Private function GetActiveNode(Index: Integer): INode;
Private function ImproveTopology: boolean;
Private function _AddRef: Integer; stdcall;
Private function _Release: Integer; stdcall;
Private procedure CheckInvalidElements;
Public Constructor Create;
Public destructor Destroy; override;
Public procedure GenerateMesh;
Public procedure AdjustNodes;
Public function AddBoundary(DesiredSpacing: double): TBoundary;

Properties

Private property Cost[Node1,Node2:TNodeInBoundary]: TCost read GetCost;
Private property BoundaryCount: Integer read GetBoundaryCount;
Private property NodeObjects[Index:Integer]: TNode read GetNodeObject;
Public property SixNodeClosureMethod: TSixNodeClosureMethod read FSixNodeClosureMethod write SetSixNodeClosureMethod;
Public property GrowthRate: double read FGrowthRate write FGrowthRate;
Public property NodeAdjustmentMethod: TNodeAdjustmentMethod read FNodeAdjustmentMethod write SetNodeAdjustmentMethod;
Public property NodeCount: Integer read GetActiveNodeCount;
Public property ElementCount: Integer read GetActiveElementCount;
Public property Elements[Index:Integer]: IElement read GetActiveElement;
Public property Nodes[Index:Integer]: INode read GetActiveNode;

Description

Fields

Private FMinX: double;
 
Private FMinY: double;
 
Private FMaxX: double;
 
Private FMaxY: double;
 
Private FCharacteristicLength: double;

FCharacteristicLength is the length of the diagonal of a rectangular box around the the nodes making up the boundary.

Private FBoundaries: TBoundaryObjectList;
 
Private FCostsArray: TCost3ObjectList;
 
Private FSixNodeClosureMethod: TSixNodeClosureMethod;
 
Private FNodeAdjustmentMethod: TNodeAdjustmentMethod;
 
Private FGrowthRate: double;
 
Private FNodes: TNodeObjectList;
 
Private FElementList: TIElementList;
 
Private FNodeList: TINodeList;
 
Private FBoundaryNodes: TNodeInBoundaryObjectList;
 

Methods

Private procedure InvalidateCosts(List: TBoundary; LowestCost: TCost);
 
Private procedure InsertNodesAlongBoundaries;

InsertNodesAlongBoundaries inserts nodes along boundaries to ensure that the spacing between nodes is never larger than the desired spacing and that the number of nodes inserted is even.

Private procedure ConvertToClosedBoundaries;

ConvertToClosedBoundaries converts an open boundary to a closed one by adding the existing nodes in reverse order to the boundary.

Private procedure MakeSingleBoundary;

If there is more than one boundary, MakeSingleBoundary joins them together to convert them to a single boundary.

Private procedure SetNodeTypes;

SetNodeTypes sets the FNodeType of the TNodes in the outermost boundary to ntEdge and for the others to ntSubDomain.

Private procedure AssignOriginalEdgeAngles;
 
Private procedure ComputeCharacteristicLength;

ComputeCharacteristicLength computes FCharacteristicLength.

Private procedure GenerateSegments;

GenerateSegments creates TSegments in a counterclockwise orientation around the outer TBoundary and in a clockwise orientation around the other boundaries.

Private procedure SetSegmentTypes;

SetSegmentTypes sets the FSegmentType of the outermost boundary to ntEdge and for the others to ntSubDomain.

Private procedure CreateBoundaryNodes;

CreateBoundaryNodes creates TNodeInBoundaries along each TBoundary.

Private function GetBoundaryCount: Integer;
 
Private function GetCost(Node1, Node2: TNodeInBoundary): TCost;
 
Private procedure SetSixNodeClosureMethod(const Value: TSixNodeClosureMethod);
 
Private procedure SetNodeAdjustmentMethod(const Value: TNodeAdjustmentMethod);
 
Private procedure AdjustPositionLagrange;
 
Private procedure AdjustPositionGiuliani;
 
Private procedure AssignDesiredSpacings;
 
Private function GetActiveNodeCount: Integer;
 
Private function GetNodeObject(Index: Integer): TNode;
 
Private procedure RenumberNodes;
 
Private function GetActiveElementCount: Integer;
 
Private function GetActiveElement(Index: Integer): IElement;
 
Private function GetActiveNode(Index: Integer): INode;
 
Private function ImproveTopology: boolean;
 
Private function _AddRef: Integer; stdcall;
 
Private function _Release: Integer; stdcall;
 
Private procedure CheckInvalidElements;
 
Public Constructor Create;
 
Public destructor Destroy; override;
 
Public procedure GenerateMesh;
 
Public procedure AdjustNodes;
 
Public function AddBoundary(DesiredSpacing: double): TBoundary;
 

Properties

Private property Cost[Node1,Node2:TNodeInBoundary]: TCost read GetCost;
 
Private property BoundaryCount: Integer read GetBoundaryCount;
 
Private property NodeObjects[Index:Integer]: TNode read GetNodeObject;

property Boundaries[index: integer]: TBoundary read GetBoundary;

Public property SixNodeClosureMethod: TSixNodeClosureMethod read FSixNodeClosureMethod write SetSixNodeClosureMethod;
 
Public property GrowthRate: double read FGrowthRate write FGrowthRate;
 
Public property NodeAdjustmentMethod: TNodeAdjustmentMethod read FNodeAdjustmentMethod write SetNodeAdjustmentMethod;
 
Public property NodeCount: Integer read GetActiveNodeCount;
 
Public property ElementCount: Integer read GetActiveElementCount;
 
Public property Elements[Index:Integer]: IElement read GetActiveElement;
 
Public property Nodes[Index:Integer]: INode read GetActiveNode;
 

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