Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs =================================================================== diff -u -r1545 -r1572 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs (.../FillDamUiFromXmlOutput.cs) (revision 1545) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs (.../FillDamUiFromXmlOutput.cs) (revision 1572) @@ -21,7 +21,6 @@ using System.Collections.Generic; using System.Linq; -using Deltares.DamEngine.Data.RegionalAssessmentResults; using Deltares.DamEngine.Io.XmlOutput; using Deltares.Geometry; using Deltares.Geotechnics.GeotechnicalGeometry; @@ -82,9 +81,66 @@ damProjectData.CalculationMessages.Add(logMessage); } } + + // Transfer output time series + if (output.Results.OperationalOutputTimeSeries != null) + { + damProjectData.OutputTimeSerieCollection = new TimeSerieCollection(); + TransferOutputTimeSeries(output.Results.OperationalOutputTimeSeries, damProjectData.OutputTimeSerieCollection); + } return damProjectData; } + private static void TransferOutputTimeSeries(DamEngine.Io.XmlOutput.TimeSerie[] outputTimeSeries, TimeSerieCollection outputTimeSerieCollection) + { + foreach (var outputTimeSerie in outputTimeSeries) + { + var timeSerie = outputTimeSerieCollection.AddNewSeries(outputTimeSerie.LocationId); + timeSerie.ParameterId = outputTimeSerie.ParameterId; + timeSerie.ForecastDateTime = outputTimeSerie.ForecastDateTime; + timeSerie.Type = outputTimeSerie.Type; + timeSerie.StartDateTime = outputTimeSerie.StartDateTime; + timeSerie.EndDateTime = outputTimeSerie.EndDateTime; + timeSerie.MissVal = outputTimeSerie.MissVal; + timeSerie.LongName = outputTimeSerie.LongName; + timeSerie.StationName = outputTimeSerie.StationName; + timeSerie.Units = outputTimeSerie.Units; + timeSerie.SourceOrganisation = outputTimeSerie.SourceOrganisation; + timeSerie.SourceSystem = outputTimeSerie.SourceSystem; + timeSerie.FileDescription = outputTimeSerie.FileDescription; + timeSerie.Region = outputTimeSerie.Region; + timeSerie.TimeStep.Multiplier = outputTimeSerie.TimeStep.Multiplier; + timeSerie.TimeStep.Divider = outputTimeSerie.TimeStep.Divider; + timeSerie.TimeStep.MultiplierSpecified = outputTimeSerie.TimeStep.MultiplierSpecified1; + timeSerie.TimeStep.DividerSpecified = outputTimeSerie.TimeStep.DividerSpecified1; + timeSerie.TimeStep.Unit = ConversionHelper.ConvertToTimeStepUnit(outputTimeSerie.TimeStep.TimeStepUnit); + for (int i = 0; i < outputTimeSerie.Entries.TimeSerieEntry.Length; i++) + { + var entry = outputTimeSerie.Entries.TimeSerieEntry[i]; + Stochast stochastValue = null; + if (entry.StochastValue != null) + { + 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 void CreateDesignResultsFromOutput(Output output, DamProjectData damProjectData) { if (damProjectData.WaterBoard.Dikes[0] != null) Index: DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs =================================================================== diff -u -r1015 -r1572 --- DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs (.../FillDamUiFromXmlOutputTests.cs) (revision 1015) +++ DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs (.../FillDamUiFromXmlOutputTests.cs) (revision 1572) @@ -44,7 +44,6 @@ using Deltares.Dam.Data; using Deltares.Dam.Data.DamEngineIo; using Deltares.DamEngine.Io; -using Deltares.DamEngine.Io.XmlInput; using Deltares.DamEngine.Io.XmlOutput; using Deltares.Geometry; using Deltares.Geotechnics.SurfaceLines; @@ -82,9 +81,49 @@ damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Error, null, "Error 1")); damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Error, null, "Error 2")); damProjectData.CalculationMessages.Add(new LogMessage(LogMessageType.Warning, null, "Warning 1")); + FillOutputTimeSeries(damProjectData); return damProjectData; } + private static void FillOutputTimeSeries(DamProjectData damProjectData) + { + const int timeSeriesCount = 2; + const int timeEntriesCount = 3; + const string idPipingBligh = "PipingFactorBligh"; + const string idStabilityInsideFactor = "StabilityInsideFactor"; + damProjectData.OutputTimeSerieCollection = new TimeSerieCollection(); + for (int i = 0; i < timeSeriesCount; i++) + { + string locationId = String.Format("location{0}", i); + var timeSerie = damProjectData.OutputTimeSerieCollection.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) + }); + } + } + } + [Test] public void SimpleTestPiping() { Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlOutputFromDamUi.cs =================================================================== diff -u -r1545 -r1572 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlOutputFromDamUi.cs (.../FillXmlOutputFromDamUi.cs) (revision 1545) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlOutputFromDamUi.cs (.../FillXmlOutputFromDamUi.cs) (revision 1572) @@ -38,9 +38,72 @@ output.Results = new OutputResults(); output.Results.CalculationMessages = new Message[damProjectData.CalculationMessages.Count]; TransferOutputCalculationMessages(damProjectData.CalculationMessages, output.Results); + if (damProjectData.OutputTimeSerieCollection != null) + { + output.Results.OperationalOutputTimeSeries = new DamEngine.Io.XmlOutput.TimeSerie[damProjectData.OutputTimeSerieCollection.Series.Count]; + TransferOutputTimeSeries(damProjectData.OutputTimeSerieCollection, output.Results.OperationalOutputTimeSeries); + } return output; } + private static void TransferOutputTimeSeries(TimeSerieCollection outputTimeSerieCollection, DamEngine.Io.XmlOutput.TimeSerie[] outputTimeSeries) + { + int timeSerieIndex = 0; + foreach (var damTimeSerie in outputTimeSerieCollection.Series) + { + var outputTimeSerie = new DamEngine.Io.XmlOutput.TimeSerie(); + outputTimeSerie.Entries = new TimeSerieEntries(); + outputTimeSerie.Entries.TimeSerieEntry = new TimeSerieEntriesTimeSerieEntry[damTimeSerie.Entries.Count]; + outputTimeSerie.TimeStep = new TimeSerieTimeStep(); + outputTimeSerie.LocationId = damTimeSerie.LocationId; + outputTimeSerie.ParameterId = damTimeSerie.ParameterId; + outputTimeSerie.ForecastDateTime = damTimeSerie.ForecastDateTime; + outputTimeSerie.Type = damTimeSerie.Type; + outputTimeSerie.StartDateTime = damTimeSerie.StartDateTime; + outputTimeSerie.EndDateTime = damTimeSerie.EndDateTime; + outputTimeSerie.MissVal = damTimeSerie.MissVal; + outputTimeSerie.LongName = damTimeSerie.LongName; + outputTimeSerie.StationName = damTimeSerie.StationName; + outputTimeSerie.Units = damTimeSerie.Units; + outputTimeSerie.SourceOrganisation = damTimeSerie.SourceOrganisation; + outputTimeSerie.SourceSystem = damTimeSerie.SourceSystem; + outputTimeSerie.FileDescription = damTimeSerie.FileDescription; + outputTimeSerie.Region = damTimeSerie.Region; + outputTimeSerie.TimeStep.Multiplier = damTimeSerie.TimeStep.Multiplier; + outputTimeSerie.TimeStep.Divider = damTimeSerie.TimeStep.Divider; + outputTimeSerie.TimeStep.MultiplierSpecified1 = damTimeSerie.TimeStep.MultiplierSpecified; + outputTimeSerie.TimeStep.DividerSpecified1 = damTimeSerie.TimeStep.DividerSpecified; + outputTimeSerie.TimeStep.TimeStepUnit = ConversionHelper.ConvertToInputTimeStepUnit(damTimeSerie.TimeStep.Unit); + int timeSerieEntryIndex = 0; + foreach (var timestepEntry in damTimeSerie.Entries) + { + TimeSerieEntriesTimeSerieEntryStochastValue stochastValue = null; + if (timestepEntry.StochastValue != null) + { + 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 + }; + outputTimeSerie.Entries.TimeSerieEntry[timeSerieEntryIndex] = timeStep; + timeSerieEntryIndex++; + } + outputTimeSeries[timeSerieIndex] = outputTimeSerie; + timeSerieIndex++; + } + } + private static void TransferOutputCalculationMessages(List calculationMessages, OutputResults outputResults) { //var calculationMessages = damProjectData.CalculationMessages;