// Copyright (C) Stichting Deltares 2024. 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;
using System.Collections.Generic;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.General.Sensors;
using Deltares.DamEngine.Data.General.TimeSeries;
using Deltares.DamEngine.Data.Geotechnics;
using Deltares.DamEngine.Data.Standard.Calculation;
using Deltares.DamEngine.Data.Standard.Logging;
using Deltares.DamEngine.Io.XmlInput;
using Deltares.DamEngine.Io.XmlOutput;
namespace Deltares.DamEngine.Interface;
///
/// Converts types from Dam class to Input serializer class and vice versa
///
public static class ConversionHelper
{
public const int CpNone = 0; //
public const int CpSurfaceLevelOutside = 1; // Maaiveld buitenwaarts
public const int CpDikeToeAtRiver = 5; // Teen dijk buitenwaarts
public const int CpShoulderTopOutside = 6; // Kruin buitenberm
public const int CpShoulderBaseOutside = 7; // Insteek buitenberm
public const int CpDikeTopAtRiver = 8; // Kruin buitentalud
public const int CpDikeLine = 9; // referentielijn
public const int CpTrafficLoadOutside = 10; // Verkeersbelasting kant buitenwaarts
public const int CpTrafficLoadInside = 11; // Verkeersbelasting kant binnenwaarts
public const int CpDikeTopAtPolder = 12; // Kruin binnentalud
public const int CpShoulderBaseInside = 13; // Insteek binnenberm
public const int CpShoulderTopInside = 14; // Kruin binnenberm
public const int CpDikeToeAtPolder = 15; // Teen dijk binnenwaarts
public const int CpDitchDikeSide = 16; // Insteek sloot dijkzijde
public const int CpBottomDitchDikeSide = 17; // Slootbodem dijkzijde
public const int CpBottomDitchPolderSide = 18; // Slootbodem polderzijde
public const int CpDitchPolderSide = 19; // Insteek sloot polderzijde
public const int CpSurfaceLevelInside = 25; // Maaiveld binnenwaarts
// Constants for translating to Enums TimeStepUnit
public const uint TimeStepUnitSecond = 0;
public const uint TimeStepUnitMinute = 1;
public const uint TimeStepUnitHour = 2;
public const uint TimeStepUnitDay = 3;
public const uint TimeStepUnitMonth = 4;
public const uint TimeStepUnitWeek = 5;
public const uint TimeStepUnitYear = 6;
public const uint TimeStepUnitNonequidistant = 7;
// Constants for translating to Enums PlLineType
public const uint PlLineTypePl1 = 1;
public const uint PlLineTypePl2 = 2;
public const uint PlLineTypePl3 = 3;
public const uint PlLineTypePl4 = 4;
// Constants for translating to Enums SensorType
public const uint SensorTypePiezometricHead = 0;
public const uint SensorTypeWaterLevel = 1;
public const uint SensorTypePolderLevel = 2;
// Constants for translating to Enums DataSourceTypeSensors
public const uint DataSourceTypeSensorsIgnore = 0;
public const uint DataSourceTypeSensorsLocationData = 1;
public const uint DataSourceTypeSensorsSensor = 2;
///
/// Converts the type DamProjectType from input object type to Dam Engine type.
///
/// Type of the input object.
/// Dam Engine type
public static DamProjectType ConvertToDamProjectType(InputDamProjectType inputDamProjectType)
{
var translationTable = new Dictionary
{
{
InputDamProjectType.Design, DamProjectType.Design
},
{
InputDamProjectType.Operational, DamProjectType.Operational
}
};
return translationTable[inputDamProjectType];
}
///
/// Converts the type DamProjectType from Dam Engine type to input object type.
///
/// Type of the dam project.
/// Type of the input object.
public static InputDamProjectType ConvertToInputDamProjectType(DamProjectType damProjectType)
{
var translationTable = new Dictionary
{
{
DamProjectType.Design, InputDamProjectType.Design
},
{
DamProjectType.Operational, InputDamProjectType.Operational
}
};
return translationTable[damProjectType];
}
///
/// Converts the type PLLineCreationMethod from Dam Engine type to input object type.
///
/// Type of the dam project.
///
/// Type of the input object.
///
public static LocationWaternetOptionsPhreaticLineCreationMethod ConvertToInputPhreaticLineCreationMethod(PlLineCreationMethod plLineCreationMethod)
{
var translationTable = new Dictionary
{
{
PlLineCreationMethod.ExpertKnowledgeLinearInDike, LocationWaternetOptionsPhreaticLineCreationMethod.ExpertKnowledgeLinearInDike
},
{
PlLineCreationMethod.ExpertKnowledgeRRD, LocationWaternetOptionsPhreaticLineCreationMethod.ExpertKnowledgeRRD
},
{
PlLineCreationMethod.GaugesWithFallbackToExpertKnowledgeRRD, LocationWaternetOptionsPhreaticLineCreationMethod.GaugesWithFallbackToExpertKnowledgeRRD
},
{
PlLineCreationMethod.Sensors, LocationWaternetOptionsPhreaticLineCreationMethod.Sensors
},
{
PlLineCreationMethod.None, LocationWaternetOptionsPhreaticLineCreationMethod.None
}
};
return translationTable[plLineCreationMethod];
}
///
/// Converts the type PLLineCreationMethod from input object type to Dam Engine type.
///
/// Type of the input object.
///
/// Type of the dam object.
///
public static PlLineCreationMethod ConvertToPhreaticLineCreationMethod(LocationWaternetOptionsPhreaticLineCreationMethod inputPhreaticLineCreationMethod)
{
var translationTable = new Dictionary
{
{
LocationWaternetOptionsPhreaticLineCreationMethod.ExpertKnowledgeLinearInDike, PlLineCreationMethod.ExpertKnowledgeLinearInDike
},
{
LocationWaternetOptionsPhreaticLineCreationMethod.ExpertKnowledgeRRD, PlLineCreationMethod.ExpertKnowledgeRRD
},
{
LocationWaternetOptionsPhreaticLineCreationMethod.GaugesWithFallbackToExpertKnowledgeRRD, PlLineCreationMethod.GaugesWithFallbackToExpertKnowledgeRRD
},
{
LocationWaternetOptionsPhreaticLineCreationMethod.Sensors, PlLineCreationMethod.Sensors
},
{
LocationWaternetOptionsPhreaticLineCreationMethod.None, PlLineCreationMethod.None
}
};
return translationTable[inputPhreaticLineCreationMethod];
}
///
/// Converts the type IntrusionVerticalWaterPressureType from Dam Engine type to input object type.
///
/// Type of the dam project.
///
/// Type of the input object.
///
public static LocationWaternetOptionsIntrusionVerticalWaterPressure ConvertToInputIntrusionVerticalWaterPressure(IntrusionVerticalWaterPressureType intrusionVerticalWaterPressureType)
{
var translationTable = new Dictionary
{
{
IntrusionVerticalWaterPressureType.FullHydroStatic, LocationWaternetOptionsIntrusionVerticalWaterPressure.FullHydroStatic
},
{
IntrusionVerticalWaterPressureType.HydroStatic, LocationWaternetOptionsIntrusionVerticalWaterPressure.HydroStatic
},
{
IntrusionVerticalWaterPressureType.Linear, LocationWaternetOptionsIntrusionVerticalWaterPressure.Linear
},
{
IntrusionVerticalWaterPressureType.SemiTimeDependent, LocationWaternetOptionsIntrusionVerticalWaterPressure.SemiTimeDependent
},
{
IntrusionVerticalWaterPressureType.Standard, LocationWaternetOptionsIntrusionVerticalWaterPressure.Standard
}
};
return translationTable[intrusionVerticalWaterPressureType];
}
///
/// Converts the type IntrusionVerticalWaterPressureType from input object type to Dam Engine type.
///
/// Type of the input object.
///
/// Type of the dam object.
///
public static IntrusionVerticalWaterPressureType ConvertToIntrusionVerticalWaterPressure(LocationWaternetOptionsIntrusionVerticalWaterPressure inputIntrusionVerticalWaterPressure)
{
var translationTable = new Dictionary
{
{
LocationWaternetOptionsIntrusionVerticalWaterPressure.FullHydroStatic, IntrusionVerticalWaterPressureType.FullHydroStatic
},
{
LocationWaternetOptionsIntrusionVerticalWaterPressure.HydroStatic, IntrusionVerticalWaterPressureType.HydroStatic
},
{
LocationWaternetOptionsIntrusionVerticalWaterPressure.Linear, IntrusionVerticalWaterPressureType.Linear
},
{
LocationWaternetOptionsIntrusionVerticalWaterPressure.SemiTimeDependent, IntrusionVerticalWaterPressureType.SemiTimeDependent
},
{
LocationWaternetOptionsIntrusionVerticalWaterPressure.Standard, IntrusionVerticalWaterPressureType.Standard
}
};
return translationTable[inputIntrusionVerticalWaterPressure];
}
///
/// Converts to output calculation result.
///
/// Type of the dam project.
///
public static int ConvertToOutputCalculationResult(CalculationResult calculationResult)
{
var translationTable = new Dictionary
{
{
CalculationResult.NoRun, 0
},
{
CalculationResult.Succeeded, 1
},
{
CalculationResult.NoInput, 2
},
{
CalculationResult.NoLicense, 3
},
{
CalculationResult.UserAbort, 4
},
{
CalculationResult.InvalidInputStructure, 5
},
{
CalculationResult.InvalidInputData, 6
},
{
CalculationResult.RunFailed, 7
},
{
CalculationResult.UnexpectedError, 8
}
};
return translationTable[calculationResult];
}
///
/// Converts to calculation result.
///
/// The calculation result.
///
public static CalculationResult ConvertToCalculationResult(int calculationResult)
{
var translationTable = new Dictionary
{
{
0, CalculationResult.NoRun
},
{
1, CalculationResult.Succeeded
},
{
2, CalculationResult.NoInput
},
{
3, CalculationResult.NoLicense
},
{
4, CalculationResult.UserAbort
},
{
5, CalculationResult.InvalidInputStructure
},
{
6, CalculationResult.InvalidInputData
},
{
7, CalculationResult.RunFailed
},
{
8, CalculationResult.UnexpectedError
}
};
return translationTable[calculationResult];
}
///
/// Converts the input characteristic point type to the Dam characteristic point type
///
/// Type of the input point.
///
public static CharacteristicPointType ConvertToDamPointType(int inputPointType)
{
var translationTable = new Dictionary
{
{
CpNone, CharacteristicPointType.None
},
{
CpSurfaceLevelOutside, CharacteristicPointType.SurfaceLevelOutside
},
{
CpDikeToeAtRiver, CharacteristicPointType.DikeToeAtRiver
},
{
CpShoulderTopOutside, CharacteristicPointType.ShoulderTopOutside
},
{
CpShoulderBaseOutside, CharacteristicPointType.ShoulderBaseOutside
},
{
CpDikeTopAtRiver, CharacteristicPointType.DikeTopAtRiver
},
{
CpDikeLine, CharacteristicPointType.DikeLine
},
{
CpTrafficLoadOutside, CharacteristicPointType.TrafficLoadOutside
},
{
CpTrafficLoadInside, CharacteristicPointType.TrafficLoadInside
},
{
CpDikeTopAtPolder, CharacteristicPointType.DikeTopAtPolder
},
{
CpShoulderBaseInside, CharacteristicPointType.ShoulderBaseInside
},
{
CpShoulderTopInside, CharacteristicPointType.ShoulderTopInside
},
{
CpDikeToeAtPolder, CharacteristicPointType.DikeToeAtPolder
},
{
CpDitchDikeSide, CharacteristicPointType.DitchDikeSide
},
{
CpBottomDitchDikeSide, CharacteristicPointType.BottomDitchDikeSide
},
{
CpBottomDitchPolderSide, CharacteristicPointType.BottomDitchPolderSide
},
{
CpDitchPolderSide, CharacteristicPointType.DitchPolderSide
},
{
CpSurfaceLevelInside, CharacteristicPointType.SurfaceLevelInside
}
};
return translationTable[inputPointType];
}
///
/// Converts the Dam characteristic point type to the input characteristic point type
///
/// Type of the characteristic point.
///
public static int ConvertToInputPointType(CharacteristicPointType characteristicPointType)
{
var translationTable = new Dictionary
{
{
CharacteristicPointType.None, CpNone
},
{
CharacteristicPointType.SurfaceLevelOutside, CpSurfaceLevelOutside
},
{
CharacteristicPointType.DikeToeAtRiver, CpDikeToeAtRiver
},
{
CharacteristicPointType.ShoulderTopOutside, CpShoulderTopOutside
},
{
CharacteristicPointType.ShoulderBaseOutside, CpShoulderBaseOutside
},
{
CharacteristicPointType.DikeTopAtRiver, CpDikeTopAtRiver
},
{
CharacteristicPointType.DikeLine, CpDikeLine
},
{
CharacteristicPointType.TrafficLoadOutside, CpTrafficLoadOutside
},
{
CharacteristicPointType.TrafficLoadInside, CpTrafficLoadInside
},
{
CharacteristicPointType.DikeTopAtPolder, CpDikeTopAtPolder
},
{
CharacteristicPointType.ShoulderBaseInside, CpShoulderBaseInside
},
{
CharacteristicPointType.ShoulderTopInside, CpShoulderTopInside
},
{
CharacteristicPointType.DikeToeAtPolder, CpDikeToeAtPolder
},
{
CharacteristicPointType.DitchDikeSide, CpDitchDikeSide
},
{
CharacteristicPointType.BottomDitchDikeSide, CpBottomDitchDikeSide
},
{
CharacteristicPointType.BottomDitchPolderSide, CpBottomDitchPolderSide
},
{
CharacteristicPointType.DitchPolderSide, CpDitchPolderSide
},
{
CharacteristicPointType.SurfaceLevelInside, CpSurfaceLevelInside
}
};
return translationTable[characteristicPointType];
}
///
/// Converts to waterpressure interpolation model.
///
/// The input waterpressure interpolation model.
///
public static WaterpressureInterpolationModel ConvertToWaterpressureInterpolationModel(int inputWaterpressureInterpolationModel)
{
var translationTable = new Dictionary
{
{
0, WaterpressureInterpolationModel.Automatic
},
{
1, WaterpressureInterpolationModel.Hydrostatic
}
};
return translationTable[inputWaterpressureInterpolationModel];
}
///
/// Converts to input waterpressure interpolation model.
///
/// The waterpressure interpolation model.
///
public static int ConvertToInputWaterpressureInterpolationModel(WaterpressureInterpolationModel waterpressureInterpolationModel)
{
var translationTable = new Dictionary
{
{
WaterpressureInterpolationModel.Automatic, 0
},
{
WaterpressureInterpolationModel.Hydrostatic, 1
}
};
return translationTable[waterpressureInterpolationModel];
}
///
/// Converts the Dam profile type to the input profile type
///
/// Type of the soil geometry.
///
public static SegmentSoilGeometryProbabilitySoilProfileType ConvertToInputSoilGeometryType(SoilProfileType soilProfileType)
{
var translationTable = new Dictionary
{
{
SoilProfileType.ProfileType1D, SegmentSoilGeometryProbabilitySoilProfileType.ProfileType1D
},
{
SoilProfileType.ProfileType2D, SegmentSoilGeometryProbabilitySoilProfileType.ProfileType2D
}
};
return translationTable[soilProfileType];
}
///
/// Converts the input profile type to the Dam profile type
///
/// Type of the soil geometry.
///
public static SoilProfileType ConvertToSoilGeometryType(SegmentSoilGeometryProbabilitySoilProfileType soilGeometryType)
{
var translationTable = new Dictionary
{
{
SegmentSoilGeometryProbabilitySoilProfileType.ProfileType1D, SoilProfileType.ProfileType1D
},
{
SegmentSoilGeometryProbabilitySoilProfileType.ProfileType2D, SoilProfileType.ProfileType2D
}
};
return translationTable[soilGeometryType];
}
///
/// Converts the Dam failure mechanism type to the input failure mechanism type .
///
/// Type of the system failure mechanism.
///
public static InputFailureMechanismSystemType ConvertToInputFailureMechanismSystemType(FailureMechanismSystemType failureMechanismSystemType)
{
var translationTable = new Dictionary
{
{
FailureMechanismSystemType.StabilityInside, InputFailureMechanismSystemType.StabilityInside
},
{
FailureMechanismSystemType.StabilityOutside, InputFailureMechanismSystemType.StabilityOutside
},
{
FailureMechanismSystemType.Piping, InputFailureMechanismSystemType.Piping
}
};
return translationTable[failureMechanismSystemType];
}
///
/// Converts the input failure mechanism type to the Dam failure mechanism type .
///
/// Type of the failure mechanism system.
///
public static FailureMechanismSystemType ConvertToFailureMechanismSystemType(InputFailureMechanismSystemType failureMechanismSystemType)
{
var translationTable = new Dictionary
{
{
InputFailureMechanismSystemType.StabilityInside, FailureMechanismSystemType.StabilityInside
},
{
InputFailureMechanismSystemType.StabilityOutside, FailureMechanismSystemType.StabilityOutside
},
{
InputFailureMechanismSystemType.Piping, FailureMechanismSystemType.Piping
}
};
return translationTable[failureMechanismSystemType];
}
///
/// Converts the Dam segment failure mechanism type to the input segment failure mechanism type .
///
/// Type of the segment failure mechanism.
///
public static SegmentSoilGeometryProbabilitySegmentFailureMechanismType ConvertToInputSegmentFailureMechanismSystemType(SegmentFailureMechanismType segmentFailureMechanismType)
{
var translationTable = new Dictionary
{
{
SegmentFailureMechanismType.All, SegmentSoilGeometryProbabilitySegmentFailureMechanismType.All
},
{
SegmentFailureMechanismType.Stability, SegmentSoilGeometryProbabilitySegmentFailureMechanismType.Stability
},
{
SegmentFailureMechanismType.Piping, SegmentSoilGeometryProbabilitySegmentFailureMechanismType.Piping
}
};
return translationTable[segmentFailureMechanismType];
}
///
/// Converts the input segment failure mechanism type to the Dam segment failure mechanism type .
///
/// Type of the failure mechanism system.
///
public static SegmentFailureMechanismType ConvertToSegmentFailureMechanismSystemType(SegmentSoilGeometryProbabilitySegmentFailureMechanismType segmentFailureMechanismSystemType)
{
var translationTable = new Dictionary
{
{
SegmentSoilGeometryProbabilitySegmentFailureMechanismType.All, SegmentFailureMechanismType.All
},
{
SegmentSoilGeometryProbabilitySegmentFailureMechanismType.Stability, SegmentFailureMechanismType.Stability
},
{
SegmentSoilGeometryProbabilitySegmentFailureMechanismType.Piping, SegmentFailureMechanismType.Piping
}
};
return translationTable[segmentFailureMechanismSystemType];
}
///
/// Converts the Dam piping model to the input piping model.
///
/// Type of the piping model.
///
public static InputPipingModelType ConvertToInputPipingModelType(PipingModelType pipingModelType)
{
var translationTable = new Dictionary
{
{
PipingModelType.Bligh, InputPipingModelType.Bligh
},
{
PipingModelType.Wti2017, InputPipingModelType.WtiSellmeijerRevised
}
};
return translationTable[pipingModelType];
}
///
/// Converts the input piping model to the Dam piping model.
///
/// Type of the input piping model.
///
public static PipingModelType ConvertToPipingModelType(InputPipingModelType inputPipingModelType)
{
var translationTable = new Dictionary
{
{
InputPipingModelType.Bligh, PipingModelType.Bligh
},
{
InputPipingModelType.WtiSellmeijerRevised, PipingModelType.Wti2017
}
};
return translationTable[inputPipingModelType];
}
///
/// Converts the Dam stability model to the input stability model.
///
/// Type of the stability model.
///
public static InputStabilityModelType ConvertToInputStabilityModelType(MStabModelType stabilityModelType)
{
var translationTable = new Dictionary
{
{
MStabModelType.Bishop, InputStabilityModelType.Bishop
},
{
MStabModelType.UpliftVan, InputStabilityModelType.UpliftVan
},
{
MStabModelType.BishopUpliftVan, InputStabilityModelType.BishopUpliftVan
}
};
return translationTable[stabilityModelType];
}
///
/// Converts the input stability model to the Dam stability model.
///
/// Type of the input stability model.
///
public static MStabModelType ConvertToStabilityModelType(InputStabilityModelType inputStabilityModelType)
{
var translationTable = new Dictionary
{
{
InputStabilityModelType.Bishop, MStabModelType.Bishop
},
{
InputStabilityModelType.UpliftVan, MStabModelType.UpliftVan
},
{
InputStabilityModelType.BishopUpliftVan, MStabModelType.BishopUpliftVan
}
};
return translationTable[inputStabilityModelType];
}
///
/// Converts the Dam stability model to the output stability model.
///
/// Type of the stability model.
///
public static DesignResultStabilityDesignResultsStabilityModelType ConvertToOutputStabilityModelType(MStabModelType stabilityModelType)
{
var translationTable = new Dictionary
{
{
MStabModelType.Bishop, DesignResultStabilityDesignResultsStabilityModelType.Bishop
},
{
MStabModelType.UpliftVan, DesignResultStabilityDesignResultsStabilityModelType.UpliftVan
},
{
MStabModelType.BishopUpliftVan, DesignResultStabilityDesignResultsStabilityModelType.BishopUpliftVan
}
};
return translationTable[stabilityModelType];
}
///
/// Converts the output stability model to the Dam stability model.
///
/// Type of the output stability model.
///
public static MStabModelType ConvertToStabilityModelType(DesignResultStabilityDesignResultsStabilityModelType outputStabilityModelType)
{
var translationTable = new Dictionary
{
{
DesignResultStabilityDesignResultsStabilityModelType.Bishop, MStabModelType.Bishop
},
{
DesignResultStabilityDesignResultsStabilityModelType.UpliftVan, MStabModelType.UpliftVan
},
{
DesignResultStabilityDesignResultsStabilityModelType.BishopUpliftVan, MStabModelType.BishopUpliftVan
}
};
return translationTable[outputStabilityModelType];
}
///
/// Converts the Dam analysis type to the input analysis type.
///
/// Type of the analysis.
///
public static InputAnalysisType ConvertToInputAnalysisType(AnalysisType analysisType)
{
var translationTable = new Dictionary
{
{
AnalysisType.NoAdaption, InputAnalysisType.NoAdaption
},
{
AnalysisType.AdaptGeometry, InputAnalysisType.AdaptGeometry
}
};
return translationTable[analysisType];
}
///
/// Converts the input analysis type to the Dam analysis type.
///
/// Type of the input analysis.
///
public static AnalysisType ConvertToAnalysisType(InputAnalysisType inputAnalysisType)
{
var translationTable = new Dictionary
{
{
InputAnalysisType.NoAdaption, AnalysisType.NoAdaption
},
{
InputAnalysisType.AdaptGeometry, AnalysisType.AdaptGeometry
}
};
return translationTable[inputAnalysisType];
}
///
/// Converts the type of to input zone.
///
/// Type of the zone.
///
public static LocationStabilityOptionsZoneType ConvertToInputZoneType(MStabZonesType zoneType)
{
var translationTable = new Dictionary
{
{
MStabZonesType.NoZones, LocationStabilityOptionsZoneType.NoZones
},
{
MStabZonesType.ForbiddenZone, LocationStabilityOptionsZoneType.ForbiddenZones
}
};
return translationTable[zoneType];
}
///
/// Converts the type of to zone.
///
/// Type of the input zone.
///
public static MStabZonesType ConvertToZoneType(LocationStabilityOptionsZoneType inputZoneType)
{
var translationTable = new Dictionary
{
{
LocationStabilityOptionsZoneType.NoZones, MStabZonesType.NoZones
},
{
LocationStabilityOptionsZoneType.ForbiddenZones, MStabZonesType.ForbiddenZone
}
};
return translationTable[inputZoneType];
}
///
/// Converts to input search method.
///
/// The search method.
///
public static StabilityParametersSearchMethod ConvertToInputSearchMethod(MStabSearchMethod searchMethod)
{
var translationTable = new Dictionary
{
{
MStabSearchMethod.Grid, StabilityParametersSearchMethod.CalculationGrid
},
{
MStabSearchMethod.BeeSwarm, StabilityParametersSearchMethod.BeeSwarm
}
};
return translationTable[searchMethod];
}
///
/// Converts to search method.
///
/// The search method.
///
public static MStabSearchMethod ConvertToSearchMethod(StabilityParametersSearchMethod searchMethod)
{
var translationTable = new Dictionary
{
{
StabilityParametersSearchMethod.CalculationGrid, MStabSearchMethod.Grid
},
{
StabilityParametersSearchMethod.BeeSwarm, MStabSearchMethod.BeeSwarm
}
};
return translationTable[searchMethod];
}
///
/// Converts the type of to input message.
///
/// Type of the message.
///
public static MessageMessageType ConvertToInputMessageType(LogMessageType messageType)
{
var translationTable = new Dictionary
{
{
LogMessageType.Warning, MessageMessageType.Warning
},
{
LogMessageType.Debug, MessageMessageType.Info
},
{
LogMessageType.Error, MessageMessageType.Error
},
{
LogMessageType.FatalError, MessageMessageType.Error
},
{
LogMessageType.Info, MessageMessageType.Info
},
{
LogMessageType.Trace, MessageMessageType.Info
}
};
return translationTable[messageType];
}
///
/// Converts the type of to message.
///
/// Type of the validation result message.
///
public static LogMessageType ConvertToLogMessageType(MessageMessageType validationResultMessageType)
{
var translationTable = new Dictionary
{
{
MessageMessageType.Warning, LogMessageType.Warning
},
{
MessageMessageType.Error, LogMessageType.Error
},
{
MessageMessageType.Info, LogMessageType.Info
}
};
return translationTable[validationResultMessageType];
}
///
/// Converts to Bishop input search area determination.
///
/// Type of the search area for Bishop.
///
public static StabilityParametersBishopSearchAreaDetermination ConvertToInputBishopSearchAreaDetermination(GridSizeDetermination searchAreaType)
{
var translationTable = new Dictionary
{
{
GridSizeDetermination.Automatic, StabilityParametersBishopSearchAreaDetermination.Automatic
},
{
GridSizeDetermination.Specified, StabilityParametersBishopSearchAreaDetermination.Specified
}
};
return translationTable[searchAreaType];
}
///
/// Converts to Uplift-Can input grid determination.
///
/// Type of the grid for Uplift-Van.
///
public static StabilityParametersUpliftVanGridDetermination ConvertToInputUpliftVanGridDetermination(GridSizeDetermination gridType)
{
var translationTable = new Dictionary
{
{
GridSizeDetermination.Automatic, StabilityParametersUpliftVanGridDetermination.Automatic
},
{
GridSizeDetermination.Specified, StabilityParametersUpliftVanGridDetermination.Specified
}
};
return translationTable[gridType];
}
///
/// Converts the shear strength model to soil shear strength model.
///
/// The shear strength model.
///
public static SoilShearStrengthModel ConvertToSoilShearStrengthModel(ShearStrengthModel shearStrengthModel)
{
var translationTable = new Dictionary
{
{
ShearStrengthModel.CPhi, SoilShearStrengthModel.CPhi
},
{
ShearStrengthModel.SuCalculated, SoilShearStrengthModel.SuCalculated
},
{
ShearStrengthModel.SigmaTauCurve, SoilShearStrengthModel.SigmaTauCurve
},
{
ShearStrengthModel.SuTable, SoilShearStrengthModel.SuTable
}
};
return translationTable[shearStrengthModel];
}
///
/// Converts to Bishop search area determination.
///
/// Type of the search area for Bishop.
///
public static GridSizeDetermination ConvertToBishopSearchAreaDetermination(StabilityParametersBishopSearchAreaDetermination searchAreaType)
{
var translationTable = new Dictionary
{
{
StabilityParametersBishopSearchAreaDetermination.Automatic, GridSizeDetermination.Automatic
},
{
StabilityParametersBishopSearchAreaDetermination.Specified, GridSizeDetermination.Specified
}
};
return translationTable[searchAreaType];
}
///
/// Converts to Uplift-Van grid determination.
///
/// Type of the grid for Uplift-Van.
///
public static GridSizeDetermination ConvertToUpliftVanGridDetermination(StabilityParametersUpliftVanGridDetermination gridType)
{
var translationTable = new Dictionary
{
{
StabilityParametersUpliftVanGridDetermination.Automatic, GridSizeDetermination.Automatic
},
{
StabilityParametersUpliftVanGridDetermination.Specified, GridSizeDetermination.Specified
}
};
return translationTable[gridType];
}
///
/// Converts to input tangent lines definition.
///
/// Type of the tangent line.
///
public static StabilityParametersUpliftVanTangentLinesDefinition ConvertToInputTangentLinesDefinition(TangentLinesDefinition tangentLineType)
{
var translationTable = new Dictionary
{
{
TangentLinesDefinition.OnBoundaryLines, StabilityParametersUpliftVanTangentLinesDefinition.OnBoundaryLines
},
{
TangentLinesDefinition.Specified, StabilityParametersUpliftVanTangentLinesDefinition.Specified
},
{
TangentLinesDefinition.Automatic, StabilityParametersUpliftVanTangentLinesDefinition.Automatic
}
};
return translationTable[tangentLineType];
}
///
/// Converts to tangent lines definition.
///
/// Type of the tangent line.
///
public static TangentLinesDefinition ConvertToTangentLinesDefinition(StabilityParametersUpliftVanTangentLinesDefinition tangentLineType)
{
var translationTable = new Dictionary
{
{
StabilityParametersUpliftVanTangentLinesDefinition.OnBoundaryLines, TangentLinesDefinition.OnBoundaryLines
},
{
StabilityParametersUpliftVanTangentLinesDefinition.Specified, TangentLinesDefinition.Specified
},
{
StabilityParametersUpliftVanTangentLinesDefinition.Automatic, TangentLinesDefinition.Automatic
}
};
return translationTable[tangentLineType];
}
///
/// Converts the soil shear strength model to shear strength model.
///
/// The soil shear strength model.
///
public static ShearStrengthModel ConvertToShearStrengthModel(SoilShearStrengthModel soilShearStrengthModel)
{
var translationTable = new Dictionary
{
{
SoilShearStrengthModel.CPhi, ShearStrengthModel.CPhi
},
{
SoilShearStrengthModel.SuCalculated, ShearStrengthModel.SuCalculated
},
{
SoilShearStrengthModel.SigmaTauCurve, ShearStrengthModel.SigmaTauCurve
},
{
SoilShearStrengthModel.SuTable, ShearStrengthModel.SuTable
}
};
return translationTable[soilShearStrengthModel];
}
///
/// Converts the input StabilityDesignMethod to the Dam StabilityDesignMethod.
///
/// The stability design method.
///
public static StabilityDesignMethod ConvertToDamStabilityDesignMethod(LocationDesignOptionsStabilityDesignMethod stabilityDesignMethod)
{
var translationTable = new Dictionary
{
{
LocationDesignOptionsStabilityDesignMethod.OptimizedSlopeAndShoulderAdaption, StabilityDesignMethod.OptimizedSlopeAndShoulderAdaption
},
{
LocationDesignOptionsStabilityDesignMethod.SlopeAdaptionBeforeShoulderAdaption, StabilityDesignMethod.SlopeAdaptionBeforeShoulderAdaption
}
};
return translationTable[stabilityDesignMethod];
}
///
/// Converts the Dam StabilityDesignMethod to the input StabilityDesignMethod.
///
/// The stability design method.
///
public static LocationDesignOptionsStabilityDesignMethod ConvertToInputStabilityDesignMethod(StabilityDesignMethod stabilityDesignMethod)
{
var translationTable = new Dictionary
{
{
StabilityDesignMethod.OptimizedSlopeAndShoulderAdaption, LocationDesignOptionsStabilityDesignMethod.OptimizedSlopeAndShoulderAdaption
},
{
StabilityDesignMethod.SlopeAdaptionBeforeShoulderAdaption, LocationDesignOptionsStabilityDesignMethod.SlopeAdaptionBeforeShoulderAdaption
}
};
return translationTable[stabilityDesignMethod];
}
///
/// Converts the input TimeStepUnit to the TimeStepUnit.
///
/// The time step unit.
///
public static TimeStepUnit ConvertToTimeStepUnit(uint timeStepUnit)
{
var translationTable = new Dictionary
{
{
TimeStepUnitSecond, TimeStepUnit.Second
},
{
TimeStepUnitMinute, TimeStepUnit.Minute
},
{
TimeStepUnitHour, TimeStepUnit.Hour
},
{
TimeStepUnitDay, TimeStepUnit.Day
},
{
TimeStepUnitMonth, TimeStepUnit.Month
},
{
TimeStepUnitWeek, TimeStepUnit.Week
},
{
TimeStepUnitYear, TimeStepUnit.Year
},
{
TimeStepUnitNonequidistant, TimeStepUnit.Nonequidistant
}
};
return translationTable[timeStepUnit];
}
///
/// Converts the TimeStepUnit to the input TimeStepUnit.
///
/// The time step unit.
///
public static uint ConvertToInputTimeStepUnit(TimeStepUnit timeStepUnit)
{
var translationTable = new Dictionary
{
{
TimeStepUnit.Second, TimeStepUnitSecond
},
{
TimeStepUnit.Minute, TimeStepUnitMinute
},
{
TimeStepUnit.Hour, TimeStepUnitHour
},
{
TimeStepUnit.Day, TimeStepUnitDay
},
{
TimeStepUnit.Month, TimeStepUnitMonth
},
{
TimeStepUnit.Week, TimeStepUnitWeek
},
{
TimeStepUnit.Year, TimeStepUnitYear
},
{
TimeStepUnit.Nonequidistant, TimeStepUnitNonequidistant
}
};
return translationTable[timeStepUnit];
}
///
/// Converts the input plLineType to Dam plLineType.
///
/// Type of the pl line.
/// plLineType
public static PlLineType ConvertToPlLineType(uint plLineType)
{
var translationTable = new Dictionary
{
{
PlLineTypePl1, PlLineType.Pl1
},
{
PlLineTypePl2, PlLineType.Pl2
},
{
PlLineTypePl3, PlLineType.Pl3
},
{
PlLineTypePl4, PlLineType.Pl4
}
};
return translationTable[plLineType];
}
///
/// Converts the Dam plLineType to input plLineType.
///
/// Type of the pl line.
/// plLineType as integer
public static uint ConvertToInputPlLineType(PlLineType plLineType)
{
var translationTable = new Dictionary
{
{
PlLineType.Pl1, PlLineTypePl1
},
{
PlLineType.Pl2, PlLineTypePl2
},
{
PlLineType.Pl3, PlLineTypePl3
},
{
PlLineType.Pl4, PlLineTypePl4
}
};
return translationTable[plLineType];
}
///
/// Converts the Dam sensorType to input sensorType.
///
/// Type of the sensor.
/// sensorType
public static SensorType ConvertToSensorType(uint sensorType)
{
var translationTable = new Dictionary
{
{
SensorTypePiezometricHead, SensorType.PiezometricHead
},
{
SensorTypePolderLevel, SensorType.PolderLevel
},
{
SensorTypeWaterLevel, SensorType.WaterLevel
}
};
return translationTable[sensorType];
}
///
/// Converts the Dam sensorType to input sensorType.
///
/// Type of the sensor.
/// sensorType as integer
public static uint ConvertToInputSensorType(SensorType sensorType)
{
var translationTable = new Dictionary
{
{
SensorType.PiezometricHead, SensorTypePiezometricHead
},
{
SensorType.PolderLevel, SensorTypePolderLevel
},
{
SensorType.WaterLevel, SensorTypeWaterLevel
}
};
return translationTable[sensorType];
}
///
/// Converts the Dam DataSourceTypeSensors to input DataSourceTypeSensors.
///
/// The data source type sensors.
///
/// DataSourceTypeSensors
///
public static DataSourceTypeSensors ConvertToDataSourceTypeSensors(uint dataSourceTypeSensors)
{
var translationTable = new Dictionary
{
{
DataSourceTypeSensorsIgnore, DataSourceTypeSensors.Ignore
},
{
DataSourceTypeSensorsLocationData, DataSourceTypeSensors.LocationData
},
{
DataSourceTypeSensorsSensor, DataSourceTypeSensors.Sensor
}
};
return translationTable[dataSourceTypeSensors];
}
///
/// Converts the Dam DataSourceType to input DataSourceType.
///
/// The data source type sensors.
///
/// DataSourceType as integer
///
public static uint ConvertToInputDataSourceTypeSensors(DataSourceTypeSensors dataSourceTypeSensors)
{
var translationTable = new Dictionary
{
{
DataSourceTypeSensors.Ignore, DataSourceTypeSensorsIgnore
},
{
DataSourceTypeSensors.LocationData, DataSourceTypeSensorsLocationData
},
{
DataSourceTypeSensors.Sensor, DataSourceTypeSensorsSensor
}
};
return translationTable[dataSourceTypeSensors];
}
///
/// Converts the type FailureMechanismSystemType from Dam Engine type to output object type.
///
/// Type of failure mechanism.
/// Type of the output object.
public static OperationalStaticDataFailureMechanismSystemType ConvertToOutputOperationalFailureMechanismSystemType(FailureMechanismSystemType failureMechanismSystemType)
{
if (failureMechanismSystemType == FailureMechanismSystemType.Piping)
{
throw new NotImplementedException("Piping is not a valid failure mechanism system type for operational static data.");
}
var translationTable = new Dictionary
{
{
FailureMechanismSystemType.StabilityInside, OperationalStaticDataFailureMechanismSystemType.StabilityInside
},
{
FailureMechanismSystemType.StabilityOutside, OperationalStaticDataFailureMechanismSystemType.StabilityOutside
}
};
return translationTable[failureMechanismSystemType];
}
///
/// Converts the type MStabModelType from Dam Engine type to output object type.
///
/// Type of failure mechanism.
/// Type of the output object.
public static OperationalStaticDataStabilityModel ConvertToOutputOperationalStabilityModel(MStabModelType stabilityModelType)
{
var translationTable = new Dictionary
{
{
MStabModelType.Bishop, OperationalStaticDataStabilityModel.Bishop
},
{
MStabModelType.UpliftVan, OperationalStaticDataStabilityModel.UpliftVan
},
{
MStabModelType.BishopUpliftVan, OperationalStaticDataStabilityModel.BishopUpliftVan
}
};
return translationTable[stabilityModelType];
}
}