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)); } } } }