protected override StructuresStabilityPointCalculationInput CreateInput(StabilityPointStructuresInput structureInput, GeneralStabilityPointStructuresInput generalInput, string hydraulicBoundaryDatabaseFilePath, bool usePreprocessor) { StabilityPointStructureInflowModelType inflowModelType = structureInput.InflowModelType; if (!Enum.IsDefined(typeof(StabilityPointStructureInflowModelType), inflowModelType)) { throw new InvalidEnumArgumentException(nameof(structureInput), (int)inflowModelType, typeof(StabilityPointStructureInflowModelType)); } StructuresStabilityPointCalculationInput input; switch (inflowModelType) { case StabilityPointStructureInflowModelType.LowSill: input = CreateLowSillInput(structureInput, generalInput); break; case StabilityPointStructureInflowModelType.FloodedCulvert: input = CreateFloodedCulvertInput(structureInput, generalInput); break; default: throw new NotSupportedException(); } HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(input, hydraulicBoundaryDatabaseFilePath, usePreprocessor); return(input); }
/// <summary> /// Creates an instance of <see cref="OvertoppingRateCalculationInput"/> for calculation purposes. /// </summary> /// <param name="calculation">The calculation containing the input for the overtopping rate calculation.</param> /// <param name="generalInput">The general grass cover erosion inwards calculation input parameters.</param> /// <param name="hydraulicBoundaryDatabaseFilePath">The path which points to the hydraulic boundary database file.</param> /// <param name="usePreprocessor">Indicator whether to use the preprocessor in the calculation.</param> /// <returns>A new <see cref="OvertoppingRateCalculationInput"/> instance.</returns> /// <exception cref="ArgumentException">Thrown when the <paramref name="hydraulicBoundaryDatabaseFilePath"/> /// contains invalid characters.</exception> /// <exception cref="CriticalFileReadException">Thrown when: /// <list type="bullet"> /// <item>No settings database file could be found at the location of <paramref name="hydraulicBoundaryDatabaseFilePath"/> /// with the same name.</item> /// <item>Unable to open settings database file.</item> /// <item>Unable to read required data from database file.</item> /// </list> /// </exception> private static OvertoppingRateCalculationInput CreateOvertoppingRateInput(GrassCoverErosionInwardsCalculation calculation, GeneralGrassCoverErosionInwardsInput generalInput, string hydraulicBoundaryDatabaseFilePath, bool usePreprocessor) { var overtoppingRateCalculationInput = new OvertoppingRateCalculationInput(calculation.InputParameters.HydraulicBoundaryLocation.Id, calculation.InputParameters.OvertoppingRateTargetProbability, calculation.InputParameters.Orientation, ParseProfilePoints(calculation.InputParameters.DikeGeometry), HydraRingInputParser.ParseForeshore(calculation.InputParameters), HydraRingInputParser.ParseBreakWater(calculation.InputParameters), calculation.InputParameters.DikeHeight, generalInput.CriticalOvertoppingModelFactor, generalInput.FbFactor.Mean, generalInput.FbFactor.StandardDeviation, generalInput.FbFactor.LowerBoundary, generalInput.FbFactor.UpperBoundary, generalInput.FnFactor.Mean, generalInput.FnFactor.StandardDeviation, generalInput.FnFactor.LowerBoundary, generalInput.FnFactor.UpperBoundary, generalInput.OvertoppingModelFactor, generalInput.FrunupModelFactor.Mean, generalInput.FrunupModelFactor.StandardDeviation, generalInput.FrunupModelFactor.LowerBoundary, generalInput.FrunupModelFactor.UpperBoundary, generalInput.FshallowModelFactor.Mean, generalInput.FshallowModelFactor.StandardDeviation, generalInput.FshallowModelFactor.LowerBoundary, generalInput.FshallowModelFactor.UpperBoundary); HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(overtoppingRateCalculationInput, hydraulicBoundaryDatabaseFilePath, usePreprocessor); return(overtoppingRateCalculationInput); }
/// <summary> /// Creates the input for a calculation for the given <paramref name="waterLevel"/>. /// </summary> /// <param name="waterLevel">The level of the water.</param> /// <param name="a">The 'a' factor decided on failure mechanism level.</param> /// <param name="b">The 'b' factor decided on failure mechanism level.</param> /// <param name="c">The 'c' factor decided on failure mechanism level.</param> /// <param name="targetProbability">The target probability to use.</param> /// <param name="input">The input that is different per calculation.</param> /// <param name="calculationSettings">The <see cref="HydraulicBoundaryCalculationSettings"/> containing all data /// to perform a hydraulic boundary calculation.</param> /// <returns>A <see cref="WaveConditionsCalculationInput"/>.</returns> /// <exception cref="ArgumentException">Thrown when the hydraulic boundary database file path. /// contains invalid characters.</exception> /// <exception cref="CriticalFileReadException">Thrown when: /// <list type="bullet"> /// <item>No settings database file could be found at the location of the hydraulic boundary database file path /// with the same name.</item> /// <item>Unable to open settings database file.</item> /// <item>Unable to read required data from database file.</item> /// </list> /// </exception> private static WaveConditionsCosineCalculationInput CreateInput(RoundedDouble waterLevel, RoundedDouble a, RoundedDouble b, RoundedDouble c, double targetProbability, WaveConditionsInput input, HydraulicBoundaryCalculationSettings calculationSettings) { var waveConditionsCosineCalculationInput = new WaveConditionsCosineCalculationInput( 1, input.Orientation, input.HydraulicBoundaryLocation.Id, targetProbability, HydraRingInputParser.ParseForeshore(input), HydraRingInputParser.ParseBreakWater(input), waterLevel, a, b, c); HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(waveConditionsCosineCalculationInput, calculationSettings.HydraulicBoundaryDatabaseFilePath, !string.IsNullOrEmpty(calculationSettings.PreprocessorDirectory)); return(waveConditionsCosineCalculationInput); }
protected override StructuresOvertoppingCalculationInput CreateInput(HeightStructuresInput structureInput, GeneralHeightStructuresInput generalInput, string hydraulicBoundaryDatabaseFilePath, bool usePreprocessor) { var structuresOvertoppingCalculationInput = new StructuresOvertoppingCalculationInput( structureInput.HydraulicBoundaryLocation.Id, structureInput.StructureNormalOrientation, HydraRingInputParser.ParseForeshore(structureInput), HydraRingInputParser.ParseBreakWater(structureInput), generalInput.GravitationalAcceleration, generalInput.ModelFactorOvertoppingFlow.Mean, generalInput.ModelFactorOvertoppingFlow.StandardDeviation, structureInput.LevelCrestStructure.Mean, structureInput.LevelCrestStructure.StandardDeviation, structureInput.StructureNormalOrientation, structureInput.ModelFactorSuperCriticalFlow.Mean, structureInput.ModelFactorSuperCriticalFlow.StandardDeviation, structureInput.AllowedLevelIncreaseStorage.Mean, structureInput.AllowedLevelIncreaseStorage.StandardDeviation, generalInput.ModelFactorStorageVolume.Mean, generalInput.ModelFactorStorageVolume.StandardDeviation, structureInput.StorageStructureArea.Mean, structureInput.StorageStructureArea.CoefficientOfVariation, generalInput.ModelFactorInflowVolume, structureInput.FlowWidthAtBottomProtection.Mean, structureInput.FlowWidthAtBottomProtection.StandardDeviation, structureInput.CriticalOvertoppingDischarge.Mean, structureInput.CriticalOvertoppingDischarge.CoefficientOfVariation, structureInput.FailureProbabilityStructureWithErosion, structureInput.WidthFlowApertures.Mean, structureInput.WidthFlowApertures.StandardDeviation, structureInput.DeviationWaveDirection, structureInput.StormDuration.Mean, structureInput.StormDuration.CoefficientOfVariation); HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(structuresOvertoppingCalculationInput, hydraulicBoundaryDatabaseFilePath, usePreprocessor); return(structuresOvertoppingCalculationInput); }
public void AssignSettingsFromDatabase_FileWithoutSettingsDatabase_ThrowsCriticalFileReadException() { // Call void Call() => HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(new TestHydraRingCalculationInput(), "NoConfig.sqlite", false); // Assert Assert.Throws <CriticalFileReadException>(Call); }
public void AssignSettingsFromDatabase_FileWithInvalidCharacters_ThrowsArgumentException() { // Call void Call() => HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(new TestHydraRingCalculationInput(), ">", false); // Assert Assert.Throws <ArgumentException>(Call); }
/// <summary> /// Creates the input used in the calculation. /// </summary> /// <param name="duneLocation">The <see cref="DuneLocation"/> to create the input for.</param> /// <param name="targetProbability">The target probability to use during the calculation.</param> /// <param name="calculationSettings">The <see cref="HydraulicBoundaryCalculationSettings"/> with the /// hydraulic boundary calculation settings.</param> /// <returns>A <see cref="DunesBoundaryConditionsCalculationInput"/> with all needed /// input data.</returns> /// <exception cref="ArgumentException">Thrown when the hydraulic boundary database file path. /// contains invalid characters.</exception> /// <exception cref="CriticalFileReadException">Thrown when: /// <list type="bullet"> /// <item>No settings database file could be found at the location of the hydraulic boundary database file path. /// with the same name.</item> /// <item>Unable to open settings database file.</item> /// <item>Unable to read required data from database file.</item> /// </list> /// </exception> private static DunesBoundaryConditionsCalculationInput CreateInput(DuneLocation duneLocation, double targetProbability, HydraulicBoundaryCalculationSettings calculationSettings) { var dunesBoundaryConditionsCalculationInput = new DunesBoundaryConditionsCalculationInput(1, duneLocation.Id, targetProbability); HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(dunesBoundaryConditionsCalculationInput, calculationSettings.HydraulicBoundaryDatabaseFilePath, !string.IsNullOrEmpty(calculationSettings.PreprocessorDirectory)); return(dunesBoundaryConditionsCalculationInput); }
public void AssignSettingsFromDatabase_FileWithEmptySettingsDatabase_DefaultsSettingsAdded(bool usePreprocessor) { // Setup var input = new TestHydraRingCalculationInput(); // Call HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(input, Path.Combine(testDataPath, "hrd.sqlite"), usePreprocessor); // Assert Assert.NotNull(input.DesignTablesSetting); Assert.NotNull(input.NumericsSettings); Assert.NotNull(input.TimeIntegrationSetting); Assert.NotNull(input.PreprocessorSetting); Assert.AreEqual(usePreprocessor, input.PreprocessorSetting.RunPreprocessor); }
private static PipingCalculationInput CreateInput(ProbabilisticPipingCalculation calculation, GeneralPipingInput generalInput, double sectionLength, string hydraulicBoundaryDatabaseFilePath, bool usePreprocessor) { ProbabilisticPipingInput pipingInput = calculation.InputParameters; LogNormalDistribution thicknessCoverageLayer = DerivedPipingInput.GetThicknessCoverageLayer(pipingInput); VariationCoefficientLogNormalDistribution seepageLength = DerivedPipingInput.GetSeepageLength(pipingInput); LogNormalDistribution thicknessAquiferLayer = DerivedPipingInput.GetThicknessAquiferLayer(pipingInput); VariationCoefficientLogNormalDistribution darcyPermeability = DerivedPipingInput.GetDarcyPermeability(pipingInput); VariationCoefficientLogNormalDistribution diameterD70 = DerivedPipingInput.GetDiameterD70(pipingInput); PipingCalculationInput input; if (double.IsNaN(thicknessCoverageLayer.Mean)) { input = new PipingCalculationInput( pipingInput.HydraulicBoundaryLocation.Id, sectionLength, pipingInput.PhreaticLevelExit.Mean, pipingInput.PhreaticLevelExit.StandardDeviation, generalInput.WaterVolumetricWeight, generalInput.UpliftModelFactor.Mean, generalInput.UpliftModelFactor.StandardDeviation, pipingInput.DampingFactorExit.Mean, pipingInput.DampingFactorExit.StandardDeviation, seepageLength.Mean, seepageLength.CoefficientOfVariation, thicknessAquiferLayer.Mean, thicknessAquiferLayer.StandardDeviation, generalInput.SandParticlesVolumicWeight, generalInput.SellmeijerModelFactor.Mean, generalInput.SellmeijerModelFactor.StandardDeviation, generalInput.BeddingAngle, generalInput.WhitesDragCoefficient, generalInput.WaterKinematicViscosity, darcyPermeability.Mean, darcyPermeability.CoefficientOfVariation, diameterD70.Mean, diameterD70.CoefficientOfVariation, generalInput.Gravity, generalInput.CriticalHeaveGradient.Mean, generalInput.CriticalHeaveGradient.StandardDeviation); } else { LogNormalDistribution effectiveThicknessCoverageLayer = DerivedPipingInput.GetEffectiveThicknessCoverageLayer(pipingInput, generalInput); LogNormalDistribution saturatedVolumicWeightOfCoverageLayer = DerivedPipingInput.GetSaturatedVolumicWeightOfCoverageLayer(pipingInput); input = new PipingCalculationInput( pipingInput.HydraulicBoundaryLocation.Id, sectionLength, pipingInput.PhreaticLevelExit.Mean, pipingInput.PhreaticLevelExit.StandardDeviation, generalInput.WaterVolumetricWeight, effectiveThicknessCoverageLayer.Mean, effectiveThicknessCoverageLayer.StandardDeviation, saturatedVolumicWeightOfCoverageLayer.Mean, saturatedVolumicWeightOfCoverageLayer.StandardDeviation, saturatedVolumicWeightOfCoverageLayer.Shift, generalInput.UpliftModelFactor.Mean, generalInput.UpliftModelFactor.StandardDeviation, pipingInput.DampingFactorExit.Mean, pipingInput.DampingFactorExit.StandardDeviation, seepageLength.Mean, seepageLength.CoefficientOfVariation, thicknessAquiferLayer.Mean, thicknessAquiferLayer.StandardDeviation, generalInput.SandParticlesVolumicWeight, generalInput.SellmeijerModelFactor.Mean, generalInput.SellmeijerModelFactor.StandardDeviation, generalInput.BeddingAngle, generalInput.WhitesDragCoefficient, generalInput.WaterKinematicViscosity, darcyPermeability.Mean, darcyPermeability.CoefficientOfVariation, diameterD70.Mean, diameterD70.CoefficientOfVariation, generalInput.Gravity, generalInput.CriticalHeaveGradient.Mean, generalInput.CriticalHeaveGradient.StandardDeviation); } HydraRingSettingsDatabaseHelper.AssignSettingsFromDatabase(input, hydraulicBoundaryDatabaseFilePath, usePreprocessor); return(input); }