// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using System.Linq; using Core.Common.Base.Data; namespace Ringtoets.MacroStabilityInwards.Data { /// /// The Uplift Van calculation grid of a macro stability calculation. /// public class MacroStabilityInwardsSlipPlaneUpliftVan : ICloneable { /// /// Creates a new instance of . /// /// The left grid of the result. /// The right grid of the result. /// The tangent lines of the result. /// Thrown when any parameter is null. public MacroStabilityInwardsSlipPlaneUpliftVan(MacroStabilityInwardsGrid leftGrid, MacroStabilityInwardsGrid rightGrid, IEnumerable tangentLines) { if (leftGrid == null) { throw new ArgumentNullException(nameof(leftGrid)); } if (rightGrid == null) { throw new ArgumentNullException(nameof(rightGrid)); } if (tangentLines == null) { throw new ArgumentNullException(nameof(tangentLines)); } LeftGrid = leftGrid; RightGrid = rightGrid; TangentLines = tangentLines.Select(tangentLine => new RoundedDouble(2, tangentLine)).ToArray(); } /// /// Gets the left grid result. /// public MacroStabilityInwardsGrid LeftGrid { get; private set; } /// /// Gets the right grid result. /// public MacroStabilityInwardsGrid RightGrid { get; private set; } /// /// Gets the tangent lines result. /// public IEnumerable TangentLines { get; private set; } public object Clone() { var clone = (MacroStabilityInwardsSlipPlaneUpliftVan) MemberwiseClone(); clone.LeftGrid = (MacroStabilityInwardsGrid) LeftGrid.Clone(); clone.RightGrid = (MacroStabilityInwardsGrid) RightGrid.Clone(); clone.TangentLines = TangentLines.ToArray(); return clone; } } }