// Copyright (C) Stichting Deltares 2017. 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.Collections.Generic;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Io.XmlOutput;
namespace Deltares.DamEngine.Interface
{
///
/// Class to fill the results in DamProjectData based on the output xml (for test purposes only)
///
public class FillDamFromXmlOutput
{
///
/// Creates the dam project data.
///
/// The output.
///
public static DamProjectData CreateDamProjectData(Output output)
{
var damProjectData = new DamProjectData();
if (output != null && output.Results != null && output.Results.CalculationResults != null && output.Results.CalculationResults.DesignResults != null)
{
CreateDesignResultsOutput(output, damProjectData);
}
return damProjectData;
}
private static void CreateDesignResultsOutput(Output output, DamProjectData damProjectData)
{
// Design results
damProjectData.DesignCalculations = new List();
for (int i = 0; i < output.Results.CalculationResults.DesignResults.Length; i++)
{
var designResult = output.Results.CalculationResults.DesignResults[i];
var desResult = new Data.General.Results.DesignResult(designResult.Id, designResult.Xrd, designResult.Yrd, designResult.LocationName, designResult.ScenarioName)
{
BaseFileName = designResult.BaseFileName,
ProfileName = designResult.ProfileName
};
if (designResult.SafetyFactorSpecified) desResult.SetSafetyFactor(designResult.SafetyFactor);
if (designResult.FailureProbabilitySpecified) desResult.FailureProbability = designResult.FailureProbability;
desResult.CalculationResult = ConversionHelper.ConvertToCalculationResult(designResult.CalculationResult);
if (designResult.PipingDesignResults != null)
{
CreateDesignResultsPipingOutput(designResult, desResult);
}
damProjectData.DesignCalculations.Add(desResult);
}
}
private static void CreateDesignResultsPipingOutput(DesignResult designResult, Data.General.Results.DesignResult desResult)
{
var model = PipingModelType.Bligh;
if (designResult.PipingDesignResults.Sellmeijer4ForcesFactorSpecified)
model = PipingModelType.Sellmeijer4Forces;
if (designResult.PipingDesignResults.SellmeijerVnkFactorSpecified)
model = PipingModelType.SellmeijerVnk;
if (designResult.PipingDesignResults.Wti2017FactorSpecified)
model = PipingModelType.Wti2017;
desResult.PipingDesignResults = new Data.General.Results.PipingDesignResults(model)
{
ResultMessage = designResult.PipingDesignResults.ResultMessage,
//RedesignedSurfaceLine2 = designResult.PipingDesignResults.RedesignedSurfaceLine
};
if (designResult.PipingDesignResults.FailureProbabilitySpecified) desResult.PipingDesignResults.FailureProbability = designResult.PipingDesignResults.FailureProbability;
if (designResult.PipingDesignResults.UpliftFactorSpecified) desResult.PipingDesignResults.UpliftFactor = designResult.PipingDesignResults.UpliftFactor;
if (designResult.PipingDesignResults.HeaveFactorSpecified) desResult.PipingDesignResults.HeaveFactor = designResult.PipingDesignResults.HeaveFactor;
if (designResult.PipingDesignResults.BlighFactorSpecified) desResult.PipingDesignResults.BlighFactor = designResult.PipingDesignResults.BlighFactor;
if (designResult.PipingDesignResults.BlighHcriticalSpecified) desResult.PipingDesignResults.BlighHcritical = designResult.PipingDesignResults.BlighHcritical;
if (designResult.PipingDesignResults.Sellmeijer4ForcesFactorSpecified) desResult.PipingDesignResults.Sellmeijer4ForcesFactor = designResult.PipingDesignResults.Sellmeijer4ForcesFactor;
if (designResult.PipingDesignResults.Sellmeijer4ForcesHcriticalSpecified) desResult.PipingDesignResults.Sellmeijer4ForcesHcritical = designResult.PipingDesignResults.Sellmeijer4ForcesHcritical;
if (designResult.PipingDesignResults.SellmeijerVnkFactorSpecified) desResult.PipingDesignResults.SellmeijerVnkFactor = designResult.PipingDesignResults.SellmeijerVnkFactor;
if (designResult.PipingDesignResults.SellmeijerVnkHcriticalSpecified) desResult.PipingDesignResults.SellmeijerVnkHcritical = designResult.PipingDesignResults.SellmeijerVnkHcritical;
if (designResult.PipingDesignResults.Wti2017FactorSpecified) desResult.PipingDesignResults.Wti2017Factor = designResult.PipingDesignResults.Wti2017Factor;
if (designResult.PipingDesignResults.Wti2017HcriticalSpecified) desResult.PipingDesignResults.Wti2017Hcritical = designResult.PipingDesignResults.Wti2017Hcritical;
if (designResult.PipingDesignResults.LocalExitPointXSpecified) desResult.PipingDesignResults.LocalExitPointX = designResult.PipingDesignResults.LocalExitPointX;
if (designResult.PipingDesignResults.UpliftSituation != null)
{
var uplift = designResult.PipingDesignResults.UpliftSituation;
var situation = new Data.Design.UpliftSituation();
situation.IsUplift = uplift.IsUplift;
situation.Pl3MinUplift = uplift.Pl3MinUplift;
situation.Pl3HeadAdjusted = uplift.Pl3HeadAdjusted;
situation.Pl3LocationXMinUplift = uplift.Pl3LocalLocationXMinUplift;
situation.Pl4MinUplift = uplift.Pl4MinUplift;
situation.Pl4HeadAdjusted = uplift.Pl4HeadAdjusted;
situation.Pl4LocationXMinUplift = uplift.Pl4LocalLocationXMinUplift;
desResult.PipingDesignResults.UpliftSituation = situation;
}
}
}
}