/// <summary> /// Determines if the surface line of a calculation is intersecting with the section reference line. /// </summary> /// <param name="pipingCalculation">The piping calculation containing the surface line.</param> /// <param name="lineSegments">The line segments that define the reference line.</param> /// <returns><c>true</c> when intersecting. <c>false</c> otherwise.</returns> /// <exception cref="InvalidOperationException">Thrown when <paramref name="lineSegments"/> contains no elements.</exception> public static bool IsSurfaceLineIntersectionWithReferenceLineInSection(this IPipingCalculation <PipingInput> pipingCalculation, IEnumerable <Segment2D> lineSegments) { PipingSurfaceLine surfaceLine = pipingCalculation?.InputParameters.SurfaceLine; if (surfaceLine == null) { return(false); } double minimalDistance = lineSegments.Min(segment => segment.GetEuclideanDistanceToPoint(surfaceLine.ReferenceLineIntersectionWorldPoint)); return(minimalDistance < 1e-6); }
/// <summary> /// Creates a <see cref="CalculatableActivity"/> based on the provided <paramref name="calculation"/>. /// </summary> /// <param name="calculation">The calculation to create a <see cref="CalculatableActivity"/> for.</param> /// <param name="failureMechanism">The failure mechanism the <paramref name="calculation"/> belongs to.</param> /// <param name="assessmentSection">The assessment section the <paramref name="calculation"/> belongs to.</param> /// <returns>A <see cref="CalculatableActivity"/>.</returns> /// <exception cref="NotSupportedException">Thrown when <see cref="calculation"/> is of a type that is not supported.</exception> private static CalculatableActivity CreateCalculationActivity(IPipingCalculation <PipingInput> calculation, PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { switch (calculation) { case SemiProbabilisticPipingCalculation semiProbabilisticPipingCalculation: return(CreateSemiProbabilisticPipingCalculationActivity(semiProbabilisticPipingCalculation, failureMechanism.GeneralInput, assessmentSection)); case ProbabilisticPipingCalculation probabilisticPipingCalculation: return(CreateProbabilisticPipingCalculationActivity(probabilisticPipingCalculation, failureMechanism, assessmentSection)); default: throw new NotSupportedException(); } }
public void SetUp() { calculation = PipingCalculationTestFactory.CreateCalculationWithValidInput(new TestHydraulicBoundaryLocation()); testSurfaceLineTopLevel = calculation.InputParameters.SurfaceLine.Points.Max(p => p.Z); }