private bool Equals(StabilityPointStructure other)
 {
     return(StorageStructureArea.Equals(other.StorageStructureArea) &&
            AllowedLevelIncreaseStorage.Equals(other.AllowedLevelIncreaseStorage) &&
            WidthFlowApertures.Equals(other.WidthFlowApertures) &&
            InsideWaterLevel.Equals(other.InsideWaterLevel) &&
            ThresholdHeightOpenWeir.Equals(other.ThresholdHeightOpenWeir) &&
            CriticalOvertoppingDischarge.Equals(other.CriticalOvertoppingDischarge) &&
            FlowWidthAtBottomProtection.Equals(other.FlowWidthAtBottomProtection) &&
            ConstructiveStrengthLinearLoadModel.Equals(other.ConstructiveStrengthLinearLoadModel) &&
            ConstructiveStrengthQuadraticLoadModel.Equals(other.ConstructiveStrengthQuadraticLoadModel) &&
            BankWidth.Equals(other.BankWidth) &&
            InsideWaterLevelFailureConstruction.Equals(other.InsideWaterLevelFailureConstruction) &&
            EvaluationLevel.Equals(other.EvaluationLevel) &&
            LevelCrestStructure.Equals(other.LevelCrestStructure) &&
            VerticalDistance.Equals(other.VerticalDistance) &&
            FailureProbabilityRepairClosure.Equals(other.FailureProbabilityRepairClosure) &&
            FailureCollisionEnergy.Equals(other.FailureCollisionEnergy) &&
            ShipMass.Equals(other.ShipMass) &&
            ShipVelocity.Equals(other.ShipVelocity) &&
            LevellingCount.Equals(other.LevellingCount) &&
            ProbabilityCollisionSecondaryStructure.Equals(other.ProbabilityCollisionSecondaryStructure) &&
            FlowVelocityStructureClosable.Equals(other.FlowVelocityStructureClosable) &&
            StabilityLinearLoadModel.Equals(other.StabilityLinearLoadModel) &&
            StabilityQuadraticLoadModel.Equals(other.StabilityQuadraticLoadModel) &&
            AreaFlowApertures.Equals(other.AreaFlowApertures) &&
            InflowModelType.Equals(other.InflowModelType));
 }
        public override int GetHashCode()
        {
            unchecked
            {
                int hashCode = base.GetHashCode();
                hashCode = (hashCode * 397) ^ StorageStructureArea.GetHashCode();
                hashCode = (hashCode * 397) ^ AllowedLevelIncreaseStorage.GetHashCode();
                hashCode = (hashCode * 397) ^ WidthFlowApertures.GetHashCode();
                hashCode = (hashCode * 397) ^ InsideWaterLevel.GetHashCode();
                hashCode = (hashCode * 397) ^ ThresholdHeightOpenWeir.GetHashCode();
                hashCode = (hashCode * 397) ^ CriticalOvertoppingDischarge.GetHashCode();
                hashCode = (hashCode * 397) ^ FlowWidthAtBottomProtection.GetHashCode();
                hashCode = (hashCode * 397) ^ ConstructiveStrengthLinearLoadModel.GetHashCode();
                hashCode = (hashCode * 397) ^ ConstructiveStrengthQuadraticLoadModel.GetHashCode();
                hashCode = (hashCode * 397) ^ BankWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ InsideWaterLevelFailureConstruction.GetHashCode();
                hashCode = (hashCode * 397) ^ LevelCrestStructure.GetHashCode();
                hashCode = (hashCode * 397) ^ FailureCollisionEnergy.GetHashCode();
                hashCode = (hashCode * 397) ^ ShipMass.GetHashCode();
                hashCode = (hashCode * 397) ^ ShipVelocity.GetHashCode();
                hashCode = (hashCode * 397) ^ FlowVelocityStructureClosable.GetHashCode();
                hashCode = (hashCode * 397) ^ StabilityLinearLoadModel.GetHashCode();
                hashCode = (hashCode * 397) ^ StabilityQuadraticLoadModel.GetHashCode();
                hashCode = (hashCode * 397) ^ AreaFlowApertures.GetHashCode();

                return(hashCode);
            }
        }
        public override object Clone()
        {
            var clone = (StabilityPointStructuresInput)base.Clone();

            clone.insideWaterLevelFailureConstruction = (NormalDistribution)InsideWaterLevelFailureConstruction.Clone();
            clone.insideWaterLevel                       = (NormalDistribution)InsideWaterLevel.Clone();
            clone.drainCoefficient                       = (LogNormalDistribution)DrainCoefficient.Clone();
            clone.levelCrestStructure                    = (NormalDistribution)LevelCrestStructure.Clone();
            clone.thresholdHeightOpenWeir                = (NormalDistribution)ThresholdHeightOpenWeir.Clone();
            clone.areaFlowApertures                      = (LogNormalDistribution)AreaFlowApertures.Clone();
            clone.constructiveStrengthLinearLoadModel    = (VariationCoefficientLogNormalDistribution)ConstructiveStrengthLinearLoadModel.Clone();
            clone.constructiveStrengthQuadraticLoadModel = (VariationCoefficientLogNormalDistribution)ConstructiveStrengthQuadraticLoadModel.Clone();
            clone.stabilityLinearLoadModel               = (VariationCoefficientLogNormalDistribution)StabilityLinearLoadModel.Clone();
            clone.stabilityQuadraticLoadModel            = (VariationCoefficientLogNormalDistribution)StabilityQuadraticLoadModel.Clone();
            clone.failureCollisionEnergy                 = (VariationCoefficientLogNormalDistribution)FailureCollisionEnergy.Clone();
            clone.shipMass     = (VariationCoefficientNormalDistribution)ShipMass.Clone();
            clone.shipVelocity = (VariationCoefficientNormalDistribution)ShipVelocity.Clone();
            clone.bankWidth    = (NormalDistribution)BankWidth.Clone();
            clone.flowVelocityStructureClosable = (VariationCoefficientNormalDistribution)FlowVelocityStructureClosable.Clone();

            return(clone);
        }