Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingDataSynchronizationService.cs =================================================================== diff -u -rb2b9fdf365e70928a05c57966eeed30d9050e528 -r89d34600d1408c8b1f4240020e841ba64cc26622 --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingDataSynchronizationService.cs (.../PipingDataSynchronizationService.cs) (revision b2b9fdf365e70928a05c57966eeed30d9050e528) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingDataSynchronizationService.cs (.../PipingDataSynchronizationService.cs) (revision 89d34600d1408c8b1f4240020e841ba64cc26622) @@ -220,6 +220,43 @@ return changedObservables; } + /// + /// Removes a given from calculations in the + /// and clears all data that depends on it, either directly or indirectly. + /// + /// The failure mechanism containing . + /// The soil profile residing in + /// that should be removed. + /// All observable objects affected by this method. + /// Thrown when + /// or is null. + public static IEnumerable RemoveStochasticSoilProfileFromInput(PipingFailureMechanism failureMechanism, StochasticSoilProfile soilProfile) + { + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + if (soilProfile == null) + { + throw new ArgumentNullException(nameof(soilProfile)); + } + + var changedObservables = new List(); + + IEnumerable pipingCalculationScenarios = + failureMechanism.Calculations + .Cast() + .Where(pcs => ReferenceEquals(pcs.InputParameters.StochasticSoilProfile, soilProfile)); + + foreach (PipingCalculation pipingCalculationScenario in pipingCalculationScenarios) + { + changedObservables.AddRange(RingtoetsCommonDataSynchronizationService.ClearCalculationOutput(pipingCalculationScenario)); + changedObservables.AddRange(ClearStochasticSoilProfile(pipingCalculationScenario.InputParameters)); + } + + return changedObservables; + } + private static IEnumerable ClearSurfaceLine(PipingInput input) { input.SurfaceLine = null; @@ -240,6 +277,16 @@ }; } + private static IEnumerable ClearStochasticSoilProfile(PipingInput input) + { + input.StochasticSoilProfile = null; + + return new[] + { + input + }; + } + private static IEnumerable ClearHydraulicBoundaryLocation(PipingInput input) { if (input.HydraulicBoundaryLocation != null)