Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj
===================================================================
diff -u -r4933 -r4936
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4933)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4936)
@@ -53,6 +53,9 @@
PreserveNewest
+
+ PreserveNewest
+
@@ -1352,11 +1355,6 @@
-
- PreserveNewest
-
-
-
PreserveNewest
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs
===================================================================
diff -u -r4933 -r4936
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 4933)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 4936)
@@ -147,7 +147,7 @@
Assert.That(damProjectData.WaterBoard.Dikes[0].Scenarios.Count, Is.EqualTo(19652));
// Check aquifer data
- var aquifers = damProjectData.WaterBoard.Dikes[0].ImportedCsvAquifers;
+ var aquifers = damProjectData.WaterBoard.Dikes[0].Aquifers;
Assert.That(aquifers.Count, Is.EqualTo(4));
Assert.That(aquifers[0].StixFileName, Is.EqualTo("DWP_1.stix"));
Assert.That(aquifers[0].LayerName, Is.EqualTo("L1"));
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs
===================================================================
diff -u -r4933 -r4936
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs (.../Dike.cs) (revision 4933)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs (.../Dike.cs) (revision 4936)
@@ -57,6 +57,7 @@
private IList pl1Lines;
private SoilList soilList;
private IList soilProfiles;
+ private IList aquifers;
public Dike()
{
@@ -118,6 +119,12 @@
set => soilList = value;
}
+ public virtual IList Aquifers
+ {
+ get => aquifers;
+ set => aquifers = value;
+ }
+
[Browsable(false)] public virtual IList Gauges { get; set; } = new List();
[Browsable(false)] public virtual IList GaugePLLines { get; set; } = new List();
@@ -299,10 +306,10 @@
{
return;
}
-
+ Aquifers = new List();
foreach (CsvImporterAquifers.AquiferRecord aquiferRecord in aquiferRecords)
{
- Aquifer aquifer = ImportedCsvAquifers.Find(sc => sc.StixFileName == aquiferRecord.StixFileName && sc.LayerName == aquiferRecord.LayerName);
+ Aquifer aquifer = Aquifers.Find(sc => sc.StixFileName == aquiferRecord.StixFileName && sc.LayerName == aquiferRecord.LayerName);
if (aquifer != null)
{
continue;
@@ -312,7 +319,7 @@
StixFileName = aquiferRecord.StixFileName,
LayerName = aquiferRecord.LayerName
};
- ImportedCsvAquifers.Add(aquifer);
+ Aquifers.Add(aquifer);
}
}
@@ -415,7 +422,6 @@
internal List ImportedCsvSoils { get; } = new();
internal List ImportedCsvStressCurves { get; } = new();
- internal List ImportedCsvAquifers { 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/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs
===================================================================
diff -u -r4817 -r4936
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 4817)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 4936)
@@ -62,6 +62,7 @@
List filteredJobs = FilterLocationJobsWithSoilProfiles(damProjectData.SelectedLocationJobs,
soilProfileDirectory,
dike.SoilList,
+ dike.Aquifers,
soilProfiles2DToSerialize).ToList();
List filteredLocations = filteredJobs.Select(loc => loc.Location).ToList();
@@ -749,6 +750,7 @@
private static IEnumerable FilterLocationJobsWithSoilProfiles(IEnumerable locationJobs,
string soilProfileDirectory,
SoilList availableSoils,
+ IEnumerable aquifers,
ICollection containedSoilProfiles)
{
var validJobs = new List();
@@ -758,7 +760,7 @@
Location location = locationJob.Location;
try
{
- foreach (SoilProfile2D soilProfile in GetSoilProfiles(soilProfileDirectory, location.Segment, availableSoils))
+ foreach (SoilProfile2D soilProfile in GetSoilProfiles(soilProfileDirectory, location.Segment, availableSoils, aquifers))
{
string soilProfileName = soilProfile.Name;
if (!uniqueSoilProfileNames.Contains(soilProfileName))
@@ -805,9 +807,9 @@
/// An array of .
/// Thrown when the soil profiles could not be successfully imported.
/// Thrown when the soil profiles could not be successfully converted.
- private static IEnumerable GetSoilProfiles(string soilProfileDirectory, Segment segment, SoilList soils)
+ private static IEnumerable GetSoilProfiles(string soilProfileDirectory, Segment segment, SoilList soils, IEnumerable aquifers)
{
- IEnumerable importedSoilProfiles = SoilProfile2DImporter.Import(soilProfileDirectory, segment, soils);
+ IEnumerable importedSoilProfiles = SoilProfile2DImporter.Import(soilProfileDirectory, segment, soils, aquifers);
return importedSoilProfiles.Select(XmlSoilProfile2DConverter.Convert).ToArray();
}
}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/Geometry2DImporter/DWP_Sand.stix
===================================================================
diff -u
Binary files differ
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/TestData/Geometry2DImporter/DWP_1.stix
===================================================================
diff -u -r4868 -r4936
Binary files differ
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Geometry2DImporter/SoilProfile2DImporterTest.cs
===================================================================
diff -u -r4869 -r4936
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Geometry2DImporter/SoilProfile2DImporterTest.cs (.../SoilProfile2DImporterTest.cs) (revision 4869)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Geometry2DImporter/SoilProfile2DImporterTest.cs (.../SoilProfile2DImporterTest.cs) (revision 4936)
@@ -45,7 +45,7 @@
public void Import_InvalidSoilProfileDirectory_ThrowsArgumentException(string invalidSoilProfileDirectory)
{
// Call
- TestDelegate call = () => SoilProfile2DImporter.Import(invalidSoilProfileDirectory, new Segment(), new SoilList());
+ TestDelegate call = () => SoilProfile2DImporter.Import(invalidSoilProfileDirectory, new Segment(), new SoilList(), null);
// Assert
Assert.That(call, Throws.ArgumentException
@@ -56,7 +56,7 @@
public void Import_SegmentNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => SoilProfile2DImporter.Import(string.Empty, null, new SoilList());
+ TestDelegate call = () => SoilProfile2DImporter.Import(string.Empty, null, new SoilList(), null);
// Assert
Assert.That(call, Throws.TypeOf()
@@ -68,7 +68,7 @@
public void Import_AvailableSoilsNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => SoilProfile2DImporter.Import(string.Empty, new Segment(), null);
+ TestDelegate call = () => SoilProfile2DImporter.Import(string.Empty, new Segment(), null, null);
// Assert
Assert.That(call, Throws.TypeOf()
@@ -96,7 +96,7 @@
});
// Call
- IEnumerable soilProfiles = SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils);
+ IEnumerable soilProfiles = SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils, null);
// Assert
Assert.That(soilProfiles.Count, Is.EqualTo(2));
@@ -142,7 +142,7 @@
});
// Call
- IEnumerable soilProfiles = SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils);
+ IEnumerable soilProfiles = SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils, null);
// Assert
Assert.That(soilProfiles.Count, Is.EqualTo(2));
@@ -184,7 +184,7 @@
"Muck"
});
- Assert.That(() => SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils),
+ Assert.That(() => SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils, null),
Throws.Exception.TypeOf().With.Message.EqualTo($"'{invalidSoilProfile}' contains the undefined soil: Sand."));
}
@@ -203,15 +203,15 @@
"Muck"
});
- Assert.That(() => SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils),
+ Assert.That(() => SoilProfile2DImporter.Import(StiTestDataFolder, segment, availableSoils, null),
Throws.TypeOf().With.Message.Contains($"Could not import soil profile '{invalidSoilProfileName}': "));
}
[Test]
public void WhenStixFileIsImported_ThenSoilProfile2DHasValidGeometry()
{
// Setup
- const string fileName = "DWP_1.stix";
+ const string fileName = "DWP_Sand.stix";
Segment segment = CreateSegmentWithProfiles(new[]
{
fileName
@@ -224,15 +224,40 @@
"klei antropogeen (1)",
"zand antropogeen (1)"
});
+ var aquifers = new[]
+ {
+ new Aquifer
+ {
+ StixFileName = fileName,
+ LayerName = "Sand" // there are 2 layers with the name "Sand" in the stix file
+ },
+ new Aquifer
+ {
+ StixFileName = fileName,
+ LayerName = "L 11"
+ }
+ };
// Call
- IEnumerable soilProfiles = SoilProfile2DImporter.Import(StixTestDataFolder, segment, availableSoils);
+ IEnumerable soilProfiles = SoilProfile2DImporter.Import(StixTestDataFolder, segment, availableSoils, aquifers);
// Assert
GeometryData geometry = soilProfiles.ElementAt(0).Geometry;
Assert.That(geometry.Surfaces, Has.Count.EqualTo(12));
ValidationResult[] validationResults = geometry.ValidateGeometry();
Assert.That(validationResults, Has.Length.EqualTo(0));
+ for (var index = 0; index < soilProfiles.ElementAt(0).Surfaces.Count; index++)
+ {
+ var surface = soilProfiles.ElementAt(0).Surfaces[index];
+ if (index == 0 || index == 1 || index == 10)
+ {
+ Assert.That(surface.IsAquifer, Is.True);
+ }
+ else
+ {
+ Assert.That(surface.IsAquifer, Is.False);
+ }
+ }
}
private static Segment CreateSegmentWithProfiles(IEnumerable soilProfileNames)
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs
===================================================================
diff -u -r4878 -r4936
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs (.../SoilProfile2DImporter.cs) (revision 4878)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Geometry2DImporter/SoilProfile2DImporter.cs (.../SoilProfile2DImporter.cs) (revision 4936)
@@ -47,7 +47,7 @@
/// is null, empty or consist of only whitespaces.
///
/// Thrown when the soil profiles could not be successfully imported.
- public static IEnumerable Import(string soilProfileDirectory, Segment segment, SoilList availableSoils)
+ public static IEnumerable Import(string soilProfileDirectory, Segment segment, SoilList availableSoils, IEnumerable aquifers)
{
if (segment == null)
{
@@ -71,7 +71,7 @@
foreach (SoilGeometryProbability profile in soilProfiles)
{
string profileName = profile.SoilGeometry2DName;
- SoilProfile2D readSoilProfile = ReadSoilProfile(soilProfileDirectory, profileName);
+ SoilProfile2D readSoilProfile = ReadSoilProfile(soilProfileDirectory, profileName, aquifers);
foreach (string soilName in readSoilProfile.Surfaces.Select(surface => surface.Soil.Name))
{
if (!IsSoilOfSurfacePresent(availableSoils.Soils, soilName))
@@ -94,7 +94,7 @@
/// The name of the soil profile.
/// A .
/// Thrown when the soil profile could not be read.
- private static SoilProfile2D ReadSoilProfile(string soilProfileDirectory, string soilProfileName)
+ private static SoilProfile2D ReadSoilProfile(string soilProfileDirectory, string soilProfileName, IEnumerable aquifers)
{
string soilProfileFileName = HasStiFileExtension(soilProfileName) ? soilProfileName : $"{soilProfileName}.sti";
string filePath = Path.Combine(soilProfileDirectory, soilProfileFileName);
@@ -126,6 +126,7 @@
{
var reader = new StixFileReader.StixFileReader();
SoilProfile2D readSoilProfile = reader.ReadSoilProfile(filePath);
+ TransferAquiferData(soilProfileFileName, readSoilProfile.Surfaces, aquifers.ToList());
readSoilProfile.Geometry.RegenerateGeometry();
return readSoilProfile;
@@ -159,4 +160,16 @@
layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic;
}
}
+
+ private static void TransferAquiferData(string soilProfileFileName, IEnumerable soilLayers, IList aquifers)
+ {
+ foreach (SoilLayer2D layer in soilLayers)
+ {
+ Aquifer aquifer = aquifers.FirstOrDefault(a => a.StixFileName == soilProfileFileName && a.LayerName == layer.GeometrySurface.Name);
+ if (aquifer != null)
+ {
+ layer.IsAquifer = true;
+ }
+ }
+ }
}
\ No newline at end of file