public static void Save(string directory, Madingley.Common.Configuration c) { CreateDirectories(directory); var convertTimeSteps = 12; var parameters = new Tuple <string, string>[] { Tuple.Create("Parameter", "Value"), Tuple.Create("Timestep Units", c.GlobalModelTimeStepUnit), Tuple.Create("Length of simulation (years)", (c.NumTimeSteps / convertTimeSteps).ToString()), Tuple.Create("Burn-in (years)", (c.BurninTimeSteps / convertTimeSteps).ToString()), Tuple.Create("Impact duration (years)", (c.ImpactTimeSteps / convertTimeSteps).ToString()), Tuple.Create("Recovery duration (years)", (c.RecoveryTimeSteps / convertTimeSteps).ToString()), Tuple.Create("Plankton size threshold", c.PlanktonDispersalThreshold.ToString()), Tuple.Create("Draw Randomly", c.DrawRandomly ? "yes" : "no"), Tuple.Create("Extinction Threshold", c.ExtinctionThreshold.ToString()), Tuple.Create("Maximum Number Of Cohorts", c.MaxNumberOfCohorts.ToString()), Tuple.Create("Run Cells In Parallel", c.RunCellsInParallel ? "yes" : "no"), Tuple.Create("Run Simulations In Parallel", c.RunSimulationsInParallel ? "yes" : "no"), Tuple.Create("Run Single Realm", c.RunRealm), Tuple.Create("Impact Cell Index", System.String.Join(";", c.ImpactCellIndices)), // Tuple.Create("ImpactAll", if c.ImpactAll then "yes" else "no"), Tuple.Create("Dispersal only", c.DispersalOnly ? "yes" : "no"), Tuple.Create("Dispersal only type", c.DispersalOnlyType) }; using (var writer = new StreamWriter(Path.Combine(directory, "SimulationControlParameters.csv"))) { parameters.ToList().ForEach(kv => writer.WriteLine(String.Format("{0},{1}", kv.Item1, kv.Item2))); } var fileLocationParameters = new Tuple <string, string>[] { Tuple.Create("Parameter", "Value"), Tuple.Create("Mass Bin Filename", "MassBinDefinitions.csv"), Tuple.Create("Environmental Data File", "EnvironmentalDataLayers.csv"), Tuple.Create("Cohort Functional Group Definitions File", "CohortFunctionalGroupDefinitions.csv"), Tuple.Create("Stock Functional Group Definitions File", "StockFunctionalGroupDefinitions.csv"), Tuple.Create("Ecological parameters file", "EcologicalParameters.csv") }; using (var writer = new StreamWriter(Path.Combine(directory, "FileLocationParameters.csv"))) { fileLocationParameters.ToList().ForEach(kv => writer.WriteLine(String.Format("{0},{1}", kv.Item1, kv.Item2))); } EcologicalParameters.Save(c.EcologicalParameters, Path.Combine(directory, "Ecological Definition Files", "EcologicalParameters.csv")); FunctionalGroupDefinitions.Save(c.CohortFunctionalGroupDefinitions, Path.Combine(directory, "Ecological Definition Files", "CohortFunctionalGroupDefinitions.csv")); FunctionalGroupDefinitions.Save(c.StockFunctionalGroupDefinitions, Path.Combine(directory, "Ecological Definition Files", "StockFunctionalGroupDefinitions.csv")); ScenarioParameters.SaveScenarios(c.ScenarioParameters, Path.Combine(directory, "Initial Model State Setup", "Scenarios.csv")); }
public static Madingley.Common.ScenarioParameters[] RandomScenarioParameters(Random rnd, int length1, int length2) { return(Enumerable.Range(0, length2).Select(i => ScenarioParameters.RandomScenarioParameters(rnd, length1)).ToArray()); }