using System;
using log4net;
using Wti.Calculation.Piping;
using Wti.Data;
using Wti.Service.Properties;
namespace Wti.Service
{
///
/// This class controls the and its .
/// Interactions from the are handles by this class.
///
public static class PipingCalculationService
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(PipingCalculationService));
///
/// Performs a piping calculation based on the supplied and sets
/// to the if the calculation was successful.
///
/// The to base the input for the calculation upon.
public static void Calculate(PipingData pipingData)
{
try
{
var input = new PipingCalculationInput(
pipingData.WaterVolumetricWeight,
pipingData.UpliftModelFactor,
pipingData.AssessmentLevel,
pipingData.PiezometricHeadExit,
pipingData.DampingFactorExit,
pipingData.PhreaticLevelExit,
pipingData.PiezometricHeadPolder,
pipingData.CriticalHeaveGradient,
pipingData.ThicknessCoverageLayer,
pipingData.SellmeijerModelFactor,
pipingData.SellmeijerReductionFactor,
pipingData.SeepageLength,
pipingData.SandParticlesVolumicWeight,
pipingData.WhitesDragCoefficient,
pipingData.Diameter70,
pipingData.DarcyPermeability,
pipingData.WaterKinematicViscosity,
pipingData.Gravity,
pipingData.ThicknessAquiferLayer,
pipingData.MeanDiameter70,
pipingData.BeddingAngle,
pipingData.ExitPointXCoordinate
);
var pipingCalculation = new PipingCalculation(input);
var pipingResult = pipingCalculation.Calculate();
pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
pipingResult.UpliftFactorOfSafety,
pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety);
}
catch (PipingCalculationException e)
{
Logger.Warn(String.Format(Resources.ErrorInPipingCalculation_0, e.Message));
}
}
}
}