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;