using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Data.General; namespace Deltares.DamEngine.Calculators.KernelWrappers.DamMacroStabilityCommon { public class DamMacroStabilityUtils { public static string GetStabilityInputFileName(DamKernelInput damKernelInput, int iterationIndex, MStabModelType model) { // Assume 2D sti-file, then check on type being 1D string soilGeometryName = damKernelInput.SubSoilScenario.StiFileName; if (damKernelInput.SubSoilScenario.SoilProfileType == SoilProfileType.ProfileType1D) { soilGeometryName = damKernelInput.SubSoilScenario.SoilProfile1DName; } string calculationName = DetermineCalculationFilename(damKernelInput.DesignScenario.Location.Name, damKernelInput.DesignScenario.LocationScenarioID, soilGeometryName, iterationIndex); const string filenameExtension = ".sti"; string fileName = calculationName + filenameExtension; string stabilityDirectory = GetStabilityCalculationDirectory(model); return Path.Combine(stabilityDirectory, fileName); } private static string DetermineCalculationFilename(string locationName, string scenarioName, string soilGeometryName, int iterationIndex) { string calculationName; if (iterationIndex <= 0) { calculationName = String.Format("Loc({0})_Sce({1})_Pro({2})", locationName, scenarioName, soilGeometryName); } else { calculationName = String.Format("Loc({0})_Sce({1})_Pro({2})_Ite({3})", locationName, scenarioName, soilGeometryName, iterationIndex); } return Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_"); } private static string GetStabilityCalculationDirectory(MStabModelType model) { string calculationBaseDirectory = DamProjectData.ProjectWorkingPath; const string stabilitySubDir = @"Stability\"; string stabilityDirectory = Path.Combine(calculationBaseDirectory, stabilitySubDir); var modelSubDirectory = model.ToString(); if (modelSubDirectory != "") stabilityDirectory = Path.Combine(stabilityDirectory, modelSubDirectory); if (!Directory.Exists(stabilityDirectory)) Directory.CreateDirectory(stabilityDirectory); return stabilityDirectory; } } }