public void GetCriticalHeaveGradientDesignVariable_GeneralPipingInputNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => SemiProbabilisticPipingDesignVariableFactory.GetCriticalHeaveGradientDesignVariable(null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("generalPipingInput", exception.ParamName);
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.Stub <IFailureMechanismPropertyChangeHandler <PipingFailureMechanism> >();

            mocks.ReplayAll();

            var failureMechanism = new PipingFailureMechanism();

            // Call
            var properties = new PipingFailureMechanismProperties(failureMechanism, handler);

            // Assert
            Assert.IsInstanceOf <PipingFailureMechanismPropertiesBase>(properties);
            Assert.AreEqual(failureMechanism.Name, properties.Name);
            Assert.AreEqual(failureMechanism.Code, properties.Code);

            GeneralPipingInput generalInput = failureMechanism.GeneralInput;

            Assert.AreEqual(generalInput.UpliftModelFactor.Mean, properties.UpliftModelFactor.Mean);
            Assert.AreEqual(generalInput.UpliftModelFactor.StandardDeviation, properties.UpliftModelFactor.StandardDeviation);
            Assert.AreEqual(SemiProbabilisticPipingDesignVariableFactory.GetUpliftModelFactorDesignVariable(generalInput).GetDesignValue(),
                            properties.UpliftModelFactor.DesignValue);

            Assert.AreEqual(generalInput.SellmeijerModelFactor.Mean, properties.SellmeijerModelFactor.Mean);
            Assert.AreEqual(generalInput.SellmeijerModelFactor.StandardDeviation, properties.SellmeijerModelFactor.StandardDeviation);
            Assert.AreEqual(SemiProbabilisticPipingDesignVariableFactory.GetSellmeijerModelFactorDesignVariable(generalInput).GetDesignValue(),
                            properties.SellmeijerModelFactor.DesignValue);

            Assert.AreEqual(generalInput.WaterVolumetricWeight, properties.WaterVolumetricWeight);

            Assert.AreEqual(generalInput.CriticalHeaveGradient.Mean, properties.CriticalHeaveGradient.Mean);
            Assert.AreEqual(generalInput.CriticalHeaveGradient.StandardDeviation, properties.CriticalHeaveGradient.StandardDeviation);
            Assert.AreEqual(SemiProbabilisticPipingDesignVariableFactory.GetCriticalHeaveGradientDesignVariable(generalInput).GetDesignValue(),
                            properties.CriticalHeaveGradient.DesignValue);

            Assert.AreEqual(generalInput.SandParticlesVolumicWeight, properties.SandParticlesVolumicWeight);
            Assert.AreEqual(generalInput.WhitesDragCoefficient, properties.WhitesDragCoefficient);
            Assert.AreEqual(generalInput.BeddingAngle, properties.BeddingAngle);
            Assert.AreEqual(generalInput.WaterKinematicViscosity, properties.WaterKinematicViscosity);
            Assert.AreEqual(generalInput.Gravity, properties.Gravity);
            Assert.AreEqual(generalInput.MeanDiameter70, properties.MeanDiameter70);
            Assert.AreEqual(generalInput.SellmeijerReductionFactor, properties.SellmeijerReductionFactor);

            mocks.VerifyAll();
        }
        private static PipingCalculatorInput CreateInputFromData(SemiProbabilisticPipingInput input,
                                                                 GeneralPipingInput generalPipingInput,
                                                                 RoundedDouble normativeAssessmentLevel)
        {
            RoundedDouble effectiveAssessmentLevel = GetEffectiveAssessmentLevel(input, normativeAssessmentLevel);

            return(new PipingCalculatorInput(
                       new PipingCalculatorInput.ConstructionProperties
            {
                WaterVolumetricWeight = generalPipingInput.WaterVolumetricWeight,
                SaturatedVolumicWeightOfCoverageLayer = SemiProbabilisticPipingDesignVariableFactory.GetSaturatedVolumicWeightOfCoverageLayer(input).GetDesignValue(),
                UpliftModelFactor = SemiProbabilisticPipingDesignVariableFactory.GetUpliftModelFactorDesignVariable(generalPipingInput).GetDesignValue(),
                AssessmentLevel = effectiveAssessmentLevel,
                PiezometricHeadExit = DerivedSemiProbabilisticPipingInput.GetPiezometricHeadExit(input, effectiveAssessmentLevel),
                DampingFactorExit = SemiProbabilisticPipingDesignVariableFactory.GetDampingFactorExit(input).GetDesignValue(),
                PhreaticLevelExit = PipingDesignVariableFactory.GetPhreaticLevelExit(input).GetDesignValue(),
                CriticalHeaveGradient = SemiProbabilisticPipingDesignVariableFactory.GetCriticalHeaveGradientDesignVariable(generalPipingInput).GetDesignValue(),
                ThicknessCoverageLayer = SemiProbabilisticPipingDesignVariableFactory.GetThicknessCoverageLayer(input).GetDesignValue(),
                EffectiveThicknessCoverageLayer = SemiProbabilisticPipingDesignVariableFactory.GetEffectiveThicknessCoverageLayer(input, generalPipingInput).GetDesignValue(),
                SellmeijerModelFactor = SemiProbabilisticPipingDesignVariableFactory.GetSellmeijerModelFactorDesignVariable(generalPipingInput).GetDesignValue(),
                SellmeijerReductionFactor = generalPipingInput.SellmeijerReductionFactor,
                SeepageLength = SemiProbabilisticPipingDesignVariableFactory.GetSeepageLength(input).GetDesignValue(),
                SandParticlesVolumicWeight = generalPipingInput.SandParticlesVolumicWeight,
                WhitesDragCoefficient = generalPipingInput.WhitesDragCoefficient,
                Diameter70 = SemiProbabilisticPipingDesignVariableFactory.GetDiameter70(input).GetDesignValue(),
                DarcyPermeability = SemiProbabilisticPipingDesignVariableFactory.GetDarcyPermeability(input).GetDesignValue(),
                WaterKinematicViscosity = generalPipingInput.WaterKinematicViscosity,
                Gravity = generalPipingInput.Gravity,
                ThicknessAquiferLayer = SemiProbabilisticPipingDesignVariableFactory.GetThicknessAquiferLayer(input).GetDesignValue(),
                MeanDiameter70 = generalPipingInput.MeanDiameter70,
                BeddingAngle = generalPipingInput.BeddingAngle,
                ExitPointXCoordinate = input.ExitPointL,
                SurfaceLine = input.SurfaceLine,
                SoilProfile = input.StochasticSoilProfile?.SoilProfile
            }));
        }
        public void GetCriticalHeaveGradientDesignVariable_GeneralPipingInput_CreateDeterministicDesignVariableForCriticalHeaveGradient()
        {
            // Setup
            var generalPipingInput = new GeneralPipingInput();

            // Call
            DeterministicDesignVariable <LogNormalDistribution> criticalHeaveGradient = SemiProbabilisticPipingDesignVariableFactory.GetCriticalHeaveGradientDesignVariable(generalPipingInput);

            // Assert
            DistributionAssert.AreEqual(generalPipingInput.CriticalHeaveGradient, criticalHeaveGradient.Distribution);
            Assert.AreEqual(0.3, criticalHeaveGradient.GetDesignValue());
        }