public void ImporterTests_SoilImports() { string oldXml = ReflectionUtilities.GetResourceAsString("UnitTests.ImporterTestsSoilImports.xml"); APSIMImporter importer = new APSIMImporter(); Simulations sims = importer.CreateSimulationsFromXml(oldXml); Soil s = sims.Children[0].Children[0] as Soil; Assert.AreEqual(s.Name, "Soil"); InitialWater initWater = s.Children[0] as InitialWater; Assert.AreEqual(initWater.FractionFull, 0.5); Assert.AreEqual(initWater.PercentMethod, InitialWater.PercentMethodEnum.FilledFromTop); Water w = s.Children[1] as Water; Assert.AreEqual(w.Thickness, new double[] { 150, 150, 300, 300 }); Assert.AreEqual(w.BD, new double[] { 1.02, 1.03, 1.02, 1.02 }); Assert.AreEqual(w.LL15, new double[] { 0.29, 0.29, 0.29, 0.29 }); SoilWater sw = s.Children[2] as SoilWater; Assert.AreEqual(sw.Thickness, new double[] { 150, 150, 300, 300 }); Assert.AreEqual(sw.SWCON, new double[] { 0.3, 0.3, 0.3, 0.3 }); Assert.AreEqual(sw.SummerCona, 3.5); Assert.AreEqual(sw.SummerU, 6); Assert.AreEqual(sw.WinterCona, 2); Assert.AreEqual(sw.WinterU, 2); Assert.IsTrue(s.Children[3] is SoilNitrogen); SoilOrganicMatter som = s.Children[4] as SoilOrganicMatter; Assert.AreEqual(som.Thickness, new double[] { 150, 150, 300, 300 }); Assert.AreEqual(som.OC, new double[] { 1.04, 0.89, 0.89, 0.89 }); Assert.AreEqual(som.FBiom, new double[] { 0.025, 0.02, 0.015, 0.01 }); Analysis a = s.Children[5] as Analysis; Assert.AreEqual(a.Thickness, new double[] { 150, 150, 300, 300 }); Assert.AreEqual(a.EC, new double[] { 0.2, 0.25, 0.31, 0.40 }); Assert.AreEqual(a.PH, new double[] { 8.4, 8.8, 9.0, 9.2 }); Sample sam = s.Children[6] as Sample; Assert.AreEqual(sam.Thickness, new double[] { 150, 150, 300 }); Assert.AreEqual(sam.NO3, new double[] { 6.5, 2.1, 2.1 }); Assert.AreEqual(sam.NH4, new double[] { 0.5, 0.1, 0.1 }); SoilCrop crop = s.Children[1].Children[0] as SoilCrop; Assert.AreEqual(crop.Thickness, new double[] { 150, 150, 300, 300 }); Assert.AreEqual(crop.LL, new double[] { 0.29, 0.29, 0.32, 0.38 }); Assert.AreEqual(crop.KL, new double[] { 0.1, 0.1, 0.08, 0.06 }); Assert.AreEqual(crop.XF, new double[] { 1, 1, 1, 1 }); }
/// <summary>Sets the soil water thickness.</summary> /// <param name="soilWater">The soil water.</param> /// <param name="thickness">Thickness to change soil water to.</param> private static void SetSoilWaterThickness(SoilWater soilWater, double[] thickness) { if (soilWater != null) { if (!MathUtilities.AreEqual(thickness, soilWater.Thickness)) { soilWater.KLAT = MapConcentration(soilWater.KLAT, soilWater.Thickness, thickness, MathUtilities.LastValue(soilWater.KLAT)); soilWater.SWCON = MapConcentration(soilWater.SWCON, soilWater.Thickness, thickness, 0.0); soilWater.Thickness = thickness; } MathUtilities.ReplaceMissingValues(soilWater.SWCON, 0.0); } }