//-----------------------------------------------------------------------
//
// Copyright (c) 2011 Deltares. All rights reserved.
//
// B.S.T.I.M. The
// tom.the@deltares.nl
// 03-02-2011
// Factory class to create objects for stability tests
//-----------------------------------------------------------------------
using Deltares.Geometry;
using Deltares.Geotechnics;
using System.IO;
using Deltares.Dam.Data;
using Deltares.Geotechnics.Soils;
using Deltares.Geotechnics.SurfaceLines;
using Deltares.Geotechnics.TestUtils;
using Segment = Deltares.Dam.Data.Segment;
namespace Deltares.Dam.TestHelper
{
public static class FactoryForStabilityTests
{
public const string cSoilDatabaseName = @"TestData\soilmaterials.mdb";
public static Dike CreateDike()
{
var dike = new Dike();
var surfaceLineTutorial1 = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1();
Location location = CreateLocation(surfaceLineTutorial1);
dike.Locations.Add(location);
dike.SurfaceLines2.Add(surfaceLineTutorial1);
// Define soil probability of 1.0 for single profile for stability
var soilGeometryProbability = new SoilGeometryProbability()
{
SoilProfile = CreateSoilProfile(),
Probability = 1.0,
SegmentFailureMechanismType = FailureMechanismSystemType.StabilityInside
};
// Define segment
var segment = new Segment();
segment.Name = "SegmentName";
segment.SoilProfileProbabilities.Add(soilGeometryProbability);
// dike.Segments.Add(segment);
dike.Locations[0].Segment = segment;
dike.SoilDatabaseName = cSoilDatabaseName;
dike.CreateSoilBase();
return dike;
}
///
/// Create location for tests
///
/// The instance to be set on .
///
public static Location CreateLocation(SurfaceLine2 surfaceLine)
{
Location location = new Location();
location.Name = "LocationName";
location.DamType = DamType.Regional;
location.DikeEmbankmentMaterial = "OB1";
location.ShoulderEmbankmentMaterial = "OB2";
location.SoildatabaseName = Path.Combine(@".\", cSoilDatabaseName);
location.SurfaceLine2 = surfaceLine;
SurfaceLine2 localSurfaceLine = location.SurfaceLine2.FullDeepClone();
CoordinateSystemConverter coordinateSystemConverter = new CoordinateSystemConverter();
coordinateSystemConverter.ConvertGlobalXYZToLocalXZ(localSurfaceLine.Geometry);
location.LocalXZSurfaceLine2 = localSurfaceLine;
location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope = 1;
return location;
}
///
/// Create scenario with location for tests
///
///
public static Scenario CreateScenarioForLocation(Location location, SurfaceLine2 surfaceLine)
{
Scenario scenario = new Scenario();
scenario.Location = location;
scenario.Location.DamType = DamType.Regional;
scenario.Location.Name = "LocationName";
scenario.Location.DikeEmbankmentMaterial = "OB1";
scenario.Location.ShoulderEmbankmentMaterial = "OB2";
scenario.Location.SoildatabaseName = Path.Combine(@".\", cSoilDatabaseName);
scenario.Location.SoilList = scenario.Location.SoilbaseDB.CreateSoilList();
scenario.LocationScenarioID = "ScenarioID";
scenario.Location.SurfaceLine2 = surfaceLine;
CoordinateSystemConverter coordinateSystemConverter = new CoordinateSystemConverter();
var localSurfaceLine = scenario.Location.SurfaceLine2.FullDeepClone();
coordinateSystemConverter.ConvertGlobalXYZToLocalXZ(localSurfaceLine.Geometry);
scenario.Location.LocalXZSurfaceLine2 = localSurfaceLine;
return scenario;
}
///
/// Create standard 4 layer soilprofile for tests
///
///
public static SoilProfile1D CreateSoilProfile()
{
SoilProfile1D soilProfile = FactoryForSoilProfileTests.CreateClaySandClaySandProfile();
soilProfile.Name = "SoilProfileName";
soilProfile.Layers[0].Soil.Name = "DKN3";
soilProfile.Layers[1].Soil.Name = "zand";
soilProfile.Layers[2].Soil.Name = "DKN3";
soilProfile.Layers[3].Soil.Name = "zand";
return soilProfile;
}
///
/// Create standard calculation parameters for tests
///
///
public static MStabParameters CreateMStabParameters()
{
MStabParameters mstabParameters = new MStabParameters();
mstabParameters.Model = MStabModelType.Bishop;
mstabParameters.ShearStrength = MStabShearStrength.CPhi;
mstabParameters.IsProbabilistic = false;
mstabParameters.SoilDatabaseName = Path.Combine(@".\", cSoilDatabaseName);
mstabParameters.SearchMethod = MStabSearchMethod.GeneticAlgorithm;
mstabParameters.GridPosition = MStabGridPosition.Right;
mstabParameters.CalculationOptions = new MStabCalculationOptions();
return mstabParameters;
}
}
}