// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of the DAM Engine.
//
// The DAM Engine is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
//
// All names, logos, and references to "Deltares" are registered trademarks of
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Xml.Serialization;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.Standard.Calculation;
namespace Deltares.DamEngine.Data.RWScenarios
{
public class RWScenariosResult
{
private IList rwScenarioResults = new List();
private CalculationResult calculationResult = CalculationResult.NoRun;
public CalculationResult CalculationResult
{
get { return calculationResult; }
set { calculationResult = value; }
}
public double SafetyFactor { get; set; }
public IList RWScenarioResults
{
get { return rwScenarioResults; }
private set { rwScenarioResults = value; }
}
public RWScenarioResult GetScenarioResult(ScenarioType scenarioType)
{
foreach (RWScenarioResult scenarioResult in this.RWScenarioResults)
{
if (scenarioResult.ScenarioType == scenarioType)
{
return scenarioResult;
}
}
return null;
}
}
public class RWScenarioResult
{
private LoadSituation loadSituation = LoadSituation.Wet;
private DikeDrySensitivity _dikeDrySensitivity = DikeDrySensitivity.None;
private HydraulicShortcutType hydraulicShortcutType = HydraulicShortcutType.NoHydraulicShortcut;
private UpliftType upliftType = UpliftType.NoUplift;
private MStabModelType modelOption;
private CalculationResult calculationResult = CalculationResult.NoRun;
private ScenarioType scenarioType = ScenarioType.Scenario01;
private IList rwScenarioProfileResults = new List();
public CalculationResult CalculationResult
{
get { return calculationResult; }
set { calculationResult = value; }
}
public double SafetyFactor { get; set; }
public IList RWScenarioProfileResults
{
get { return rwScenarioProfileResults; }
private set { rwScenarioProfileResults = value; }
}
public LoadSituation LoadSituation
{
get { return loadSituation; }
set { loadSituation = value; }
}
public DikeDrySensitivity DikeDrySensitivity
{
get { return _dikeDrySensitivity; }
set { _dikeDrySensitivity = value; }
}
public HydraulicShortcutType HydraulicShortcutType
{
get { return hydraulicShortcutType; }
set { hydraulicShortcutType = value; }
}
public UpliftType UpliftType
{
get { return upliftType; }
set { upliftType = value; }
}
public MStabModelType ModelOption
{
get { return modelOption; }
set { modelOption = value; }
}
public ScenarioType ScenarioType
{
get { return scenarioType; }
set { scenarioType = value; }
}
}
public class RWScenarioProfileResult : RWResult
{
private FailureMechanismSystemType failureMechanismType = FailureMechanismSystemType.StabilityInside;
private DikeDrySensitivity dikeDrySensitivity = DikeDrySensitivity.None;
private HydraulicShortcutType hydraulicShortcutType = HydraulicShortcutType.NoHydraulicShortcut;
private UpliftType upliftType = UpliftType.NoUplift;
private LoadSituation loadSituation = LoadSituation.Wet;
private MStabModelType mstabModelOption;
private PipingModelType pipingModelOption;
private SoilGeometryProbability soilGeometryProbability = null;
private Location location = null;
private ScenarioType scenarioType = ScenarioType.Scenario01;
private string baseFileName = "";
public RWScenarioProfileResult(Location location, SoilGeometryProbability soilGeometryProbability)
{
this.location = location;
this.soilGeometryProbability = soilGeometryProbability;
}
public Location Location
{
get
{
return location;
}
}
public const string CalculationCategory = "Calculation";
public string LocationName
{
get { return location.Name; }
}
public LoadSituation LoadSituation
{
get { return loadSituation; }
set { loadSituation = value; }
}
public DikeDrySensitivity DikeDrySensitivity
{
get { return dikeDrySensitivity; }
set { dikeDrySensitivity = value; }
}
public HydraulicShortcutType HydraulicShortcutType
{
get { return hydraulicShortcutType; }
set { hydraulicShortcutType = value; }
}
public UpliftType UpliftType
{
get { return upliftType; }
set { upliftType = value; }
}
public MStabModelType MstabModelOption
{
get { return mstabModelOption; }
set { mstabModelOption = value; }
}
public PipingModelType PipingModelOption
{
get { return pipingModelOption; }
set { pipingModelOption = value; }
}
public ScenarioType ScenarioType
{
get { return scenarioType; }
set { scenarioType = value; }
}
public string BaseFileName
{
get { return baseFileName; }
set { baseFileName = value; }
}
public FailureMechanismSystemType FailureMechanismType
{
get { return failureMechanismType; }
set { failureMechanismType = value; }
}
public SoilGeometryProbability SoilGeometryProbability
{
get { return soilGeometryProbability; }
}
public string SoilProfileName
{
get
{
return soilGeometryProbability.SoilProfile.Name;
}
}
public double SoilProfileProbability
{
get
{
return soilGeometryProbability.Probability;
}
}
}
}