Index: DamEngine/trunk/xsd/DamInput.xsd =================================================================== diff -u -r1405 -r1554 --- DamEngine/trunk/xsd/DamInput.xsd (.../DamInput.xsd) (revision 1405) +++ DamEngine/trunk/xsd/DamInput.xsd (.../DamInput.xsd) (revision 1554) @@ -8,6 +8,7 @@ + @@ -65,6 +66,13 @@ + + + + + + + Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs =================================================================== diff -u -r1553 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 1553) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 1554) @@ -24,6 +24,7 @@ using System.IO; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.General.TimeSeries; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Io; @@ -121,9 +122,106 @@ FillSoilProfiles2D(dike); FillSegments(damProjectData); FillLocations(dike, damProjectData.Segments, damProjectData.ProjectPath); + FillInputTimeSeries(dike); + // FillOutputTimeSeries(dike); return damProjectData; } + private void FillOutputTimeSeries(Dike dike) + { + const int timeSeriesCount = 2; + const int timeEntriesCount = 3; + const string idPipingBligh = "PipingFactorBligh"; + const string idStabilityInsideFactor = "StabilityInsideFactor"; + dike.InputTimeSerieCollection = new TimeSerieCollection(); + for (int i = 0; i < timeSeriesCount; i++) + { + string locationId = String.Format("location{0}", i); + var timeSerie = dike.InputTimeSerieCollection.AddNewSeries(locationId); + timeSerie.ParameterId = (i % 2 == 0) ? idPipingBligh : idStabilityInsideFactor; + timeSerie.ForecastDateTime = DateTime.Now; + timeSerie.Type = "instantaneous"; + timeSerie.StartDateTime = new DateTime(2012, 12, 31); + timeSerie.EndDateTime = new DateTime(2012, 12, 31, 1, 0, 0); + timeSerie.MissVal = -9999.0; + timeSerie.LongName = timeSerie.LocationId + "long"; + timeSerie.StationName = String.Format("station{0}", i); + timeSerie.Units = "m"; + timeSerie.SourceOrganisation = String.Format("organisation{0}", i); + timeSerie.SourceSystem = String.Format("system{0}", i); + timeSerie.FileDescription = String.Format("filedescription{0}", i); + timeSerie.Region = String.Format("region{0}", i); + timeSerie.TimeStep.Multiplier = 3600; + timeSerie.TimeStep.Unit = TimeStepUnit.Second; + for (int j = 0; j < timeEntriesCount; j++) + { + timeSerie.Entries.Add(new TimeSerieEntry + { + DateTime = new DateTime(2012, 12, 31, 1, j * 10, 0), + Value = 1 + j * 0.1, + Flag = 1, + BasisFileName = String.Format("BasisFileName{0}", i) + }); + } + } + } + + private void FillInputTimeSeries(Dike dike) + { + const int timeSeriesCount = 2; + const int timeEntriesCount = 3; + const string idWaterLevel = "WaterLevel"; + const string idWaterPressure = "WaterPressure"; + dike.InputTimeSerieCollection = new TimeSerieCollection(); + for (int i = 0; i < timeSeriesCount; i++) + { + string locationId = String.Format("location{0}", i); + var timeSerie = dike.InputTimeSerieCollection.AddNewSeries(locationId); + timeSerie.ParameterId = (i % 2 == 0) ? idWaterLevel : idWaterPressure; + timeSerie.ForecastDateTime = DateTime.Now; + timeSerie.Type = "instantaneous"; + timeSerie.StartDateTime = new DateTime(2012, 12, 31); + timeSerie.EndDateTime = new DateTime(2012, 12, 31, 1, 0, 0); + timeSerie.MissVal = -9999.0; + timeSerie.LongName = timeSerie.LocationId + "long"; + timeSerie.StationName = String.Format("station{0}", i); + timeSerie.Units = "m"; + timeSerie.SourceOrganisation = String.Format("organisation{0}", i); + timeSerie.SourceSystem = String.Format("system{0}", i); + timeSerie.FileDescription = String.Format("filedescription{0}", i); + timeSerie.Region = String.Format("region{0}", i); + if ((i % 2 == 0)) + { + timeSerie.TimeStep.Multiplier = 3600; + timeSerie.TimeStep.Unit = TimeStepUnit.Second; + } + else + { + timeSerie.TimeStep.Divider = 24; + timeSerie.TimeStep.Unit = TimeStepUnit.Day; + } + for (int j = 0; j < timeEntriesCount; j++) + { + Stochast stochastValue = new Stochast() + { + Mean = 1.0 * j, + Distribution = j, + StandardDeviation = 0.1 * j + }; + timeSerie.Entries.Add(new TimeSerieEntry + { + + DateTime = new DateTime(2012, 12, 31, 1, j * 10, 0), + Value = j, + Flag = 1, + BasisFileName = String.Format("BasisFileName{0}", i), + RelativeCalculationPathName = String.Format("RelativeCalculationPathName{0}", i), + StochastValue = stochastValue + }); + } + } + } + private void FillAquiferSoils(SoilList soilList) { for (int i = 0; i < soilList.Soils.Count; i++) @@ -183,7 +281,7 @@ dike.SoilList = new SoilList(); for (int i = 0; i < soilCount; i++) { - Soil soil = new Soil() {Name = String.Format("Soil {0}", i)}; + Soil soil = new Soil() { Name = String.Format("Soil {0}", i) }; //soil.SoilType = SoilType.Loam; soil.AbovePhreaticLevel = 7 + 0.1 * i; @@ -197,7 +295,7 @@ soil.Ocr = 14 + 0.1 * i; soil.SlopeRestProfile = 15 + 0.1 * i; soil.DilatancyType = DilatancyType.Zero; - + //soil.CuBottom = 11 + 0.1 * i; //soil.CuTop = 12 + 0.1 * i; //soil.PoP = 15 + 0.1 * i; @@ -265,8 +363,8 @@ var location = new Data.General.Location(); location.Name = "Location " + (i + 1).ToString(); location.XSoilGeometry2DOrigin = 1.23; - location.ModelParametersForPlLines.PlLineCreationMethod = (PlLineCreationMethod) i; - location.IntrusionVerticalWaterPressure = (IntrusionVerticalWaterPressureType) i; + location.ModelParametersForPlLines.PlLineCreationMethod = (PlLineCreationMethod)i; + location.IntrusionVerticalWaterPressure = (IntrusionVerticalWaterPressureType)i; location.PolderLevel = 1.0 * i + 0.11; location.PolderLevelLow = 1.0 * i + 0.09; location.ModelParametersForPlLines.DampingFactorPl4 = 1.0 * i + 0.12; @@ -322,7 +420,7 @@ location.RedesignDikeHeight = false; location.RedesignDikeShoulder = false; location.ShoulderEmbankmentMaterial = "ShoulderMat" + (i + 1).ToString(); ; - location.StabilityShoulderGrowSlope = 10.0 * i + 0.50; + location.StabilityShoulderGrowSlope = 10.0 * i + 0.50; location.StabilityShoulderGrowDeltaX = 10.0 * i + 0.51; location.StabilitySlopeAdaptionDeltaX = 10.0 * i + 0.52; location.SlopeAdaptionStartCotangent = 10.0 * i + 0.53; @@ -355,9 +453,9 @@ RequiredSafetyFactorPiping = 10.0 * i + 0.65, RequiredSafetyFactorStabilityInnerSlope = 10.0 * i + 0.66, RequiredSafetyFactorStabilityOuterSlope = 10.0 * i + 0.67, - UpliftCriterionStability = 10.0 * i + 0.68, + UpliftCriterionStability = 10.0 * i + 0.68, UpliftCriterionPiping = 10.0 * i + 0.69 - }; + }; dike.Locations.Add(location); } } @@ -452,7 +550,7 @@ { Name = "Layer" + (j + 1).ToString(), Soil = dike.SoilList.Soils[j] - + }; if (j < 2) { Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs =================================================================== diff -u -r1270 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs (.../ConversionHelper.cs) (revision 1270) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs (.../ConversionHelper.cs) (revision 1554) @@ -1126,5 +1126,55 @@ }; return translationTable[soilType]; } + + 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; + + /// + /// 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]; + } } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r1553 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 1553) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 1554) @@ -25,6 +25,7 @@ using System.Linq; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.General.TimeSeries; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Data.Standard.Logging; @@ -35,6 +36,7 @@ using Soil = Deltares.DamEngine.Io.XmlInput.Soil; using SoilProfile1D = Deltares.DamEngine.Data.Geotechnics.SoilProfile1D; using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D; +using TimeSerie = Deltares.DamEngine.Io.XmlInput.TimeSerie; namespace Deltares.DamEngine.Interface { @@ -79,11 +81,62 @@ TransferSoilProfiles2D(input.SoilProfiles2D, dike.SoilProfiles2D, dike.SoilList); TransferSegments(input.Segments, damProjectData.Segments); TransferLocations(input.ProjectPath ,input.Locations, dike.Locations, dike.SurfaceLines2, damProjectData.Segments); + TransferInputTimeSeries(input.OperationalInputTimeSeries, dike); PostProcess(damProjectData); return damProjectData; } + private static void TransferInputTimeSeries(TimeSerie[] inputOperationalInputTimeSeries, Dike dike) + { + if (inputOperationalInputTimeSeries != null) + { + dike.InputTimeSerieCollection = new TimeSerieCollection(); + foreach (var inputTimeSerie in inputOperationalInputTimeSeries) + { + var timeSerie = dike.InputTimeSerieCollection.AddNewSeries(inputTimeSerie.LocationId); + timeSerie.ParameterId = inputTimeSerie.ParameterId; + timeSerie.ForecastDateTime = inputTimeSerie.ForecastDateTime; + timeSerie.Type = inputTimeSerie.Type; + timeSerie.StartDateTime = inputTimeSerie.StartDateTime; + timeSerie.EndDateTime = inputTimeSerie.EndDateTime; + timeSerie.MissVal = inputTimeSerie.MissVal; + timeSerie.LongName = inputTimeSerie.LongName; + timeSerie.StationName = inputTimeSerie.StationName; + timeSerie.Units = inputTimeSerie.Units; + timeSerie.SourceOrganisation = inputTimeSerie.SourceOrganisation; + timeSerie.SourceSystem = inputTimeSerie.SourceSystem; + timeSerie.FileDescription = inputTimeSerie.FileDescription; + timeSerie.Region = inputTimeSerie.Region; + timeSerie.TimeStep.Multiplier = inputTimeSerie.TimeStep.Multiplier; + timeSerie.TimeStep.Divider = inputTimeSerie.TimeStep.Divider; + timeSerie.TimeStep.MultiplierSpecified = inputTimeSerie.TimeStep.MultiplierSpecified1; + timeSerie.TimeStep.DividerSpecified = inputTimeSerie.TimeStep.DividerSpecified1; + timeSerie.TimeStep.Unit = ConversionHelper.ConvertToTimeStepUnit(inputTimeSerie.TimeStep.TimeStepUnit); + for (int i = 0; i < inputTimeSerie.Entries.TimeSerieEntry.Length; i++) + { + var entry = inputTimeSerie.Entries.TimeSerieEntry[i]; + Stochast stochastValue = new Stochast() + { + Distribution = entry.StochastValue.Distribution, + Mean = entry.StochastValue.Mean, + StandardDeviation = entry.StochastValue.StandardDeviation + }; + TimeSerieEntry timeSerieEntry = new TimeSerieEntry() + { + DateTime = entry.DateTime, + Value = entry.Value, + BasisFileName = entry.BasisFileNameWMF, + Flag = entry.Flagnietechtgebruikt, + RelativeCalculationPathName = entry.RelativeCalculationPathName, + StochastValue = stochastValue + }; + timeSerie.Entries.Add(timeSerieEntry); + } + } + } + } + private static List TransferAquiferSoils(InputAquiferSoil[] inputAquiferSoils, SoilList soilList) { List validationMessages = new List(); @@ -101,7 +154,7 @@ { // If a soil is (wrongly) in the list more than once, then prefer aquifer true. if (aquiferSoil.IsAquifer) - { + { validationMessages.Add(new LogMessage(LogMessageType.Warning, aquiferSoil, string.Format(Resources.DoubleAquiferSoil, aquiferSoil.Soilname))); soilList.AquiferDictionary[soil] = true; } Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs =================================================================== diff -u -r1405 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 1405) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 1554) @@ -24,6 +24,7 @@ using System.IO; using System.Linq; using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.General.TimeSeries; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Interface.Properties; using Deltares.DamEngine.Io.XmlInput; @@ -81,9 +82,68 @@ input.Segments = new Io.XmlInput.Segment[damProjectData.Segments.Count]; TransferSegments(damProjectData.Segments, input.Segments); } + if (dike.InputTimeSerieCollection != null) + { + input.OperationalInputTimeSeries = new Io.XmlInput.TimeSerie[dike.InputTimeSerieCollection.Series.Count]; + TransferInputTimeSeries(dike.InputTimeSerieCollection, input.OperationalInputTimeSeries); + } return input; } + private static void TransferInputTimeSeries(TimeSerieCollection inputTimeSerieCollection, Io.XmlInput.TimeSerie[] operationalInputTimeSeries) + { + int timeSerieIndex = 0; + foreach (var timeSerie in inputTimeSerieCollection.Series) + { + Io.XmlInput.TimeSerie inputTimeSerie = new Io.XmlInput.TimeSerie(); + inputTimeSerie.Entries = new TimeSerieEntries(); + inputTimeSerie.Entries.TimeSerieEntry = new TimeSerieEntriesTimeSerieEntry[timeSerie.Entries.Count]; + inputTimeSerie.TimeStep = new TimeSerieTimeStep(); + inputTimeSerie.LocationId = timeSerie.LocationId; + inputTimeSerie.ParameterId = timeSerie.ParameterId; + inputTimeSerie.ForecastDateTime = timeSerie.ForecastDateTime; + inputTimeSerie.Type = timeSerie.Type; + inputTimeSerie.StartDateTime = timeSerie.StartDateTime; + inputTimeSerie.EndDateTime = timeSerie.EndDateTime; + inputTimeSerie.MissVal = timeSerie.MissVal; + inputTimeSerie.LongName = timeSerie.LongName; + inputTimeSerie.StationName = timeSerie.StationName; + inputTimeSerie.Units = timeSerie.Units; + inputTimeSerie.SourceOrganisation = timeSerie.SourceOrganisation; + inputTimeSerie.SourceSystem = timeSerie.SourceSystem; + inputTimeSerie.FileDescription = timeSerie.FileDescription; + inputTimeSerie.Region = timeSerie.Region; + inputTimeSerie.TimeStep.Multiplier = timeSerie.TimeStep.Multiplier; + inputTimeSerie.TimeStep.Divider = timeSerie.TimeStep.Divider; + inputTimeSerie.TimeStep.MultiplierSpecified1 = timeSerie.TimeStep.MultiplierSpecified; + inputTimeSerie.TimeStep.DividerSpecified1 = timeSerie.TimeStep.DividerSpecified; + inputTimeSerie.TimeStep.TimeStepUnit = ConversionHelper.ConvertToInputTimeStepUnit(timeSerie.TimeStep.Unit); + int timeSerieEntryIndex = 0; + foreach (var timestepEntry in timeSerie.Entries) + { + TimeSerieEntriesTimeSerieEntryStochastValue stochastValue = new TimeSerieEntriesTimeSerieEntryStochastValue() + { + Distribution = timestepEntry.StochastValue.Distribution, + Mean = timestepEntry.StochastValue.Mean, + StandardDeviation = timestepEntry.StochastValue.StandardDeviation + }; + TimeSerieEntriesTimeSerieEntry timeStep = new TimeSerieEntriesTimeSerieEntry() + { + DateTime = timestepEntry.DateTime, + Value = timestepEntry.Value, + BasisFileNameWMF = timestepEntry.BasisFileName, + Flagnietechtgebruikt = timestepEntry.Flag, + RelativeCalculationPathName = timestepEntry.RelativeCalculationPathName, + StochastValue = stochastValue + }; + inputTimeSerie.Entries.TimeSerieEntry[timeSerieEntryIndex] = timeStep; + timeSerieEntryIndex++; + } + operationalInputTimeSeries[timeSerieIndex] = inputTimeSerie; + timeSerieIndex++; + } + } + private static void TransferAquiferSoils(Dictionary aquiferDictionary, Input input) { InputAquiferSoil[] aquiferSoils; Index: DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs =================================================================== diff -u -r1175 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs (.../DamOutput.cs) (revision 1175) +++ DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs (.../DamOutput.cs) (revision 1554) @@ -443,7 +443,7 @@ private bool multiplierSpecified1Field; - private TimeSerieTimeStepTimeStepUnit timeStepUnitField; + private uint timeStepUnitField; /// [System.Xml.Serialization.XmlAttributeAttribute()] @@ -491,7 +491,7 @@ /// [System.Xml.Serialization.XmlAttributeAttribute()] - public TimeSerieTimeStepTimeStepUnit TimeStepUnit { + public uint TimeStepUnit { get { return this.timeStepUnitField; } @@ -504,37 +504,6 @@ /// [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] [System.SerializableAttribute()] - [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] - public enum TimeSerieTimeStepTimeStepUnit { - - /// - Second, - - /// - Minute, - - /// - Hour, - - /// - Day, - - /// - Week, - - /// - Month, - - /// - Year, - - /// - Nonequidistant, - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] - [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class Message { Index: DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs =================================================================== diff -u -r1405 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 1405) +++ DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 1554) @@ -39,6 +39,8 @@ private InputAquiferSoil[] aquiferSoilsField; + private TimeSerie[] operationalInputTimeSeriesField; + private InputDamProjectType damProjectTypeField; private int failureMechanismSystemTypeField; @@ -152,6 +154,17 @@ } /// + [System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)] + public TimeSerie[] OperationalInputTimeSeries { + get { + return this.operationalInputTimeSeriesField; + } + set { + this.operationalInputTimeSeriesField = value; + } + } + + /// [System.Xml.Serialization.XmlAttributeAttribute()] public InputDamProjectType DamProjectType { get { @@ -598,6 +611,489 @@ [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class TimeSerie { + + private TimeSerieTimeStep timeStepField; + + private TimeSerieEntries entriesField; + + private System.DateTime forecastDateTimeField; + + private string typeField; + + private string locationIdField; + + private string parameterIdField; + + private System.DateTime startDateTimeField; + + private System.DateTime endDateTimeField; + + private double missValField; + + private string longNameField; + + private string stationNameField; + + private string unitsField; + + private string sourceOrganisationField; + + private string sourceSystemField; + + private string fileDescriptionField; + + private string regionField; + + private string commentField; + + private System.DateTime creationDateTimeField; + + private bool creationDateTimeFieldSpecified; + + /// + public TimeSerieTimeStep TimeStep { + get { + return this.timeStepField; + } + set { + this.timeStepField = value; + } + } + + /// + public TimeSerieEntries Entries { + get { + return this.entriesField; + } + set { + this.entriesField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime ForecastDateTime { + get { + return this.forecastDateTimeField; + } + set { + this.forecastDateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Type { + get { + return this.typeField; + } + set { + this.typeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string LocationId { + get { + return this.locationIdField; + } + set { + this.locationIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string ParameterId { + get { + return this.parameterIdField; + } + set { + this.parameterIdField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime StartDateTime { + get { + return this.startDateTimeField; + } + set { + this.startDateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime EndDateTime { + get { + return this.endDateTimeField; + } + set { + this.endDateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double MissVal { + get { + return this.missValField; + } + set { + this.missValField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string LongName { + get { + return this.longNameField; + } + set { + this.longNameField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string StationName { + get { + return this.stationNameField; + } + set { + this.stationNameField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Units { + get { + return this.unitsField; + } + set { + this.unitsField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string SourceOrganisation { + get { + return this.sourceOrganisationField; + } + set { + this.sourceOrganisationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string SourceSystem { + get { + return this.sourceSystemField; + } + set { + this.sourceSystemField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string FileDescription { + get { + return this.fileDescriptionField; + } + set { + this.fileDescriptionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Region { + get { + return this.regionField; + } + set { + this.regionField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string Comment { + get { + return this.commentField; + } + set { + this.commentField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime CreationDateTime { + get { + return this.creationDateTimeField; + } + set { + this.creationDateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool CreationDateTimeSpecified { + get { + return this.creationDateTimeFieldSpecified; + } + set { + this.creationDateTimeFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] + public partial class TimeSerieTimeStep { + + private uint dividerField; + + private uint multiplierField; + + private bool dividerSpecified1Field; + + private bool multiplierSpecified1Field; + + private uint timeStepUnitField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint Divider { + get { + return this.dividerField; + } + set { + this.dividerField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint Multiplier { + get { + return this.multiplierField; + } + set { + this.multiplierField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("DividerSpecified")] + public bool DividerSpecified1 { + get { + return this.dividerSpecified1Field; + } + set { + this.dividerSpecified1Field = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("MultiplierSpecified")] + public bool MultiplierSpecified1 { + get { + return this.multiplierSpecified1Field; + } + set { + this.multiplierSpecified1Field = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public uint TimeStepUnit { + get { + return this.timeStepUnitField; + } + set { + this.timeStepUnitField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] + public partial class TimeSerieEntries { + + private TimeSerieEntriesTimeSerieEntry[] timeSerieEntryField; + + /// + [System.Xml.Serialization.XmlElementAttribute("TimeSerieEntry")] + public TimeSerieEntriesTimeSerieEntry[] TimeSerieEntry { + get { + return this.timeSerieEntryField; + } + set { + this.timeSerieEntryField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] + public partial class TimeSerieEntriesTimeSerieEntry { + + private TimeSerieEntriesTimeSerieEntryStochastValue stochastValueField; + + private System.DateTime dateTimeField; + + private double valueField; + + private int flagnietechtgebruiktField; + + private string basisFileNameWMFField; + + private string relativeCalculationPathNameField; + + /// + public TimeSerieEntriesTimeSerieEntryStochastValue StochastValue { + get { + return this.stochastValueField; + } + set { + this.stochastValueField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public System.DateTime DateTime { + get { + return this.dateTimeField; + } + set { + this.dateTimeField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Value { + get { + return this.valueField; + } + set { + this.valueField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute("Flag-nietechtgebruikt")] + public int Flagnietechtgebruikt { + get { + return this.flagnietechtgebruiktField; + } + set { + this.flagnietechtgebruiktField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string BasisFileNameWMF { + get { + return this.basisFileNameWMFField; + } + set { + this.basisFileNameWMFField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public string RelativeCalculationPathName { + get { + return this.relativeCalculationPathNameField; + } + set { + this.relativeCalculationPathNameField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] + public partial class TimeSerieEntriesTimeSerieEntryStochastValue { + + private double meanField; + + private double standardDeviationField; + + private int distributionField; + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Mean { + get { + return this.meanField; + } + set { + this.meanField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double StandardDeviation { + get { + return this.standardDeviationField; + } + set { + this.standardDeviationField = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public int Distribution { + get { + return this.distributionField; + } + set { + this.distributionField = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class StabilityParameters { private int searchMethodField; Index: DamEngine/trunk/xsd/DamTimeSerie.xsd =================================================================== diff -u -r972 -r1554 --- DamEngine/trunk/xsd/DamTimeSerie.xsd (.../DamTimeSerie.xsd) (revision 972) +++ DamEngine/trunk/xsd/DamTimeSerie.xsd (.../DamTimeSerie.xsd) (revision 1554) @@ -11,7 +11,7 @@ - + Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs =================================================================== diff -u -r1232 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 1232) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 1554) @@ -594,5 +594,33 @@ { Assert.AreEqual(stabilityModelType, ConversionHelper.ConvertToStabilityModelType(outputStabilityModelType)); } + [Test] + [TestCase(ConversionHelper.TimeStepUnitSecond, TimeStepUnit.Second)] + [TestCase(ConversionHelper.TimeStepUnitMinute, TimeStepUnit.Minute)] + [TestCase(ConversionHelper.TimeStepUnitHour, TimeStepUnit.Hour)] + [TestCase(ConversionHelper.TimeStepUnitDay, TimeStepUnit.Day)] + [TestCase(ConversionHelper.TimeStepUnitMonth, TimeStepUnit.Month)] + [TestCase(ConversionHelper.TimeStepUnitWeek, TimeStepUnit.Week)] + [TestCase(ConversionHelper.TimeStepUnitYear, TimeStepUnit.Year)] + [TestCase(ConversionHelper.TimeStepUnitNonequidistant, TimeStepUnit.Nonequidistant)] + public void CanConvertToTimeStepUnit(uint inputTimeStepUnit, TimeStepUnit timeStepUnit) + { + Assert.AreEqual(timeStepUnit, ConversionHelper.ConvertToTimeStepUnit(inputTimeStepUnit)); + } + + [Test] + [TestCase(TimeStepUnit.Second, ConversionHelper.TimeStepUnitSecond)] + [TestCase(TimeStepUnit.Minute, ConversionHelper.TimeStepUnitMinute)] + [TestCase(TimeStepUnit.Hour, ConversionHelper.TimeStepUnitHour)] + [TestCase(TimeStepUnit.Day, ConversionHelper.TimeStepUnitDay)] + [TestCase(TimeStepUnit.Month, ConversionHelper.TimeStepUnitMonth)] + [TestCase(TimeStepUnit.Week, ConversionHelper.TimeStepUnitWeek)] + [TestCase(TimeStepUnit.Year, ConversionHelper.TimeStepUnitYear)] + [TestCase(TimeStepUnit.Nonequidistant, ConversionHelper.TimeStepUnitNonequidistant)] + public void CanConvertToInputTimeStepUnit(TimeStepUnit timeStepUnit, uint inputTimeStepUnit) + { + Assert.AreEqual(inputTimeStepUnit, ConversionHelper.ConvertToInputTimeStepUnit(timeStepUnit)); + } + } } Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/Deltares.DamEngine.Interface.Tests.csproj =================================================================== diff -u -r1536 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/Deltares.DamEngine.Interface.Tests.csproj (.../Deltares.DamEngine.Interface.Tests.csproj) (revision 1536) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/Deltares.DamEngine.Interface.Tests.csproj (.../Deltares.DamEngine.Interface.Tests.csproj) (revision 1554) @@ -56,10 +56,6 @@ - - {E943B1D5-FAFA-4AFE-9071-F8B22CF612EA} - Deltares.DamEngine.Calculators - {b7a49c1a-1c91-4d72-aba9-9fbac2509d8e} Deltares.DamEngine.Data Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Dike.cs =================================================================== diff -u -r1122 -r1554 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Dike.cs (.../Dike.cs) (revision 1122) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Dike.cs (.../Dike.cs) (revision 1554) @@ -26,6 +26,7 @@ using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General.Gauges; using Deltares.DamEngine.Data.General.PlLines; +using Deltares.DamEngine.Data.General.TimeSeries; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Data.Standard; using Deltares.DamEngine.Data.Standard.Language; @@ -78,6 +79,8 @@ private IList soilProfiles; private IList soilProfiles2D; private List databaseSoils = new List(); + private TimeSerieCollection inputTimeSerieCollection = null; + private TimeSerieCollection outputTimeSerieCollection = null; /// /// Initializes a new instance of the class. @@ -203,6 +206,42 @@ set { description = value; } } + /// + /// Gets or sets the input time serie collection. + /// + /// + /// Input time series for operational use + /// + public TimeSerieCollection InputTimeSerieCollection + { + get + { + return inputTimeSerieCollection; + } + set + { + inputTimeSerieCollection = value; + } + } + + /// + /// Gets or sets the output time serie collection. + /// + /// + /// Output time series for operational use + /// + public TimeSerieCollection OutputTimeSerieCollection + { + get + { + return outputTimeSerieCollection; + } + set + { + outputTimeSerieCollection = value; + } + } + public void Validate() { if (Locations == null || Locations.Count < 1)