Index: Riskeer/Piping/src/Riskeer.Piping.Service/Probabilistic/ProbabilisticPipingCalculationService.cs =================================================================== diff -u -r375246bb82f4f86365552465ad7f79776c483287 -red58f2cbffd12d4276675fe7097ba2fe3da96f6a --- Riskeer/Piping/src/Riskeer.Piping.Service/Probabilistic/ProbabilisticPipingCalculationService.cs (.../ProbabilisticPipingCalculationService.cs) (revision 375246bb82f4f86365552465ad7f79776c483287) +++ Riskeer/Piping/src/Riskeer.Piping.Service/Probabilistic/ProbabilisticPipingCalculationService.cs (.../ProbabilisticPipingCalculationService.cs) (revision ed58f2cbffd12d4276675fe7097ba2fe3da96f6a) @@ -39,6 +39,7 @@ using Riskeer.HydraRing.Calculation.Exceptions; using Riskeer.Piping.Data; using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Piping.Primitives; using Riskeer.Piping.Service.Properties; using RiskeerCommonServiceResources = Riskeer.Common.Service.Properties.Resources; using HydraRingGeneralResult = Riskeer.HydraRing.Calculation.Data.Output.IllustrationPoints.GeneralResult; @@ -466,11 +467,33 @@ validationResults.AddRange(PipingCalculationValidationHelper.GetValidationErrors(input)); - - + if (!validationResults.Any()) + { + validationResults.AddRange(ValidateCoverageLayers(input, generalInput)); + } + return validationResults; } + private static IEnumerable ValidateCoverageLayers(PipingInput input, GeneralPipingInput generalInput) + { + double surfaceLevel = input.SurfaceLine.GetZAtL(input.ExitPointL); + PipingSoilProfile pipingSoilProfile = input.StochasticSoilProfile.SoilProfile; + + if (pipingSoilProfile.GetConsecutiveCoverageLayersBelowLevel(surfaceLevel).Any()) + { + LogNormalDistribution thicknessCoverageLayer = DerivedPipingInput.GetThicknessCoverageLayer(input); + if (!double.IsNaN(thicknessCoverageLayer.Mean)) + { + LogNormalDistribution saturatedVolumicWeightOfCoverageLayer = DerivedPipingInput.GetSaturatedVolumicWeightOfCoverageLayer(input); + if (saturatedVolumicWeightOfCoverageLayer.Shift < generalInput.WaterVolumetricWeight) + { + yield return Resources.ProbabilisticPipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_shift_must_be_larger_than_WaterVolumetricWeight; + } + } + } + } + private void NotifyProgress(string stepName, int currentStepNumber, int totalStepNumber) { OnProgressChanged?.Invoke(stepName, currentStepNumber, totalStepNumber); Index: Riskeer/Piping/src/Riskeer.Piping.Service/Properties/Resources.Designer.cs =================================================================== diff -u -rd49d544c985a150346fa422a712ae509bc725218 -red58f2cbffd12d4276675fe7097ba2fe3da96f6a --- Riskeer/Piping/src/Riskeer.Piping.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d49d544c985a150346fa422a712ae509bc725218) +++ Riskeer/Piping/src/Riskeer.Piping.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ed58f2cbffd12d4276675fe7097ba2fe3da96f6a) @@ -222,16 +222,6 @@ } /// - /// Looks up a localized string similar to Het verzadigd volumetrisch gewicht van de deklaag moet groter zijn dan het volumetrisch gewicht van water.. - /// - internal static string PipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_must_be_larger_than_WaterVolumetricWeight { - get { - return ResourceManager.GetString("PipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_must_b" + - "e_larger_than_WaterVolumetricWeight", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Fout bij het uitlezen van de illustratiepunten voor berekening {0} ({1}): {2} Het uitlezen van illustratiepunten wordt overgeslagen.. /// internal static string PipingProbabilisticCalculationService_Calculate_Error_in_reading_illustrationPoints_for_CalculationName_0_CalculationType_1_with_ErrorMessage_2 { @@ -298,5 +288,25 @@ return ResourceManager.GetString("ProbabilisticPipingCalculationService_SectionSpecific", resourceCulture); } } + + /// + /// Looks up a localized string similar to De verschuiving van het verzadigd volumetrisch gewicht van de deklaag moet groter zijn dan het volumetrisch gewicht van water.. + /// + internal static string ProbabilisticPipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_shift_must_be_larger_than_WaterVolumetricWeight { + get { + return ResourceManager.GetString("ProbabilisticPipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverag" + + "eLayer_shift_must_be_larger_than_WaterVolumetricWeight", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Het verzadigd volumetrisch gewicht van de deklaag moet groter zijn dan het volumetrisch gewicht van water.. + /// + internal static string SemiProbabilisticPipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_must_be_larger_than_WaterVolumetricWeight { + get { + return ResourceManager.GetString("SemiProbabilisticPipingCalculationService_ValidateInput_SaturatedVolumicWeightCov" + + "erageLayer_must_be_larger_than_WaterVolumetricWeight", resourceCulture); + } + } } } Index: Riskeer/Piping/src/Riskeer.Piping.Service/Properties/Resources.resx =================================================================== diff -u -rd49d544c985a150346fa422a712ae509bc725218 -red58f2cbffd12d4276675fe7097ba2fe3da96f6a --- Riskeer/Piping/src/Riskeer.Piping.Service/Properties/Resources.resx (.../Resources.resx) (revision d49d544c985a150346fa422a712ae509bc725218) +++ Riskeer/Piping/src/Riskeer.Piping.Service/Properties/Resources.resx (.../Resources.resx) (revision ed58f2cbffd12d4276675fe7097ba2fe3da96f6a) @@ -162,9 +162,12 @@ Rekenwaarde voor d70 ({0} m) ligt buiten het geldigheidsbereik van dit model. Geldige waarden liggen tussen 0.000063 m en 0.0005 m. - + Het verzadigd volumetrisch gewicht van de deklaag moet groter zijn dan het volumetrisch gewicht van water. + + De verschuiving van het verzadigd volumetrisch gewicht van de deklaag moet groter zijn dan het volumetrisch gewicht van water. + Uitvoeren sterkte berekening voor {0} Index: Riskeer/Piping/src/Riskeer.Piping.Service/SemiProbabilistic/SemiProbabilisticPipingCalculationService.cs =================================================================== diff -u -rda4400b6eb2326e3e04089607658b020f9be28f6 -red58f2cbffd12d4276675fe7097ba2fe3da96f6a --- Riskeer/Piping/src/Riskeer.Piping.Service/SemiProbabilistic/SemiProbabilisticPipingCalculationService.cs (.../SemiProbabilisticPipingCalculationService.cs) (revision da4400b6eb2326e3e04089607658b020f9be28f6) +++ Riskeer/Piping/src/Riskeer.Piping.Service/SemiProbabilistic/SemiProbabilisticPipingCalculationService.cs (.../SemiProbabilisticPipingCalculationService.cs) (revision ed58f2cbffd12d4276675fe7097ba2fe3da96f6a) @@ -239,7 +239,7 @@ RoundedDouble saturatedVolumicWeightOfCoverageLayer = SemiProbabilisticPipingDesignVariableFactory.GetSaturatedVolumicWeightOfCoverageLayer(input).GetDesignValue(); if (!double.IsNaN(saturatedVolumicWeightOfCoverageLayer) && saturatedVolumicWeightOfCoverageLayer < generalInput.WaterVolumetricWeight) { - yield return Resources.PipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_must_be_larger_than_WaterVolumetricWeight; + yield return Resources.SemiProbabilisticPipingCalculationService_ValidateInput_SaturatedVolumicWeightCoverageLayer_must_be_larger_than_WaterVolumetricWeight; } } }