/// <summary> /// Gets the effective thickness of the coverage layers at the exit point. /// [m] /// </summary> /// <param name="input">The input to calculate the derived piping input for.</param> /// <param name="generalInput">The general input that is required for the calculation.</param> /// <exception cref="ArgumentNullException">Thrown when any input parameter is <c>null</c>.</exception> /// <returns>Returns the corresponding derived input value.</returns> public static LogNormalDistribution GetEffectiveThicknessCoverageLayer(PipingInput input, GeneralPipingInput generalInput) { if (input == null) { throw new ArgumentNullException(nameof(input)); } if (generalInput == null) { throw new ArgumentNullException(nameof(generalInput)); } var thicknessCoverageLayer = new LogNormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble)0.5 }; UpdateEffectiveThicknessCoverageLayerMean(input, generalInput, thicknessCoverageLayer); return(thicknessCoverageLayer); }
private static void UpdateSaturatedVolumicWeightOfCoverageLayerParameters(PipingInput input, LogNormalDistribution volumicWeightDistribution) { IEnumerable <PipingSoilLayer> coverageLayers = GetConsecutiveCoverageLayers(input); int numberOfDecimals = GetNumberOfDecimals(volumicWeightDistribution); if (HasCorrectSaturatedWeightDistributionParameterDefinition(coverageLayers)) { PipingSoilLayer topMostAquitardLayer = coverageLayers.First(); volumicWeightDistribution.Shift = topMostAquitardLayer.BelowPhreaticLevel.Shift; volumicWeightDistribution.StandardDeviation = topMostAquitardLayer.BelowPhreaticLevel.StandardDeviation; var weightedMean = new RoundedDouble(numberOfDecimals, GetWeightedMeanForVolumicWeightOfCoverageLayer( coverageLayers, input.StochasticSoilProfile.SoilProfile, input.SurfaceLine.GetZAtL(input.ExitPointL))); if (weightedMean > 0) { volumicWeightDistribution.Mean = weightedMean; } } }