Class TScreenObject

DescriptionHierarchyFieldsMethodsProperties

Unit

Declaration

type TScreenObject = class(TObserver)

Description

no description available, TObserver description follows

TObserver is used to coordinate when TDataArrays need to be updated.

Hierarchy

Overview

Fields

Strict Private FCachedCells: TCachedCells;
Strict Private FIntervalTree: TRbwIntervalTree;
Strict Private FDelegateCollection: TDelegateCollection;
Private FCanInvalidateModel: boolean;
Private FModel: TBaseModel;
Private FDataSetMixtureSubscriptions: TObjectList;
Private FInterpValues: TInterpValuesCollection;
Private FMixtureCompiler: TRbwParser;
Private FMixtureExpression: TExpression;
Private FMixtureVariables: TStringList;
Private FFluxBoundary: TFluxBoundary;
Private FLeakyBoundary: TLeakyBoundary;
Private FRiverBoundary: TRiverBoundary;
Private FSpecifiedHeadBoundary: TSpecifiedHeadBoundary;
Private FWellBoundary: TWellBoundary;
Private FBottomElevation: real;
Private FBottomElevSubscription: TObserver;
Private FBoundaryDataSetFormulas: TList;
Private FBoundaryDataSets: TList;
Private FBoundaryDataSetSubscriptions: TObjectList;
Private FCanvasCoordinates: TPointArray;
Private FCapacity: integer;
Private FCellSize: real;
Private FCellSizeUsed: boolean;
Private FColorLine: boolean;
Private FCount: integer;
Private FDataSetFormulas: TList;
Private FDataSets: TList;
Private FDataSetSubscriptions: TObjectList;
Private FDeleted: boolean;
Private FElevationCount: TElevationCount;
Private FElevSubscription: TObserver;
Private FEvaluatedAt: TEvaluatedAt;
Private FFillColor: TColor;
Private FFillScreenObject: boolean;
Private FLineColor: TColor;
Private FMaxX: real;
Private FMaxY: real;
Private FMinX: real;
Private FMinY: real;
Private FNeedToUpdateLine: boolean;
Private FPoints: TRealPointArray;
Private FRecalculateArea: boolean;
Private FRecalculateBox: boolean;
Private FRecalculateCoordinates: boolean;
Private FRecalculateLength: boolean;
Private FScreenObjectArea: real;
Private FScreenObjectLength: real;
Private FSegments: TCellElementSegmentList;
Private FSegModelAssoc: TAssociateList;
Private FSelected: boolean;
Private FSelectedVertexCount: integer;
Private FSelectedVertices: TBooleanDynArray;
Private FSelectLines: TLines;
Private FSetValuesByInterpolation: boolean;
Private FSetValuesOfEnclosedCells: boolean;
Private FSetValuesOfIntersectedCells: boolean;
Private FLastSubPolygon: TSubPolygon;
Private FTopElevation: real;
Private FTopElevSubscription: TObserver;
Private FViewDirection: TViewDirection;
Private FVisible: boolean;
Private FNeedToResetSelectedVertexCount: boolean;
Private FSubPolygons: TList;
Private FModflowBoundaries: TModflowBoundaries;
Private FSectionStarts: TValueArrayStorage;
Private FImportedSectionElevations: TValueArrayStorage;
Private FCurrentValues: TValueArrayStorage;
Private FImportedHigherSectionElevations: TValueArrayStorage;
Private FImportedLowerSectionElevations: TValueArrayStorage;
Private FImportedValues: TValueCollection;
Private FIsClosedCached: Boolean;
Private FCachedClosed: boolean;
Private FGlListCreated: Boolean;
Private FGlScreenObjectList: TGLuint;
Private FListUpToDate: Boolean;
Private FIFACE: TIface;
Private FModpathParticles: TParticleStorage;
Private FUpdateCount: Integer;
Private FGpcPolygons: TGpcPolygonClass;
Private FPriorObjectIntersectLengthCol: Integer;
Private FPriorObjectIntersectLengthRow: Integer;
Private FPriorObjectIntersectLengthLayer: Integer;
Private FPriorObjectIntersectLengthResult: Real;
Private FCachedDataSetIndex: integer;
Private FElevationFormulaObject: TFormulaObject;
Private FHigherElevationFormulaObject: TFormulaObject;
Private FLowerElevationFormulaObject: TFormulaObject;
Private FPriorObjectSectionIntersectLengthCol: integer;
Private FPriorObjectSectionIntersectLengthRow: integer;
Private FPriorObjectSectionIntersectLengthLayer: integer;
Private FPriorObjectSectionIntersectLengthResult: real;
Private FPriorObjectSectionIntersectLengthSection: integer;
Private FComment: string;
Private FPointPositionValues: TPointPositionValues;
Private FChildModelName: string;
Private FChildModelDiscretization: integer;
Private FChildModel: TBaseModel;
Private FPriorObjectSectionIntersectLengthModel: TBaseModel;
Private FPriorObjectIntersectLengthModel: TBaseModel;
Private FUsedModels: TUsedWithModelCollection;
Private FFullObjectIntersectLength: Boolean;
Private FPriorFullObjectIntersectLength: Boolean;
Private FPositionLocked: boolean;
Private FStoredSutraAngle: TRealStorage;
Private FSutraBoundaries: TSutraBoundaries;
Private FDuplicatesAllowed: Boolean;
Protected FIsUpdating: boolean;

Methods

Strict Private function IsOutsideBoxPlusBuffer(const Location: TPoint2D; const BufferDistance: real; const Anisotropy: real): boolean;
Strict Private function IsAnyPointInSubPolygonCloser(const Location: TPoint2D; var Distance: real; out ClosestLocation: TPoint2D; const Anisotropy: real; const ASubPolygon: TSubPolygon): boolean;
Strict Private function IsOutsideSubPolygonBoxPlusBuffer(const Location: TPoint2D; const BufferDistance: real; const Anisotropy: real; const SubPolygon: TSubPolygon): boolean;
Private procedure CreateLastSubPolygon;
Private procedure DestroyLastSubPolygon;
Private function GetSubPolygonCount: integer;
Private function GetSubPolygon(Index: integer): TSubPolygon;
Private procedure SetFluxBoundary(const Value: TFluxBoundary);
Private procedure SetInterpValues(const Value: TInterpValuesCollection);
Private procedure SetLeakyBoundary(const Value: TLeakyBoundary);
Private procedure SetRiverBoundary(const Value: TRiverBoundary);
Private procedure SetSpecifiedHeadBoundary( const Value: TSpecifiedHeadBoundary);
Private procedure SetWellBoundary(const Value: TWellBoundary);
Private procedure AddPointFromColumn(const ColIndex: integer; const Grid: TCustomModelGrid; const PreviousPoint, APoint: TEdgePoint; var TempPoints1: TEdgePointArray; var Count: integer; const Position: TEdgePosition);
Private procedure AddPointFromLayer(const LayerIndex: integer; const Grid: TCustomModelGrid; const PreviousPoint, APoint: TEdgePoint; var TempPoints1: TEdgePointArray; var Count: integer; const Position: TEdgePosition);
Private procedure AddPointFromRow(const RowIndex: integer; const Grid: TCustomModelGrid; const PreviousPoint, APoint: TEdgePoint; var TempPoints1: TEdgePointArray; var Count: integer; const Position: TEdgePosition);
Private procedure Assign3DElevations(Formula: string; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);
Private procedure Assign3DElevationsFromFront(const Compiler: TRbwParser; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);
Private procedure Assign3DElevationsFromSide(const Compiler: TRbwParser; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);
Private procedure AssignHigher3DElevations(AModel: TBaseModel);
Private procedure AssignLower3DElevations(AModel: TBaseModel);
Private procedure CalculateCanvasCoordinates;
Private procedure CreateSubPolygons;
Private procedure ClearSubPolygons;
Private procedure Draw0Elev(Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False);
Private procedure Draw1Elev( Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False);
Private procedure Draw2Elev(Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False);
Private procedure EvaluateSubPolygon(const ASubPolygon: TSubPolygon; const X, Y: real; var IsInside: boolean);
Private function GetACol(const Grid: TCustomModelGrid; const X: double): integer;
Private function GetAPhastLayer(const Grid: TCustomModelGrid; const Z: double): integer;
Private function GetARow(const Grid: TCustomModelGrid; const Y: double): integer;
Private function GetBoundaryDataSetFormulas(const Index: integer): string;
Private function GetBoundaryDataSets(const Index: integer): TDataArray;
Private function GetCanvasCoordinates: TPointArray;
Private function GetColumn(const Grid: TCustomModelGrid; const X: real): integer;
Private procedure GetColumns(const Grid: TCustomModelGrid; TempMinX, TempMaxX: real; out FirstCol, LastCol: integer);
Private function GetCount: integer;
Private function GetDataSetCapacity: integer;
Private function GetDataSetCount: integer;
Private function GetDataSetFormulas(const Index: integer): string;
Private function GetDataSets(const Index: integer): TDataArray;
Private function GetEdgePoints(const Index: integer): TEdgePoint;
Private function GetFillColor: TColor;
Private procedure GetGridCellOrElementLimits(const Col, Row, Layer: integer; out XMin, XMax, YMin, YMax: double; AModel: TBaseModel);
Private function GetHigher3DElevations(AModel: TBaseModel): T3DSparseRealArray;
Private function GetLayer(const Grid: TCustomModelGrid; const Z: real): integer;
Private procedure GetLayers(const Grid: TCustomModelGrid; TempMinZ, TempMaxZ: real; out FirstLayer, LastLayer: integer);
Private function GetLineColor: TColor;
Private function GetLower3DElevations(AModel: TBaseModel): T3DSparseRealArray;
Private function GetMaxX: real;
Private function GetMaxY: real;
Private function GetMinX: real;
Private function GetMinY: real;
Private function GetPoints(const Index: integer): TPoint2D;
Private function GetRow(const Grid: TCustomModelGrid; const Y: real): integer;
Private procedure GetRows(const Grid: TCustomModelGrid; TempMinY, TempMaxY: real; out FirstRow, LastRow: integer);
Private function GetSelectedVertexCount: integer;
Private function GetSelectedVertices(const index: integer): boolean;
Private function GetSelectLines: TLines;
Private procedure Grow;
Private procedure GrowBy(Amount: integer);
Private function InsideBox(const X, Y: real): boolean;
Private function MinDistPointLine(const P, A, B: TPoint2D; out Closest: TPoint2D; const Anisotropy: real): real;
Private function PointToPointDist(const A, B: TPoint2D; const Anisotropy: real): real;
Private procedure ResetBottomElevationFormula(const Compiler: TRbwParser; const ErrorMessage: string);
Private procedure ResetElevationFormula(const Compiler: TRbwParser; const ErrorMessage: string);
Private procedure ResetSelectedVertexCount;
Private procedure ResetTopElevationFormula(const Compiler: TRbwParser; const ErrorMessage: string);
Private procedure SetBoundaryDataSetFormulas(const Index: integer; const Value: string);
Private procedure SetBoundaryDataSets(const Index: integer; const DataSet: TDataArray);
Private procedure SetCapacity(Value: integer);
Private procedure SetCellSize(const Value: real);
Private procedure SetCellSizeUsed(const Value: boolean);
Private procedure SetColorLine(const Value: boolean);
Private procedure SetCount(const Value: integer);
Private procedure SetDataSetCapacity(const Value: integer);
Private procedure SetDataSetFormulas(const Index: integer; Value: string);
Private procedure SetDataSets(const Index: integer; const DataSet: TDataArray);
Private procedure SetDeleted(const Value: boolean);
Private procedure SetEdgePoints(const Index: integer; const Value: TEdgePoint);
Private procedure SetElevationCount(const Value: TElevationCount);
Private procedure SetEvaluatedAt(const Value: TEvaluatedAt);
Private procedure SetFillColor(const Value: TColor);
Private procedure SetFillScreenObject(const Value: boolean);
Private procedure SetLineColor(const Value: TColor);
Private procedure SetPoints(const Index: integer; const Value: TPoint2D);
Private procedure SetSelected(const Value: boolean);
Private procedure SetSelectedVertices(const index: integer; const Value: boolean);
Private procedure Set_SetValuesByInterpolation(const Value: boolean);
Private procedure Set_SetValuesOfEnclosedCells(const Value: boolean);
Private procedure Set_SetValuesOfIntersectedCells(const Value: boolean);
Private procedure SetVisible(const Value: boolean);
Private procedure SortPoints(const Input: TEdgePointArray; out SortedPoints: TEdgePointArray; const APoint, PreviousPoint: TEdgePoint; const MaxLength: integer; Const EpsilonX: real = 0; Const EpsilonY: real = 0);
Private procedure UpdateBox;
Private procedure UpdateFrontSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt);
Private procedure UpdateSideSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt);
Private procedure UpdateTopSegments( const EvaluatedAt: TEvaluatedAt; const PointsRotated: boolean; var RotatedPoints: TEdgePointArray; AModel: TBaseModel);
Private procedure ValidateIndex(const Index: integer); inline;
Private function ValidCell(const Col, Row, Layer: integer; Model: TBaseModel): boolean;
Private function Get_SetValuesOfEnclosedCells: boolean;
Private procedure UpdateHigher3DElevations(AModel: TBaseModel);
Private procedure UpdateLower3DElevations(AModel: TBaseModel);
Private procedure AssignIntegerDataWithPhastInterpolation(const DataSet: TDataArray; const LayerIndex, RowIndex, ColIndex: integer; const Comment: string; const InterpValue: TInterpValuesItem);
Private procedure AssignRealDataWithPhastInterpolation(const DataSet: TDataArray; const LayerIndex, RowIndex, ColIndex: integer; const Comment: string; const InterpValue: TInterpValuesItem);
Private function GetMixtureDataSetFormula(const Index: integer): string;
Private procedure SetMixtureDataSetFormula(const Index: integer; const Value: string);
Private procedure InitializeMixtureExpression(out Compiler: TRbwParser; out MixtureFormula: string; out Expression: TExpression; const DataSet: TDataArray; const OtherData: TObject);
Private function ThreeDBoundaryFormula: string;
Private function TwoDBoundaryFormula: string;
Private function ZoomBox(VD: TViewDirection): TQrbwZoomBox2;
Private function FrameScreenObject(VD: TViewDirection): TScreenObject;
Private function IAmACurrentScreenObject: Boolean;
Private procedure NotifyGuiOfChange(Sender: TObject);
Private procedure SetModflowChdBoundary(const Value: TChdBoundary);
Private procedure RefreshGui(Sender: TObject);
Private procedure SetModflowGhbBoundary(const Value: TGhbBoundary);
Private procedure SetModflowWellBoundary(const Value: TMfWellBoundary);
Private procedure SetModflowRivBoundary(const Value: TRivBoundary);
Private procedure SetModflowDrnBoundary(const Value: TDrnBoundary);
Private procedure SetModflowDrtBoundary(const Value: TDrtBoundary);
Private procedure SetModflowRchBoundary(const Value: TRchBoundary);
Private procedure SetModflowEvtBoundary(const Value: TEvtBoundary);
Private procedure SetModflowEtsBoundary(const Value: TEtsBoundary);
Private procedure SetModflowResBoundary(const Value: TResBoundary);
Private procedure SetModflowLakBoundary(const Value: TLakBoundary);
Private procedure GetInterpDistance(const InterpValue: TInterpValuesItem; var Distance: Double; const DataSet: TDataArray; const LayerIndex, RowIndex, ColIndex: Integer);
Private procedure AssignTopDataSetValues( Expression: TExpression; const DataSetFunction: string; Compiler: TRbwParser; UsedVariables: TStringList; OtherData: TObject; const DataSet: TDataArray; AModel: TBaseModel; AssignmentLocation: TAssignmentLocation = alAll);
Private function GetSegments(AModel: TBaseModel): TCellElementSegmentList;
Private function GetSectionCount: integer;
Private function GetSectionEnd(const Index: integer): integer;
Private function GetSectionStart(const Index: integer): integer;
Private function GetSectionClosed(const Index: integer): boolean;
Private function GetSectionLength(const Index: integer): integer;
Private procedure SetModflowSfrBoundary(const Value: TSfrBoundary);
Private function GetModflowSfrBoundary: TSfrBoundary;
Private function GetModflowLakBoundary: TLakBoundary;
Private function GetModflowResBoundary: TResBoundary;
Private function GetModflowEtsBoundary: TEtsBoundary;
Private function GetModflowEvtBoundary: TEvtBoundary;
Private function GetModflowRchBoundary: TRchBoundary;
Private function GetModflowDrtBoundary: TDrtBoundary;
Private function GetModflowDrnBoundary: TDrnBoundary;
Private function GetModflowRivBoundary: TRivBoundary;
Private function GetModflowWellBoundary: TMfWellBoundary;
Private function GetModflowGhbBoundary: TGhbBoundary;
Private function GetModflowChdBoundary: TChdBoundary;
Private function GetFluxBoundary: TFluxBoundary;
Private function GetLeakyBoundary: TLeakyBoundary;
Private function GetRiverBoundary: TRiverBoundary;
Private function GetSpecifiedHeadBoundary: TSpecifiedHeadBoundary;
Private function GetSpecifiedSolutionBoundary: TSpecifiedSolutionBoundary;
Private function GetWellBoundary: TWellBoundary;
Private function GetModflowBoundaries: TModflowBoundaries;
Private procedure SubPolygonXLimits(Subject: TObject; out LowerBoundary, UpperBoundary: double);
Private procedure SubPolygonYLimits(Subject: TObject; out LowerBoundary, UpperBoundary: double);
Private function GetModflowUzfBoundary: TUzfBoundary;
Private procedure SetModflowUzfBoundary(const Value: TUzfBoundary);
Private procedure Draw1ElevModflow(const Direction: TViewDirection; const Bitmap32: TBitmap32; const DrawAsSelected: Boolean; AModel: TBaseModel);
Private function GetModflowHeadObservations: THobBoundary;
Private procedure SetModflowHeadObservations(const Value: THobBoundary);
Private procedure SetSectionStarts(const Value: TValueArrayStorage);
Private function GetSectionStarts: TValueArrayStorage;
Private procedure CreateSectionStarts;
Private procedure SetImportedSectionElevations(const Value: TValueArrayStorage);
Private procedure SetImportedHigherSectionElevations( const Value: TValueArrayStorage);
Private procedure SetImportedLowerSectionElevations( const Value: TValueArrayStorage);
Private function GetImportedHigherSectionElevations: TValueArrayStorage;
Private function GetImportedLowerSectionElevations: TValueArrayStorage;
Private function GetImportedSectionElevations: TValueArrayStorage;
Private procedure Assign3DElevationsFromTop(const Compiler: TRbwParser; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);
Private procedure Draw1ElevPhast(const Direction: TViewDirection; const Bitmap32: TBitmap32; const DrawAsSelected: Boolean);
Private procedure Draw1ElevSutra(const Direction: TViewDirection; const Bitmap32: TBitmap32; const DrawAsSelected: Boolean);
Private procedure SetImportedValues(const Value: TValueCollection);
Private procedure SetModflowHfbBoundary(const Value: THfbBoundary);
Private function GetModflowHfbBoundary: THfbBoundary;
Private function GetElevSubscription: TObserver;
Private function GetTopElevSubscription: TObserver;
Private function GetBottomElevSubscription: TObserver;
Private procedure SetIFACE(const Value: TIface);
Private procedure SetModpathParticles(const Value: TParticleStorage);
Private function StoreImportedHigherSectionElevations: Boolean;
Private function StoreImportedLowerSectionElevations: Boolean;
Private function StoreImportedSectionElevations: Boolean;
Private function StoreImportedValues: Boolean;
Private function GetModflowStreamGage: TStreamGage;
Private procedure SetModflowStreamGage(const Value: TStreamGage);
Private function StoreModflowStreamGage: Boolean;
Private procedure RemoveElevationSubscription(Sender: TObject; const AName: string);
Private procedure RemoveHigherElevationSubscription(Sender: TObject; const AName: string);
Private procedure RemoveLowerElevationSubscription(Sender: TObject; const AName: string);
Private procedure RestoreElevationSubscription(Sender: TObject; const AName: string);
Private procedure RestoreHigherElevationSubscription(Sender: TObject; const AName: string);
Private procedure RestoreLowerElevationSubscription(Sender: TObject; const AName: string);
Private procedure RemoveDataArraySubscription(Sender: TObject; const AName: string);
Private procedure RestoreDataArraySubscription(Sender: TObject; const AName: string);
Private function GetElevationFormula: string;
Private function GetHigherElevationFormula: string;
Private function GetLowerElevationFormula: string;
Private procedure CreateOrRetrieveBoundaryFormulaObject(const Index: Integer; ADataSet: TDataArray; var FormulaObject: TFormulaObject);
Private procedure RestoreBoundaryDataArraySubscription(Sender: TObject; const AName: string);
Private procedure RemoveBoundaryDataArraySubscription(Sender: TObject; const AName: string);
Private function GetModflowMnw2Boundary: TMnw2Boundary;
Private procedure SetModflowMnw2Boundary(const Value: TMnw2Boundary);
Private procedure CacheElevationArrays;
Private procedure SetComment(const Value: string);
Private procedure SetPointPositionValues(const Value: TPointPositionValues);
Private function GetPointPositionValues: TPointPositionValues;
Private function ShouldStorePointPositionValues: Boolean;
Private function GetModflowHydmodData: THydmodData;
Private procedure SetModflowHydmodData(const Value: THydmodData);
Private function StoreModflowHydmodData: Boolean;
Private procedure SetChildModelName(const Value: string);
Private function GetChildModel: TBaseModel;
Private procedure SetChildModel(const Value: TBaseModel);
Private function GetChildModelName: string;
Private procedure SetUsedModels(const Value: TUsedWithModelCollection);
Private procedure RemoveLakeID_Connection;
Private procedure AddTopSubSegments(var ASegment: TCellElementSegment; AModel: TBaseModel);
Private procedure SetPositionLocked(const Value: boolean);
Private function GetMt3dmsConcBoundary: TMt3dmsConcBoundary;
Private procedure SetMt3dmsConcBoundary(const Value: TMt3dmsConcBoundary);
Private function GetMt3dmsTransObservations: TMt3dmsTransObservations;
Private procedure SetMt3dmsTransObservations(const Value: TMt3dmsTransObservations);
Private function SaveSutraAngle: Boolean;
Private procedure SetStoredSutraAngle(const Value: TRealStorage);
Private procedure InvalidateModelEvent(Sender: TObject);
Private function GetSutraAngle: Double;
Private procedure SetSutraAngle(const Value: Double);
Private procedure SetSutraBoundaries(const Value: TSutraBoundaries);
Private function SaveSutraBoundaries: Boolean;
Private procedure ResetFormula(const Compiler: TRbwParser; const ErrorMessage, Source: string; var Formula: string; DataType: TRbwDataType);
Private procedure SetCanInvalidateModel(const Value: boolean);
Private procedure EliminateHoleCells(CellList: TCellAssignmentList);
Private procedure SetDuplicatesAllowed(const Value: Boolean);
Private procedure EliminateDuplicates(CellList: TCellAssignmentList; AModel: TBaseModel);
Private procedure DeleteExtraSections;
Private procedure CreatePhastFluxBoundary;
Private procedure CreatePhastLeakyBoundary;
Private procedure CreatePhastRiverBoundary;
Private procedure CreatePhastSpecifiedHeadBoundary;
Private procedure CreatePhastSpecifiedSolutionBoundary;
Private procedure CreatePhastWellBoundary;
Private procedure CreateElevationSubscription;
Private procedure CreateTopElevationSubscription;
Private procedure CreateBottomElevationSubscription;
Private procedure CreateBoundaryDataSetFormulas;
Private procedure CreateBoundaryDataSetSubscriptions;
Private procedure CreateBoundaryDataSets;
Private procedure Draw2ElevModflow(const Direction: TViewDirection; const Bitmap32: TBitmap32; AModel: TBaseModel);
Private procedure Draw2ElevPhast(const Direction: TViewDirection; const Bitmap32: TBitmap32);
Private procedure Draw2ElevSutra(const Direction: TViewDirection; const Bitmap32: TBitmap32);
Private procedure SetValueStorageField(const Value: TValueArrayStorage; var StoredValues: TValueArrayStorage);
Private procedure CreateValueArrayStorage(var StoredValues: TValueArrayStorage);
Private procedure DrawModflowSideSegmentRightOutsideAbove( SidePoints: T2DRealPointArray; LocalDelegate: TModflowDelegate; ModflowGrid: TModflowGrid; LayerIndex: Integer; ColIndex: Integer; RowIndex: Integer; SegmentList: TList);
Private procedure DrawModflowSideSegmentAboveOutsideRight( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowSideSegmentAboveOutsideLeft( SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowSideSegmentLeftOutsideAbove( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowSideSegmentAboveRight(SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowSideSegmentAboveLeft( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowSideSegmentBottomLeft(SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowSideSegmentTopLeft( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowSideSegmentInsideTopRight(LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; SegmentList: TList);
Private procedure DrawModflowSideSegmentInsideBottomRight( SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowSideSegmentInsideBottomLeft( SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowSideSegmentInsideTopLeft(ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; var SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; SegmentList: TList);
Private procedure DrawModflowFrontSegmentRightOutsideAbove( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowFrontSegmentAboveOutsideRight( LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; SegmentList: TList);
Private procedure DrawModflowFrontSegmentAboveOutsideLeft( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowFrontSegmentLeftOutsideAbove( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowFrontSegmentAboveRight( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowFrontSegmentAboveLeft( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowFrontSegmentBottomLeft(ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; SegmentList: TList);
Private procedure DrawModflowFrontSegmentTopLeft( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowFrontSegmentInsideTopRight( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowFrontSegmentInsideBottomRight( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; SegmentList: TList);
Private procedure DrawModflowFrontSegmentInsideBottomLeft( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowFrontSegmentInsideTopLeft( var FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
Private procedure DrawModflowTopSegmentRightOutsideAbove( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentAboveOutsideRight( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentAboveOutsideLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentLeftOutsideAbove( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentAboveRight( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentAboveLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentBottomLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentTopLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentInsideTopRight(ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer);
Private procedure DrawModflowTopSegmentInsideBottomRight(RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawModflowTopSegmentInsideBottomLeft(SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; RowIndex: Integer; ColIndex: Integer);
Private procedure DrawModflowTopSegmentInsideTopLeft(RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
Private procedure DrawSegmentList(const Direction: TViewDirection; const Bitmap32: TBitmap32; SegmentList: TList);
Private procedure UpdateHigherElevationSubscriptions(var NewFormula: string; OldFormula: string);
Private procedure UpdateLowerElevationSubscriptions(var NewFormula: string; OldFormula: string);
Private procedure UpdateElevationSubscriptions(var NewFormula: string; OldFormula: string);
Private procedure CreateGpcPolygon;
Private procedure EvaluateDataArrayExpression(const DataSet: TDataArray; var Expression: TExpression; const Compiler: TRbwParser);
Private procedure DrawPointMarker(LineColor32: TColor32; FillColor32: TColor32; const Bitmap32: TBitmap32; IntPoint: TPoint; LineWidth: Single; PointWithValue: boolean);
Private procedure SetElevationFormulaParser;
Private function GetElevationCompiler: TRbwParser;
Private procedure SetHigherElevationFormulaParser;
Private procedure SetLowerElevationFormulaParser;
Private procedure CreateElevationFormulaObject;
Private procedure CreateHigherElevationFormulaObject;
Private procedure CreateLowerElevationFormulaObject;
Private procedure CreateFormulaObjects;
Private procedure SetFormulaParsers;
Private procedure CreateOrRetrieveFormulaObject(const Index: Integer; ADataSet: TDataArray; var FormulaObject: TFormulaObject);
Private procedure RemoveSubscriptionFromList(const AName: string; Sender: TObject; List: TList; SubscriptionList: TObjectList);
Private procedure RestoreSubscriptionToList(List: TList; const AName: string; Sender: TObject; Subscriptions: TObjectList);
Private function GetTestDataArray(const DataSet: TDataArray): TDataArray;
Private procedure AddTopGridSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt; LowerElevDataSets: TList; HigherElevExpression: TExpression; LayerLimit: Integer; HigherElevDataSets: TList; LowerElevVariables: TList; const PointsRotated: Boolean; HigherElevVariables: TList; var RotatedPoints: TEdgePointArray; LowerElevExpression: TExpression);
Private procedure AddTopMeshSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt; LowerElevDataSets: TList; HigherElevExpression: TExpression; LayerLimit: Integer; HigherElevDataSets: TList; LowerElevVariables: TList; HigherElevVariables: TList; LowerElevExpression: TExpression);
Protected procedure UpdateModel(Model: TBaseModel);
Protected procedure InvalidateModel;
Protected function PhastBoundaryType: TPhastBoundaryTypes;
Protected procedure AssignCellValue(const UsedVariables: TStringList; const DataSet: TDataArray; LayerIndex, RowIndex, ColIndex: integer; const Compiler: TRbwParser; const Annotation: string; var Expression: TExpression; const OtherData: TObject);
Protected procedure AssignValuesToFrontDataSet( const DataSet: TDataArray; OtherData: TObject; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment);
Protected procedure AssignValuesToSideDataSet( const DataSet: TDataArray; OtherData: TObject; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment);
Protected procedure AssignValuesToTopDataSet( const DataSet: TDataArray; OtherData: TObject; AModel: TBaseModel);
Protected function BoundaryType: integer;
Protected function CanAddDataSet(const DataSet: TDataArray): boolean;
Protected function DataSetUsed(const DataSet: TDataArray; var OtherData: TObject; AModel: TBaseModel): boolean;
Protected function EncloseAnnotation(const DataSetFormula: string; const OtherData: TObject): string;
Protected function GetCompiler(const Orientation: TDataSetOrientation): TRbwParser; overload;
Protected function GetCompiler(const Orientation: TDataSetOrientation; const EvaluatedAt: TEvaluatedAt): TRbwParser; overload;
Protected function Get1DCompiler: TRbwParser;
Protected procedure GetRotatedPoints(out RotatedPoints: TRealPointArray);
Protected procedure InitializeExpression(out Compiler: TRbwParser; out DataSetFormula: string; out Expression: TExpression; const DataSet: TDataArray; const OtherData: TObject);
Protected procedure InitializeVariables(const UsedVariables: TStringList; const DataSet: TDataArray; const Expression: TExpression; const Compiler: TRbwParser); virtual;
Protected function IntersectAnnotation(const DataSetFormula: string; const OtherData: TObject): string;
Protected function Intersection(const Point1, Point2: TPoint2D; StartIndex: Integer; out IntersectPoint: TPoint2D): TIntersectResult;
Protected function IsBoundaryTimeDataSetUsed(const DataSet: TDataArray; out OtherData: TObject): boolean;
Protected procedure Loaded; override;
Protected procedure OtherIndex(const LayerOrRow, RowOrColumn: integer; out First, Last: integer; const DataSet: TDataArray);
Protected procedure RotatePoints(AModel: TBaseModel; out RotatedPoints: TEdgePointArray; out TempMinX, TempMinY, TempMaxX, TempMaxY: double);
Protected procedure SetElevationFormula(NewFormula: string); virtual;
Protected procedure SetGeometryUpToDate; virtual;
Protected procedure SetHigherElevationFormula(NewFormula: string); virtual;
Protected procedure SetLowerElevationFormula(NewFormula: string); virtual;
Protected procedure SetName(const Value: TComponentName); override;
Protected procedure SetUpToDate(const Value: boolean); override;
Protected procedure SetViewDirection(const Value: TViewDirection); virtual;
Protected procedure UpdateVariables(const UsedVariables: TStringList; const DataSet: TDataArray; Layer, Row, Column: integer; const Compiler: TRbwParser);
Protected procedure UpdateMixtureExpression;
Protected procedure UpdateFormulaExpression;
Public function CoordinateCaption: string;
Public function HigherCoordinateCaption: string;
Public function LowerCoordinateCaption: string;
Public function StoreModflowHfbBoundary: Boolean;
Public function StoreModflowMnw2Boundary: Boolean;
Public function StoreMt3dmsConcBoundary: Boolean;
Public function StoreMt3dmsTransObservations: Boolean;
Public function StoreModflowUzfBoundary: Boolean;
Public function StoreModflowHeadObservations: Boolean;
Public function StoreModflowSfrBoundary: Boolean;
Public function StoreModflowRchBoundary: Boolean;
Public function StoreModflowEvtBoundary: Boolean;
Public function StoreModflowEtsBoundary: Boolean;
Public function StoreModflowResBoundary: Boolean;
Public function StoreModflowLakBoundary: Boolean;
Public function StoreModflowChdBoundary: Boolean;
Public function StoreModflowDrnBoundary: Boolean;
Public function StoreModflowDrtBoundary: Boolean;
Public function StoreModflowGhbBoundary: Boolean;
Public function StoreModflowRivBoundary: Boolean;
Public function StoreModflowWellBoundary: Boolean;
Public function StoreWell: boolean;
Public function StoreFlux: boolean;
Public function StoreRiver: boolean;
Public function StoreSpecifiedHead: boolean;
Public function StoreLeaky: boolean;
Public function IsHigher3DElevationAssigned(Col, Row, Layer: integer; Model: TBaseModel): boolean;
Public function IsLower3DElevationAssigned(Col, Row, Layer: integer; Model: TBaseModel): boolean;
Public procedure GetCellsToAssign(const Grid: TCustomModelGrid; const DataSetFunction: string; OtherData: TObject; const DataSet: TDataArray; CellList: TCellAssignmentList; AssignmentLocation: TAssignmentLocation; AModel: TBaseModel); overload;
Public procedure GetCellsToAssign(const Mesh: TSutraMesh3D; const DataSetFunction: string; OtherData: TObject; const DataSet: TDataArray; CellList: TCellAssignmentList; AssignmentLocation: TAssignmentLocation; AModel: TBaseModel); overload;
Public procedure UpdateUzfGage1and2;
Public procedure UpdateUzfGage3;
Public procedure CacheSegments;
Public procedure BeginUpdate;
Public procedure EndUpdate;
Public procedure GetModpathCellList(CellList: TCellAssignmentList; AModel: TBaseModel);
Public function Delegate: TCustomScreenObjectDelegate;
Public procedure AssignNumericValueToDataSet(const Grid: TCustomModelGrid; const DataSet: TDataArray; Value: double; AModel: TBaseModel);
Public procedure CreateChdBoundary;
Public procedure CreateDrnBoundary;
Public procedure CreateDrtBoundary;
Public procedure CreateEtsBoundary;
Public procedure CreateEvtBoundary;
Public procedure CreateGhbBoundary;
Public procedure CreateLakBoundary;
Public procedure CreateRchBoundary;
Public procedure CreateResBoundary;
Public procedure CreateRivBoundary;
Public procedure CreateSfrBoundary;
Public procedure CreateWelBoundary;
Public procedure CreateUzfBoundary;
Public procedure CreateHfbBoundary;
Public procedure CreateHeadObservations;
Public procedure CreateGagBoundary;
Public procedure CreateMnw2Boundary;
Public procedure CreateMt3dmsConcBoundary;
Public procedure CreateMt3dmsTransObservations;
Public function ModflowDataSetUsed(DataArray: TDataArray; AModel: TBaseModel): boolean;
Public procedure InvalidateSegments;
Public procedure MovePointsWhenCreatingScreenObjectByDeletingEdge( DeletedEdge: integer; ExistingObject: TScreenObject);
Public function AllSectionsClosed: boolean;
Public Procedure DeleteEdge(EdgeToDelete: integer);
Public procedure ResetBoundaryMixtureSubscriptions;
Public procedure ResetMixtureSubscriptions;
Public procedure MovePoints(var Dest: TRealPointArray);
Public procedure MoveToPoints(const SourcePoints: TRealPointArray);
Public procedure MoveSelectedPoints(var Dest: TBooleanDynArray);
Public procedure MoveToSelectedPoints(var Source: TBooleanDynArray);
Public function AddBoundaryDataSet(const DataSet: TDataArray): integer;
Public function AddDataSet(const DataSet: TDataArray): Integer; virtual;
Public procedure AddPoint(const APoint: TPoint2D; NewPart: boolean);
Public procedure Assign(Source: TPersistent); override;
Public procedure AssignValuesToModflowDataSet(const Grid: TCustomModelGrid; const DataSet: TDataArray; const Formula: string; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment; AssignmentLocation: TAssignmentLocation = alAll);
Public procedure AssignValuesToSutraDataSet(const Mesh: TSutraMesh3D; const DataSet: TDataArray; const Formula: string; AModel: TBaseModel);
Public procedure AssignValuesToDataSet(const DataSet: TDataArray; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment); virtual;
Public function BoundaryDataSetCount: integer;
Public function BoundaryTypeUsed: TPhastBoundaryTypes;
Public procedure Changed(Sender: TObject);
Public procedure ClearBoundaryDataSets; virtual;
Public procedure ClearDataSets; virtual;
Public procedure ClearPoints;
Public procedure ClearSelectedVertices;
Public function Closed: boolean;
Public procedure CopyPoints(var Destination: TRealPointArray; const Position, Start: integer; var Count: integer);
Public constructor Create(AnOwner: TComponent); override;
Public constructor CreateWithViewDirection(const Model: TBaseModel; const AViewDirection: TViewDirection; out UndoCreateScreenObject: TCustomUndo; const UndoAble: boolean = True); virtual;
Public procedure DeleteBoundaryDataSet(const Index: Integer);
Public procedure DeleteDataSet(const Index: Integer); virtual;
Public procedure DeletePoint(const Index: Integer);
Public destructor Destroy; override;
Public function DistanceToScreenObject(const Location: TPoint2D; out ClosestLocation: TPoint2D; const Anisotropy: real; out SectionIndex: integer): real;
Public procedure Draw(Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False); virtual;
Public procedure Draw3D;
Public procedure DrawSelected( const BitMap32: TBitmap32; const Direction: TViewDirection);
Public function GetBoundaryCollection(const TimeList: TPhastTimeList): TCustomPhastBoundaryCollection;
Public function IndexOfBoundaryDataSet(const DataSet: TDataArray): integer;
Public function IndexOfDataSet(const DataSet: TDataArray): integer;
Public function IndexOfPoint(const APoint: TPoint2D): integer;
Public procedure InsertBoundaryDataSet(const Index: Integer; const DataSet: TDataArray); virtual;
Public procedure InsertPoint(const Index: Integer; const APoint: TPoint2D);
Public procedure Invalidate;
Public procedure InvalidateCoordinates;
Public function IsPointInside(const X, Y: real; out SectionIndex: integer): boolean; overload;
Public function IsPointInside(const APoint: TPoint2D; out SectionIndex: integer): boolean; overload;
Public function Methods: string;
Public function ObjectIntersectArea(const Col, Row, Layer: integer; AModel: TBaseModel): real;
Public function ObjectIntersectLength(const Col, Row, Layer: integer; AModel: TBaseModel): real;
Public function ObjectSectionIntersectLength(const Col, Row, Layer, Section: integer; AModel: TBaseModel): real;
Public function RemoveDataSet(const DataSet: TDataArray): Integer; virtual;
Public procedure ResetBoundaryDataSetSubscriptions;
Public procedure ResetDataSetSubscriptions;
Public procedure ResetSubscriptions;
Public function ScreenObjectArea: real;
Public function ScreenObjectLength: real;
Public function Select(const XScreenCoordinate, YScreenCoordinate: integer): boolean;
Public function SelectEdge(const X, Y: integer): integer;
Public procedure UpdateScreenObjectWithName(const AName: string; const AViewDirection: TViewDirection; out UndoCreateScreenObject: TCustomUndo; const UndoAble: boolean = True); reintroduce; virtual;
Public class function ValidName(const OriginalName: string): string;
Public function IsAnyPointCloser(const Location: TPoint2D; var Distance: real; out ClosestLocation: TPoint2D; var SectionIndex: integer; const Anisotropy: real): boolean;
Public function GetMfBoundary(ParamType: TParameterType): TModflowParamBoundary;
Public function SingleCellLocation(AModel: TBaseModel): TCellLocation;
Public procedure UpdateModflowTimes(ModflowTimes: TRealList; StartTestTime, EndTestTime: double; var StartRangeExtended, EndRangeExtended: boolean);
Public procedure UpdateImportedValues(DataArray: TDataArray);
Public procedure ReverseDirection;
Public function RestoreCellsFromCache(CellList: TCellAssignmentList; EvalAt: TEvaluatedAt; Orientation: TDataSetOrientation; AssignmentLocation: TAssignmentLocation; const EncloseAnnotation, IntersectAnnotation: string; AModel: TBaseModel): boolean;
Public procedure UpdateCellCache(CellList: TCellAssignmentList; EvalAt: TEvaluatedAt; Orientation: TDataSetOrientation; AssignmentLocation: TAssignmentLocation; AModel: TBaseModel);
Public procedure CreateHydmodData;
Public procedure CacheValueArrays;
Public procedure RemoveModelLink(AModel: TBaseModel);
Public procedure InvalidateCachedCells;

Properties

Private property SubPolygonCount: integer read GetSubPolygonCount;
Private property SubPolygons[Index:integer]: TSubPolygon read GetSubPolygon;
Protected property EdgePoints[constIndex:integer]: TEdgePoint read GetEdgePoints write SetEdgePoints;
Protected property MixtureDataSetFormula[constIndex:integer]: string read GetMixtureDataSetFormula write SetMixtureDataSetFormula;
Public property ModflowBoundaries: TModflowBoundaries read GetModflowBoundaries;
Public property Higher3DElevations[AModel:TBaseModel]: T3DSparseRealArray read GetHigher3DElevations;
Public property Lower3DElevations[AModel:TBaseModel]: T3DSparseRealArray read GetLower3DElevations;
Public property FullObjectIntersectLength: Boolean read FFullObjectIntersectLength write FFullObjectIntersectLength;
Public property ElevSubscription: TObserver read GetElevSubscription;
Public property TopElevSubscription: TObserver read GetTopElevSubscription;
Public property BottomElevSubscription: TObserver read GetBottomElevSubscription;
Public property SectionCount: integer read GetSectionCount;
Public property SectionStart[constIndex:integer]: integer read GetSectionStart;
Public property SectionEnd[constIndex:integer]: integer read GetSectionEnd;
Public property SectionClosed[constIndex:integer]: boolean read GetSectionClosed;
Public property SectionLength[constIndex:integer]: integer read GetSectionLength;
Public property NeedToResetSelectedVertexCount: boolean read FNeedToResetSelectedVertexCount write FNeedToResetSelectedVertexCount;
Public property BottomElevation: real read FBottomElevation;
Public property TopElevation: real read FTopElevation;
Public property BoundaryDataSets[constIndex:integer]: TDataArray read GetBoundaryDataSets write SetBoundaryDataSets;
Public property BoundaryDataSetFormulas[constIndex:integer]: string read GetBoundaryDataSetFormulas write SetBoundaryDataSetFormulas;
Public property CanInvalidateModel: boolean read FCanInvalidateModel write SetCanInvalidateModel;
Public property CanvasCoordinates: TPointArray read GetCanvasCoordinates;
Public property Capacity: integer read FCapacity write SetCapacity;
Public property Count: integer read GetCount write SetCount;
Public property DataSetCapacity: integer read GetDataSetCapacity write SetDataSetCapacity;
Public property DataSetCount: integer read GetDataSetCount;
Public property DataSets[constIndex:integer]: TDataArray read GetDataSets write SetDataSets;
Public property DataSetFormulas[constIndex:integer]: string read GetDataSetFormulas write SetDataSetFormulas;
Public property Deleted: boolean read FDeleted write SetDeleted;
Public property MaxX: real read GetMaxX;
Public property MaxY: real read GetMaxY;
Public property MinX: real read GetMinX;
Public property MinY: real read GetMinY;
Public property Model: TBaseModel read FModel;
Public property Points[constIndex:integer]: TPoint2D read GetPoints write SetPoints;
Public property Segments[AModel:TBaseModel]: TCellElementSegmentList read GetSegments;
Public property SelectedVertexCount: integer read GetSelectedVertexCount;
Public property SelectedVertices[constIndex:integer]: boolean read GetSelectedVertices write SetSelectedVertices;
Public property SelectLines: TLines read GetSelectLines;
Public property CurrentValues: TValueArrayStorage read FCurrentValues;
Public property ChildModel: TBaseModel read GetChildModel write SetChildModel;
Public property SutraAngle: Double read GetSutraAngle write SetSutraAngle;
Published property ChildModelDiscretization: integer read FChildModelDiscretization write FChildModelDiscretization stored False;
Published property CellSize: real read FCellSize write SetCellSize;
Published property CellSizeUsed: boolean read FCellSizeUsed write SetCellSizeUsed;
Published property ColorLine: boolean read FColorLine write SetColorLine;
Published property ElevationCount: TElevationCount read FElevationCount write SetElevationCount;
Published property ElevationFormula: string read GetElevationFormula write SetElevationFormula;
Published property ElevationFunction: string read GetElevationFormula write SetElevationFormula stored False;
Published property EvaluatedAt: TEvaluatedAt read FEvaluatedAt write SetEvaluatedAt;
Published property FillColor: TColor read GetFillColor write SetFillColor;
Published property FillScreenObject: boolean read FFillScreenObject write SetFillScreenObject;
Published property HigherElevationFormula: string read GetHigherElevationFormula write SetHigherElevationFormula;
Published property HigherElevationFunction: string read GetHigherElevationFormula write SetHigherElevationFormula stored False;
Published property LineColor: TColor read GetLineColor write SetLineColor;
Published property LowerElevationFormula: string read GetLowerElevationFormula write SetLowerElevationFormula;
Published property LowerElevationFunction: string read GetLowerElevationFormula write SetLowerElevationFormula stored False;
Published property Selected: boolean read FSelected write SetSelected;
Published property SetValuesByInterpolation: boolean read FSetValuesByInterpolation write Set_SetValuesByInterpolation;
Published property SetValuesOfEnclosedCells: boolean read Get_SetValuesOfEnclosedCells write Set_SetValuesOfEnclosedCells;
Published property SetValuesOfIntersectedCells: boolean read FSetValuesOfIntersectedCells write Set_SetValuesOfIntersectedCells;
Published property ViewDirection: TViewDirection read FViewDirection write SetViewDirection;
Published property Visible: boolean read FVisible write SetVisible default True;
Published property FluxBoundary: TFluxBoundary read GetFluxBoundary write SetFluxBoundary stored StoreFlux;
Published property InterpValues: TInterpValuesCollection read FInterpValues write SetInterpValues;
Published property LeakyBoundary: TLeakyBoundary read GetLeakyBoundary write SetLeakyBoundary stored StoreLeaky;
Published property RiverBoundary: TRiverBoundary read GetRiverBoundary write SetRiverBoundary stored StoreRiver;
Published property SpecifiedHeadBoundary: TSpecifiedHeadBoundary read GetSpecifiedHeadBoundary write SetSpecifiedHeadBoundary stored StoreSpecifiedHead;
Published property WellBoundary: TWellBoundary read GetWellBoundary write SetWellBoundary stored StoreWell;
Published property ModflowChdBoundary: TChdBoundary read GetModflowChdBoundary write SetModflowChdBoundary stored StoreModflowChdBoundary;
Published property ModflowGhbBoundary: TGhbBoundary read GetModflowGhbBoundary write SetModflowGhbBoundary stored StoreModflowGhbBoundary;
Published property ModflowWellBoundary: TMfWellBoundary read GetModflowWellBoundary write SetModflowWellBoundary stored StoreModflowWellBoundary;
Published property ModflowRivBoundary: TRivBoundary read GetModflowRivBoundary write SetModflowRivBoundary stored StoreModflowRivBoundary;
Published property ModflowDrnBoundary: TDrnBoundary read GetModflowDrnBoundary write SetModflowDrnBoundary stored StoreModflowDrnBoundary;
Published property ModflowDrtBoundary: TDrtBoundary read GetModflowDrtBoundary write SetModflowDrtBoundary stored StoreModflowDrtBoundary;
Published property ModflowRchBoundary: TRchBoundary read GetModflowRchBoundary write SetModflowRchBoundary stored StoreModflowRchBoundary;
Published property ModflowEvtBoundary: TEvtBoundary read GetModflowEvtBoundary write SetModflowEvtBoundary stored StoreModflowEvtBoundary;
Published property ModflowEtsBoundary: TEtsBoundary read GetModflowEtsBoundary write SetModflowEtsBoundary stored StoreModflowEtsBoundary;
Published property ModflowResBoundary: TResBoundary read GetModflowResBoundary write SetModflowResBoundary stored StoreModflowResBoundary;
Published property ModflowLakBoundary: TLakBoundary read GetModflowLakBoundary write SetModflowLakBoundary stored StoreModflowLakBoundary;
Published property ModflowSfrBoundary: TSfrBoundary read GetModflowSfrBoundary write SetModflowSfrBoundary stored StoreModflowSfrBoundary;
Published property ModflowUzfBoundary: TUzfBoundary read GetModflowUzfBoundary write SetModflowUzfBoundary stored StoreModflowUzfBoundary;
Published property ModflowHeadObservations: THobBoundary read GetModflowHeadObservations write SetModflowHeadObservations stored StoreModflowHeadObservations;
Published property ModflowStreamGage: TStreamGage read GetModflowStreamGage write SetModflowStreamGage stored StoreModflowStreamGage;
Published property ModflowHfbBoundary: THfbBoundary read GetModflowHfbBoundary write SetModflowHfbBoundary stored StoreModflowHfbBoundary;
Published property ModflowMnw2Boundary: TMnw2Boundary read GetModflowMnw2Boundary write SetModflowMnw2Boundary stored StoreModflowMnw2Boundary;
Published property Mt3dmsConcBoundary: TMt3dmsConcBoundary read GetMt3dmsConcBoundary write SetMt3dmsConcBoundary stored StoreMt3dmsConcBoundary;
Published property Mt3dmsTransObservations: TMt3dmsTransObservations read GetMt3dmsTransObservations write SetMt3dmsTransObservations stored StoreMt3dmsTransObservations;
Published property SectionStarts: TValueArrayStorage read GetSectionStarts write SetSectionStarts;
Published property ImportedSectionElevations: TValueArrayStorage read GetImportedSectionElevations write SetImportedSectionElevations stored StoreImportedSectionElevations;
Published property ImportedHigherSectionElevations: TValueArrayStorage read GetImportedHigherSectionElevations write SetImportedHigherSectionElevations stored StoreImportedHigherSectionElevations;
Published property ImportedLowerSectionElevations: TValueArrayStorage read GetImportedLowerSectionElevations write SetImportedLowerSectionElevations stored StoreImportedLowerSectionElevations;
Published property ImportedValues: TValueCollection read FImportedValues write SetImportedValues stored StoreImportedValues;
Published property IFACE: TIface read FIFACE write SetIFACE default iInternal;
Published property ModpathParticles: TParticleStorage read FModpathParticles write SetModpathParticles;
Published property Comment: string read FComment write SetComment;
Published property PointPositionValues: TPointPositionValues read GetPointPositionValues write SetPointPositionValues stored ShouldStorePointPositionValues;
Published property ModflowHydmodData: THydmodData read GetModflowHydmodData write SetModflowHydmodData stored StoreModflowHydmodData;
Published property ChildModelName: string read GetChildModelName write SetChildModelName;
Published property UsedModels: TUsedWithModelCollection read FUsedModels write SetUsedModels stored True;
Published property PositionLocked: boolean read FPositionLocked write SetPositionLocked;
Published property StoredSutraAngle: TRealStorage read FStoredSutraAngle write SetStoredSutraAngle stored SaveSutraAngle;
Published property SutraBoundaries: TSutraBoundaries read FSutraBoundaries write SetSutraBoundaries stored SaveSutraBoundaries;
Published property DuplicatesAllowed: Boolean read FDuplicatesAllowed write SetDuplicatesAllowed default True;

Description

Fields

Strict Private FCachedCells: TCachedCells;
 
Strict Private FIntervalTree: TRbwIntervalTree;
 
Strict Private FDelegateCollection: TDelegateCollection;
 
Private FCanInvalidateModel: boolean;
 
Private FModel: TBaseModel;
 
Private FDataSetMixtureSubscriptions: TObjectList;

FDataSetMixtureSubscriptions holds all the subscriptions related to mixtures for TDataArrays.

Private FInterpValues: TInterpValuesCollection;

See InterpValues.

Private FMixtureCompiler: TRbwParser;

FMixtureCompiler is assigned in AssignValuesToDataSet.

Private FMixtureExpression: TExpression;

FMixtureExpression is assigned in AssignValuesToDataSet.

Private FMixtureVariables: TStringList;

FMixtureVariables is assigned and Freed in AssignValuesToDataSet.

Private FFluxBoundary: TFluxBoundary;

See FluxBoundary.

Private FLeakyBoundary: TLeakyBoundary;

See LeakyBoundary.

Private FRiverBoundary: TRiverBoundary;

See RiverBoundary.

Private FSpecifiedHeadBoundary: TSpecifiedHeadBoundary;

See SpecifiedHeadBoundary.

Private FWellBoundary: TWellBoundary;

See WellBoundary.

Private FBottomElevation: real;

FBottomElevation is used to temporarily store the lower elevation of the TScreenObject in current cell when the TScreenObject has an upper and a lower elevation.

Private FBottomElevSubscription: TObserver;

FBottomElevSubscription is a TObserver that responds to changes in any of the data sets referenced in LowerElevationFormula by calling Changed.

Private FBoundaryDataSetFormulas: TList;

See BoundaryDataSetFormulas.

Private FBoundaryDataSets: TList;

See BoundaryDataSets.

Private FBoundaryDataSetSubscriptions: TObjectList;

FBoundaryDataSetSubscriptions holds a list of TObservers related to boundary conditions set by this TScreenObject. If this TScreenObject changes, the TObservers in FBoundaryDataSetSubscriptions will ensure that those boundary conditions get updated properly when needed.

Private FCanvasCoordinates: TPointArray;

See CanvasCoordinates.

Private FCapacity: integer;

See Capacity.

Private FCellSize: real;

See CellSize.

Private FCellSizeUsed: boolean;

See CellSizeUsed.

Private FColorLine: boolean;

See ColorLine.

Private FCount: integer;

See Count.

Private FDataSetFormulas: TList;

See DataSetFormulas.

Private FDataSets: TList;

See DataSets.

Private FDataSetSubscriptions: TObjectList;

FDataSetSubscriptions holds a list of TObservers related to TDataArrays set by this TScreenObject. If this TScreenObject changes, the TObservers in FDataSetSubscriptions will ensure that those TDataArrays get updated properly when needed.

Private FDeleted: boolean;

See Deleted.

Private FElevationCount: TElevationCount;

See ElevationCount and TElevationCount.

Private FElevSubscription: TObserver;

FElevSubscription is a TObserver that responds to changes in any of the data sets referenced in ElevationFormula by calling Changed.

Private FEvaluatedAt: TEvaluatedAt;

See EvaluatedAt and TEvaluatedAt.

Private FFillColor: TColor;

See FillColor.

Private FFillScreenObject: boolean;

See FillScreenObject.

Private FLineColor: TColor;

See LineColor.

Private FMaxX: real;

See MaxX.

Private FMaxY: real;

See MaxY.

Private FMinX: real;

See MinX.

Private FMinY: real;

See MinY.

Private FNeedToUpdateLine: boolean;

FNeedToUpdateLine indicates whether or not SelectLines is up-to-date. If it isn't, it will be recalculated when needed.

Private FPoints: TRealPointArray;

FPoints: TRealPointArray; See Points and TRealPointArray.

Private FRecalculateArea: boolean;

FRecalculateArea indicates whether or not FScreenObjectArea is up-to-date. If it isn't, it will be recalculated when needed. See ScreenObjectArea.

Private FRecalculateBox: boolean;

FRecalculateBox indicates whether or not MinX, MaxX, MinY, and MaxY are up-to-date. If the aren't, they will be recalculated when needed.

Private FRecalculateCoordinates: boolean;

FRecalculateCoordinates indicates whether or not FCanvasCoordinates is up-to-date. If it isn't, it will be recalculated when needed. See ScreenObjectArea.

Private FRecalculateLength: boolean;

FRecalculateLength indicates whether or not FScreenObjectLength is up-to-date. If it isn't, it will be recalculated when needed. See ScreenObjectLength.

Private FScreenObjectArea: real;

See ScreenObjectArea.

Private FScreenObjectLength: real;

See ScreenObjectLength.

Private FSegments: TCellElementSegmentList;

See Segments and TCellElementSegmentList.

Private FSegModelAssoc: TAssociateList;
 
Private FSelected: boolean;

See Selected.

Private FSelectedVertexCount: integer;

See SelectedVertexCount.

Private FSelectedVertices: TBooleanDynArray;

See SelectedVertices.

Private FSelectLines: TLines;

See SelectLines and TLine.

Private FSetValuesByInterpolation: boolean;

See SetValuesByInterpolation.

Private FSetValuesOfEnclosedCells: boolean;

See SetValuesOfEnclosedCells.

Private FSetValuesOfIntersectedCells: boolean;

See SetValuesOfIntersectedCells.

Private FLastSubPolygon: TSubPolygon;

FLastSubPolygon is used to determine whether adding a point to TScreenObject will cause it to intersect an existing Segment.

Private FTopElevation: real;

FTopElevation is used to temporarily store the upper elevation of the TScreenObject in current cell when the TScreenObject has an upper and a lower elevation.

Private FTopElevSubscription: TObserver;

FTopElevSubscription is a TObserver that responds to changes in any of the data sets referenced in HigherElevationFormula by calling Changed.

Private FViewDirection: TViewDirection;

See ViewDirection and TViewDirection.

Private FVisible: boolean;

See Visible.

Private FNeedToResetSelectedVertexCount: boolean;

See NeedToResetSelectedVertexCount.

Private FSubPolygons: TList;

FSubPolygons is actually a TObjectList. FSubPolygons holds instances of TSubPolygon.

See also
CreateSubPolygons
CreateSubPolygons first calls ClearSubPolygons to get rid of existing TSubPolygons.
SubPolygonCount
SubPolygons
IsAnyPointCloser
IsAnyPointCloser tests whether any point in the TScreenObject is closer to Location than Distance.
Private FModflowBoundaries: TModflowBoundaries;
 
Private FSectionStarts: TValueArrayStorage;
 
Private FImportedSectionElevations: TValueArrayStorage;
 
Private FCurrentValues: TValueArrayStorage;
 
Private FImportedHigherSectionElevations: TValueArrayStorage;
 
Private FImportedLowerSectionElevations: TValueArrayStorage;
 
Private FImportedValues: TValueCollection;
 
Private FIsClosedCached: Boolean;
 
Private FCachedClosed: boolean;
 
Private FGlListCreated: Boolean;
 
Private FGlScreenObjectList: TGLuint;
 
Private FListUpToDate: Boolean;
 
Private FIFACE: TIface;
 
Private FModpathParticles: TParticleStorage;
 
Private FUpdateCount: Integer;
 
Private FGpcPolygons: TGpcPolygonClass;

each contour in FGpcPolygons contains one of the closed sections of this instance of TScreenObject.

Private FPriorObjectIntersectLengthCol: Integer;
 
Private FPriorObjectIntersectLengthRow: Integer;
 
Private FPriorObjectIntersectLengthLayer: Integer;
 
Private FPriorObjectIntersectLengthResult: Real;
 
Private FCachedDataSetIndex: integer;
 
Private FElevationFormulaObject: TFormulaObject;
 
Private FHigherElevationFormulaObject: TFormulaObject;
 
Private FLowerElevationFormulaObject: TFormulaObject;
 
Private FPriorObjectSectionIntersectLengthCol: integer;
 
Private FPriorObjectSectionIntersectLengthRow: integer;
 
Private FPriorObjectSectionIntersectLengthLayer: integer;
 
Private FPriorObjectSectionIntersectLengthResult: real;
 
Private FPriorObjectSectionIntersectLengthSection: integer;
 
Private FComment: string;
 
Private FPointPositionValues: TPointPositionValues;
 
Private FChildModelName: string;
 
Private FChildModelDiscretization: integer;
 
Private FChildModel: TBaseModel;
 
Private FPriorObjectSectionIntersectLengthModel: TBaseModel;
 
Private FPriorObjectIntersectLengthModel: TBaseModel;
 
Private FUsedModels: TUsedWithModelCollection;
 
Private FFullObjectIntersectLength: Boolean;
 
Private FPriorFullObjectIntersectLength: Boolean;
 
Private FPositionLocked: boolean;
 
Private FStoredSutraAngle: TRealStorage;
 
Private FSutraBoundaries: TSutraBoundaries;
 
Private FDuplicatesAllowed: Boolean;
 
Protected FIsUpdating: boolean;

FIsUpdating is true during UpdateScreenObject.

Methods

Strict Private function IsOutsideBoxPlusBuffer(const Location: TPoint2D; const BufferDistance: real; const Anisotropy: real): boolean;

IsOutsideBoxPlusBuffer returns True if Location is outside a box surrounding the TScreenObject plus a buffer distance.

See also
IsOutsideSubPolygonBoxPlusBuffer
IsOutsideSubPolygonBoxPlusBuffer returns True if Location is outside SubPolygon plus a buffer distance.
Strict Private function IsAnyPointInSubPolygonCloser(const Location: TPoint2D; var Distance: real; out ClosestLocation: TPoint2D; const Anisotropy: real; const ASubPolygon: TSubPolygon): boolean;

IsAnyPointInSubPolygonCloser tests whether any point on the two TSubPolygons is closer to Location than Distance. If so, IsAnyPointInSubPolygonCloser returns True and Distance is set to the distance to the closest point on The TScreenObject and ClosestLocation is set to the location whose point was closest to Location.

Strict Private function IsOutsideSubPolygonBoxPlusBuffer(const Location: TPoint2D; const BufferDistance: real; const Anisotropy: real; const SubPolygon: TSubPolygon): boolean;

IsOutsideSubPolygonBoxPlusBuffer returns True if Location is outside SubPolygon plus a buffer distance.

See also
IsOutsideSubPolygonBoxPlusBuffer
IsOutsideSubPolygonBoxPlusBuffer returns True if Location is outside SubPolygon plus a buffer distance.
Private procedure CreateLastSubPolygon;
 
Private procedure DestroyLastSubPolygon;
 
Private function GetSubPolygonCount: integer;
 
Private function GetSubPolygon(Index: integer): TSubPolygon;
 
Private procedure SetFluxBoundary(const Value: TFluxBoundary);

See FluxBoundary.

Private procedure SetInterpValues(const Value: TInterpValuesCollection);

See InterpValues.

Private procedure SetLeakyBoundary(const Value: TLeakyBoundary);

See LeakyBoundary.

Private procedure SetRiverBoundary(const Value: TRiverBoundary);

See RiverBoundary.

Private procedure SetSpecifiedHeadBoundary( const Value: TSpecifiedHeadBoundary);

See SpecifiedHeadBoundary.

Private procedure SetWellBoundary(const Value: TWellBoundary);

See WellBoundary.

Private procedure AddPointFromColumn(const ColIndex: integer; const Grid: TCustomModelGrid; const PreviousPoint, APoint: TEdgePoint; var TempPoints1: TEdgePointArray; var Count: integer; const Position: TEdgePosition);

AddPointFromColumn creates a TEdgePoint at the column boundary on Grid indicated by ColIndex on the line defined by PreviousPoint and APoint. If the new TEdgePoint is between PreviousPoint and APoint, it is added at TempPoints1[Count] and then Count is incremented. The Position of the new TEdgePoint is set to Position. AddPointFromColumn is called when updating Segments.

Parameters
ColIndex
indicates the column boundary on the grid. The new point will be where the line intersects this column.
Grid
is the TPhastGrid from which the point is being added.
PreviousPoint
is one of the points defining the line.
APoint
is the other point defining the line.
TempPoints1
is the array to which the point is added.
Count
is the new number of points in TempPoints1.
Position
is the TEdgePosition for the new point.
Private procedure AddPointFromLayer(const LayerIndex: integer; const Grid: TCustomModelGrid; const PreviousPoint, APoint: TEdgePoint; var TempPoints1: TEdgePointArray; var Count: integer; const Position: TEdgePosition);

AddPointFromLayer creates a TEdgePoint at the layer boundary on Grid indicated by LayerIndex on the line defined by PreviousPoint and APoint. If the new TEdgePoint is between PreviousPoint and APoint, it is added at TempPoints1[Count] and then Count is incremented. The Position of the new TEdgePoint is set to Position. AddPointFromLayer is called when updating Segments.

Parameters
LayerIndex
indicates the layer boundary on the grid. The new point will be where the line intersects this layer.
Grid
is the TPhastGrid from which the point is being added.
PreviousPoint
is one of the points defining the line.
APoint
is the other point defining the line.
TempPoints1
is the array to which the point is added.
Count
is the new number of points in TempPoints1.
Position
is the TEdgePosition for the new point.
Private procedure AddPointFromRow(const RowIndex: integer; const Grid: TCustomModelGrid; const PreviousPoint, APoint: TEdgePoint; var TempPoints1: TEdgePointArray; var Count: integer; const Position: TEdgePosition);

AddPointFromRow creates a TEdgePoint at the row boundary on Grid indicated by RowIndex on the line defined by PreviousPoint and APoint. If the new TEdgePoint is between PreviousPoint and APoint, it is added at TempPoints1[Count] and then Count is incremented. The Position of the new TEdgePoint is set to Position. AddPointFromRow is called when updating Segments.

Parameters
RowIndex
indicates the row boundary on the grid. The new point will be where the line intersects this row.
Grid
is the TPhastGrid from which the point is being added.
PreviousPoint
is one of the points defining the line.
APoint
is the other point defining the line.
TempPoints1
is the array to which the point is added.
Count
is the new number of points in TempPoints1.
Position
is the TEdgePosition for the new point.
Private procedure Assign3DElevations(Formula: string; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);
 
Private procedure Assign3DElevationsFromFront(const Compiler: TRbwParser; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);

Assign3DElevationsFromFront fills SparseArray with values based on Compiler.CurrentExpression. Only cells whose values ought to be set by the TScreenObject will be set. This procedure is only called if ViewDirection = vdFront.

Parameters
Compiler
is the TRbwParser whose CurrentExpression will be used to assign values.
SparseArray
is a T3DSparseRealArray whose values will be set.
Private procedure Assign3DElevationsFromSide(const Compiler: TRbwParser; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);

Assign3DElevationsFromSide fills SparseArray with values based on Compiler.CurrentExpression. Only cells whose values ought to be set by the TScreenObject will be set. This procedure is only called if ViewDirection = vdSide.

Parameters
Compiler
is the TRbwParser whose CurrentExpression will be used to assign values.
SparseArray
is a T3DSparseRealArray whose values will be set.
Private procedure AssignHigher3DElevations(AModel: TBaseModel);

AssignHigher3DElevations fills FHigher3DElevations with values based on either HigherElevationFormula or ElevationFormula depending on ElevationCount.

Private procedure AssignLower3DElevations(AModel: TBaseModel);

AssignLower3DElevations fills FLower3DElevations with values based on LowerElevationFormula.

Private procedure CalculateCanvasCoordinates;

CalculateCanvasCoordinates takes all the TPoint2Ds in Points and calculates the corresponding TPoints. These are stored in FCanvasCoordinates. The TPoints are used when drawing the ScreenObject on the screen.

Private procedure CreateSubPolygons;

CreateSubPolygons first calls ClearSubPolygons to get rid of existing TSubPolygons. It then creates one TSubPolygon for each section of the TScreenObject. (See SectionCount.) Each TSubPolygon will have access to the TPoint2Ds in its section Points. Each TSubPolygon will divide itself into two additional subcountours until the number of points each has access to is small enough. The TSubPolygons are used in speeding up evaluation of whether a point is inside the TScreenObject.

Private procedure ClearSubPolygons;

ClearSubPolygons destroys TSubPolygons in FSubPolygons.

Private procedure Draw0Elev(Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False);

Draw0Elev is used to draw the TScreenObject when Direction = ViewDirection. The elevation functions (if any) are not used. (To facilitated fast selection of objects, the selected objects are redrawn in an Image32 after being in the normal fashion in a bitmap.

Parameters
Bitmap32
is the TBitmap32 on which the TScreenObject will be drawn.
Direction
is the TViewDirection for Bitmap32.
DrawAsSelected
is used to determine whether to draw the screen object in the normal fashion or as a selected screen object.
Private procedure Draw1Elev( Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False);

Draw1Elev is used to draw the TScreenObject when ElevationCount = ecOne. if Direction = ViewDirection, Draw0Elev is called. Otherwise ElevationFormula is used to determine either the X or Y coordinates.

Parameters
Bitmap32
is the TCanvas on which the TScreenObject will be drawn.
Direction
is the TViewDirection for Bitmap32.
DrawAsSelected
is used to determine whether to draw the screen object in the normal fashion or as a selected screen object. (To facilitate fast selection of objects, the selected objects are redrawn in an Image32 after being in the normal fashion in a bitmap.)
Private procedure Draw2Elev(Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False);

Draw2Elev is used to draw the TScreenObject when ElevationCount = ecTwo. if Direction = ViewDirection, Draw0Elev is called. Otherwise HigherElevationFormula and LowerElevationFormula is used to determine either the X or Y coordinates.

Parameters
Bitmap32
is the TBitmap32 on which the TScreenObject will be drawn.
Direction
is the TViewDirection for Bitmap32.
DrawAsSelected
is used to determine whether to draw the screen object in the normal fashion or as a selected screen object. (To facilitate fast selection of objects, the selected objects are redrawn in an Image32 after being in the normal fashion in a bitmap.)
Private procedure EvaluateSubPolygon(const ASubPolygon: TSubPolygon; const X, Y: real; var IsInside: boolean);

EvaluateSubPolygon is used to help determine whether the point at X, Y is inside the TScreenObject. (See IsPointInside.) IsInside is updated to reflect the effect of ASubPolygon on the final result. IsInside is not the final result. EvaluateSubPolygon calls itself recursively.

Parameters
ASubPolygon
is the TSubPolygon which will be evaluated.
X
is the X-coordinate of the location being tested.
Y
is the Y-coordinate of the location being tested.
IsInside
represents the effects of ASubPolygon on whether the point (X, Y) is inside the polygon.
Private function GetACol(const Grid: TCustomModelGrid; const X: double): integer;

If EvaluatedAt = eaNodes, GetACol returns the column whose center is closest to X. except that it can return Grid.ColumnCount for EvaluatedAt = eaBlocks. If EvaluatedAt = eaBlocks GetACol returns the index of the column center that is closest to X. GetACol is similar to GetColumn. (X is in a coordinates system parallel to the grid.) GetACol is called by UpdateTopSegments and UpdateFrontSegments.

Parameters
Grid
is the TPhastGrid from which the column boundary will be extracted.
X
is the X coordinate (in a coordinates system parallel to the grid) of the location of interest.
Private function GetAPhastLayer(const Grid: TCustomModelGrid; const Z: double): integer;

If EvaluatedAt = eaNodes, GetAPhastLayer returns the layer boundary that is closest to Z. If EvaluatedAt = eaBlocks GetAPhastLayer returns the index of the layer center that is closest to Z except that it can return Grid.LayerCount for EvaluatedAt = eaBlocks. GetAPhastLayer is called by UpdateFrontSegments and UpdateSideSegments.

Parameters
Grid
is the TPhastGrid from which the layer boundary will be extracted.
Z
is the Z coordinate (in a coordinates system parallel to the grid) of the location of interest.
Private function GetARow(const Grid: TCustomModelGrid; const Y: double): integer;

If EvaluatedAt = eaNodes, GetARow returns the row boundary that is closest to Y ( except that it can return Grid.RowCount for EvaluatedAt = eaBlocks. If EvaluatedAt = eaBlocks GetARow returns the index of the row center that is closest to Y. (Y is in a coordinates system parallel to the grid.) GetARow is called by UpdateTopSegments and UpdateSideSegments.

Parameters
Grid
is the TPhastGrid from which the layer boundary will be extracted.
Y
is the Y coordinate (in a coordinates system parallel to the grid) of the location of interest.
Private function GetBoundaryDataSetFormulas(const Index: integer): string;

GetBoundaryDataSetFormulas is the Read function for the BoundaryDataSetFormulas property.

Private function GetBoundaryDataSets(const Index: integer): TDataArray;

GetBoundaryDataSets is the Read function for the BoundaryDataSets property.

Private function GetCanvasCoordinates: TPointArray;

GetCanvasCoordinates is the Read function for the CanvasCoordinates property. It recalculates the coordinates when needed.

Private function GetColumn(const Grid: TCustomModelGrid; const X: real): integer;

GetColumn returns the column number that contains X. GetColumn is similar to GetACol.

Parameters
Grid
is the TPhastGrid from which the column boundary will be extracted.
X
is the X coordinate (in a coordinates system parallel to the grid) of the location of interest.
Private procedure GetColumns(const Grid: TCustomModelGrid; TempMinX, TempMaxX: real; out FirstCol, LastCol: integer);

GetColumns sets FirstCol and LastCol to the range of columns intersected by the TScreenObject.

Parameters
Grid
is the grid being tested
TempMinX
is the minimum X value in the grid coordinate system.
TempMaxX
is the maximum X value in the grid coordinate system.
FirstCol
is the first column intersected by TempMinX to TempMaxX.
LastCol
is the last column intersected by TempMinX to TempMaxX.
Private function GetCount: integer;

See Count.

Private function GetDataSetCapacity: integer;

See DataSetCapacity.

Private function GetDataSetCount: integer;

See DataSetCount.

Private function GetDataSetFormulas(const Index: integer): string;

See DataSetFormulas.

Private function GetDataSets(const Index: integer): TDataArray;

See DataSets.

Private function GetEdgePoints(const Index: integer): TEdgePoint;

See EdgePoints.

Private function GetFillColor: TColor;

See FillColor.

Private procedure GetGridCellOrElementLimits(const Col, Row, Layer: integer; out XMin, XMax, YMin, YMax: double; AModel: TBaseModel);

GetGridCellOrElementLimits sets XMin, XMax, YMin, and YMax to be the positions of the grid cell or element specified by Col, Row, and Layer. Which is used depends on EvaluatedAt.

Private function GetHigher3DElevations(AModel: TBaseModel): T3DSparseRealArray;

GetHigher3DElevations calls UpdateHigher3DElevations. Then it returns FHigher3DElevations.

Private function GetLayer(const Grid: TCustomModelGrid; const Z: real): integer;

GetLayer returns the layer number that contains Z. GetLayer is similar to GetAPhastLayer.

Parameters
Grid
is the TPhastGrid from which the layer boundary will be extracted.
Z
is the Z coordinate (in a coordinates system parallel to the grid) of the location of interest.
Private procedure GetLayers(const Grid: TCustomModelGrid; TempMinZ, TempMaxZ: real; out FirstLayer, LastLayer: integer);

GetLayers sets FirstLayer and LastLayer to the range of layers intersected by the TScreenObject.

Parameters
Grid
is the grid being tested
TempMinZ
is the minimum Z value in the grid coordinate system.
TempMaxZ
is the maximum Z value in the grid coordinate system.
FirstLayer
is the first layer intersected by TempMinZ to TempMaxZ.
LastRow
is the last layer intersected by TempMinZ to TempMaxZ.
LastLayer
specifies how to interpret the columns.
Private function GetLineColor: TColor;

See LineColor.

Private function GetLower3DElevations(AModel: TBaseModel): T3DSparseRealArray;

GetLower3DElevations calls UpdateLower3DElevations. Then it returns FLower3DElevations.

Private function GetMaxX: real;

See MaxX.

Private function GetMaxY: real;

See MaxY.

Private function GetMinX: real;

See MinX.

Private function GetMinY: real;

See MinY.

Private function GetPoints(const Index: integer): TPoint2D;

See Points.

Private function GetRow(const Grid: TCustomModelGrid; const Y: real): integer;

GetRow returns the row number that contains Y. GetRow is similar to GetARow.

Parameters
Grid
is the TPhastGrid from which the row boundary will be extracted.
Y
is the Y coordinate (in a coordinates system parallel to the grid) of the location of interest.
Private procedure GetRows(const Grid: TCustomModelGrid; TempMinY, TempMaxY: real; out FirstRow, LastRow: integer);

GetRows sets FirstRow and LastRow to the range of rows intersected by the TScreenObject.

Parameters
Grid
is the grid being tested
TempMinY
is the minimum Y value in the grid coordinate system.
TempMaxY
is the maximum Y value in the grid coordinate system.
FirstRow
is the first row intersected by TempMinY to TempMaxY.
LastRow
is the last row intersected by TempMinY to TempMaxY.
EvaluatedAt
specifies how to interpret the columns.
Private function GetSelectedVertexCount: integer;

See SelectedVertexCount.

Private function GetSelectedVertices(const index: integer): boolean;

See SelectedVertices.

Private function GetSelectLines: TLines;

See SelectLines.

Private procedure Grow;

Grow increases Capacity.

Private procedure GrowBy(Amount: integer);

GrowBy increases Capacity by Amount.

Private function InsideBox(const X, Y: real): boolean;

InsideBox returns true if the point (X,Y) is inside the bounding box for the TScreenObject.

Private function MinDistPointLine(const P, A, B: TPoint2D; out Closest: TPoint2D; const Anisotropy: real): real;

MinDistPointLine calculates the distance between a point and a line segment.

Parameters
P
is the point.
A
is one of the points defining the line segment.
B
is the other point defining the line segment.
Closest
is the closest point on the line segment to P.
Anisotropy
is the Anisotropy used in calculating the distance.
Private function PointToPointDist(const A, B: TPoint2D; const Anisotropy: real): real;

PointToPointDist returns the distance between points A and B taking into account Anisotropy.

Private procedure ResetBottomElevationFormula(const Compiler: TRbwParser; const ErrorMessage: string);

ResetBottomElevationFormula is used if LowerElevationFormula has an error to reset it to a default valid value.

Private procedure ResetElevationFormula(const Compiler: TRbwParser; const ErrorMessage: string);

ResetElevationFormula is used if ElevationFormula has an error to reset it to a default valid value.

Private procedure ResetSelectedVertexCount;

ResetSelectedVertexCount deselects all vertices in the TScreenObject.

Private procedure ResetTopElevationFormula(const Compiler: TRbwParser; const ErrorMessage: string);

ResetTopElevationFormula is used if HigherElevationFormula has an error to reset it to a default valid value.

Private procedure SetBoundaryDataSetFormulas(const Index: integer; const Value: string);

See BoundaryDataSetFormulas.

Private procedure SetBoundaryDataSets(const Index: integer; const DataSet: TDataArray);

See BoundaryDataSets.

Private procedure SetCapacity(Value: integer);

See Capacity.

Private procedure SetCellSize(const Value: real);

See CellSize.

Private procedure SetCellSizeUsed(const Value: boolean);

See CellSizeUsed.

Private procedure SetColorLine(const Value: boolean);

See ColorLine.

Private procedure SetCount(const Value: integer);

See Count.

Private procedure SetDataSetCapacity(const Value: integer);

See DataSetCapacity.

Private procedure SetDataSetFormulas(const Index: integer; Value: string);

See DataSetFormulas.

Private procedure SetDataSets(const Index: integer; const DataSet: TDataArray);

See DataSets.

Private procedure SetDeleted(const Value: boolean);

See Deleted.

Private procedure SetEdgePoints(const Index: integer; const Value: TEdgePoint);

See EdgePoints.

Private procedure SetElevationCount(const Value: TElevationCount);

See ElevationCount.

Private procedure SetEvaluatedAt(const Value: TEvaluatedAt);

See EvaluatedAt.

Private procedure SetFillColor(const Value: TColor);

See FillColor.

Private procedure SetFillScreenObject(const Value: boolean);

See FillScreenObject.

Private procedure SetLineColor(const Value: TColor);

See LineColor.

Private procedure SetPoints(const Index: integer; const Value: TPoint2D);

See Points.

Private procedure SetSelected(const Value: boolean);

See Selected.

Private procedure SetSelectedVertices(const index: integer; const Value: boolean);

See SelectedVertices.

Private procedure Set_SetValuesByInterpolation(const Value: boolean);

See SetValuesByInterpolation.

Private procedure Set_SetValuesOfEnclosedCells(const Value: boolean);

See SetValuesOfEnclosedCells.

Private procedure Set_SetValuesOfIntersectedCells(const Value: boolean);

See SetValuesOfIntersectedCells.

Private procedure SetVisible(const Value: boolean);

See Visible.

Private procedure SortPoints(const Input: TEdgePointArray; out SortedPoints: TEdgePointArray; const APoint, PreviousPoint: TEdgePoint; const MaxLength: integer; Const EpsilonX: real = 0; Const EpsilonY: real = 0);

SortPoints sorts the points in Input and returns the sorted points in SortedPoints. The points in Input lie along the line (PreviousPoint,APoint). They are sorted so that they occur in order along that line. Duplicate points are eliminated.

Parameters
Input
is an array of TEdgePoints to be sorted.
SortedPoints
is an array of TEdgePoints obtained by sorting Input.
APoint
is the end point of a line along which are all the points in Input.
PreviousPoint
is the beginning point of a line along which are all the points in Input.
MaxLength
is the number of points in Input to be sorted.
Private procedure UpdateBox;

UpdateBox updates MinX, MaxX, MinY, and MaxY.

Private procedure UpdateFrontSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt);

UpdateFrontSegments calls Delegate.UpdateFrontSegments.

Private procedure UpdateSideSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt);

UpdateSideSegments calls Delegate.UpdateSideSegments.

Private procedure UpdateTopSegments( const EvaluatedAt: TEvaluatedAt; const PointsRotated: boolean; var RotatedPoints: TEdgePointArray; AModel: TBaseModel);

UpdateTopSegments updates the contents of Segments when ViewDirection = vdTop.

Private procedure ValidateIndex(const Index: integer); inline;

ValidateIndex is used when accessing vertices to raise an exception if Index is invalid.

Private function ValidCell(const Col, Row, Layer: integer; Model: TBaseModel): boolean;

ValidCell returns false if Col, Row, Layer refer to an invalid cell. Only two of the three are checked. The ones that are checked depend on ViewDirection

Private function Get_SetValuesOfEnclosedCells: boolean;

See SetValuesOfEnclosedCells.

Private procedure UpdateHigher3DElevations(AModel: TBaseModel);

On input, Sorter contains a series of pointers to TPoint2Ds that are on a straight line and Point1 and Point2 are points defining the endpoints of the line. On exit the contents of Sorter will be rearranged so that they are in order from Point1 toward Point2. procedure SortPointsInCorrectDirection(Sorter: TList; const Point1, Point2: TPoint2D); UpdateHigher3DElevations is used to specify the intersection of a segment of TScreenObject with the box defined by XMin, XMax, YMin, YMax.

On exit, Point1 and Point2 are the points of the segment; TempPoints will contain the intersection points; and PointCount will contain the number of points of intersection. procedure GetPointsOnLineSegment(const RotatedPoints: TRealPointArray; const XMin, XMax, YMin, YMax: Double; const Index: Integer; out Point1, Point2: TPoint2D; out TempPoints: T2DRealPointArray6; out PointCount: Integer); UpdateHigher3DElevations returns the proper TCustomScreenObjectDelegate for the active TPhastModel.ModelSelection.

Private procedure UpdateLower3DElevations(AModel: TBaseModel);
 
Private procedure AssignIntegerDataWithPhastInterpolation(const DataSet: TDataArray; const LayerIndex, RowIndex, ColIndex: integer; const Comment: string; const InterpValue: TInterpValuesItem);

AssignIntegerDataWithPhastInterpolation is used to assign data to a particular cell when PHAST-style interpolation is used and the data is integer data. See TPhastInterpolationValues.

Private procedure AssignRealDataWithPhastInterpolation(const DataSet: TDataArray; const LayerIndex, RowIndex, ColIndex: integer; const Comment: string; const InterpValue: TInterpValuesItem);

AssignRealDataWithPhastInterpolation is used to assign data to a particular cell when PHAST-style interpolation is used and the data is real-number data. See TPhastInterpolationValues.

Private function GetMixtureDataSetFormula(const Index: integer): string;

See MixtureDataSetFormula.

Private procedure SetMixtureDataSetFormula(const Index: integer; const Value: string);

See MixtureDataSetFormula.

Private procedure InitializeMixtureExpression(out Compiler: TRbwParser; out MixtureFormula: string; out Expression: TExpression; const DataSet: TDataArray; const OtherData: TObject);

The purpose of InitializeMixtureExpression is to (1) determine the formula for a mixture to use with using PHAST-style interpolation, (2) determine the TRbwParser to use with that formula, and (3) compile that formula into a TExpression. See TPhastInterpolationValues.

Parameters
Compiler
is set in InitializeMixtureExpression to the correct TRbwParser to use with the mixture formula.
MixtureFormula
is set in InitializeMixtureExpression to the formula for the mixture.
Expression
is set in InitializeMixtureExpression to the TExpression that results from compiling MixtureFormula.
DataSet
is the TDataArray to which the mixture formula applies.
OtherData
if DataSet is a normal data set, OtherData is a TInterpValuesItem. if DataSet represents a boundary condition, OtherData is a TCustomPhastBoundaryCondition.
Private function ThreeDBoundaryFormula: string;

ThreeDBoundaryFormula returns a formula that can be used to identify the type of 3D boundary condition (if any) that is assigned with this TScreenObject.

Private function TwoDBoundaryFormula: string;

TwoDBoundaryFormula returns a formula that can be used to identify the type of 2D boundary condition (if any) that is assigned with this TScreenObject.

Private function ZoomBox(VD: TViewDirection): TQrbwZoomBox2;
 
Private function FrameScreenObject(VD: TViewDirection): TScreenObject;
 
Private function IAmACurrentScreenObject: Boolean;
 
Private procedure NotifyGuiOfChange(Sender: TObject);

NotifyGuiOfChange calls ScreenObjectsChanged.

Private procedure SetModflowChdBoundary(const Value: TChdBoundary);
 
Private procedure RefreshGui(Sender: TObject);
 
Private procedure SetModflowGhbBoundary(const Value: TGhbBoundary);
 
Private procedure SetModflowWellBoundary(const Value: TMfWellBoundary);
 
Private procedure SetModflowRivBoundary(const Value: TRivBoundary);
 
Private procedure SetModflowDrnBoundary(const Value: TDrnBoundary);
 
Private procedure SetModflowDrtBoundary(const Value: TDrtBoundary);
 
Private procedure SetModflowRchBoundary(const Value: TRchBoundary);
 
Private procedure SetModflowEvtBoundary(const Value: TEvtBoundary);
 
Private procedure SetModflowEtsBoundary(const Value: TEtsBoundary);
 
Private procedure SetModflowResBoundary(const Value: TResBoundary);
 
Private procedure SetModflowLakBoundary(const Value: TLakBoundary);
 
Private procedure GetInterpDistance(const InterpValue: TInterpValuesItem; var Distance: Double; const DataSet: TDataArray; const LayerIndex, RowIndex, ColIndex: Integer);
 
Private procedure AssignTopDataSetValues( Expression: TExpression; const DataSetFunction: string; Compiler: TRbwParser; UsedVariables: TStringList; OtherData: TObject; const DataSet: TDataArray; AModel: TBaseModel; AssignmentLocation: TAssignmentLocation = alAll);
 
Private function GetSegments(AModel: TBaseModel): TCellElementSegmentList;
 
Private function GetSectionCount: integer;
 
Private function GetSectionEnd(const Index: integer): integer;
 
Private function GetSectionStart(const Index: integer): integer;
 
Private function GetSectionClosed(const Index: integer): boolean;
 
Private function GetSectionLength(const Index: integer): integer;
 
Private procedure SetModflowSfrBoundary(const Value: TSfrBoundary);
 
Private function GetModflowSfrBoundary: TSfrBoundary;
 
Private function GetModflowLakBoundary: TLakBoundary;
 
Private function GetModflowResBoundary: TResBoundary;
 
Private function GetModflowEtsBoundary: TEtsBoundary;
 
Private function GetModflowEvtBoundary: TEvtBoundary;
 
Private function GetModflowRchBoundary: TRchBoundary;
 
Private function GetModflowDrtBoundary: TDrtBoundary;
 
Private function GetModflowDrnBoundary: TDrnBoundary;
 
Private function GetModflowRivBoundary: TRivBoundary;
 
Private function GetModflowWellBoundary: TMfWellBoundary;
 
Private function GetModflowGhbBoundary: TGhbBoundary;
 
Private function GetModflowChdBoundary: TChdBoundary;
 
Private function GetFluxBoundary: TFluxBoundary;
 
Private function GetLeakyBoundary: TLeakyBoundary;
 
Private function GetRiverBoundary: TRiverBoundary;
 
Private function GetSpecifiedHeadBoundary: TSpecifiedHeadBoundary;
 
Private function GetSpecifiedSolutionBoundary: TSpecifiedSolutionBoundary;
 
Private function GetWellBoundary: TWellBoundary;
 
Private function GetModflowBoundaries: TModflowBoundaries;
 
Private procedure SubPolygonXLimits(Subject: TObject; out LowerBoundary, UpperBoundary: double);
 
Private procedure SubPolygonYLimits(Subject: TObject; out LowerBoundary, UpperBoundary: double);
 
Private function GetModflowUzfBoundary: TUzfBoundary;
 
Private procedure SetModflowUzfBoundary(const Value: TUzfBoundary);
 
Private procedure Draw1ElevModflow(const Direction: TViewDirection; const Bitmap32: TBitmap32; const DrawAsSelected: Boolean; AModel: TBaseModel);
 
Private function GetModflowHeadObservations: THobBoundary;
 
Private procedure SetModflowHeadObservations(const Value: THobBoundary);
 
Private procedure SetSectionStarts(const Value: TValueArrayStorage);
 
Private function GetSectionStarts: TValueArrayStorage;
 
Private procedure CreateSectionStarts;
 
Private procedure SetImportedSectionElevations(const Value: TValueArrayStorage);
 
Private procedure SetImportedHigherSectionElevations( const Value: TValueArrayStorage);
 
Private procedure SetImportedLowerSectionElevations( const Value: TValueArrayStorage);
 
Private function GetImportedHigherSectionElevations: TValueArrayStorage;
 
Private function GetImportedLowerSectionElevations: TValueArrayStorage;
 
Private function GetImportedSectionElevations: TValueArrayStorage;
 
Private procedure Assign3DElevationsFromTop(const Compiler: TRbwParser; const SparseArray: T3DSparseRealArray; AModel: TBaseModel);

Assign3DElevationsFromTop fills SparseArray with values based on Compiler.CurrentExpression. Only cells whose values ought to be set by the TScreenObject will be set. This procedure is only called if ViewDirection = vdTop.

Parameters
Compiler
is the TRbwParser whose CurrentExpression will be used to assign values.
SparseArray
is a T3DSparseRealArray whose values will be set.
Private procedure Draw1ElevPhast(const Direction: TViewDirection; const Bitmap32: TBitmap32; const DrawAsSelected: Boolean);
 
Private procedure Draw1ElevSutra(const Direction: TViewDirection; const Bitmap32: TBitmap32; const DrawAsSelected: Boolean);
 
Private procedure SetImportedValues(const Value: TValueCollection);
 
Private procedure SetModflowHfbBoundary(const Value: THfbBoundary);
 
Private function GetModflowHfbBoundary: THfbBoundary;
 
Private function GetElevSubscription: TObserver;
 
Private function GetTopElevSubscription: TObserver;
 
Private function GetBottomElevSubscription: TObserver;
 
Private procedure SetIFACE(const Value: TIface);
 
Private procedure SetModpathParticles(const Value: TParticleStorage);
 
Private function StoreImportedHigherSectionElevations: Boolean;
 
Private function StoreImportedLowerSectionElevations: Boolean;
 
Private function StoreImportedSectionElevations: Boolean;
 
Private function StoreImportedValues: Boolean;
 
Private function GetModflowStreamGage: TStreamGage;
 
Private procedure SetModflowStreamGage(const Value: TStreamGage);
 
Private function StoreModflowStreamGage: Boolean;
 
Private procedure RemoveElevationSubscription(Sender: TObject; const AName: string);
 
Private procedure RemoveHigherElevationSubscription(Sender: TObject; const AName: string);
 
Private procedure RemoveLowerElevationSubscription(Sender: TObject; const AName: string);
 
Private procedure RestoreElevationSubscription(Sender: TObject; const AName: string);
 
Private procedure RestoreHigherElevationSubscription(Sender: TObject; const AName: string);
 
Private procedure RestoreLowerElevationSubscription(Sender: TObject; const AName: string);
 
Private procedure RemoveDataArraySubscription(Sender: TObject; const AName: string);
 
Private procedure RestoreDataArraySubscription(Sender: TObject; const AName: string);
 
Private function GetElevationFormula: string;
 
Private function GetHigherElevationFormula: string;
 
Private function GetLowerElevationFormula: string;
 
Private procedure CreateOrRetrieveBoundaryFormulaObject(const Index: Integer; ADataSet: TDataArray; var FormulaObject: TFormulaObject);
 
Private procedure RestoreBoundaryDataArraySubscription(Sender: TObject; const AName: string);
 
Private procedure RemoveBoundaryDataArraySubscription(Sender: TObject; const AName: string);
 
Private function GetModflowMnw2Boundary: TMnw2Boundary;
 
Private procedure SetModflowMnw2Boundary(const Value: TMnw2Boundary);
 
Private procedure CacheElevationArrays;
 
Private procedure SetComment(const Value: string);
 
Private procedure SetPointPositionValues(const Value: TPointPositionValues);
 
Private function GetPointPositionValues: TPointPositionValues;
 
Private function ShouldStorePointPositionValues: Boolean;
 
Private function GetModflowHydmodData: THydmodData;
 
Private procedure SetModflowHydmodData(const Value: THydmodData);
 
Private function StoreModflowHydmodData: Boolean;
 
Private procedure SetChildModelName(const Value: string);
 
Private function GetChildModel: TBaseModel;
 
Private procedure SetChildModel(const Value: TBaseModel);
 
Private function GetChildModelName: string;
 
Private procedure SetUsedModels(const Value: TUsedWithModelCollection);
 
Private procedure RemoveLakeID_Connection;
 
Private procedure AddTopSubSegments(var ASegment: TCellElementSegment; AModel: TBaseModel);

When a TCellElementSegment at a cell in the parent model is at the interface with a child model, AddTopSubSegments adds subsegments that are in the unshared part of the cell.

Private procedure SetPositionLocked(const Value: boolean);
 
Private function GetMt3dmsConcBoundary: TMt3dmsConcBoundary;
 
Private procedure SetMt3dmsConcBoundary(const Value: TMt3dmsConcBoundary);
 
Private function GetMt3dmsTransObservations: TMt3dmsTransObservations;
 
Private procedure SetMt3dmsTransObservations(const Value: TMt3dmsTransObservations);
 
Private function SaveSutraAngle: Boolean;
 
Private procedure SetStoredSutraAngle(const Value: TRealStorage);
 
Private procedure InvalidateModelEvent(Sender: TObject);
 
Private function GetSutraAngle: Double;
 
Private procedure SetSutraAngle(const Value: Double);
 
Private procedure SetSutraBoundaries(const Value: TSutraBoundaries);
 
Private function SaveSutraBoundaries: Boolean;
 
Private procedure ResetFormula(const Compiler: TRbwParser; const ErrorMessage, Source: string; var Formula: string; DataType: TRbwDataType);
 
Private procedure SetCanInvalidateModel(const Value: boolean);
 
Private procedure EliminateHoleCells(CellList: TCellAssignmentList);
 
Private procedure SetDuplicatesAllowed(const Value: Boolean);
 
Private procedure EliminateDuplicates(CellList: TCellAssignmentList; AModel: TBaseModel);
 
Private procedure DeleteExtraSections;
 
Private procedure CreatePhastFluxBoundary;
 
Private procedure CreatePhastLeakyBoundary;
 
Private procedure CreatePhastRiverBoundary;
 
Private procedure CreatePhastSpecifiedHeadBoundary;
 
Private procedure CreatePhastSpecifiedSolutionBoundary;
 
Private procedure CreatePhastWellBoundary;
 
Private procedure CreateElevationSubscription;
 
Private procedure CreateTopElevationSubscription;
 
Private procedure CreateBottomElevationSubscription;
 
Private procedure CreateBoundaryDataSetFormulas;
 
Private procedure CreateBoundaryDataSetSubscriptions;
 
Private procedure CreateBoundaryDataSets;
 
Private procedure Draw2ElevModflow(const Direction: TViewDirection; const Bitmap32: TBitmap32; AModel: TBaseModel);
 
Private procedure Draw2ElevPhast(const Direction: TViewDirection; const Bitmap32: TBitmap32);
 
Private procedure Draw2ElevSutra(const Direction: TViewDirection; const Bitmap32: TBitmap32);
 
Private procedure SetValueStorageField(const Value: TValueArrayStorage; var StoredValues: TValueArrayStorage);
 
Private procedure CreateValueArrayStorage(var StoredValues: TValueArrayStorage);
 
Private procedure DrawModflowSideSegmentRightOutsideAbove( SidePoints: T2DRealPointArray; LocalDelegate: TModflowDelegate; ModflowGrid: TModflowGrid; LayerIndex: Integer; ColIndex: Integer; RowIndex: Integer; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentAboveOutsideRight( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentAboveOutsideLeft( SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentLeftOutsideAbove( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentAboveRight(SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentAboveLeft( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentBottomLeft(SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentTopLeft( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentInsideTopRight(LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentInsideBottomRight( SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentInsideBottomLeft( SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowSideSegmentInsideTopLeft(ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; var SidePoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentRightOutsideAbove( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentAboveOutsideRight( LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentAboveOutsideLeft( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentLeftOutsideAbove( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentAboveRight( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentAboveLeft( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentBottomLeft(ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentTopLeft( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentInsideTopRight( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentInsideBottomRight( RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; FrontPoints: T2DRealPointArray; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentInsideBottomLeft( FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowFrontSegmentInsideTopLeft( var FrontPoints: T2DRealPointArray; RowIndex: Integer; ColIndex: Integer; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; SegmentList: TList);
 
Private procedure DrawModflowTopSegmentRightOutsideAbove( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentAboveOutsideRight( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentAboveOutsideLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentLeftOutsideAbove( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentAboveRight( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentAboveLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentBottomLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentTopLeft( RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentInsideTopRight(ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer);
 
Private procedure DrawModflowTopSegmentInsideBottomRight(RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawModflowTopSegmentInsideBottomLeft(SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate; RowIndex: Integer; ColIndex: Integer);
 
Private procedure DrawModflowTopSegmentInsideTopLeft(RowIndex: Integer; ColIndex: Integer; SegmentList: TList; LayerIndex: Integer; ModflowGrid: TModflowGrid; LocalDelegate: TModflowDelegate);
 
Private procedure DrawSegmentList(const Direction: TViewDirection; const Bitmap32: TBitmap32; SegmentList: TList);
 
Private procedure UpdateHigherElevationSubscriptions(var NewFormula: string; OldFormula: string);
 
Private procedure UpdateLowerElevationSubscriptions(var NewFormula: string; OldFormula: string);
 
Private procedure UpdateElevationSubscriptions(var NewFormula: string; OldFormula: string);
 
Private procedure CreateGpcPolygon;
 
Private procedure EvaluateDataArrayExpression(const DataSet: TDataArray; var Expression: TExpression; const Compiler: TRbwParser);
 
Private procedure DrawPointMarker(LineColor32: TColor32; FillColor32: TColor32; const Bitmap32: TBitmap32; IntPoint: TPoint; LineWidth: Single; PointWithValue: boolean);
 
Private procedure SetElevationFormulaParser;
 
Private function GetElevationCompiler: TRbwParser;
 
Private procedure SetHigherElevationFormulaParser;
 
Private procedure SetLowerElevationFormulaParser;
 
Private procedure CreateElevationFormulaObject;
 
Private procedure CreateHigherElevationFormulaObject;
 
Private procedure CreateLowerElevationFormulaObject;
 
Private procedure CreateFormulaObjects;
 
Private procedure SetFormulaParsers;
 
Private procedure CreateOrRetrieveFormulaObject(const Index: Integer; ADataSet: TDataArray; var FormulaObject: TFormulaObject);
 
Private procedure RemoveSubscriptionFromList(const AName: string; Sender: TObject; List: TList; SubscriptionList: TObjectList);
 
Private procedure RestoreSubscriptionToList(List: TList; const AName: string; Sender: TObject; Subscriptions: TObjectList);
 
Private function GetTestDataArray(const DataSet: TDataArray): TDataArray;
 
Private procedure AddTopGridSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt; LowerElevDataSets: TList; HigherElevExpression: TExpression; LayerLimit: Integer; HigherElevDataSets: TList; LowerElevVariables: TList; const PointsRotated: Boolean; HigherElevVariables: TList; var RotatedPoints: TEdgePointArray; LowerElevExpression: TExpression);
 
Private procedure AddTopMeshSegments(AModel: TBaseModel; const EvaluatedAt: TEvaluatedAt; LowerElevDataSets: TList; HigherElevExpression: TExpression; LayerLimit: Integer; HigherElevDataSets: TList; LowerElevVariables: TList; HigherElevVariables: TList; LowerElevExpression: TExpression);
 
Protected procedure UpdateModel(Model: TBaseModel);
 
Protected procedure InvalidateModel;
 
Protected function PhastBoundaryType: TPhastBoundaryTypes;

PhastBoundaryType indicates what sort of PHAST boundary (if any) is specified by this TScreenObject.

Protected procedure AssignCellValue(const UsedVariables: TStringList; const DataSet: TDataArray; LayerIndex, RowIndex, ColIndex: integer; const Compiler: TRbwParser; const Annotation: string; var Expression: TExpression; const OtherData: TObject);

AssignCellValue assigns a value to a particular cell in DataSet.

In AssignCellValue:

(1) If OtherData = nil or not TInterpValuesItem(OtherData).Values.UsePHAST_Interpolation, AssignCellValue evaluates Expression using Compiler and assigns the result to DataSet at the location (LayerIndex, RowIndex, ColIndex). The variables listed in UsedVariables are updated before Expression is evaluated. OtherData can be used when overriding AssignCellValue to pass additional data to the procedure. DataSet.Annotation at location (LayerIndex, RowIndex, ColIndex) is assigned the value of Annotation

(2) Otherwise, values are assigned to DataSet at the location LayerIndex, RowIndex, ColIndex using PHAST-style interpolation. (See TPhastInterpolationValues.) Expression and Compiler are not used in this case and the variables listed in UsedVariables are not updated.

OtherData is set in IsBoundaryTimeDataSetUsed.

Protected procedure AssignValuesToFrontDataSet( const DataSet: TDataArray; OtherData: TObject; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment);

AssignValuesToFrontDataSet calls (Delegate).AssignValuesToFrontDataSet.

Protected procedure AssignValuesToSideDataSet( const DataSet: TDataArray; OtherData: TObject; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment);

AssignValuesToSideDataSet calls (Delegate).AssignValuesToSideDataSet.

Protected procedure AssignValuesToTopDataSet( const DataSet: TDataArray; OtherData: TObject; AModel: TBaseModel);

AssignValuesToTopDataSet initializes variables needed by the formula for the TDataArray and then assigns values to the data set based on that formula for intersected and enclosed cells or elements. AssignValuesToTopDataSet is only used when ViewDirection = vdTop. See AssignValuesToDataSet.

Protected function BoundaryType: integer;

BoundaryType returns an integer that indicates what type of PHAST boundary condition, if any, is specified by this TScreenObject.

Protected function CanAddDataSet(const DataSet: TDataArray): boolean;

CanAddDataSet returns True if DataSet can be added to the TScreenObject.

Protected function DataSetUsed(const DataSet: TDataArray; var OtherData: TObject; AModel: TBaseModel): boolean;

DataSetUsed returns True if

  1. DataSet is a TSparseArrayPhastInterpolationDataSet,

  2. DataSet is a TCustomPhastDataSet and DataSet is specified by this TScreenObject, or

  3. the value of DataSet is set by this TScreenObject or if DataSet equals TopBoundaryType, FrontBoundaryType, SideBoundaryType, or Top2DBoundaryType.

OtherData may be changed in DataSetUsed.

Protected function EncloseAnnotation(const DataSetFormula: string; const OtherData: TObject): string;

EncloseAnnotation returns a string that indicates that the value of a cell or element was specified by being enclosed in this TScreenObject and how the value at that location was determined.

Protected function GetCompiler(const Orientation: TDataSetOrientation): TRbwParser; overload;

GetCompiler gets a TRbwParser consistent with Orientation and EvaluatedAt.

Protected function GetCompiler(const Orientation: TDataSetOrientation; const EvaluatedAt: TEvaluatedAt): TRbwParser; overload;
 
Protected function Get1DCompiler: TRbwParser;
 
Protected procedure GetRotatedPoints(out RotatedPoints: TRealPointArray);

GetRotatedPoints sets RotatedPoints to be an array of TPoint2Ds in the coordinate system of the grid.

Protected procedure InitializeExpression(out Compiler: TRbwParser; out DataSetFormula: string; out Expression: TExpression; const DataSet: TDataArray; const OtherData: TObject);

InitializeExpression

  1. gets the proper DataSetFormula to apply to DataSet,

  2. gets the proper TRbwParser for DataSet, and

  3. compiles DataSetFormula to get Expression.

However, it doesn't need to do any of that is PHAST-style interpolation is used. See TPhastInterpolationValues.

Parameters
Compiler
is the correct TRbwParser to use with DataSet.
DataSetFormula
is the formula that will be used to assign values to DataSet.
Expression
is the TExpression that will be used to assign values to DataSet.
DataSet
is the TDataArray to which values will be assigned.
OtherData
can be used to pass other data to InitializeExpression. It is an TInterpValuesItem
Protected procedure InitializeVariables(const UsedVariables: TStringList; const DataSet: TDataArray; const Expression: TExpression; const Compiler: TRbwParser); virtual;

InitializeVariables fills UsedVariables with the names of the variables use by Expression. It initializes the TDataArrays associated with those variables.

Protected function IntersectAnnotation(const DataSetFormula: string; const OtherData: TObject): string;

IntersectAnnotation provides a string that can be used in annotations to indicate that the value of a cell or element has been set by virtue of being intersected by a TScreenObject and how the value at that location was determined.

Protected function Intersection(const Point1, Point2: TPoint2D; StartIndex: Integer; out IntersectPoint: TPoint2D): TIntersectResult;

Intersection is used when determining whether adding a point to a TScreenObject will cause it to intersect itself. Point1 and Point2 define a line segment. IntersectPoint is the point of intersection (if one exists) between the last section of TScreenObject and the line segment. Intersection returns True if the line segment intersects the TScreenObject.

Protected function IsBoundaryTimeDataSetUsed(const DataSet: TDataArray; out OtherData: TObject): boolean;

IsBoundaryTimeDataSetUsed returns True if DataSet is specified by a boundary condition and, if so, sets OtherData to the relevant TCustomPhastBoundaryCondition. if IsBoundaryTimeDataSetUsed returns False, OtherData is set to nil.

Protected procedure Loaded; override;
 
Protected procedure OtherIndex(const LayerOrRow, RowOrColumn: integer; out First, Last: integer; const DataSet: TDataArray);

The purpose of OtherIndex is to get First and Last. They are the indices of the first and last layer, row, or column perpendicular to the plain of TViewDirection that are enclosed or intersected by the TScreenObject.

In commented-out code, First and Last and changed to frmGoPhast.PhastGrid.LayerCount for river data sets. It has been commented-out because it messes up the display of the river data on the status bar.

It would be good to find a way around this problem.

Protected procedure RotatePoints(AModel: TBaseModel; out RotatedPoints: TEdgePointArray; out TempMinX, TempMinY, TempMaxX, TempMaxY: double);

RotatePoints sets RotatedPoints to be Points rotated to the grid coordinate system. TempMinX, TempMinY, TempMaxX, TempMaxY are set to the minimum and maximum X and Y coordinates of any of the points in the TScreenObject in the Grid coordinate system.

Protected procedure SetElevationFormula(NewFormula: string); virtual;

See ElevationFormula. SetElevationFormula makes changes in the TObservers as required.

Protected procedure SetGeometryUpToDate; virtual;

SetGeometryUpToDate sets UpToDate to true as well as FElevSubscription, FTopElevSubscription, and FBottomElevSubscription.

Protected procedure SetHigherElevationFormula(NewFormula: string); virtual;

See HigherElevationFormula. SetHigherElevationFormula makes changes in the TObservers as required.

Protected procedure SetLowerElevationFormula(NewFormula: string); virtual;

See LowerElevationFormula. SetLowerElevationFormula makes changes in the TObservers as required.

Protected procedure SetName(const Value: TComponentName); override;

See Name.

Protected procedure SetUpToDate(const Value: boolean); override;

SetUpToDate calls inherited. Then if Value is True,

Protected procedure SetViewDirection(const Value: TViewDirection); virtual;

See ViewDirection.

Protected procedure UpdateVariables(const UsedVariables: TStringList; const DataSet: TDataArray; Layer, Row, Column: integer; const Compiler: TRbwParser);

UpdateVariables gets the variables names from UsedVariables and gets the corresponding TCustomValues from Compiler. It sets each TCustomValue to have the value of its corresponding data set at the location specified by Layer, Row, Column. However, if the corresponding TDataArray, is a 2D data set, either Layer, Row, or Column is changed to zero.

Protected procedure UpdateMixtureExpression;

UpdateMixtureExpression calls TCustomPhastBoundary.UpdateMixtureExpression for FluxBoundary, LeakyBoundary, RiverBoundary, SpecifiedHeadBoundary, and WellBoundary.

Protected procedure UpdateFormulaExpression;
 
Public function CoordinateCaption: string;
 
Public function HigherCoordinateCaption: string;
 
Public function LowerCoordinateCaption: string;
 
Public function StoreModflowHfbBoundary: Boolean;
 
Public function StoreModflowMnw2Boundary: Boolean;
 
Public function StoreMt3dmsConcBoundary: Boolean;
 
Public function StoreMt3dmsTransObservations: Boolean;
 
Public function StoreModflowUzfBoundary: Boolean;
 
Public function StoreModflowHeadObservations: Boolean;
 
Public function StoreModflowSfrBoundary: Boolean;
 
Public function StoreModflowRchBoundary: Boolean;
 
Public function StoreModflowEvtBoundary: Boolean;
 
Public function StoreModflowEtsBoundary: Boolean;
 
Public function StoreModflowResBoundary: Boolean;
 
Public function StoreModflowLakBoundary: Boolean;
 
Public function StoreModflowChdBoundary: Boolean;
 
Public function StoreModflowDrnBoundary: Boolean;
 
Public function StoreModflowDrtBoundary: Boolean;
 
Public function StoreModflowGhbBoundary: Boolean;
 
Public function StoreModflowRivBoundary: Boolean;
 
Public function StoreModflowWellBoundary: Boolean;
 
Public function StoreWell: boolean;

StoreWell determines whether WellBoundary is stored.

Public function StoreFlux: boolean;

StoreFlux determines whether FluxBoundary is stored.

Public function StoreRiver: boolean;

StoreRiver determines whether RiverBoundary is stored.

Public function StoreSpecifiedHead: boolean;

StoreSpecifiedHead determines whether SpecifiedHeadBoundary is stored.

Public function StoreLeaky: boolean;

StoreLeaky determines whether LeakyBoundary is stored.

Public function IsHigher3DElevationAssigned(Col, Row, Layer: integer; Model: TBaseModel): boolean;
 
Public function IsLower3DElevationAssigned(Col, Row, Layer: integer; Model: TBaseModel): boolean;
 
Public procedure GetCellsToAssign(const Grid: TCustomModelGrid; const DataSetFunction: string; OtherData: TObject; const DataSet: TDataArray; CellList: TCellAssignmentList; AssignmentLocation: TAssignmentLocation; AModel: TBaseModel); overload;
 
Public procedure GetCellsToAssign(const Mesh: TSutraMesh3D; const DataSetFunction: string; OtherData: TObject; const DataSet: TDataArray; CellList: TCellAssignmentList; AssignmentLocation: TAssignmentLocation; AModel: TBaseModel); overload;
 
Public procedure UpdateUzfGage1and2;
 
Public procedure UpdateUzfGage3;
 
Public procedure CacheSegments;
 
Public procedure BeginUpdate;
 
Public procedure EndUpdate;
 
Public procedure GetModpathCellList(CellList: TCellAssignmentList; AModel: TBaseModel);
 
Public function Delegate: TCustomScreenObjectDelegate;
 
Public procedure AssignNumericValueToDataSet(const Grid: TCustomModelGrid; const DataSet: TDataArray; Value: double; AModel: TBaseModel);
 
Public procedure CreateChdBoundary;
 
Public procedure CreateDrnBoundary;
 
Public procedure CreateDrtBoundary;
 
Public procedure CreateEtsBoundary;
 
Public procedure CreateEvtBoundary;
 
Public procedure CreateGhbBoundary;
 
Public procedure CreateLakBoundary;
 
Public procedure CreateRchBoundary;
 
Public procedure CreateResBoundary;
 
Public procedure CreateRivBoundary;
 
Public procedure CreateSfrBoundary;
 
Public procedure CreateWelBoundary;
 
Public procedure CreateUzfBoundary;
 
Public procedure CreateHfbBoundary;
 
Public procedure CreateHeadObservations;
 
Public procedure CreateGagBoundary;
 
Public procedure CreateMnw2Boundary;
 
Public procedure CreateMt3dmsConcBoundary;
 
Public procedure CreateMt3dmsTransObservations;
 
Public function ModflowDataSetUsed(DataArray: TDataArray; AModel: TBaseModel): boolean;
 
Public procedure InvalidateSegments;
 
Public procedure MovePointsWhenCreatingScreenObjectByDeletingEdge( DeletedEdge: integer; ExistingObject: TScreenObject);
 
Public function AllSectionsClosed: boolean;
 
Public Procedure DeleteEdge(EdgeToDelete: integer);
 
Public procedure ResetBoundaryMixtureSubscriptions;

ResetBoundaryMixtureSubscriptions calls TCustomPhastBoundaryCondition.ResetMixtureSubscription for each solution boundary condition.

Public procedure ResetMixtureSubscriptions;

ResetMixtureSubscriptions sets UpToDate to True for all members of FDataSetMixtureSubscriptions

Public procedure MovePoints(var Dest: TRealPointArray);
 
Public procedure MoveToPoints(const SourcePoints: TRealPointArray);
 
Public procedure MoveSelectedPoints(var Dest: TBooleanDynArray);
 
Public procedure MoveToSelectedPoints(var Source: TBooleanDynArray);
 
Public function AddBoundaryDataSet(const DataSet: TDataArray): integer;

BoundaryDataSets are data sets associated with a boundary condition whose values are set by the object. An example is the hydraulic conductivity of a leaky boundary. AddBoundaryDataSet adds a boundary data set to BoundaryDataSets. The position of the boundary data sets in BoundaryDataSets is the result of the function. This result may then be used to set a formula for the data set in BoundaryDataSetFormulas.

See also
AddDataSet
DataSets are data sets whose values are set by the object.
DeleteBoundaryDataSet
DeleteBoundaryDataSet removes a TDataArray from BoundaryDataSets and the corresponding formula from BoundaryDataSetFormulas.
Public function AddDataSet(const DataSet: TDataArray): Integer; virtual;

DataSets are data sets whose values are set by the object. An Example is Kx. AddDataSet adds a data set to DataSets. The position of the data sets in DataSets is the result of the function. This result may then be used to set a formula for the data set in DataSetFormulas.

AddDataSet also does what it takes to ensure that DataSet will be notified when there is a change to this TScreenObject.

See also
AddBoundaryDataSet
BoundaryDataSets are data sets associated with a boundary condition whose values are set by the object.
DeleteDataSet
DeleteDataSet deletes the TDataArray specified by Index from the list of TDataArrays affected by this TScreenObject.
Public procedure AddPoint(const APoint: TPoint2D; NewPart: boolean);

AddPoint adds a point to Points. If CheckPoint is true, each point is checked for validity when added. A point is invalid if it causes the TScreenObject to cross itself.

Public procedure Assign(Source: TPersistent); override;

In Assign, if Source is a TScreenObject, its properties are copied into the current TScreenObject.

Public procedure AssignValuesToModflowDataSet(const Grid: TCustomModelGrid; const DataSet: TDataArray; const Formula: string; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment; AssignmentLocation: TAssignmentLocation = alAll);
 
Public procedure AssignValuesToSutraDataSet(const Mesh: TSutraMesh3D; const DataSet: TDataArray; const Formula: string; AModel: TBaseModel);
 
Public procedure AssignValuesToDataSet(const DataSet: TDataArray; AModel: TBaseModel; UseLgrEdgeCells: TLgrCellTreatment); virtual;

AssignValuesToDataSet is a key method of TScreenObject. It is used to assign values to a data set based on the function for that data set. AssignValuesToDataSet first checks whether it should set the values DataSet and if so, does. It calls one of the protected procedures AssignValuesToTopDataSet, AssignValuesToFrontDataSet, or AssignValuesToSideDataSet to do most of the work.

Public function BoundaryDataSetCount: integer;

BoundaryDataSetCount is the number of boundary BoundaryDataSets affected by the TScreenObject.

Public function BoundaryTypeUsed: TPhastBoundaryTypes;

BoundaryTypeUsed returns True if this TScreenObject affects a boundary condition.

Public procedure Changed(Sender: TObject);

Changed is an event handler for TObserver.OnUpToDateSet for FElevSubscription, FTopElevSubscription, and FBottomElevSubscription. If Sender ( = TObserver) isn't up to date, the TScreenObject is invalidated. (See Invalidate.)

Public procedure ClearBoundaryDataSets; virtual;

ClearBoundaryDataSets removes all the members from BoundaryDataSets.

Public procedure ClearDataSets; virtual;

ClearDataSets clears InterpValues. ClearDataSets also unsubscribes to everything in FDataSetMixtureSubscriptions and clears FDataSetMixtureSubscriptions. ClearDataSets removes all the members from DataSets. This involves unsubscribing to all the subscriptions related to all members of DataSets

Public procedure ClearPoints;

ClearPoints removes all the members from Points.

Public procedure ClearSelectedVertices;

If any individual vertices in an object are selected, ClearSelectedVertices unselects them.

Public function Closed: boolean;

Closed returns true if an object is closed.

Public procedure CopyPoints(var Destination: TRealPointArray; const Position, Start: integer; var Count: integer);

CopyPoints copies TPoint2Ds from Points into Destination. Position is the location in Destination where the first of the Points will be copied. Start is the location of the first point in Points to be copied. Count is the number of points to be copied. However, the number of points actually copied may be less than Count if there are not enough points in Count

Public constructor Create(AnOwner: TComponent); override;

Create creates a TScreenObject.

Public constructor CreateWithViewDirection(const Model: TBaseModel; const AViewDirection: TViewDirection; out UndoCreateScreenObject: TCustomUndo; const UndoAble: boolean = True); virtual;

CreateWithViewDirection creates a TScreenObject, assigns it a name and if UndoAble is true, creates a TUndoCreateScreenObject that may be used to undo or redo creation of the TScreenObject.

Public procedure DeleteBoundaryDataSet(const Index: Integer);

DeleteBoundaryDataSet removes a TDataArray from BoundaryDataSets and the corresponding formula from BoundaryDataSetFormulas.

See also
AddBoundaryDataSet
BoundaryDataSets are data sets associated with a boundary condition whose values are set by the object.
DeleteDataSet
DeleteDataSet deletes the TDataArray specified by Index from the list of TDataArrays affected by this TScreenObject.
Public procedure DeleteDataSet(const Index: Integer); virtual;

DeleteDataSet deletes the TDataArray specified by Index from the list of TDataArrays affected by this TScreenObject.

DeleteDataSet removes a TDataArray from DataSets and the corresponding formula from DataSetFormulas.

See also
AddDataSet
DataSets are data sets whose values are set by the object.
DeleteBoundaryDataSet
DeleteBoundaryDataSet removes a TDataArray from BoundaryDataSets and the corresponding formula from BoundaryDataSetFormulas.
Public procedure DeletePoint(const Index: Integer);

DeletePoint removes the point at Index from Points. It does not check that removing that point will still keep the Points all valid. For example, it does not check that the screen object does not cross itself after deleting a point.

Public destructor Destroy; override;

Destroy destroys the TScreenObject. Destroy should not be called directly. Call Free instead.

Public function DistanceToScreenObject(const Location: TPoint2D; out ClosestLocation: TPoint2D; const Anisotropy: real; out SectionIndex: integer): real;

DistanceToScreenObject returns the distance from Location to the closest point on the TScreenObject. ClosestLocation will be set to that location. Anisotropy is taken into account when computing the distance.

Public procedure Draw(Const Bitmap32: TBitmap32; const Direction: TViewDirection; const DrawAsSelected: Boolean = False); virtual;

Draw is the primary routine for drawing a TScreenObject. Bitmap32 is the TBitmap32 on which the TScreenObject should be drawn. Direction is the direction from which the TScreenObject will be viewed. DrawAsSelected indicates whether the screen object should be drawn as a selected TScreenObject. (See DrawSelected.)

Public procedure Draw3D;
 
Public procedure DrawSelected( const BitMap32: TBitmap32; const Direction: TViewDirection);

If a TScreenObject is Selected, DrawSelected calls Draw with DrawAsSelected = True. DrawSelected is used for drawing just the selected TScreenObject so that the entire view of the model doesn't need to be redrawn when just the selected screen objects have changed.

Public function GetBoundaryCollection(const TimeList: TPhastTimeList): TCustomPhastBoundaryCollection;

GetBoundaryCollection returns the TCustomPhastBoundaryCollection one of whose TPhastTimeLists is TimeList.

Public function IndexOfBoundaryDataSet(const DataSet: TDataArray): integer;

IndexOfBoundaryDataSet returns the position of DataSet in BoundaryDataSets.

Public function IndexOfDataSet(const DataSet: TDataArray): integer;

IndexOfDataSet returns the position of DataSet in DataSets.

Public function IndexOfPoint(const APoint: TPoint2D): integer;

IndexOfPoint returns the first position of APoint in Points. An exact match is required.

Public procedure InsertBoundaryDataSet(const Index: Integer; const DataSet: TDataArray); virtual;

InsertBoundaryDataSet inserts DataSet in BoundaryDataSets at Index if it is not already in BoundaryDataSets.

Public procedure InsertPoint(const Index: Integer; const APoint: TPoint2D);

InsertPoint inserts APoint in Points at Index. It does not check that the point that is inserted will leave the TScreenObject in a valid state. For instance, the TScreenObject might cross itself after InsertPoint.

Public procedure Invalidate;

Invalidate is called when the TScreenObject has been changed. Everything that depends on the TScreenObject gets notified of the change

Public procedure InvalidateCoordinates;

InvalidateCoordinates is called when the CanvasCoordinates need to be recalculated. The recalculation does not occur until the next time the CanvasCoordinates are needed.

Public function IsPointInside(const X, Y: real; out SectionIndex: integer): boolean; overload;

IsPointInside returns true if (X, Y) is inside the TScreenObject.

Public function IsPointInside(const APoint: TPoint2D; out SectionIndex: integer): boolean; overload;

IsPointInside returns true if APoint is inside the TScreenObject.

Public function Methods: string;

Methods returns the methods that the screen object uses to set the properties of TDataArrays.

Public function ObjectIntersectArea(const Col, Row, Layer: integer; AModel: TBaseModel): real;

ObjectIntersectArea returns the 2D area of intersection between an object and an individual cell or element.

Public function ObjectIntersectLength(const Col, Row, Layer: integer; AModel: TBaseModel): real;

ObjectIntersectLength returns the 2D length of intersection between an object and an individual cell or element.

Public function ObjectSectionIntersectLength(const Col, Row, Layer, Section: integer; AModel: TBaseModel): real;
 
Public function RemoveDataSet(const DataSet: TDataArray): Integer; virtual;

RemoveDataSet removes DataSet from either DataSets or BoundaryDataSets.

Public procedure ResetBoundaryDataSetSubscriptions;

ResetBoundaryDataSetSubscriptions sets the UpToDate property of all subscriptions related to members of BoundaryDataSets to True;

Public procedure ResetDataSetSubscriptions;

ResetDataSetSubscriptions sets the UpToDate property of all subscriptions related to members of DataSets to True;

Public procedure ResetSubscriptions;

ResetSubscriptions calls

Public function ScreenObjectArea: real;

ScreenObjectArea is the area of the object. The value is stored and only recalculated when it is no longer up-to-date.

Public function ScreenObjectLength: real;

ScreenObjectLength is the 2D length of the object. Its value is stored and is only recalculated when it is no longer up-to-date.

Public function Select(const XScreenCoordinate, YScreenCoordinate: integer): boolean;

If the mouse coordinates (X, Y) are inside the TScreenObject, Select returns True. However, the Selected property is not changed by calling Select.

Public function SelectEdge(const X, Y: integer): integer;

SelectEdge returns -1 if the mouse coordinates X,Y are not on any edge of the TScreenObject. Otherwise it returns the index of the edge on which the point X,Y lies.

Public procedure UpdateScreenObjectWithName(const AName: string; const AViewDirection: TViewDirection; out UndoCreateScreenObject: TCustomUndo; const UndoAble: boolean = True); reintroduce; virtual;

UpdateScreenObjectWithName sets the Name and ViewDirection of the TScreenObject. If UndoAble is true, it also creates a TUndoCreateScreenObject. It sets the elevation formulas to default values.

Public class function ValidName(const OriginalName: string): string;

ValidName converts OriginalName to a name that is valid as a name for a TScreenObject. It does not ensure that the resulting name is unique.

Public function IsAnyPointCloser(const Location: TPoint2D; var Distance: real; out ClosestLocation: TPoint2D; var SectionIndex: integer; const Anisotropy: real): boolean;

IsAnyPointCloser tests whether any point in the TScreenObject is closer to Location than Distance. If so, ClosestLocation and Distance are updated to reflect the values for the TScreenObject. Distance and ClosestLocation are changed if and only if IsAnyPointCloser returns True.

Public function GetMfBoundary(ParamType: TParameterType): TModflowParamBoundary;
 
Public function SingleCellLocation(AModel: TBaseModel): TCellLocation;

SingleCellLocation returns a MODFLOW cell where TScreenObject is located. The cell numbers in the TCellLocation will be 1 based. If the TCellLocation.Layer = 0, the SingleCellLocation does not intersect the MODFLOW grid.

Public procedure UpdateModflowTimes(ModflowTimes: TRealList; StartTestTime, EndTestTime: double; var StartRangeExtended, EndRangeExtended: boolean);
 
Public procedure UpdateImportedValues(DataArray: TDataArray);
 
Public procedure ReverseDirection;
 
Public function RestoreCellsFromCache(CellList: TCellAssignmentList; EvalAt: TEvaluatedAt; Orientation: TDataSetOrientation; AssignmentLocation: TAssignmentLocation; const EncloseAnnotation, IntersectAnnotation: string; AModel: TBaseModel): boolean;
 
Public procedure UpdateCellCache(CellList: TCellAssignmentList; EvalAt: TEvaluatedAt; Orientation: TDataSetOrientation; AssignmentLocation: TAssignmentLocation; AModel: TBaseModel);
 
Public procedure CreateHydmodData;
 
Public procedure CacheValueArrays;
 
Public procedure RemoveModelLink(AModel: TBaseModel);
 
Public procedure InvalidateCachedCells;
 

Properties

Private property SubPolygonCount: integer read GetSubPolygonCount;
 
Private property SubPolygons[Index:integer]: TSubPolygon read GetSubPolygon;
 
Protected property EdgePoints[constIndex:integer]: TEdgePoint read GetEdgePoints write SetEdgePoints;

EdgePoints provides a way of accessing Points using TEdgePoints instead of TPoint2Ds.

Protected property MixtureDataSetFormula[constIndex:integer]: string read GetMixtureDataSetFormula write SetMixtureDataSetFormula;

MixtureDataSetFormula is used to access the formula for the Mixture specified by Index when PHAST style interpolation is used with a mixture. See TPhastInterpolationValues.

Public property ModflowBoundaries: TModflowBoundaries read GetModflowBoundaries;
 
Public property Higher3DElevations[AModel:TBaseModel]: T3DSparseRealArray read GetHigher3DElevations;

Higher3DElevations contains a set of higher elevations for points that could be in the TScreenObject. It is indexed by [Layer, Row, Column].

Public property Lower3DElevations[AModel:TBaseModel]: T3DSparseRealArray read GetLower3DElevations;

Lower3DElevations contains a set of lower elevations for points that could be in the TScreenObject. It is indexed by [Layer, Row, Column].

Public property FullObjectIntersectLength: Boolean read FFullObjectIntersectLength write FFullObjectIntersectLength;
 
Public property ElevSubscription: TObserver read GetElevSubscription;
 
Public property TopElevSubscription: TObserver read GetTopElevSubscription;
 
Public property BottomElevSubscription: TObserver read GetBottomElevSubscription;
 
Public property SectionCount: integer read GetSectionCount;
 
Public property SectionStart[constIndex:integer]: integer read GetSectionStart;
 
Public property SectionEnd[constIndex:integer]: integer read GetSectionEnd;
 
Public property SectionClosed[constIndex:integer]: boolean read GetSectionClosed;
 
Public property SectionLength[constIndex:integer]: integer read GetSectionLength;
 
Public property NeedToResetSelectedVertexCount: boolean read FNeedToResetSelectedVertexCount write FNeedToResetSelectedVertexCount;

NeedToResetSelectedVertexCount indicates whether or not SelectedVertexCount is up-to-date. If it isn't, it will be recalculated when needed.

Public property BottomElevation: real read FBottomElevation;
 
Public property TopElevation: real read FTopElevation;
 
Public property BoundaryDataSets[constIndex:integer]: TDataArray read GetBoundaryDataSets write SetBoundaryDataSets;

BoundaryDataSets are data sets associated with a boundary condition whose values are set by the object. An example is the hydraulic conductivity of a leaky boundary.

See also
AddBoundaryDataSet
BoundaryDataSets are data sets associated with a boundary condition whose values are set by the object.
BoundaryDataSetFormulas
BoundaryDataSetFormulas are the formulas associated with each member of BoundaryDataSets.
IndexOfBoundaryDataSet
IndexOfBoundaryDataSet returns the position of DataSet in BoundaryDataSets.
InsertBoundaryDataSet
InsertBoundaryDataSet inserts DataSet in BoundaryDataSets at Index if it is not already in BoundaryDataSets.
RemoveDataSet
RemoveDataSet removes DataSet from either DataSets or BoundaryDataSets.
Public property BoundaryDataSetFormulas[constIndex:integer]: string read GetBoundaryDataSetFormulas write SetBoundaryDataSetFormulas;

BoundaryDataSetFormulas are the formulas associated with each member of BoundaryDataSets.

Public property CanInvalidateModel: boolean read FCanInvalidateModel write SetCanInvalidateModel;
 
Public property CanvasCoordinates: TPointArray read GetCanvasCoordinates;

CanvasCoordinates is an array of TPoints that represent the object. These coordinates are recalculate as needed when the magnification or view of the model changes. For example, panning causes them to be recalculated.

Public property Capacity: integer read FCapacity write SetCapacity;

Capacity is the number of points that the TScreenObject can hold without resizing the array that holds them.

Public property Count: integer read GetCount write SetCount;

Count is the number of vertices in an object. Normally setting Count to a value larger than the current value means that new vertices will be written into the FPoints array by some mechanism other than the AddPoint method. In such cases, it is important to make sure that the added vertices are valid.

Public property DataSetCapacity: integer read GetDataSetCapacity write SetDataSetCapacity;

DataSetCapacity is the number of TDataArrays (and their associated formulas) that can be held without increasing the size of the TList that holds them. See DataSets.

Public property DataSetCount: integer read GetDataSetCount;

DataSetCount is the number of TDataArrays (and their associated formulas) whose properties will be set by the TScreenObject. See DataSets.

Public property DataSets[constIndex:integer]: TDataArray read GetDataSets write SetDataSets;

DataSets accesses the TDataArrays whose values will be set by the TScreenObject. The number of members in DataSets is DataSetCount. The number of TDataArrays that can be held in DataSets is DataSetCapacity.

See also
AddDataSet
DataSets are data sets whose values are set by the object.
DataSetFormulas
DataSetFormulas contains the formulas used to set the values of the corresponding member of DataSets.
IndexOfDataSet
IndexOfDataSet returns the position of DataSet in DataSets.
RemoveDataSet
RemoveDataSet removes DataSet from either DataSets or BoundaryDataSets.
Public property DataSetFormulas[constIndex:integer]: string read GetDataSetFormulas write SetDataSetFormulas;

DataSetFormulas contains the formulas used to set the values of the corresponding member of DataSets.

Public property Deleted: boolean read FDeleted write SetDeleted;

Deleted indicates whether or not the user has deleted the TScreenObject. Deleting a screen object does not cause it to be destroyed. It is merely put in a state where it is not displayed and does not affect the values of any TDataArray. This is accomplished by exiting immediately from Draw and AssignValuesToDataSet if Deleted is true.

Public property MaxX: real read GetMaxX;

MaxX is the largest X coordinate of any of the points in Points.

Public property MaxY: real read GetMaxY;

MaxY is the largest Y coordinate of any of the points in Points.

Public property MinX: real read GetMinX;

MinX is the smallest X coordinate of any of the points in Points.

Public property MinY: real read GetMinY;

MinY is the smallest Y coordinate of any of the points in Points.

Public property Model: TBaseModel read FModel;

Model is nil or the TPhastModel that owns this TScreenObject.

Public property Points[constIndex:integer]: TPoint2D read GetPoints write SetPoints;

Points gives the real-world coordinates of the vertices of the TScreenObject. For a TScreenObject whose ViewDirection = vdTop, Points gives the X and Y coordinates of the TScreenObject. For a TScreenObject whose ViewDirection = vdFront, Points gives the X and Z coordinates of the TScreenObject (with the Y of each TPoint2D representing the Z coordinate). For a TScreenObject whose ViewDirection = vdSide, Points gives the Y and Z coordinates of the TScreenObject (with the X of each TPoint2D representing the Z coordinate).

See also
SelectedVertices
For each member of Points, SelectedVertices tells whether or not that vertex is selected.
Public property Segments[AModel:TBaseModel]: TCellElementSegmentList read GetSegments;

Segments is a list of the cell or element segments of the object. Each segment is the intersection of one segment of the object with an individual cell or element in the grid. EvaluatedAt determines whether the segments in Segments is a cell segment or an element segment.

Public property SelectedVertexCount: integer read GetSelectedVertexCount;

SelectedVertexCount tells how many points in Points are selected.

Public property SelectedVertices[constIndex:integer]: boolean read GetSelectedVertices write SetSelectedVertices;

For each member of Points, SelectedVertices tells whether or not that vertex is selected.

Public property SelectLines: TLines read GetSelectLines;

SelectLines is a representation of the TScreenObject in canvas coordinates. It is used when determining whether a "lasso" drawn by the user intersects the TScreenObject.

Public property CurrentValues: TValueArrayStorage read FCurrentValues;
 
Public property ChildModel: TBaseModel read GetChildModel write SetChildModel;
 
Public property SutraAngle: Double read GetSutraAngle write SetSutraAngle;

SutraAngle is measured in radians.

Published property ChildModelDiscretization: integer read FChildModelDiscretization write FChildModelDiscretization stored False;

ChildModelDiscretization is deprecated.

Published property CellSize: real read FCellSize write SetCellSize;

If CellSizeUsed is true, CellSize is the size of the cells to be created in the vicinity of the object.

Published property CellSizeUsed: boolean read FCellSizeUsed write SetCellSizeUsed;

During automatic generation of a grid, any objects for which CellSizeUsed is true will be used to set the cell size of the grid.

Published property ColorLine: boolean read FColorLine write SetColorLine;

ColorLine determines whether or not the line outlining the object will be drawn in color. See LineColor.

Published property ElevationCount: TElevationCount read FElevationCount write SetElevationCount;

ElevationCount indicates the number of associated elevations of the TScreenObject. See TElevationCount.

Published property ElevationFormula: string read GetElevationFormula write SetElevationFormula;

If ElevationCount = ecOne, ElevationFormula is the formula used to define the position of the object in the dimension perpendicular to the plane of the ViewDirection.

Published property ElevationFunction: string read GetElevationFormula write SetElevationFormula stored False;

ElevationFunction is only used for backwards compatibility. See ElevationFormula.

Published property EvaluatedAt: TEvaluatedAt read FEvaluatedAt write SetEvaluatedAt;

EvaluatedAt determines whether a data set is evaluated at nodes or cell centers. This also controls which data sets it can set the values of. See TEvaluatedAt.

Published property FillColor: TColor read GetFillColor write SetFillColor;

FillColor is the color used to draw the interior of objects. It only has an effect for closed objects.

See also
FillScreenObject
FillScreenObject determines whether the interior of an object is drawn in color.
LineColor
LineColor is the color used to draw the line defining the object.
Published property FillScreenObject: boolean read FFillScreenObject write SetFillScreenObject;

FillScreenObject determines whether the interior of an object is drawn in color. It only has an effect for closed objects. See FillColor.

Published property HigherElevationFormula: string read GetHigherElevationFormula write SetHigherElevationFormula;

If ElevationCount = ecTwo, HigherElevationFormula is the formula used to define the higher position of the object in the dimension perpendicular to the plane of the ViewDirection.

Published property HigherElevationFunction: string read GetHigherElevationFormula write SetHigherElevationFormula stored False;

HigherElevationFunction is only used for backwards compatibility. See HigherElevationFormula.

Published property LineColor: TColor read GetLineColor write SetLineColor;

LineColor is the color used to draw the line defining the object.

See also
ColorLine
ColorLine determines whether or not the line outlining the object will be drawn in color.
FillColor
FillColor is the color used to draw the interior of objects.
Published property LowerElevationFormula: string read GetLowerElevationFormula write SetLowerElevationFormula;

If ElevationCount = ecTwo, LowerElevationFormula is the formula used to define the lower position of the object in the dimension perpendicular to the plane of the ViewDirection.

Published property LowerElevationFunction: string read GetLowerElevationFormula write SetLowerElevationFormula stored False;

LowerElevationFunction is only used for backwards compatibility. See LowerElevationFormula.

Published property Selected: boolean read FSelected write SetSelected;

Selected indicates whether the object is currently selected or not.

Published property SetValuesByInterpolation: boolean read FSetValuesByInterpolation write Set_SetValuesByInterpolation;

If SetValuesByInterpolation is true, the formula of the object for a particular data set will set the values of elements or nodes in the data according to the algorithm defined by the interpolator for the data set.

Published property SetValuesOfEnclosedCells: boolean read Get_SetValuesOfEnclosedCells write Set_SetValuesOfEnclosedCells;

If SetValuesOfEnclosedCells, the formula of the object for a particular data set will set the values of all elements or nodes in the data set that are located inside the object. An object must be closed for this to have any effect.

Published property SetValuesOfIntersectedCells: boolean read FSetValuesOfIntersectedCells write Set_SetValuesOfIntersectedCells;

If SetValuesOfIntersectedCells is true, the formula of the object for a particular data set will set the values of all elements or nodes in the data set that are intersected by the object.

Published property ViewDirection: TViewDirection read FViewDirection write SetViewDirection;

ViewDirection indicates the direction from which the object is to be viewed. setting also sets the Orientation of FluxBoundary and LeakyBoundary.

Published property Visible: boolean read FVisible write SetVisible default True;

Visible indicates whether the TScreenObject is visible to the user.

Published property FluxBoundary: TFluxBoundary read GetFluxBoundary write SetFluxBoundary stored StoreFlux;

FluxBoundary represents the flux boundary (if any) in this TScreenObject.

Published property InterpValues: TInterpValuesCollection read FInterpValues write SetInterpValues;

InterpValues represents the PHAST style interpolation parameters for the data sets affected by this TScreenObject. See TPhastInterpolationValues.

Published property LeakyBoundary: TLeakyBoundary read GetLeakyBoundary write SetLeakyBoundary stored StoreLeaky;

LeakyBoundary represents the leaky boundary (if any) in this TScreenObject.

Published property RiverBoundary: TRiverBoundary read GetRiverBoundary write SetRiverBoundary stored StoreRiver;

RiverBoundary represents the river boundary (if any) in this TScreenObject.

Published property SpecifiedHeadBoundary: TSpecifiedHeadBoundary read GetSpecifiedHeadBoundary write SetSpecifiedHeadBoundary stored StoreSpecifiedHead;

SpecifiedHeadBoundary represents the specified head boundary (if any) in this TScreenObject.

Published property WellBoundary: TWellBoundary read GetWellBoundary write SetWellBoundary stored StoreWell;

WellBoundary represents the well boundary (if any) in this TScreenObject.

Published property ModflowChdBoundary: TChdBoundary read GetModflowChdBoundary write SetModflowChdBoundary stored StoreModflowChdBoundary;

MODFLOW boundary conditions

Published property ModflowGhbBoundary: TGhbBoundary read GetModflowGhbBoundary write SetModflowGhbBoundary stored StoreModflowGhbBoundary;
 
Published property ModflowWellBoundary: TMfWellBoundary read GetModflowWellBoundary write SetModflowWellBoundary stored StoreModflowWellBoundary;
 
Published property ModflowRivBoundary: TRivBoundary read GetModflowRivBoundary write SetModflowRivBoundary stored StoreModflowRivBoundary;
 
Published property ModflowDrnBoundary: TDrnBoundary read GetModflowDrnBoundary write SetModflowDrnBoundary stored StoreModflowDrnBoundary;
 
Published property ModflowDrtBoundary: TDrtBoundary read GetModflowDrtBoundary write SetModflowDrtBoundary stored StoreModflowDrtBoundary;
 
Published property ModflowRchBoundary: TRchBoundary read GetModflowRchBoundary write SetModflowRchBoundary stored StoreModflowRchBoundary;
 
Published property ModflowEvtBoundary: TEvtBoundary read GetModflowEvtBoundary write SetModflowEvtBoundary stored StoreModflowEvtBoundary;
 
Published property ModflowEtsBoundary: TEtsBoundary read GetModflowEtsBoundary write SetModflowEtsBoundary stored StoreModflowEtsBoundary;
 
Published property ModflowResBoundary: TResBoundary read GetModflowResBoundary write SetModflowResBoundary stored StoreModflowResBoundary;
 
Published property ModflowLakBoundary: TLakBoundary read GetModflowLakBoundary write SetModflowLakBoundary stored StoreModflowLakBoundary;
 
Published property ModflowSfrBoundary: TSfrBoundary read GetModflowSfrBoundary write SetModflowSfrBoundary stored StoreModflowSfrBoundary;
 
Published property ModflowUzfBoundary: TUzfBoundary read GetModflowUzfBoundary write SetModflowUzfBoundary stored StoreModflowUzfBoundary;
 
Published property ModflowHeadObservations: THobBoundary read GetModflowHeadObservations write SetModflowHeadObservations stored StoreModflowHeadObservations;
 
Published property ModflowStreamGage: TStreamGage read GetModflowStreamGage write SetModflowStreamGage stored StoreModflowStreamGage;
 
Published property ModflowHfbBoundary: THfbBoundary read GetModflowHfbBoundary write SetModflowHfbBoundary stored StoreModflowHfbBoundary;

ModflowHfbBoundary is used only for backwards compatibility with versions of ModelMuse predating the initial release of ModelMuse.

Published property ModflowMnw2Boundary: TMnw2Boundary read GetModflowMnw2Boundary write SetModflowMnw2Boundary stored StoreModflowMnw2Boundary;
 
Published property Mt3dmsConcBoundary: TMt3dmsConcBoundary read GetMt3dmsConcBoundary write SetMt3dmsConcBoundary stored StoreMt3dmsConcBoundary;
 
Published property Mt3dmsTransObservations: TMt3dmsTransObservations read GetMt3dmsTransObservations write SetMt3dmsTransObservations stored StoreMt3dmsTransObservations;
 
Published property SectionStarts: TValueArrayStorage read GetSectionStarts write SetSectionStarts;

If a TScreenObject has N parts, SectionStarts will have N-1 integer values. Each i represents the index of a TPoint2D in Points. The starting points of each part of the TScreenObject except the first part will be represented in SectionStarts. (The starting point of the first part is implicitly 0. The values in SectionStarts must be sorted in ascending order. before they are used.

Published property ImportedSectionElevations: TValueArrayStorage read GetImportedSectionElevations write SetImportedSectionElevations stored StoreImportedSectionElevations;
 
Published property ImportedHigherSectionElevations: TValueArrayStorage read GetImportedHigherSectionElevations write SetImportedHigherSectionElevations stored StoreImportedHigherSectionElevations;
 
Published property ImportedLowerSectionElevations: TValueArrayStorage read GetImportedLowerSectionElevations write SetImportedLowerSectionElevations stored StoreImportedLowerSectionElevations;
 
Published property ImportedValues: TValueCollection read FImportedValues write SetImportedValues stored StoreImportedValues;
 
Published property IFACE: TIface read FIFACE write SetIFACE default iInternal;
 
Published property ModpathParticles: TParticleStorage read FModpathParticles write SetModpathParticles;
 
Published property Comment: string read FComment write SetComment;
 
Published property PointPositionValues: TPointPositionValues read GetPointPositionValues write SetPointPositionValues stored ShouldStorePointPositionValues;

PointPositionValues associates a value with specific vertices of the TScreenObject.

Published property ModflowHydmodData: THydmodData read GetModflowHydmodData write SetModflowHydmodData stored StoreModflowHydmodData;
 
Published property ChildModelName: string read GetChildModelName write SetChildModelName;
 
Published property UsedModels: TUsedWithModelCollection read FUsedModels write SetUsedModels stored True;
 
Published property PositionLocked: boolean read FPositionLocked write SetPositionLocked;
 
Published property StoredSutraAngle: TRealStorage read FStoredSutraAngle write SetStoredSutraAngle stored SaveSutraAngle;

StoredSutraAngle is measured in radians.

Published property SutraBoundaries: TSutraBoundaries read FSutraBoundaries write SetSutraBoundaries stored SaveSutraBoundaries;
 
Published property DuplicatesAllowed: Boolean read FDuplicatesAllowed write SetDuplicatesAllowed default True;

If DuplicatesAllowed is not True, then in GetCellsToAssign multiple cells at the same location are not allowed.


Generated by PasDoc 0.12.1 on 2013-05-13 15:42:02