//-----------------------------------------------------------------------
//
// Copyright (c) 2010 Deltares. All rights reserved.
//
// B.S.T.I.M. The
// tom.the@deltares.nl
// 17-11-2010
// Perform DAM calculations for a time serie of waterlevels
//-----------------------------------------------------------------------
namespace Deltares.Dam.Data
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Deltares.Piping.Data;
public class TimeSerieCalculatorException : ApplicationException
{
public TimeSerieCalculatorException(string message) : base(message)
{
}
}
public class TimeSerieProbablisticCalculator
{
///
/// Constructor
///
public TimeSerieProbablisticCalculator()
{
}
///
/// Combine 3 timeserielists to one probabilistic list
///
///
///
///
///
public List CreateProbabilisticTimeSerieList(List meanTimeSerieList, List stdTimeSerieList, List distTimeSerieList)
{
ThrowHelper.ThrowWhenConditionIsTrue("Input timeseries do not have equal length",
() => (meanTimeSerieList.Count() != stdTimeSerieList.Count()) || meanTimeSerieList.Count() != distTimeSerieList.Count());
List probabilisticTimeSerieList = new List();
for (int timeSerieIndex = 0; timeSerieIndex < meanTimeSerieList.Count(); timeSerieIndex++)
{
TimeSerie meanTimeSerie = meanTimeSerieList[timeSerieIndex];
TimeSerie stdTimeSerie = stdTimeSerieList[timeSerieIndex];
TimeSerie distTimeSerie = distTimeSerieList[timeSerieIndex];
ThrowHelper.ThrowWhenConditionIsTrue("Input timeseries do not have equal length",
() => (meanTimeSerie.Entries.Count() != stdTimeSerie.Entries.Count()) || meanTimeSerie.Entries.Count() != distTimeSerie.Entries.Count());
TimeSerie probabilisticTimeSerie = TimeSerie.CreateTimeSerie(meanTimeSerie, "WaterLevelProbabilistic");
for (int timeSerieEntryIndex = 0; timeSerieEntryIndex < meanTimeSerie.Entries.Count(); timeSerieEntryIndex++)
{
TimeSerieEntry probabilisticTimeSerieEntry = new TimeSerieEntry();
probabilisticTimeSerieEntry = meanTimeSerie.Entries[timeSerieEntryIndex].GetShallowCopy();
Stochast stochastValue = new Stochast();
stochastValue.Mean = meanTimeSerie.Entries[timeSerieEntryIndex].Value;
stochastValue.StandardDeviation = stdTimeSerie.Entries[timeSerieEntryIndex].Value;
stochastValue.Distribution = (int)Math.Round(distTimeSerie.Entries[timeSerieEntryIndex].Value);
probabilisticTimeSerieEntry.StochastValue = stochastValue;
probabilisticTimeSerie.Entries.Add(probabilisticTimeSerieEntry);
}
probabilisticTimeSerieList.Add(probabilisticTimeSerie);
}
return probabilisticTimeSerieList;
}
}
}