Index: DamClients/DamLive/trunk/src/Deltares.Dam.Application.Live/DamEngineRunner.cs =================================================================== diff -u -r1630 -r1638 --- DamClients/DamLive/trunk/src/Deltares.Dam.Application.Live/DamEngineRunner.cs (.../DamEngineRunner.cs) (revision 1630) +++ DamClients/DamLive/trunk/src/Deltares.Dam.Application.Live/DamEngineRunner.cs (.../DamEngineRunner.cs) (revision 1638) @@ -4,8 +4,10 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; using Deltares.Dam.Application.Live.Properties; using Deltares.Dam.Data; +using Deltares.Dam.Data.Assemblers; using Deltares.Dam.Data.DamEngineIo; using Deltares.DamEngine.Interface; using Deltares.DamEngine.Io; @@ -56,8 +58,43 @@ } + /// + /// Initializes this instance. + /// + /// + /// public void Initialize() { + LoadDataFromFiles(); + + AdaptDamProjectData(); + } + + private void AdaptDamProjectData() + { + // Prepare DamProjetData for serializing to Dam Engine + DamProjectData.SelectedLocationJobs.Clear(); + foreach (Data.Location location in DamProjectData.Locations) + { + var locationJob = new LocationJob() + { + Location = location, + Run = true + }; + DamProjectData.LocationJobs.Add(locationJob); + } + DamProjectData.FillOverallSensorData(); + + // Add time series to DamProjectData + DamProjectData.InputTimeSerieCollection = InputTimeSeriesCollection; + + // Set correct calculation settings + DamProjectData.DamProjectType = DamProjectType.Calamity; + + } + + private void LoadDataFromFiles() + { if (DamProjectData == null) { if (DamXFile == null) @@ -88,30 +125,57 @@ // Read calculation parameters, if available CalculationParameters = CalculationParameters.LoadFromFile(ParametersFile); } + } - // Prepare DamProjetData for serializing to Dam Engine - DamProjectData.SelectedLocationJobs.Clear(); - foreach (Data.Location location in DamProjectData.Locations) + public void Run() + { + Initialize(); + OutputTimeSeriesCollection.Series.Clear(); + RunStabilityInside(); + CheckForNotImplementedModels(); + WriteResultsToFile(FewsOutputFile.FullName); + } + + private void CheckForNotImplementedModels() + { + if (CalculationParameters.CalculationModules.Overtopping) { - var locationJob = new LocationJob() - { - Location = location, Run = true - }; - DamProjectData.LocationJobs.Add(locationJob); + Logger.LogError("Calculation module Overtopping not implemented yet"); } - DamProjectData.FillOverallSensorData(); - - // Add timeseries - DamProjectData.InputTimeSerieCollection = InputTimeSeriesCollection; + if (CalculationParameters.CalculationModules.PipingBligh) + { + Logger.LogError("Calculation module PipingBligh not implemented yet"); + } + if (CalculationParameters.CalculationModules.PipingIJkdijk) + { + Logger.LogError("Calculation module PipingIJkdijk not implemented yet"); + } + if (CalculationParameters.CalculationModules.PipingSellmeijer) + { + Logger.LogError("Calculation module PipingSellmeijer not implemented yet"); + } + if (CalculationParameters.CalculationModules.PipingSellmeijerProbabilistic) + { + Logger.LogError("Calculation module PipingSellmeijerProbabilistic not implemented yet"); + } + if (CalculationParameters.CalculationModules.PipingWti) + { + Logger.LogError("Calculation module PipingWti not implemented yet"); + } + if (CalculationParameters.CalculationModules.StabilityOutside) + { + Logger.LogError("Calculation module StabilityOutside not implemented yet"); + } } - public void Run() + private void RunStabilityInside() { - Initialize(); - // CreateAndSetWorkingDirectories(); - // DeleteFormerProjectFiles(); - CallDamEngine(); - // WriteResultsToFile(FewsOutputFile.FullName); + if (CalculationParameters.CalculationModules.Stability) + { + DamProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType = FailureMechanismSystemType.StabilityInside; + CallDamEngine(); + OutputTimeSeriesCollection.Series.AddRange(DamProjectData.OutputTimeSerieCollection.Series); + } } private void CallDamEngine() @@ -148,5 +212,23 @@ LogManager.Add(new LogMessage(LogMessageType.FatalError, typeof(EngineInterface), string.Format("{0}", e.Message))); } } + protected void WriteResultsToFile(string fileName) + { + if (string.IsNullOrWhiteSpace(fileName)) + throw new ArgumentNullException("fileName"); + + var timeSerieAssembler = new TimeSeriesAssembler(); + XDocument doc = timeSerieAssembler.CreateDataTransferDocument(OutputTimeSeriesCollection); + + try + { + doc.Save(fileName); + FileWriterUtil.RemoveThreeBytesFromXml(fileName); + } + catch (Exception e) + { + Logger.LogError("Could not export Fews xml file", e); + } + } } } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r1634 -r1638 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 1634) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 1638) @@ -215,18 +215,19 @@ 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++; } + 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++;