//-----------------------------------------------------------------------
//
// Copyright (c) 2010 Deltares. All rights reserved.
//
// B.S.T.I.M. The
// tom.the@deltares.nl
// 05-10-2010
// Data definition for results export to csv
//-----------------------------------------------------------------------
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Xml.Serialization;
using Deltares.Geographic;
using Deltares.Geometry;
using Deltares.Geotechnics;
using Deltares.Geotechnics.Converter;
using Deltares.Geotechnics.GeotechnicalGeometry;
using Deltares.Standard;
using Deltares.Standard.EventPublisher;
using Deltares.Standard.Units;
using System;
using System.Collections.Generic;
using Deltares.Geotechnics.Soils;
using Deltares.Geotechnics.SurfaceLines;
using Deltares.Standard.Attributes;
namespace Deltares.Dam.Data
{
///
///1:"Id":invoer
///2:"Dijkringnaam":invoer
///3:"RDX":invoer
///4:"RDY":invoer
///5:"Scenarionummer (waterhoogtenummer, hoeveelste \"entry\" uit tabel; 1, 2, 3, 4 of 5)":invoer
///6:"Waterhoogtewaarde":invoer
///7:"Dijkhoogte bestaand":invoer
///8:"Huidige locatie teen":invoer
///9:"Dijktafelhoogte":invoer
///10:"1Dprofiel":invoer
///11:"Mechanisme":invoer
///12:"1Dprofiel kans":invoer
///13:"Berekende lokatie teen":uitvoer
///14:"Bermhoogte":uitvoer
///15:"Dijkbasis bestaand":invoer
///16:"Dijkbasis nieuw":uitvoer
///
public class CsvExportData : ICloneable, IVisibleEnabled, IGeographicPoint
{
private string id;
private string baseFileName;
private string calculationSubDir;
private Dike dike;
private AnalysisType analysisType;
private ProbabilisticType probabilisticType;
private DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculationSpecification;
private Scenario scenario;
private SoilProfile1D soilProfile;
private string soilGeometry2DName;
private double? safetyFactorFlowSlide;
private double? failureProbabilityPiping;
private double? localPipingExitPointX;
private SurfaceLine2 redesignedSurfaceLinePiping;
private double? safetyFactorStability;
private double? failureProbabilityStability;
private double? zone1SafetyFactorStability;
private double? localZone1EntryPointX;
private double? localZone1ExitPointX;
private double? zone2SafetyFactorStability;
private double? localZone2EntryPointX;
private double? localZone2ExitPointX;
private double? upliftFactor;
private double? heaveFactor;
private double? blighPipingFactor;
private double? blighHCritical;
private double? sellmeijer2ForcesPipingFactor;
private double? sellmeijer2ForcesHCritical;
private double? sellmeijer4ForcesPipingFactor;
private double? sellmeijer4ForcesHCritical;
private double? sellmeijerPipingFactor;
private double? sellmeijerHCritical;
private double? wti2017PipingFactor;
private double? wti2017HCritical;
private bool? isUplift;
private double? pl3MinUplift;
private double? pl3HeadAdjusted;
private double? pl3LocalLocationXMinUplift;
private double? pl4MinUplift;
private double? pl4HeadAdjusted;
private double? pl4LocalLocationXMinUplift;
private string nwoId;
private int nwoResultIndex;
private double? locationXrdStart;
private double? locationYrdStart;
private double? locationZrdStart;
private double? locationXrdEnd;
private double? locationYrdEnd;
private double? locationZrdEnd;
private CalculationResult calculationResult = CalculationResult.NoRun;
private string resultMessage = "";
private int numberOfIterations;
private ResultEvaluation resultEvaluation = ResultEvaluation.NotEvaluated;
private string notes = "";
private bool dirty = true;
private List points = new List();
private StabilityKernelType selectedStabilityKernelType = StabilityKernelType.DamClassic;
private SurfaceLine2 redesignedSurfaceLineStability;
public CsvExportData()
{
}
public CsvExportData(string id, Dike dike, DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculationSpecification, Scenario scenario, SoilProfile1D soilProfile,
string soilGeometry2DName, AnalysisType analysisType, int nwoResultIndex, ProbabilisticType probabilisticType)
{
this.id = id;
this.BaseFileName = "";
this.CalculationSubDir = "";
this.dike = dike;
this.damFailureMechanismeCalculationSpecification = damFailureMechanismeCalculationSpecification;
this.scenario = scenario;
this.soilProfile = soilProfile;
this.SoilGeometry2DName = soilGeometry2DName;
this.analysisType = analysisType;
this.failureProbabilityPiping = null;
this.redesignedSurfaceLinePiping = null;
this.safetyFactorStability = null;
this.failureProbabilityStability = null;
this.redesignedSurfaceLineStability = null;
this.zone1SafetyFactorStability = null;
this.LocalZone1EntryPointX = null;
this.LocalZone1ExitPointX = null;
this.zone2SafetyFactorStability = null;
this.LocalZone2EntryPointX = null;
this.LocalZone2ExitPointX = null;
this.blighPipingFactor = null;
this.blighHCritical = null;
this.sellmeijer2ForcesPipingFactor = null;
this.sellmeijer2ForcesHCritical = null;
this.sellmeijer4ForcesPipingFactor = null;
this.sellmeijer4ForcesHCritical = null;
this.sellmeijerPipingFactor = null;
this.sellmeijerHCritical = null;
this.wti2017PipingFactor = null;
this.wti2017HCritical = null;
this.isUplift = null;
this.pl3MinUplift = null;
this.pl3HeadAdjusted = null;
this.pl3LocalLocationXMinUplift = null;
this.pl4MinUplift = null;
this.pl4HeadAdjusted = null;
this.pl4LocalLocationXMinUplift = null;
this.nwoId = "";
this.nwoResultIndex = nwoResultIndex;
this.locationXrdStart = null;
this.locationXrdEnd = null;
this.locationYrdStart = null;
this.locationYrdEnd = null;
this.locationZrdStart = null;
this.locationZrdEnd = null;
this.dirty = true;
if (damFailureMechanismeCalculationSpecification != null)
{
this.probabilisticType = probabilisticType;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityInside:
case FailureMechanismSystemType.StabilityOutside:
if (analysisType == AnalysisType.AdaptNWO)
{
// an index of 0 can also indicate an error message. That has no futher data so check if there actualy is any.
if (scenario.NwoResults.Count > 0)
{
this.nwoId = scenario.NwoResults[nwoResultIndex].NwoId;
this.locationXrdStart = scenario.NwoResults[nwoResultIndex].LocationXrdStart;
this.locationYrdStart = scenario.NwoResults[nwoResultIndex].LocationYrdStart;
this.locationZrdStart = scenario.NwoResults[nwoResultIndex].LocationZrdStart;
this.locationXrdEnd = scenario.NwoResults[nwoResultIndex].LocationXrdEnd;
this.locationYrdEnd = scenario.NwoResults[nwoResultIndex].LocationYrdEnd;
this.locationZrdEnd = scenario.NwoResults[nwoResultIndex].LocationZrdEnd;
this.dirty = true;
this.BaseFileName = scenario.NwoResults[nwoResultIndex].MStabResults.CalculationName;
this.CalculationSubDir =
scenario.NwoResults[nwoResultIndex].MStabResults.CalculationSubDir;
this.numberOfIterations =
scenario.NwoResults[nwoResultIndex].MStabResults.IterationNumber;
this.safetyFactorStability = scenario.NwoResults[nwoResultIndex].MStabResults.zone1.safetyFactor;
this.zone1SafetyFactorStability = scenario.NwoResults[nwoResultIndex].MStabResults.zone1.safetyFactor;
this.LocalZone1EntryPointX = scenario.NwoResults[nwoResultIndex].MStabResults.zone1.entryPointXCoordinate;
this.LocalZone1ExitPointX = scenario.NwoResults[nwoResultIndex].MStabResults.zone1.exitPointXCoordinate;
if (scenario.NwoResults[nwoResultIndex].MStabResults.zone2 != null)
{
this.zone2SafetyFactorStability = scenario.NwoResults[nwoResultIndex].MStabResults.zone2.Value.safetyFactor;
this.LocalZone2EntryPointX = scenario.NwoResults[nwoResultIndex].MStabResults.zone2.Value.entryPointXCoordinate;
this.LocalZone2ExitPointX = scenario.NwoResults[nwoResultIndex].MStabResults.zone2.Value.exitPointXCoordinate;
}
}
}
else
{
MStabResults? mstabResults = scenario.GetMStabResults(this.SoilProfile, this.SoilGeometry2DName);
this.resultMessage = scenario.GetResultMessage(this.SoilProfile, this.SoilGeometry2DName);
calculationResult = DetermineStabilityCalculationResult(this.resultMessage, mstabResults);
if (mstabResults != null)
{
BaseFileName = mstabResults.Value.CalculationName;
CalculationSubDir = mstabResults.Value.CalculationSubDir;
numberOfIterations = mstabResults.Value.IterationNumber;
this.safetyFactorStability = mstabResults.Value.zone1.safetyFactor;
this.zone1SafetyFactorStability = mstabResults.Value.zone1.safetyFactor;
this.LocalZone1EntryPointX = mstabResults.Value.zone1.entryPointXCoordinate;
this.LocalZone1ExitPointX = mstabResults.Value.zone1.exitPointXCoordinate;
if (mstabResults.Value.zone2 != null)
{
this.zone2SafetyFactorStability = mstabResults.Value.zone2.Value.safetyFactor;
this.LocalZone2EntryPointX = mstabResults.Value.zone2.Value.entryPointXCoordinate;
this.LocalZone2ExitPointX = mstabResults.Value.zone2.Value.exitPointXCoordinate;
}
}
}
this.failureProbabilityStability = scenario.GetFailureProbabilityStability(this.SoilProfile, this.SoilGeometry2DName);
this.redesignedSurfaceLineStability = scenario.GetRedesignedSurfaceLine(this.SoilProfile, this.SoilGeometry2DName);
UpliftSituation? upliftSituation = scenario.GetStabilityUpliftSituation(this.SoilProfile, this.SoilGeometry2DName);
if (upliftSituation != null)
{
SetUpliftSituationResults(upliftSituation.Value);
}
break;
case FailureMechanismSystemType.Piping:
this.failureProbabilityPiping = scenario.GetFailureProbabilityPiping(this.SoilProfile, this.SoilGeometry2DName);
this.resultMessage = scenario.GetResultMessage(this.SoilProfile, this.SoilGeometry2DName);
this.redesignedSurfaceLinePiping = scenario.GetRedesignedSurfaceLine(this.SoilProfile, this.SoilGeometry2DName);
UpliftSituation? upliftSituationPiping = scenario.GetStabilityUpliftSituation(this.SoilProfile, this.SoilGeometry2DName);
if (upliftSituationPiping != null)
{
SetUpliftSituationResults(upliftSituationPiping.Value);
}
PipingResults? pipingResults = scenario.GetPipingResults(this.SoilProfile, this.SoilGeometry2DName);
if (pipingResults != null)
{
BaseFileName = pipingResults.Value.CalculationName;
CalculationSubDir = pipingResults.Value.CalculationSubDir;
this.blighPipingFactor = pipingResults.Value.BlighPipingFactor;
this.blighHCritical = pipingResults.Value.BlighHCritical;
this.sellmeijer2ForcesPipingFactor = pipingResults.Value.Sellmeijer2ForcesPipingFactor;
this.sellmeijer2ForcesHCritical = pipingResults.Value.Sellmeijer2ForcesHCritical;
this.sellmeijer4ForcesPipingFactor = pipingResults.Value.Sellmeijer4ForcesPipingFactor;
this.sellmeijer4ForcesHCritical = pipingResults.Value.Sellmeijer4ForcesHCritical;
this.sellmeijerPipingFactor = pipingResults.Value.SellmeijerPipingFactor;
this.sellmeijerHCritical = pipingResults.Value.SellmeijerHCritical;
this.wti2017PipingFactor = pipingResults.Value.Wti2017PipingFactor;
this.wti2017HCritical = pipingResults.Value.Wti2017HCritical;
this.localPipingExitPointX = pipingResults.Value.PipingExitPointX;
this.HeaveFactor = pipingResults.Value.HeaveFactor;
this.UpliftFactor = pipingResults.Value.UpliftFactor;
}
this.calculationResult = (this.PipingFactor == null && this.PipingFailureProbability == null) ? CalculationResult.RunFailed : CalculationResult.Succeeded;
break;
case FailureMechanismSystemType.FlowSlide:
this.safetyFactorFlowSlide = scenario.GetSafetyFactorFlowSlide(this.SoilProfile, this.SoilGeometry2DName);
break;
}
}
}
///
/// Determines the global point coordinates based on global surface line.
///
/// The local point.
/// The global surface line.
///
private GeometryPoint DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(GeometryPoint localPoint, SurfaceLine2 globalSurfaceLine)
{
CoordinateSystemConverter coordinateSystemConverter = new CoordinateSystemConverter();
coordinateSystemConverter.DefineGlobalXYZBasedOnLine(globalSurfaceLine.Geometry);
coordinateSystemConverter.ConvertLocalXZToGlobalXYZ(localPoint);
return localPoint;
}
///
/// Determines the stability calculation run result.
///
/// The result message.
/// The mstab results.
///
private CalculationResult DetermineStabilityCalculationResult(string message, MStabResults? mstabResults)
{
CalculationResult result;
if ((message != null) && this.resultMessage.Contains("FAIL"))
{
result = CalculationResult.UnexpectedError;
}
else
{
// If no failure and no results, then no run has been made
result = mstabResults != null ? CalculationResult.Succeeded : CalculationResult.NoRun;
}
return result;
}
///
/// Sets the uplift situation results.
///
/// The uplift situation.
private void SetUpliftSituationResults(UpliftSituation upliftSituation)
{
this.isUplift = upliftSituation.IsUplift;
if (upliftSituation.Pl3MinUplift < double.MaxValue)
{
this.pl3MinUplift = upliftSituation.Pl3MinUplift;
}
if (upliftSituation.Pl3HeadAdjusted < double.MaxValue)
{
this.pl3HeadAdjusted = upliftSituation.Pl3HeadAdjusted;
}
if (upliftSituation.Pl3LocationXMinUplift < double.MaxValue)
{
this.pl3LocalLocationXMinUplift = upliftSituation.Pl3LocationXMinUplift;
}
if (upliftSituation.Pl4MinUplift < double.MaxValue)
{
this.pl4MinUplift = upliftSituation.Pl4MinUplift;
}
if (upliftSituation.Pl4HeadAdjusted < double.MaxValue)
{
this.pl4HeadAdjusted = upliftSituation.Pl4HeadAdjusted;
}
if (upliftSituation.Pl4LocationXMinUplift < double.MaxValue)
{
this.pl4LocalLocationXMinUplift = upliftSituation.Pl4LocationXMinUplift;
}
}
[Browsable(false)]
public StabilityKernelType SelectedStabilityKernelType
{
get { return selectedStabilityKernelType; }
set { selectedStabilityKernelType = value; }
}
[Label("Number of iterations")]
[ReadOnly(true)]
public int NumberOfIterations
{
get { return numberOfIterations; }
set { numberOfIterations = value; }
}
[Browsable(false)]
[Label("Image file")]
public string ResultFile
{
get
{
if (!String.IsNullOrEmpty(BaseFileName))
{
const string wmfExtension = ".wmf";
string fullBaseFilename = DamProject.ProjectWorkingPath;
if (CalculationSubDir != "")
{
fullBaseFilename = Path.Combine(fullBaseFilename, CalculationSubDir);
}
fullBaseFilename = fullBaseFilename + Path.DirectorySeparatorChar + BaseFileName;
string fullFilename = fullBaseFilename + wmfExtension;
if (!File.Exists(fullFilename))
{
fullFilename = fullBaseFilename + "z1" + wmfExtension;
}
if (!File.Exists(fullFilename))
{
fullFilename = fullBaseFilename + "z2" + wmfExtension;
}
return fullFilename;
}
return "";
}
}
[Browsable(false)]
[Label("Input file")]
public string InputFile
{
get
{
if (!String.IsNullOrEmpty(BaseFileName))
{
string fileExtension = ".sti";
if (selectedStabilityKernelType != StabilityKernelType.DamClassic)
{
fileExtension = ".dsx";
}
string fullBaseFilename = DamProject.ProjectWorkingPath;
if (CalculationSubDir != "")
{
fullBaseFilename = Path.Combine(fullBaseFilename, CalculationSubDir);
}
fullBaseFilename = fullBaseFilename + Path.DirectorySeparatorChar + BaseFileName;
string fullFilename = fullBaseFilename + fileExtension;
return fullFilename;
}
return "";
}
}
[Browsable(false)]
[Label("Input file")]
public string PipingResultFile
{
// Path of piping is not based on the working dir but on assembly (Assembly.GetExecutingAssembly().Location)
get
{
if (!String.IsNullOrEmpty(BaseFileName))
{
const string txtExtension = ".txt";
string fullBaseFilename = DamProject.ProjectWorkingPath;
if (CalculationSubDir != "")
{
fullBaseFilename = Path.Combine(fullBaseFilename, CalculationSubDir);
}
fullBaseFilename = fullBaseFilename + Path.DirectorySeparatorChar + BaseFileName;
string fullFilename = fullBaseFilename + txtExtension;
return fullFilename;
}
return "";
}
}
[Label("Analysis")]
[PropertyOrder(1, 2)]
[ReadOnly(true)]
public AnalysisType AnalysisType
{
get { return analysisType; }
set { analysisType = value; }
}
[Label("Probabilistic")]
[PropertyOrder(1, 3)]
[ReadOnly(true)]
public ProbabilisticType ProbabilisticType
{
get { return probabilisticType; }
set { probabilisticType = value; }
}
[Browsable(false)]
public DamFailureMechanismeCalculationSpecification DamFailureMechanismeCalculation
{
get { return damFailureMechanismeCalculationSpecification; }
set { damFailureMechanismeCalculationSpecification = value; }
}
[CsvExportColumn("id", 1)]
[Browsable(false)]
public string ID
{
get { return this.id; }
}
[CsvExportColumn("DikeName", 2)]
[Browsable(false)]
[Label("Dike")]
public string DikeName
{
get { return dike.Name; }
}
[CsvExportColumn("Calculation", 3)]
[Browsable(false)]
public string Calculation
{
get { return this.damFailureMechanismeCalculationSpecification != null ? this.damFailureMechanismeCalculationSpecification.ToString() : ""; }
}
[CsvExportColumn("Scenario", 4)]
[Browsable(false)]
public string ScenarioName
{
get { return this.Scenario.LocationScenarioID; }
}
[CsvExportColumn("LocationName", 5)]
[Label("Location")]
[PropertyOrder(0, 1)]
[ReadOnly(true)]
public string LocationName
{
get { return this.Scenario.Location.Name; }
}
[Browsable(false)]
public int LocationScenarioCount
{
get { return this.Scenario.Location.Scenarios.Count; }
}
[Label("Scenario")]
[PropertyOrder(0, 2)]
[ReadOnly(true)]
public string ScenarioDefinitionName
{
get { return this.Scenario.LocationScenarioID + " of " + this.LocationScenarioCount.ToString(); }
}
[Label("Calculation result")]
[PropertyOrder(0, 3)]
public CalculationResult CalculationResult
{
get
{
return calculationResult;
}
set
{
calculationResult = value;
}
}
[Label("Message")]
[PropertyOrder(7,1)]
[ReadOnly(true)]
public string ResultMessage
{
get { return resultMessage; }
set { resultMessage = value; }
}
[CsvExportColumn("X", 6)]
[Label("Global X-coordinate")]
[Format("F3")]
[PropertyOrder(1, 0)]
[Unit(UnitType.Length)]
[XmlIgnore]
[ReadOnly(true)]
public double X
{
get
{
return (this.Scenario != null) ? this.Scenario.Location.XRd : 0.0;
}
set
{
if (this.Scenario != null)
{
this.Scenario.Location.XRd = value;
}
}
}
[CsvExportColumn("Y", 7)]
[Label("Global Y-coordinate")]
[Format("F3")]
[PropertyOrder(1, 1)]
[Unit(UnitType.Length)]
[XmlIgnore]
[ReadOnly(true)]
public double Y
{
get
{
return (this.Scenario != null) ? this.Scenario.Location.YRd : 0.0;
}
set
{
if (this.Scenario != null)
{
this.Scenario.Location.YRd = value;
}
}
}
[CsvExportColumn("LocationScenarioId", 8)]
[Browsable(false)]
public string LocationScenarioId
{
get { return this.Scenario.LocationScenarioID; }
}
[Label("River level")]
[CsvExportColumn("RiverLevel", 9)]
[PropertyOrder(2, 12)]
[Format("F3")]
[ReadOnly(true)]
public double? RiverLevel
{
get { return this.Scenario.RiverLevel; }
}
[Label("River level low")]
[CsvExportColumn("RiverLevelLow", 10)]
[PropertyOrder(2, 13)]
[Format("F3")]
[ReadOnly(true)]
public double? RiverLevelLow
{
get { return this.Scenario.RiverLevelLow; }
}
[Label("Dike table height")]
[CsvExportColumn("DikeTableHeight", 11)]
[PropertyOrder(2, 14)]
[Format("F3")]
[ReadOnly(true)]
public double? DikeTableHeight
{
get { return this.Scenario.DikeTableHeight; }
}
[Label("Slope damping factor")]
[CsvExportColumn("DikeTableHeight", 12)]
[PropertyOrder(2, 15)]
[Format("F3")]
[ReadOnly(true)]
public double? SlopeDampingPiezometricHeightPolderSide
{
get { return this.Scenario.Location.SlopeDampingPiezometricHeightPolderSide; }
}
[CsvExportColumn("CurrentDikeHeight", 13)]
[Browsable(false)]
public double? CurrentDikeHeight
{
get { return this.Scenario.Location.SurfaceLine2.GetDikeHeight(); }
}
[CsvExportColumn("CurrentDikeToeAtPolderX", 14)]
[Browsable(false)]
public double? CurrentDikeToeAtPolderX
{
get
{
double? x = null;
GeometryPoint point = this.Scenario.Location.SurfaceLine2.GetDikeToeInward();
if (point != null)
x = point.X;
return x;
}
}
[CsvExportColumn("CurrentDikeToeAtPolderZ", 15)]
[Browsable(false)]
public double? CurrentDikeToeAtPolderZ
{
get
{
double? z = null;
GeometryPoint point = this.Scenario.Location.SurfaceLine2.GetDikeToeInward();
if (point != null)
z = point.Z;
return z;
}
}
private string GetSoilProfileName(FailureMechanismSystemType failureMechanismType)
{
string soilprofilename = "";
if (this.SoilProfile != null)
{
soilprofilename = this.SoilProfile.Name;
}
else
{
if (this.SoilGeometry2DName != null)
{
soilprofilename = this.SoilGeometry2DName;
}
}
return failureMechanismType == this.damFailureMechanismeCalculationSpecification.FailureMechanismSystemType ? soilprofilename : "";
}
private double? GetSoilProfileProbability(FailureMechanismSystemType? failureMechanismType)
{
return this.Scenario.Location.GetSoilProfileProbability(this.SoilProfile, failureMechanismType);
}
[CsvExportColumn("StabilityProfileName", 16)]
[Label("Stability profile")]
[Browsable(false)]
public string StabilityProfileName
{
get { return GetSoilProfileName(FailureMechanismSystemType.StabilityInside); }
}
[CsvExportColumn("StabilityProfileProbability", 17)]
[Label("Stability probability")]
[Format("F3")]
[Unit(UnitType.Fractions)]
[Browsable(false)]
public double? StabilityProfileProbability
{
get { return GetSoilProfileProbability(FailureMechanismSystemType.StabilityInside); }
}
[CsvExportColumn("PipingProfileName", 18)]
[Label("Piping profile")]
[Browsable(false)]
public string PipingProfileName
{
get { return GetSoilProfileName(FailureMechanismSystemType.Piping); }
}
[CsvExportColumn("PipingProfileProbability", 19)]
[Label("Piping probability")]
[Format("F3")]
[Unit(UnitType.Fractions)]
[Browsable(false)]
public double? PipingProfileProbability
{
get { return GetSoilProfileProbability(FailureMechanismSystemType.Piping); }
}
[CsvExportColumn("CurrentDikeLength", 20)]
[Browsable(false)]
public double? CurrentDikeLength
{
get { return this.Scenario.Location.SurfaceLine2.GetDikeLength(); }
}
[CsvExportColumn("StabilityToeAtPolderX", 21)]
[Label("Stability toe polder")]
[Format("F3")]
[Unit(UnitType.Length)]
[Browsable(false)]
public double? StabilityToeAtPolderX
{
get
{
if (this.redesignedSurfaceLineStability == null)
return null;
GeometryPoint point = this.redesignedSurfaceLineStability.GetDikeToeInward();
if (point != null)
return point.X;
else
return null;
}
}
[CsvExportColumn("StabilityToeAtPolderZ", 22)]
[Label("Height stability toe polder")]
[Format("F3")]
[Unit(UnitType.Length)]
[Browsable(false)]
public double? StabilityToeAtPolderZ
{
get
{
if (this.redesignedSurfaceLineStability == null)
return null;
GeometryPoint point = this.redesignedSurfaceLineStability.GetDikeToeInward();
if (point != null)
return point.Z;
else
return null;
}
}
[CsvExportColumn("StabilityShoulderHeight", 23)]
[Label("Stability shoulder height")]
[Format("F3")]
[Unit(UnitType.Length)]
[Browsable(false)]
public double? StabilityShoulderHeight
{
get
{
if (this.redesignedSurfaceLineStability == null)
return null;
GeometryPoint point = this.redesignedSurfaceLineStability.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside);
if (point != null)
return point.Z;
else
return null;
}
}
[CsvExportColumn("StabilitySafetyFactor", 24)]
[Label("Stability safety factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? StabilitySafetyFactor
{
get { return this.safetyFactorStability; }
set { this.safetyFactorStability = value; }
}
[CsvExportColumn("StabilityFailureProbability", 25)]
[Label("Stability failure probability")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? StabilityFailureProbability
{
get { return this.failureProbabilityStability; }
set { this.failureProbabilityStability = value; }
}
[CsvExportColumn("RequiredSafetyFactorStabilityInnerSlope", 26)]
[Label("Required safety factor stability inside")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? RequiredSafetyFactorStabilityInnerSlope
{
get { return this.Scenario.RequiredSafetyFactorStabilityInnerSlope;}
}
[CsvExportColumn("RequiredSafetyFactorStabilityOuterSlope", 27)]
[Label("Required safety factor stability outside")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? RequiredSafetyFactorStabilityOuterSlope
{
get { return this.Scenario.RequiredSafetyFactorStabilityOuterSlope; }
}
[CsvExportColumn("RequiredSafetyFactorPiping", 28)]
[Label("Required safety factor piping")]
[Format("F3")]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[Browsable(false)]
public double? RequiredSafetyFactorPiping
{
get { return this.Scenario.RequiredSafetyFactorPiping; }
}
[CsvExportColumn("PipingToeAtPolderX", 29)]
[Label("Piping toe")]
[Format("F3")]
[Unit(UnitType.Length)]
[Browsable(false)]
public double? PipingToeAtPolderX
{
get
{
if (this.redesignedSurfaceLinePiping == null)
return null;
GeometryPoint point = this.redesignedSurfaceLinePiping.GetDikeToeInward();
if (point != null)
return point.X;
else
return null;
}
}
[CsvExportColumn("PipingToeAtPolderZ", 30)]
[Label("Height Piping toe")]
[Format("F3")]
[Unit(UnitType.Length)]
[Browsable(false)]
public double? PipingToeAtPolderZ
{
get
{
if (this.redesignedSurfaceLinePiping == null)
return null;
GeometryPoint point = this.redesignedSurfaceLinePiping.GetDikeToeInward();
if (point != null)
return point.Z;
else
return null;
}
}
[CsvExportColumn("PipingShoulderHeight", 31)]
[Label("Piping shoulder height")]
[Format("F3")]
[Unit(UnitType.Length)]
[Browsable(false)]
public double? PipingShoulderHeight
{
get
{
if (this.redesignedSurfaceLinePiping == null)
return null;
GeometryPoint point = redesignedSurfaceLinePiping.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside);
if (point != null)
return point.Z;
else
return null;
}
}
[CsvExportColumn("PipingFailureProbability", 32)]
[Label("Piping failure probability")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? PipingFailureProbability
{
get { return this.failureProbabilityPiping; }
set { this.failureProbabilityPiping = value; }
}
[Label("Required piping failure probability")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? RequiredFailureProbabilityPiping
{
get { return this.Scenario.RequiredProbabilityOfFailurePiping; }
}
[CsvExportColumn("DikeLength", 33)]
[Label("Dike length")]
[Format("F3")]
[PropertyOrder(4, 1)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? DikeLength
{
get
{
double? maxDikeLength = null;
List dikeLengths = new List();
SurfaceLine2 surfaceLine = this.Scenario.Location.SurfaceLine2;
if (surfaceLine != null)
dikeLengths.Add(surfaceLine.GetDikeLength());
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityInside:
if (redesignedSurfaceLineStability != null)
dikeLengths.Add(redesignedSurfaceLineStability.GetDikeLength());
break;
case FailureMechanismSystemType.Piping:
if (redesignedSurfaceLinePiping != null)
dikeLengths.Add(redesignedSurfaceLinePiping.GetDikeLength());
break;
}
foreach (double? dikeLength in dikeLengths)
{
if (dikeLength.HasValue && (!maxDikeLength.HasValue || maxDikeLength < dikeLength))
maxDikeLength = dikeLength;
}
return maxDikeLength;
}
}
[CsvExportColumn("Zone1SafetyFactorStability", 34)]
[Label("Zone 1 safety factor")]
[Format("F3")]
[PropertyOrder(3, 1)]
[Unit(UnitType.None)]
[ReadOnly(true)]
public double? Zone1SafetyFactorStability
{
get { return this.zone1SafetyFactorStability; }
set { this.zone1SafetyFactorStability = value; }
}
[Label("Zone 1 entry point (X-local)")]
[Format("F3")]
[PropertyOrder(3, 2)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? LocalZone1EntryPointX
{
get { return localZone1EntryPointX; }
set { localZone1EntryPointX = value; }
}
[CsvExportColumn("Zone1EntryPointX", 36)]
[Label("Zone 1 entry point (X-global)")]
[Format("F3")]
[PropertyOrder(3, 3)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Zone1EntryPointX
{
get
{
if (this.LocalZone1EntryPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone1EntryPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[CsvExportColumn("Zone1EntryPointY", 37)]
[Label("Zone 1 entry point (Y-global)")]
[Format("F3")]
[PropertyOrder(3, 4)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Zone1EntryPointY
{
get
{
if (this.LocalZone1EntryPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone1EntryPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[CsvExportColumn("Zone1EntryPointZ", 38)]
[Label("Zone 1 entry point (Z)")]
[Format("F3")]
[PropertyOrder(3, 5)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Zone1EntryPointZ
{
get
{
if (this.LocalZone1EntryPointX == null)
return null;
if (redesignedSurfaceLineStability == null)
return null;
return this.redesignedSurfaceLineStability.Geometry.GetZAtX(this.LocalZone1EntryPointX.Value);
}
}
[CsvExportColumn("LocalZone1ExitPointX", 39)]
[Label("Zone 1 exit point (X-local)")]
[Format("F3")]
[PropertyOrder(3, 6)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? LocalZone1ExitPointX
{
get { return localZone1ExitPointX; }
set { localZone1ExitPointX = value; }
}
[CsvExportColumn("Zone1ExitPointX", 40)]
[Label("Zone 1 exit point (X-global)")]
[Format("F3")]
[PropertyOrder(3, 7)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone1ExitPointX
{
get
{
if (this.LocalZone1ExitPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone1ExitPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[CsvExportColumn("Zone1ExitPointY", 41)]
[Label("Zone 1 exit point (Y-global)")]
[Format("F3")]
[PropertyOrder(3, 8)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone1ExitPointY
{
get
{
if (this.LocalZone1ExitPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone1ExitPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[CsvExportColumn("Zone1ExitPointZ", 42)]
[Label("Zone 1 exit point (Z)")]
[Format("F3")]
[PropertyOrder(3, 9)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone1ExitPointZ
{
get
{
if (this.LocalZone1ExitPointX == null)
return null;
if (redesignedSurfaceLineStability == null)
return null;
return this.redesignedSurfaceLineStability.Geometry.GetZAtX(this.LocalZone1ExitPointX.Value);
}
}
[CsvExportColumn("Zone2SafetyFactorStability", 43)]
[Label("Zone 2 safety factor")]
[Format("F3")]
[PropertyOrder(3, 10)]
[Unit(UnitType.None)]
[ReadOnly(true)]
public double? Zone2SafetyFactorStability
{
get { return this.zone2SafetyFactorStability; }
set { this.zone2SafetyFactorStability = value; }
}
[CsvExportColumn("LocalZone2EntryPointX", 44)]
[Label("Zone 2 entry point (X-local)")]
[Format("F3")]
[PropertyOrder(3, 11)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? LocalZone2EntryPointX
{
get { return localZone2EntryPointX; }
set { localZone2EntryPointX = value; }
}
[CsvExportColumn("Zone2EntryPointX", 45)]
[Label("Zone 2 entry point (X-global)")]
[Format("F3")]
[PropertyOrder(3, 12)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone2EntryPointX
{
get
{
if (this.LocalZone2EntryPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone2EntryPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[CsvExportColumn("Zone2EntryPointY", 46)]
[Label("Zone 2 entry point (Y-global)")]
[Format("F3")]
[PropertyOrder(3, 13)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone2EntryPointY
{
get
{
if (this.LocalZone2EntryPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone2EntryPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[CsvExportColumn("Zone2EntryPointZ", 47)]
[Label("Zone 2 entry point (Z)")]
[Format("F3")]
[PropertyOrder(3, 14)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone2EntryPointZ
{
get
{
if (this.LocalZone2EntryPointX == null)
return null;
if (redesignedSurfaceLineStability == null)
return null;
return this.redesignedSurfaceLineStability.Geometry.GetZAtX(this.LocalZone2EntryPointX.Value);
}
}
[CsvExportColumn("LocalZone2ExitPointX", 48)]
[Label("Zone 2 exit point (X-local)")]
[Format("F3")]
[PropertyOrder(3, 15)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? LocalZone2ExitPointX
{
get { return localZone2ExitPointX; }
set { localZone2ExitPointX = value; }
}
[CsvExportColumn("Zone2ExitPointX", 49)]
[Label("Zone 2 exit point (X-global)")]
[Format("F3")]
[PropertyOrder(3, 16)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone2ExitPointX
{
get
{
if (this.LocalZone2ExitPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone2ExitPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[CsvExportColumn("Zone2ExitPointY", 50)]
[Label("Zone 2 exit point (Y-global)")]
[Format("F3")]
[PropertyOrder(3, 17)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone2ExitPointY
{
get
{
if (this.LocalZone2ExitPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalZone2ExitPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[CsvExportColumn("Zone2ExitPointZ", 51)]
[Label("Zone 2 exit point (Z)")]
[Format("F3")]
[PropertyOrder(3, 18)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Zone2ExitPointZ
{
get
{
if (this.LocalZone2ExitPointX == null)
return null;
if (redesignedSurfaceLineStability == null)
return null;
return this.redesignedSurfaceLineStability.Geometry.GetZAtX(this.LocalZone2ExitPointX.Value);
}
}
[CsvExportColumn("IsUplift", 52)]
[Label("Uplift")]
[PropertyOrder(1, 4)]
[ReadOnly(true)]
public bool? IsUplift
{
get { return this.isUplift; }
set { this.isUplift = value; }
}
[CsvExportColumn("Pl3MinUplift", 53)]
[Label("PL3 Min uplift")]
[Format("F3")]
[PropertyOrder(5, 1)]
[Unit(UnitType.None)]
[ReadOnly(true)]
public double? Pl3MinUplift
{
get { return this.pl3MinUplift; }
set { this.pl3MinUplift = value; }
}
[CsvExportColumn("Pl3HeadAdjusted", 54)]
[Label("PL3 Head adjusted")]
[Format("F3")]
[PropertyOrder(5, 2)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Pl3HeadAdjusted
{
get { return this.pl3HeadAdjusted; }
set { this.pl3HeadAdjusted = value; }
}
[CsvExportColumn("pl3LocalLocationXMinUplift", 55)]
[Label("PL3 Min uplift (X-local)")]
[Format("F3")]
[PropertyOrder(5, 3)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Pl3LocalLocationXMinUplift
{
get { return this.pl3LocalLocationXMinUplift; }
set { this.pl3LocalLocationXMinUplift = value; }
}
[CsvExportColumn("Pl3LocationXMinUplift", 56)]
[Label("PL3 Min uplift (X-global)")]
[Format("F3")]
[PropertyOrder(5, 4)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Pl3LocationXMinUplift
{
get
{
if (this.pl3LocalLocationXMinUplift == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.pl3LocalLocationXMinUplift.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[CsvExportColumn("Pl3LocationYMinUplift", 57)]
[Label("PL3 Min uplift (Y-global)")]
[Format("F3")]
[PropertyOrder(5, 5)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Pl3LocationYMinUplift
{
get
{
if (this.pl3LocalLocationXMinUplift == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.pl3LocalLocationXMinUplift.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[CsvExportColumn("Pl4MinUplift", 58)]
[Label("PL4 Min uplift")]
[Format("F3")]
[PropertyOrder(5, 6)]
[Unit(UnitType.None)]
[ReadOnly(true)]
public double? Pl4MinUplift
{
get { return this.pl4MinUplift; }
set { this.pl4MinUplift = value; }
}
[CsvExportColumn("Pl4HeadAdjusted", 59)]
[Label("PL4 Head adjusted")]
[Format("F3")]
[PropertyOrder(5, 7)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Pl4HeadAdjusted
{
get { return this.pl4HeadAdjusted; }
set { this.pl4HeadAdjusted = value; }
}
[CsvExportColumn("pl4LocalLocationXMinUplift", 60)]
[Label("PL4 Min uplift (X-local)")]
[Format("F3")]
[PropertyOrder(5, 8)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? Pl4LocalLocationXMinUplift
{
get { return this.pl4LocalLocationXMinUplift; }
set { this.pl4LocalLocationXMinUplift = value; }
}
[CsvExportColumn("Pl4LocationXMinUplift", 61)]
[Label("PL4 Min uplift (X-global)")]
[Format("F3")]
[PropertyOrder(5, 9)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Pl4LocationXMinUplift
{
get
{
if (this.pl4LocalLocationXMinUplift == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.pl4LocalLocationXMinUplift.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[CsvExportColumn("Pl4LocationYMinUplift", 62)]
[Label("PL4 Min uplift (Y-global)")]
[Format("F3")]
[PropertyOrder(5, 10)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? Pl4LocationYMinUplift
{
get
{
if (this.pl4LocalLocationXMinUplift == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.pl4LocalLocationXMinUplift.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[Label("Uplift Factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
//[Browsable(false)]
public double? UpliftFactor
{
get { return this.upliftFactor; }
set { this.upliftFactor = value; }
}
[Label("Heave Factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
//[Browsable(false)]
public double? HeaveFactor
{
get { return this.heaveFactor; }
set { this.heaveFactor = value; }
}
[CsvExportColumn("BlighPipingFactor", 63)]
[Label("Bligh piping factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? BlighPipingFactor
{
get { return this.blighPipingFactor; }
set { this.blighPipingFactor = value; }
}
[CsvExportColumn("BlighHCritical", 64)]
[Label("Bligh H critical")]
[Format("F3")]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[Browsable(false)]
public double? BlighHCritical
{
get { return this.blighHCritical; }
set { this.blighHCritical = value; }
}
[CsvExportColumn("Sellmeijer2ForcesPipingFactor", 65)]
[Label("Sellmeijer 2 piping factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? Sellmeijer2ForcesPipingFactor
{
get { return this.sellmeijer2ForcesPipingFactor; }
set { this.sellmeijer2ForcesPipingFactor = value; }
}
[CsvExportColumn("Sellmeijer2ForcesHCritical", 66)]
[Label("Sellmeijer 2 H Critical")]
[Format("F3")]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[Browsable(false)]
public double? Sellmeijer2ForcesHCritical
{
get { return this.sellmeijer2ForcesHCritical; }
set { this.sellmeijer2ForcesHCritical = value; }
}
[CsvExportColumn("Sellmeijer4ForcesPipingFactor", 67)]
[Label("Sellmeijer 4 piping factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? Sellmeijer4ForcesPipingFactor
{
get { return this.sellmeijer4ForcesPipingFactor; }
set { this.sellmeijer4ForcesPipingFactor = value; }
}
[CsvExportColumn("Sellmeijer4ForcesHCritical", 68)]
[Label("Sellmeijer 4 H Critical")]
[Format("F3")]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[Browsable(false)]
public double? Sellmeijer4ForcesHCritical
{
get { return this.sellmeijer4ForcesHCritical; }
set { this.sellmeijer4ForcesHCritical = value; }
}
[CsvExportColumn("SellmeijerPipingFactor", 69)]
[Label("Sellmeijer piping factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? SellmeijerPipingFactor
{
get { return this.sellmeijerPipingFactor; }
set { this.sellmeijerPipingFactor = value; }
}
[CsvExportColumn("SellmeijerHCritical", 70)]
[Label("Sellmeijer H Critical")]
[Format("F3")]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[Browsable(false)]
public double? SellmeijerHCritical
{
get { return this.sellmeijerHCritical; }
set { this.sellmeijerHCritical = value; }
}
///
/// Gets or sets the wti2017 piping factor.
///
///
/// The wti2017 piping factor.
///
[Label("WTI 2017 piping factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? Wti2017PipingFactor
{
get { return wti2017PipingFactor; }
set { wti2017PipingFactor = value; }
}
///
/// Gets or sets the wti2017 h critical.
///
///
/// The wti2017 h critical.
///
[Label("WTI 2017 H Critical")]
[Format("F3")]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[Browsable(false)]
public double? Wti2017HCritical
{
get { return wti2017HCritical; }
set { wti2017HCritical = value; }
}
[CsvExportColumn("NonWaterRetainingObjectId", 71)]
[Browsable(false)]
public string NwoId { get { return this.nwoId; } }
[CsvExportColumn("NWOResultIndex", 72)]
[Browsable(false)]
public int NwoResultIndex
{
get { return this.nwoResultIndex; }
}
[CsvExportColumn("NWOPoint1Xrd", 73)]
[Browsable(false)]
public double? NWOLocationXrdStart
{
get { return this.locationXrdStart; }
}
[CsvExportColumn("NWOPoint1Yrd", 74)]
[Browsable(false)]
public double? NWOLocationYrdStart
{
get { return this.locationYrdStart; }
}
[CsvExportColumn("NWOPoint1Zrd", 75)]
[Browsable(false)]
public double? NWOLocationZrdStart
{
get { return this.locationZrdStart; }
}
[CsvExportColumn("NWOPoint4Yrd", 76)]
[Browsable(false)]
public double? NWOLocationXrdEnd
{
get { return this.locationXrdEnd; }
}
[CsvExportColumn("NWOPoint4Xrd", 77)]
[Browsable(false)]
public double? NWOLocationYrdEnd
{
get { return this.locationYrdEnd; }
}
[CsvExportColumn("NWOPoint4Zrd", 78)]
[Browsable(false)]
public double? NWOLocationZrdEnd { get { return this.locationZrdEnd; } }
//Note: using SurfaceLine instead of LocalXzSurfaceLine must give the proper RD coors. If this is not the case, error is somewhere else. Do not convert here!
[CsvExportColumn("DikeToeAtRiverXrd", 79)]
[Browsable(false)]
public double? DikeToeAtRiverXrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).X; }
}
[CsvExportColumn("DikeToeAtRiverYrd", 80)]
[Browsable(false)]
public double? DikeToeAtRiverYrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).Y; }
}
[CsvExportColumn("DikeToeAtRiverZrd", 81)]
[Browsable(false)]
public double? DikeToeAtRiverZrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).Z; }
}
[CsvExportColumn("DikeTopAtRiverXrd", 82)]
[Browsable(false)]
public double? DikeTopAtRiverXrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).X; }
}
[CsvExportColumn("DikeTopAtRiverYrd", 83)]
[Browsable(false)]
public double? DikeTopAtRiverYrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).Y; }
}
[CsvExportColumn("DikeTopAtRiverZrd", 84)]
[Browsable(false)]
public double? DikeTopAtRiverZrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).Z; }
}
[CsvExportColumn("DikeTopAtPolderXrd", 85)]
[Browsable(false)]
public double? DikeTopAtPolderXrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).X; }
}
[CsvExportColumn("DikeTopAtPolderYrd", 86)]
[Browsable(false)]
public double? DikeTopAtPolderYrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Y; }
}
[CsvExportColumn("DikeTopAtPolderZrd", 87)]
[Browsable(false)]
public double? DikeTopAtPolderZrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z; }
}
[CsvExportColumn("DikeToeAtPolderXrd", 88)]
[Browsable(false)]
public double? DikeToeAtPolderXrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).X; }
}
[CsvExportColumn("DikeToeAtPolderYrd", 89)]
[Browsable(false)]
public double? DikeToeAtPolderYrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Y; }
}
[CsvExportColumn("DikeToeAtPolderZrd", 90)]
[Browsable(false)]
public double? DikeToeAtPolderZrd
{
get { return this.Scenario.Location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; }
}
[CsvExportColumn("FlowSlideSafetyFactor", 91)]
[Label("Flowslide safety factor")]
[Format("F3")]
[Unit(UnitType.None)]
[ReadOnly(true)]
[Browsable(false)]
public double? FlowSlideSafetyFactor
{
get { return this.safetyFactorFlowSlide; }
set { this.safetyFactorFlowSlide = value; }
}
[Browsable(false)]
public Scenario Scenario
{
get { return scenario; }
set { scenario = value; }
}
[Browsable(false)]
public SoilProfile1D SoilProfile
{
get { return soilProfile; }
set { soilProfile = value; }
}
[Browsable(false)]
public string SoilGeometry2DName
{
get { return soilGeometry2DName; }
set { soilGeometry2DName = value; }
}
///
/// Creates a new instance based on
/// with global coordinates instead of local coordinates.
///
[Browsable(false)]
public SurfaceLine2 CreateRedesignedSurfaceLineStabilityGlobal()
{
if (this.RedesignedSurfaceLine2Stability == null)
return null;
SurfaceLine2 originalSurfaceLine = this.Scenario.Location.SurfaceLine2;
var coordinateSystemConverter = new CoordinateSystemConverter();
coordinateSystemConverter.DefineGlobalXYZBasedOnLine(originalSurfaceLine.Geometry);
var redesignedSurfaceLineStabilityGlobal = new SurfaceLine2
{
CharacteristicPoints = { GeometryMustContainPoint = true },
Geometry = new LocalizedGeometryPointString()
};
redesignedSurfaceLineStabilityGlobal.Assign(this.RedesignedSurfaceLine2Stability);
coordinateSystemConverter.ConvertLocalXZToGlobalXYZ(redesignedSurfaceLineStabilityGlobal.Geometry);
return redesignedSurfaceLineStabilityGlobal;
}
[Browsable(false)]
public SurfaceLine2 RedesignedSurfaceLine2Stability
{
get { return redesignedSurfaceLineStability; }
set { redesignedSurfaceLineStability = value; }
}
///
/// Creates a new instance based on
/// with global coordinates instead of local coordinates.
///
[Browsable(false)]
public SurfaceLine2 CreateRedesignedSurfaceLinePipingGlobal()
{
if (this.RedesignedSurfaceLine2Piping == null)
return null;
SurfaceLine2 originalSurfaceLine = this.Scenario.Location.SurfaceLine2;
var coordinateSystemConverter = new CoordinateSystemConverter();
coordinateSystemConverter.DefineGlobalXYZBasedOnLine(originalSurfaceLine.Geometry);
var redesignedSurfaceLinePipingGlobal = new SurfaceLine2
{
CharacteristicPoints = { GeometryMustContainPoint = true },
Geometry = new LocalizedGeometryPointString()
};
redesignedSurfaceLinePipingGlobal.Assign(this.RedesignedSurfaceLine2Piping);
coordinateSystemConverter.ConvertLocalXZToGlobalXYZ(redesignedSurfaceLinePipingGlobal.Geometry);
return redesignedSurfaceLinePipingGlobal;
}
[Browsable(false)]
public SurfaceLine2 RedesignedSurfaceLine2Piping
{
get { return redesignedSurfaceLinePiping; }
set { redesignedSurfaceLinePiping = value; }
}
[Label("Profile")]
[PropertyOrder(2, 1)]
[XmlIgnore]
[ReadOnly(true)]
public string ProfileName
{
get
{
var res = "";
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.HorizontalBalance:
case FailureMechanismSystemType.StabilityOutside:
case FailureMechanismSystemType.StabilityInside:
res = StabilityProfileName;
break;
case FailureMechanismSystemType.Piping:
res = PipingProfileName;
break;
}
return res;
}
}
[Label("Profile probability")]
[Format("F3")]
[PropertyOrder(2, 2)]
[Unit(UnitType.Fractions)]
[ReadOnly(true)]
[XmlIgnore]
public double? ProfileProbability
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.HorizontalBalance:
case FailureMechanismSystemType.StabilityOutside:
case FailureMechanismSystemType.StabilityInside:
res = StabilityProfileProbability;
break;
case FailureMechanismSystemType.Piping:
res = PipingProfileProbability;
break;
}
return res;
}
}
[Label("StabilityModel")]
[Unit(UnitType.None)]
[PropertyOrder(2, 3)]
[ReadOnly(true)]
[XmlIgnore]
public MStabModelType? StabilityModel
{
get
{
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityOutside:
case FailureMechanismSystemType.StabilityInside:
return damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters.Model;
default:
return null;
}
}
}
[Label("SafetyFactor")]
[Unit(UnitType.None)]
[Format("F3")]
[PropertyOrder(2, 4)]
[ReadOnly(true)]
[XmlIgnore]
public double? SafetyFactor
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.HorizontalBalance:
case FailureMechanismSystemType.StabilityOutside:
case FailureMechanismSystemType.StabilityInside:
res = StabilitySafetyFactor;
break;
case FailureMechanismSystemType.Piping:
res = PipingFactor;
break;
case FailureMechanismSystemType.FlowSlide:
res = FlowSlideSafetyFactor;
break;
}
return res;
}
}
[Label("Failure probability")]
[Format("F3")]
[PropertyOrder(2, 5)]
[Unit(UnitType.None)]
[ReadOnly(true)]
[XmlIgnore]
public double? FailureProbability
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.HorizontalBalance:
case FailureMechanismSystemType.StabilityOutside:
case FailureMechanismSystemType.StabilityInside:
res = StabilityFailureProbability;
break;
case FailureMechanismSystemType.Piping:
res = PipingFailureProbability;
break;
}
return res;
}
}
[Label("Required failure probability")]
[Format("F3")]
[PropertyOrder(2, 9)]
[Unit(UnitType.None)]
[ReadOnly(true)]
[XmlIgnore]
public double? RequiredFailureProbability
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.Piping:
res = RequiredFailureProbabilityPiping;
break;
}
return res;
}
}
[Label("Required safety factor")]
[Format("F3")]
[PropertyOrder(2, 10)]
[Unit(UnitType.None)]
[ReadOnly(true)]
[XmlIgnore]
public double? RequiredSafetyFactor
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityOutside:
res = RequiredSafetyFactorStabilityOuterSlope;
break;
case FailureMechanismSystemType.StabilityInside:
res = RequiredSafetyFactorStabilityInnerSlope;
break;
case FailureMechanismSystemType.Piping:
res = RequiredSafetyFactorPiping;
break;
}
return res;
}
}
[Label("Shoulder height")]
[Format("F3")]
[PropertyOrder(2, 5)]
[Unit(UnitType.Length)]
[XmlIgnore]
[ReadOnly(true)]
public double? ShoulderHeight
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityInside:
res = StabilityShoulderHeight;
break;
case FailureMechanismSystemType.Piping:
res = PipingShoulderHeight;
break;
}
return res;
}
}
[Label("Toe polder")]
[Format("F3")]
[PropertyOrder(2, 7)]
[Unit(UnitType.Length)]
[XmlIgnore]
[ReadOnly(true)]
public double? ToeAtPolderX
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityInside:
res = StabilityToeAtPolderX;
break;
case FailureMechanismSystemType.Piping:
res = PipingToeAtPolderX;
break;
}
return res;
}
}
[Label("Height toe polder")]
[Format("F3")]
[PropertyOrder(2, 8)]
[Unit(UnitType.Length)]
[XmlIgnore]
[ReadOnly(true)]
public double? ToeAtPolderZ
{
get
{
double? res = null;
switch (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType)
{
case FailureMechanismSystemType.StabilityInside:
res = StabilityToeAtPolderZ;
break;
case FailureMechanismSystemType.Piping:
res = PipingToeAtPolderZ;
break;
}
return res;
}
}
[Label("Piping model")]
[PropertyOrder(6, 1)]
[Unit(UnitType.None)]
[ReadOnly(true)]
[XmlIgnore]
public PipingModelType? PipingModel
{
get
{
if (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping)
{
return damFailureMechanismeCalculationSpecification.PipingModelType;
}
return null;
}
}
[Label("Piping factor")]
[Format("F3")]
[PropertyOrder(6, 2)]
[Unit(UnitType.None)]
[ReadOnly(true)]
[XmlIgnore]
public double? PipingFactor
{
get
{
double? res = null;
if (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping)
{
switch (damFailureMechanismeCalculationSpecification.PipingModelType)
{
case PipingModelType.Bligh:
res = BlighPipingFactor;
break;
case PipingModelType.Sellmeijer:
res = SellmeijerPipingFactor;
break;
case PipingModelType.Sellmeijer2Forces:
res = Sellmeijer2ForcesPipingFactor;
break;
case PipingModelType.Sellmeijer4Forces:
res = Sellmeijer4ForcesPipingFactor;
break;
case PipingModelType.Wti2017:
res = Wti2017PipingFactor;
break;
}
}
return res;
}
}
[Label("Piping entry point (X-local)")]
[Format("F3")]
[PropertyOrder(6, 3)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? LocalPipingEntryPointX
{
get
{
GeometryPoint point = null;
if (this.RedesignedSurfaceLine2Piping != null)
{
point = this.RedesignedSurfaceLine2Piping.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver);
}
else
{
point = this.scenario.Location.LocalXZSurfaceLine2.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver);
}
if (point != null)
return point.X;
else
return null;
}
}
[Label("Piping entry point (X-global)")]
[Format("F3")]
[PropertyOrder(6, 4)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? PipingEntryPointX
{
get
{
if (this.LocalPipingEntryPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalPipingEntryPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[Label("Piping entry point (Y-global)")]
[Format("F3")]
[PropertyOrder(6, 5)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? PipingEntryPointY
{
get
{
if (this.LocalPipingEntryPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalPipingEntryPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[Label("Piping exit point (X-local)")]
[Format("F3")]
[PropertyOrder(6, 6)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? LocalPipingExitPointX
{
get { return localPipingExitPointX; }
set { localPipingExitPointX = value; }
}
[Label("Piping exit point (X-global)")]
[Format("F3")]
[PropertyOrder(6, 7)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? PipingExitPointX
{
get
{
if (this.LocalPipingExitPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalPipingExitPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.X;
}
}
[Label("Piping exit point (Y-global)")]
[Format("F3")]
[PropertyOrder(6, 8)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? PipingExitPointY
{
get
{
if (this.LocalPipingExitPointX == null)
return null;
GeometryPoint point = DetermineGlobalPointCoordinatesBasedOnGlobalSurfaceLine(
new GeometryPoint(this.LocalPipingExitPointX.Value, 0.0, 0.0), this.Scenario.Location.SurfaceLine2);
return point.Y;
}
}
[Format("F3")]
[PropertyOrder(6, 9)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
public double? SeepageLength
{
get { return LocalPipingExitPointX - LocalPipingEntryPointX; }
}
[Label("H critical")]
[Format("F3")]
[PropertyOrder(6, 10)]
[Unit(UnitType.Length)]
[ReadOnly(true)]
[XmlIgnore]
public double? HCritical
{
get
{
double? res = null;
if (damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping)
{
switch (damFailureMechanismeCalculationSpecification.PipingModelType)
{
case PipingModelType.Bligh:
res = BlighHCritical;
break;
case PipingModelType.Sellmeijer:
res = SellmeijerHCritical;
break;
case PipingModelType.Sellmeijer2Forces:
res = Sellmeijer2ForcesHCritical;
break;
case PipingModelType.Sellmeijer4Forces:
res = Sellmeijer4ForcesHCritical;
break;
case PipingModelType.Wti2017:
res = Wti2017HCritical;
break;
}
}
return res;
}
}
[Browsable(false)]
public string BaseFileName
{
get { return baseFileName; }
set { baseFileName = value; }
}
[Browsable(false)]
public string CalculationSubDir
{
get { return calculationSubDir; }
set { calculationSubDir = value; }
}
[Label("Evaluation")]
//[Category(ResultCategory)]
public ResultEvaluation ResultEvaluation
{
get { return resultEvaluation; }
set
{
DataEventPublisher.BeforeChange(this, "ResultEvaluation");
resultEvaluation = value;
DataEventPublisher.AfterChange(this, "ResultEvaluation");
}
}
[Label("Notes")]
[Description("Use this area to explain the valuation and for any further remarks")]
//[Category(ResultCategory)]
public string Notes
{
get { return notes; }
set
{
DataEventPublisher.BeforeChange(this, "Notes");
notes = value;
DataEventPublisher.AfterChange(this, "Notes");
}
}
///
/// Returns the begin point and and point as a list
///
[XmlIgnore]
public List Points
{
get
{
if (dirty)
{
dirty = false;
points.Clear();
if (this.locationXrdStart.HasValue && this.locationYrdStart.HasValue)
{
points.Add(new GeographicPoint(this.locationXrdStart.Value, this.locationYrdStart.Value));
}
if (this.locationXrdEnd.HasValue && this.locationYrdEnd.HasValue)
{
points.Add(new GeographicPoint(this.locationXrdEnd.Value, this.locationYrdEnd.Value));
}
}
return points;
}
}
///
/// Copy data
///
///
public void Assign(CsvExportData csvExportData)
{
this.id = csvExportData.id;
this.BaseFileName = csvExportData.BaseFileName;
this.CalculationSubDir = csvExportData.CalculationSubDir;
this.NumberOfIterations = csvExportData.NumberOfIterations;
this.dike = csvExportData.dike;
this.damFailureMechanismeCalculationSpecification = csvExportData.damFailureMechanismeCalculationSpecification;
this.Scenario = csvExportData.Scenario;
this.SoilProfile = csvExportData.SoilProfile;
this.SoilGeometry2DName = csvExportData.SoilGeometry2DName;
this.probabilisticType = csvExportData.ProbabilisticType;
this.failureProbabilityPiping = csvExportData.failureProbabilityPiping;
this.redesignedSurfaceLinePiping = csvExportData.redesignedSurfaceLinePiping;
this.safetyFactorStability = csvExportData.safetyFactorStability;
this.failureProbabilityStability = csvExportData.failureProbabilityStability;
this.zone1SafetyFactorStability = csvExportData.zone1SafetyFactorStability;
this.LocalZone1EntryPointX = csvExportData.LocalZone1EntryPointX;
this.LocalZone1ExitPointX = csvExportData.LocalZone1ExitPointX;
this.zone2SafetyFactorStability = csvExportData.zone2SafetyFactorStability;
this.LocalZone2EntryPointX = csvExportData.LocalZone2EntryPointX;
this.LocalZone2ExitPointX = csvExportData.LocalZone2ExitPointX;
this.blighPipingFactor = csvExportData.blighPipingFactor;
this.blighHCritical = csvExportData.blighHCritical;
this.sellmeijer2ForcesPipingFactor = csvExportData.sellmeijer2ForcesPipingFactor;
this.sellmeijer2ForcesHCritical = csvExportData.sellmeijer2ForcesHCritical;
this.sellmeijer4ForcesPipingFactor = csvExportData.sellmeijer4ForcesPipingFactor;
this.sellmeijer4ForcesHCritical = csvExportData.sellmeijer4ForcesHCritical;
this.sellmeijerPipingFactor = csvExportData.sellmeijerPipingFactor;
this.sellmeijerHCritical = csvExportData.sellmeijerHCritical;
this.wti2017PipingFactor = csvExportData.wti2017PipingFactor;
this.wti2017HCritical = csvExportData.wti2017HCritical;
this.redesignedSurfaceLineStability = csvExportData.redesignedSurfaceLineStability;
this.calculationResult = csvExportData.calculationResult;
}
///
/// Copies the result file.
///
/// The extension.
private void CopyResultFile(string extension)
{
string copyResFile = Path.GetDirectoryName(InputFile) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(InputFile) + " (copy)" + extension;
var resFile = Path.ChangeExtension(InputFile, extension);
File.Copy(resFile, copyResFile, true);
}
private string GetCurrentExeForOpenCalculationFile()
{
//var exeName = StabilityCalculator.MStabExePath;
//if (SelectedStabilityKernelType != StabilityKernelType.DamClassic)
//{
// exeName = Path.GetDirectoryName(exeName) + "\\MStab.exe";
//}
//return exeName;
//throw new NotImplementedException("To be implemented");
return "";
}
///
/// Opens the calculation file.
///
public void OpenCalculationFile()
{
if (File.Exists(InputFile))
{
string copyFile = Path.GetDirectoryName(InputFile) + Path.DirectorySeparatorChar +
Path.GetFileNameWithoutExtension(InputFile) + " (copy)" + Path.GetExtension(InputFile);
File.Copy(InputFile, copyFile, true);
var exeName = GetCurrentExeForOpenCalculationFile();
if (SelectedStabilityKernelType == StabilityKernelType.DamClassic)
{
const string stdExtension = ".std";
CopyResultFile(stdExtension);
const string stoExtension = ".sto";
CopyResultFile(stoExtension);
}
Process process = new Process();
process.StartInfo.RedirectStandardOutput = false;
process.StartInfo.FileName = exeName;
if (SelectedStabilityKernelType == StabilityKernelType.DamClassicWti ||
SelectedStabilityKernelType == StabilityKernelType.AdvancedWti)
{
process.StartInfo.Arguments = " -rto " + " \"" + copyFile + "\"";
}
else
{
process.StartInfo.Arguments = " \"" + copyFile + "\"";
}
process.StartInfo.UseShellExecute = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.Start();
}
else
{
if (File.Exists(PipingResultFile))
{
string copyFile = Path.GetTempPath() + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(PipingResultFile) + " (copy)" +
Path.GetExtension(PipingResultFile);
File.Copy(PipingResultFile, copyFile, true);
System.Diagnostics.Process.Start(copyFile);
}
}
}
///
/// Make a clone of object
///
///
public object Clone()
{
CsvExportData csvExportData = new CsvExportData(this.id, this.dike, this.damFailureMechanismeCalculationSpecification, this.Scenario,
this.SoilProfile, this.SoilGeometry2DName, this.analysisType, this.nwoResultIndex, this.probabilisticType);
csvExportData.Assign(this);
return csvExportData;
}
public bool IsEnabled(string property)
{
return true;
}
public bool IsVisible(string property)
{
switch (property)
{
// #Bka note that using FailureMechanismSystemType here is only possible as long as multiple specifications are NOT allowed. Otherwise visibility would
// have top be set here per line instead for whole column.
case "Zone1SafetyFactorStability":
case "Zone1EntryPointX":
case "Zone1EntryPointZ":
case "Zone1ExitPointX":
case "Zone1ExitPointZ":
case "Zone2SafetyFactorStability":
case "Zone2EntryPointX":
case "Zone2EntryPointZ":
case "Zone2ExitPointX":
case "Zone2ExitPointZ":
return damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.StabilityInside;// &&
//(damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters.ZonesType == MStabZonesType.ZoneAreas ||
//damFailureMechanismeCalculationSpecification.FailureMechanismeParamatersMStab.MStabParameters.ZonesType == MStabZonesType.ForbiddenZone);
//#Bka: zones are defined per location so can differ from result to result. Hence using Isvisible is not possible for this as zones should then be made
// visible or invisible per line in the table.
case "StabilityModel":
return damFailureMechanismeCalculationSpecification.FailureMechanismSystemType ==
FailureMechanismSystemType.StabilityInside ||
damFailureMechanismeCalculationSpecification.FailureMechanismSystemType ==
FailureMechanismSystemType.StabilityOutside;
case "RequiredSafetyFactor":
return probabilisticType == ProbabilisticType.Deterministic;
case "SafetyFactor":
return probabilisticType == ProbabilisticType.Deterministic;
case "FailureProbability":
return probabilisticType == ProbabilisticType.Probabilistic || probabilisticType == ProbabilisticType.ProbabilisticFragility;
case "RequiredFailureProbability":
return probabilisticType == ProbabilisticType.Probabilistic || probabilisticType == ProbabilisticType.ProbabilisticFragility;
case "PipingModel":
return damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping;
case "PipingFactor":
return damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping;
case "HCritical":
return damFailureMechanismeCalculationSpecification.FailureMechanismSystemType == FailureMechanismSystemType.Piping;
case "OpenCalculationFile":
return File.Exists(GetCurrentExeForOpenCalculationFile());
case "IsUplift":
return !(damFailureMechanismeCalculationSpecification.StabilityKernelType == StabilityKernelType.AdvancedWti ||
damFailureMechanismeCalculationSpecification.StabilityKernelType == StabilityKernelType.AdvancedDotNet);
default:
return true;
}
}
#region Backwards compatibility
[Obsolete("Do not use this method; Only exists for backwards compatibility purposes.", true)]
[XmlIgnore]
[Browsable(false)]
public SurfaceLine RedesignedSurfaceLineStability
{
get { return null; }
set { redesignedSurfaceLineStability = new OldSurfaceLineToNewConverter().Convert(value);}
}
[Obsolete("Do not use this method; Only exists for backwards compatibility purposes.", true)]
[XmlIgnore]
[Browsable(false)]
public SurfaceLine RedesignedSurfaceLinePiping
{
get { return null; }
set { redesignedSurfaceLinePiping = new OldSurfaceLineToNewConverter().Convert(value); }
}
#endregion
}
}