Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs
===================================================================
diff -u -r4539 -r4549
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs (.../Dike.cs) (revision 4539)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs (.../Dike.cs) (revision 4549)
@@ -231,6 +231,18 @@
soil.UseDefaultShearStrengthModel = false;
soil.ShearStrengthModel = soilRecord.ShearStrengthModel;
+ if (soilRecord.ShearStrengthModel == Geotechnics.Soils.ShearStrengthModel.StressTable)
+ {
+ StressCurve stressCurve = ImportedCsvStressCurves.FirstOrDefault(sc => sc.Name == soilRecord.SigmaTauCurveName);
+ if (stressCurve != null)
+ {
+ soil.StressTable = stressCurve;
+ }
+ else
+ {
+ throw new DikeException($"The sigma tau curve '{soilRecord.SigmaTauCurveName}' for soil '{soilRecord.SoilName}' is not found in the csv file.");
+ }
+ }
if (soilRecord.StrengthIncreaseExponent.HasValue)
{
@@ -254,6 +266,35 @@
}
///
+ /// Fill the imported sigma tau curves from the csv file
+ ///
+ ///
+ public void FillImportedSigmaTauCurvesFromCsvFile(IEnumerable sigmaTauCurveRecords)
+ {
+ if (sigmaTauCurveRecords == null)
+ {
+ return;
+ }
+
+ foreach (CsvImporterSigmaTauCurves.SigmaTauCurveRecord sigmaTauCurveRecord in sigmaTauCurveRecords)
+ {
+ StressCurve sigmaTauCurve = ImportedCsvStressCurves.FirstOrDefault(sc => sc.Name == sigmaTauCurveRecord.SigmaTauCurveName);
+ if (sigmaTauCurve == null)
+ {
+ sigmaTauCurve = new StressCurve();
+ sigmaTauCurve.Name = sigmaTauCurveRecord.SigmaTauCurveName;
+ ImportedCsvStressCurves.Add(sigmaTauCurve);
+ }
+
+ sigmaTauCurve.SigmaTaus.Add(new SigmaTau
+ {
+ Sigma = sigmaTauCurveRecord.Sigma,
+ Tau = sigmaTauCurveRecord.Tau
+ });
+ }
+ }
+
+ ///
/// Adapt data so it is consistent
///
/// The soils as imported from the csv file
@@ -296,6 +337,21 @@
location.GaugePLLines.AddRange(GaugePLLines);
}
+ ///
+ /// Transfer the properties of the imported soils to the existing soils in the soil list.
+ ///
+ public void AssignImporteCsvSoilsPropertiesToSoilListSoils()
+ {
+ foreach (Soil soil in ImportedCsvSoils)
+ {
+ Soil existingSoil = soilList.GetSoilByName(soil.Name);
+ if (existingSoil != null)
+ {
+ existingSoil.Assign(soil);
+ }
+ }
+ }
+
public override string ToString()
{
return Name;
@@ -330,6 +386,7 @@
}
internal List ImportedCsvSoils { get; } = new();
+ internal List ImportedCsvStressCurves { get; } = new();
///
/// Tries to make the soil data as read for 1D profiles consistent with the data in the soil database.
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs
===================================================================
diff -u -r4539 -r4549
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 4539)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 4549)
@@ -29,6 +29,7 @@
using Deltares.Dam.Data.IO;
using Deltares.DamEngine.Data.Standard.Calculation;
using Deltares.Geotechnics.GeotechnicalGeometry;
+using Deltares.Geotechnics.Soils;
using Deltares.Geotechnics.SurfaceLines;
using Deltares.Standard.EventPublisher;
using Deltares.Standard.Logging;
@@ -188,7 +189,9 @@
SurfaceLineRecords = csvImporter.SurfaceLinesRecords,
SegmentRecords = csvImporter.SegmentRecords,
SoilProfilerecords = csvImporter.SoilProfilesRecords,
- ScenarioRecords = csvImporter.ScenariosRecords
+ ScenarioRecords = csvImporter.ScenariosRecords,
+ SoilRecords = csvImporter.SoilsRecords,
+ SigmaTauCurveRecords = csvImporter.SigmaTauCurvesRecords
};
combineImportedData.AddCsvDataToDikes();
combineImportedData.AddScenarioDataToDikes();
@@ -214,6 +217,12 @@
Assert.AreEqual(60.0, damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].TopLevel);
Assert.AreEqual(2, damProjectData.WaterBoard.Dikes[0].SurfaceLines2.Count);
+ // Check soil data
+ Soil soil = damProjectData.WaterBoard.Dikes[0].SoilList.Soils.FirstOrDefault(s => s.Name == "CCC");
+ Assert.IsTrue(soil != null);
+ Assert.AreEqual(ShearStrengthModel.StressTable, soil.ShearStrengthModel);
+ Assert.AreEqual("CurveKlei", soil.StressTable.Name);
+
// Check location specific data
Location location = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(s => s.Name.Equals("25-2-2-A-1-A"));
Assert.IsTrue(location != null);
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs
===================================================================
diff -u -r4539 -r4549
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 4539)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 4549)
@@ -34,30 +34,68 @@
namespace Deltares.Dam.Data.IO;
+///
+/// Exception class for the class.
+///
public class CombineImportedDataException : ApplicationException
{
public CombineImportedDataException(string message)
: base(message) {}
}
+///
+/// Class for combining imported data from CSV files.
+///
public class CombineImportedData
{
+ ///
+ /// The WaterBoard to which the imported data will be added.
+ ///
public WaterBoard WaterBoard { get; set; }
+ ///
+ /// The Location records.
+ ///
public IEnumerable LocationRecords { get; set; }
+ ///
+ /// The Segment records.
+ ///
public IEnumerable SegmentRecords { get; set; }
+ ///
+ /// The SoilProfile records.
+ ///
public IEnumerable SoilProfilerecords { get; set; }
+ ///
+ /// The SurfaceLine records.
+ ///
public IEnumerable SurfaceLineRecords { get; set; }
+ ///
+ /// The Soil records.
+ ///
public IEnumerable SoilRecords { get; set; }
+ ///
+ /// The CharacteristicPoints records.
+ ///
public IEnumerable CharacteristicPointsRecords { get; set; }
+ ///
+ /// The Scenario records.
+ ///
public IEnumerable ScenarioRecords { get; set; }
+ ///
+ /// The SigmaTauCurve records.
+ ///
+ public IEnumerable SigmaTauCurveRecords { get; set; }
+
+ ///
+ /// The error messages.
+ ///
public IList ErrorMessages { get; } = new List();
///
@@ -78,6 +116,7 @@
TransferLocationsData(dike);
TransferSoilProfilesData(dike);
TransferSegmentData(dike);
+ TransferSigmaTauCurveData(dike); // Should be done before TransferSoilData(), because the SigmaTauCurveData is uses there
TransferSoilData(dike);
// Use InvokeWithoutPublishingEvents for performance reasons after introducing SurfaceLine2
DataEventPublisher.InvokeWithoutPublishingEvents(() => { TransferSurfaceLines(dike); });
@@ -374,8 +413,14 @@
private void TransferSoilData(Dike dike)
{
dike.FillImportedCsvSoilsFromCsvFile(SoilRecords);
+ dike.AssignImporteCsvSoilsPropertiesToSoilListSoils();
}
+ private void TransferSigmaTauCurveData(Dike dike)
+ {
+ dike.FillImportedSigmaTauCurvesFromCsvFile(SigmaTauCurveRecords);
+ }
+
private void TransferSoilProfilesData(Dike dike)
{
if (SoilProfilerecords == null)
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/DataPluginImporter.cs
===================================================================
diff -u -r4539 -r4549
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/DataPluginImporter.cs (.../DataPluginImporter.cs) (revision 4539)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/DataPluginImporter.cs (.../DataPluginImporter.cs) (revision 4549)
@@ -496,6 +496,7 @@
/// The dike ring identifier.
/// The segment identifier.
/// The profile1 d identifier.
+ /// The segment FailureMechanism Type
///
public IEnumerable GetSegmentProfile1DDetails(string dikeRingId, string segmentId,
string profile1DId, FailureMechanismSystemType segmentFailureMechanismType)
@@ -512,6 +513,7 @@
/// The dike ring identifier.
/// The segment identifier.
/// The profile2 d identifier.
+ /// The failuremechanism system type
///
public IEnumerable GetSegmentProfile2DDetails(string dikeRingId, string segmentId,
string profile2DId, FailureMechanismSystemType failureMechanismSystemType)
@@ -686,12 +688,12 @@
///
/// Gets the segment.
///
- /// The segment identifier.
+ /// The segment identifier.
///
- private Segment GetSegment(string segmentID)
+ private Segment GetSegment(string segmentId)
{
ThrowIfDataNotRead();
- return WaterBoard.Segments.First(s => s.Name.Equals(segmentID));
+ return WaterBoard.Segments.First(s => s.Name.Equals(segmentId));
}
///
@@ -1176,7 +1178,8 @@
WaterBoard = WaterBoard,
LocationRecords = csvImporter.LocationRecords,
ScenarioRecords = csvImporter.ScenariosRecords,
- SoilRecords = csvImporter.SoilsRecords
+ SoilRecords = csvImporter.SoilsRecords,
+ SigmaTauCurveRecords = csvImporter.SigmaTauCurvesRecords
};
combineImportedData.AddScenarioDataToDikes();
ImportLogMessages.AddRange(combineImportedData.ErrorMessages);
@@ -1203,7 +1206,8 @@
SegmentRecords = csvImporter.SegmentRecords,
SoilProfilerecords = csvImporter.SoilProfilesRecords,
SurfaceLineRecords = csvImporter.SurfaceLinesRecords,
- SoilRecords = csvImporter.SoilsRecords
+ SoilRecords = csvImporter.SoilsRecords,
+ SigmaTauCurveRecords = csvImporter.SigmaTauCurvesRecords
};
combineImportedData.AddCsvDataToDikes();
ImportLogMessages.AddRange(combineImportedData.ErrorMessages);
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/CSVData/Full1DProject/csvfiles/sigmataucurves.csv
===================================================================
diff -u
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/CSVData/Full1DProject/csvfiles/sigmataucurves.csv (revision 0)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/CSVData/Full1DProject/csvfiles/sigmataucurves.csv (revision 4549)
@@ -0,0 +1,8 @@
+sigma_tau_curve_name;sigma;tau
+CurveKlei;0.0;2.05
+CurveKlei;13.0;8.05
+CurveKlei;26.0;13.79
+CurveKlei;65.0;28.10
+CurveKlei;110.5;44.60
+CurveZand;0.0;0.0
+CurveZand;200.0;129.88
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporter.cs
===================================================================
diff -u -r4544 -r4549
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporter.cs (.../CsvImporter.cs) (revision 4544)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporter.cs (.../CsvImporter.cs) (revision 4549)
@@ -39,7 +39,7 @@
private const string characteristicPointFileNamePart = "characteristicpoints";
private const string scenariosFileNamePart = "scenarios";
private const string soilsFileNamePart = "soils";
- private const string sigmaTauCurvesFileNamePart = "sigma_tau_curves";
+ private const string sigmaTauCurvesFileNamePart = "sigmataucurves";
private string folderName;
public List ErrorMessages { get; } = new();
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj
===================================================================
diff -u -r4539 -r4549
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4539)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4549)
@@ -1212,6 +1212,9 @@
PreserveNewest
+
+ PreserveNewest
+
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/CSVData/Full1DProject/csvfiles/soils.csv
===================================================================
diff -u -r4179 -r4549
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/CSVData/Full1DProject/csvfiles/soils.csv (.../soils.csv) (revision 4179)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/CSVData/Full1DProject/csvfiles/soils.csv (.../soils.csv) (revision 4549)
@@ -1,52 +1,52 @@
-soil_name;soil_color;soil_type;saturated_unit_weight;unsaturated_unit_weight;cohesion;friction_angle;diameter_d70;permeability_x;shear_strength_model;use_pop;pop
-BAS;#FFFFFF;Clay;20.00;20.00;20.00;25.00;0.01;1e-05;CPhi;False;0.00
-BFG;#FFFFFF;Clay;19.00;19.00;5.00;22.00;0.01;1e-05;CPhi;False;0.00
-BSS;#FFFFFF;Sand;20.00;20.00;0.00;30.00;170.00;0.17;CPhi;False;0.00
-CCC;#FFFFFF;Clay;17.00;17.00;5.00;22.00;0.01;1e-05;CPhi;False;0.00
-EFG;#FFFFFF;Sand;21.00;21.00;0.00;35.00;400.00;0.4;CPhi;False;0.00
-ETL;#FFFFFF;Clay;21.00;21.00;15.00;22.00;0.01;1e-05;CPhi;False;0.00
-FCC;#FFFFFF;Sand;20.00;20.00;0.00;30.00;350.00;0.35;CPhi;False;0.00
-FCF;#FFFFFF;Sand;19.00;19.00;0.00;27.00;170.00;0.17;CPhi;False;0.00
-FCM;#FFFFFF;Sand;20.00;20.00;0.00;30.00;250.00;0.25;CPhi;False;0.00
-FCO;#FFFFFF;Clay;17.00;17.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00
-FFG;#FFFFFF;Clay;19.00;19.00;8.00;27.50;0.01;1e-05;CPhi;False;0.00
-FFO;#FFFFFF;Clay;15.00;15.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00
-FFS;#FFFFFF;Clay;19.00;19.00;5.00;30.00;0.01;1e-05;CPhi;False;0.00
-FPR;#FFFFFF;Peat;13.00;13.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00
-kade;#FFFFFF;Clay;17.00;17.00;3.00;22.00;0.01;1e-05;CPhi;False;0.00
-KCS;#FFFFFF;Sand;20.00;20.00;0.00;33.00;400.00;0.4;CPhi;False;0.00
-KFG;#FFFFFF;Clay;19.00;19.00;10.00;22.00;0.01;1e-05;CPhi;False;0.00
-KFS;#FFFFFF;Sand;19.00;19.00;0.00;27.00;150.00;0.15;CPhi;False;0.00
-KMS;#FFFFFF;Sand;20.00;20.00;0.00;30.00;250.00;0.25;CPhi;False;0.00
-PEC;#FFFFFF;Clay;15.00;15.00;3.00;22.00;0.01;1e-05;CPhi;False;0.00
-PES;#FFFFFF;Sand;17.00;20.00;0.00;30.00;0.01;1e-05;CPhi;False;0.00
-PLC;#FFFFFF;Clay;14.00;14.00;2.00;22.00;0.01;1e-05;CPhi;False;0.00
-PLO;#FFFFFF;Peat;12.00;12.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00
-PPP;#FFFFFF;Peat;10.00;10.00;2.00;25.00;0.01;1e-05;CPhi;False;0.00
-SSC;#FFFFFF;Sand;21.00;21.00;0.00;33.00;400.00;0.4;CPhi;False;0.00
-SSF;#FFFFFF;Sand;19.00;19.00;0.00;30.00;200.00;0.2;CPhi;False;0.00
-SSM;#FFFFFF;Sand;20.00;20.00;0.00;30.00;250.00;0.25;CPhi;False;0.00
-TCC;#FFFFFF;Clay;18.00;18.00;1.00;25.00;0.01;1e-05;CPhi;False;0.00
-TCS;#FFFFFF;Sand;20.00;20.00;0.00;30.00;200.00;0.2;CPhi;False;0.00
-TFG;#FFFFFF;Clay;17.00;17.00;5.00;20.00;0.01;1e-05;CPhi;False;0.00
-TOP;#FFFFFF;Clay;17.00;17.00;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_1;#FFFFFF;Clay;13.80;13.80;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_2;#FFFFFF;Clay;14.68;14.68;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_3;#FFFFFF;Clay;15.26;15.26;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_4;#FFFFFF;Clay;15.88;15.88;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_5;#FFFFFF;Clay;16.09;16.09;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_6;#FFFFFF;Clay;16.98;16.98;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_7;#FFFFFF;Clay;17.49;17.49;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-top_8;#FFFFFF;Clay;17.81;17.81;3.00;23.00;0.01;1e-05;CPhi;False;0.00
-TSF;#FFFFFF;Clay;18.00;18.00;1.00;25.00;0.01;1e-05;CPhi;False;0.00
-TSS;#FFFFFF;Sand;19.00;19.00;1.00;27.00;150.00;0.15;CPhi;False;0.00
-zand_1;#FFFFFF;Sand;20.00;17.00;0.00;30.00;109.00;0.109;CPhi;False;0.00
-zand_10;#FFFFFF;Sand;20.00;17.00;0.00;30.00;473.00;0.473;CPhi;False;0.00
-zand_2;#FFFFFF;Sand;20.00;17.00;0.00;30.00;124.00;0.124;CPhi;False;0.00
-zand_3;#FFFFFF;Sand;20.00;17.00;0.00;30.00;145.00;0.145;CPhi;False;0.00
-zand_4;#FFFFFF;Sand;20.00;17.00;0.00;30.00;158.00;0.158;CPhi;False;0.00
-zand_5;#FFFFFF;Sand;20.00;17.00;0.00;30.00;192.00;0.192;CPhi;False;0.00
-zand_6;#FFFFFF;Sand;20.00;17.00;0.00;30.00;217.00;0.217;CPhi;False;0.00
-zand_7;#FFFFFF;Sand;20.00;17.00;0.00;30.00;282.00;0.282;CPhi;False;0.00
-zand_8;#FFFFFF;Sand;20.00;17.00;0.00;30.00;343.00;0.343;CPhi;False;0.00
-zand_9;#FFFFFF;Sand;20.00;17.00;0.00;30.00;396.00;0.396;CPhi;False;0.00
+soil_name;soil_color;soil_type;saturated_unit_weight;unsaturated_unit_weight;cohesion;friction_angle;diameter_d70;permeability_x;shear_strength_model;use_pop;pop;sigma_tau_curve_name
+BAS;#FFFFFF;Clay;20.00;20.00;20.00;25.00;0.01;1e-05;CPhi;False;0.00;
+BFG;#FFFFFF;Clay;19.00;19.00;5.00;22.00;0.01;1e-05;CPhi;False;0.00;
+BSS;#FFFFFF;Sand;20.00;20.00;0.00;30.00;170.00;0.17;CPhi;False;0.00;
+CCC;#FFFFFF;Clay;17.00;17.00;5.00;22.00;0.01;1e-05;SigmaTauCurve;False;0.00;CurveKlei
+EFG;#FFFFFF;Sand;21.00;21.00;0.00;35.00;400.00;0.4;CPhi;False;0.00;
+ETL;#FFFFFF;Clay;21.00;21.00;15.00;22.00;0.01;1e-05;CPhi;False;0.00;
+FCC;#FFFFFF;Sand;20.00;20.00;0.00;30.00;350.00;0.35;CPhi;False;0.00;
+FCF;#FFFFFF;Sand;19.00;19.00;0.00;27.00;170.00;0.17;CPhi;False;0.00;
+FCM;#FFFFFF;Sand;20.00;20.00;0.00;30.00;250.00;0.25;CPhi;False;0.00;
+FCO;#FFFFFF;Clay;17.00;17.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00;
+FFG;#FFFFFF;Clay;19.00;19.00;8.00;27.50;0.01;1e-05;CPhi;False;0.00;
+FFO;#FFFFFF;Clay;15.00;15.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00;
+FFS;#FFFFFF;Clay;19.00;19.00;5.00;30.00;0.01;1e-05;CPhi;False;0.00;
+FPR;#FFFFFF;Peat;13.00;13.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00;
+kade;#FFFFFF;Clay;17.00;17.00;3.00;22.00;0.01;1e-05;CPhi;False;0.00;
+KCS;#FFFFFF;Sand;20.00;20.00;0.00;33.00;400.00;0.4;CPhi;False;0.00;
+KFG;#FFFFFF;Clay;19.00;19.00;10.00;22.00;0.01;1e-05;CPhi;False;0.00;
+KFS;#FFFFFF;Sand;19.00;19.00;0.00;27.00;150.00;0.15;CPhi;False;0.00;
+KMS;#FFFFFF;Sand;20.00;20.00;0.00;30.00;250.00;0.25;CPhi;False;0.00;
+PEC;#FFFFFF;Clay;15.00;15.00;3.00;22.00;0.01;1e-05;CPhi;False;0.00;
+PES;#FFFFFF;Sand;17.00;20.00;0.00;30.00;0.01;1e-05;CPhi;False;0.00;
+PLC;#FFFFFF;Clay;14.00;14.00;2.00;22.00;0.01;1e-05;CPhi;False;0.00;
+PLO;#FFFFFF;Peat;12.00;12.00;2.00;20.00;0.01;1e-05;CPhi;False;0.00;
+PPP;#FFFFFF;Peat;10.00;10.00;2.00;25.00;0.01;1e-05;CPhi;False;0.00;
+SSC;#FFFFFF;Sand;21.00;21.00;0.00;33.00;400.00;0.4;CPhi;False;0.00;
+SSF;#FFFFFF;Sand;19.00;19.00;0.00;30.00;200.00;0.2;CPhi;False;0.00;
+SSM;#FFFFFF;Sand;20.00;20.00;0.00;30.00;250.00;0.25;CPhi;False;0.00;
+TCC;#FFFFFF;Clay;18.00;18.00;1.00;25.00;0.01;1e-05;CPhi;False;0.00;
+TCS;#FFFFFF;Sand;20.00;20.00;0.00;30.00;200.00;0.2;CPhi;False;0.00;
+TFG;#FFFFFF;Clay;17.00;17.00;5.00;20.00;0.01;1e-05;CPhi;False;0.00;
+TOP;#FFFFFF;Clay;17.00;17.00;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_1;#FFFFFF;Clay;13.80;13.80;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_2;#FFFFFF;Clay;14.68;14.68;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_3;#FFFFFF;Clay;15.26;15.26;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_4;#FFFFFF;Clay;15.88;15.88;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_5;#FFFFFF;Clay;16.09;16.09;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_6;#FFFFFF;Clay;16.98;16.98;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_7;#FFFFFF;Clay;17.49;17.49;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+top_8;#FFFFFF;Clay;17.81;17.81;3.00;23.00;0.01;1e-05;CPhi;False;0.00;
+TSF;#FFFFFF;Clay;18.00;18.00;1.00;25.00;0.01;1e-05;CPhi;False;0.00;
+TSS;#FFFFFF;Sand;19.00;19.00;1.00;27.00;150.00;0.15;CPhi;False;0.00;
+zand_1;#FFFFFF;Sand;20.00;17.00;0.00;30.00;109.00;0.109;CPhi;False;0.00;
+zand_10;#FFFFFF;Sand;20.00;17.00;0.00;30.00;473.00;0.473;CPhi;False;0.00;
+zand_2;#FFFFFF;Sand;20.00;17.00;0.00;30.00;124.00;0.124;CPhi;False;0.00;
+zand_3;#FFFFFF;Sand;20.00;17.00;0.00;30.00;145.00;0.145;CPhi;False;0.00;
+zand_4;#FFFFFF;Sand;20.00;17.00;0.00;30.00;158.00;0.158;CPhi;False;0.00;
+zand_5;#FFFFFF;Sand;20.00;17.00;0.00;30.00;192.00;0.192;CPhi;False;0.00;
+zand_6;#FFFFFF;Sand;20.00;17.00;0.00;30.00;217.00;0.217;CPhi;False;0.00;
+zand_7;#FFFFFF;Sand;20.00;17.00;0.00;30.00;282.00;0.282;CPhi;False;0.00;
+zand_8;#FFFFFF;Sand;20.00;17.00;0.00;30.00;343.00;0.343;CPhi;False;0.00;
+zand_9;#FFFFFF;Sand;20.00;17.00;0.00;30.00;396.00;0.396;CPhi;False;0.00;