Beispiel #1
0
        public void TestImportFromPar()
        {
            Soil S = Soil.Create(SoilParFile.Import("./Temp.par"));

            Assert.AreEqual(S.Name, "BlackVertosol");
            Assert.IsTrue(MathUtility.AreEqual(S.Water.BD,
                                               new double[] { 1.02, 1.03, 1.02, 1.02, 1.06, 1.11, 1.12, 1.15, 1.18, 1.2, 1.25 }));
            Assert.IsTrue(MathUtility.AreEqual(S.OC,
                                               new double[] { 1.04, 0.89, 0.89, 0.89, 0.77, 0.45, 0.27, 0.22, 0.16, 0.13, 0.12 }));
            Assert.IsTrue(MathUtility.AreEqual(S.Crop("nwheat").LL,
                                               new double[] { 0.290, 0.290, 0.320, 0.320, 0.350, 0.380, 0.410, 0.480, 0.470, 0.460, 0.440 }));
        }
Beispiel #2
0
        public void ConvertDataTableToSoil()
        {
            double NaN = double.NaN;


            DataTable Table = new DataTable();

            DataTableUtility.AddColumn(Table, "Name", new string[] { "soil1", "soil1", "soil1", "soil1", "soil2", "soil2", "soil2", "soil2", "soil2", "soil2" });
            DataTableUtility.AddColumn(Table, "Country", new string[] { "Aust", "Aust", "Aust", "Aust", "NZ", "NZ", "NZ", "NZ", "NZ", "NZ" });
            DataTableUtility.AddColumn(Table, "Thickness (mm)", new double[] { 150.00, 150.00, 300.00, NaN, 50.00, 50.00, 150.00, 300.00, 300.00, 300.00 });
            DataTableUtility.AddColumn(Table, "BD (g/cc)", new double[] { 1.02, 1.03, 1.02, NaN, 1.06, 1.02, 1.03, 1.02, 1.02, 1.06 });
            DataTableUtility.AddColumn(Table, "BDCode", new string[] { "FM", "LM", "C_grav", "E", "", "", "", "", "", "" });

            DataTableUtility.AddColumn(Table, "ThicknessChem (mm)", new double[] { 150.00, 150.00, 300.00, 300.00, 50.00, 50.00, 150.00, 300.00, 300.00, 300.00 });
            DataTableUtility.AddColumn(Table, "OC", new double[] { 0.25, 1.20, 1.60, 1.80, 0.10, 0.20, 0.30, 0.40, 0.50, 00.60 });
            DataTableUtility.AddColumn(Table, "OCCode", new string[] { "M (Walkley Black %)", "E (Walkley Black %)", "E (Walkley Black %)", "E (Walkley Black %)", "", "", "", "", "", "" });

            DataTableUtility.AddColumn(Table, "AirDry (mm/mm)", new double[] { 0.15, 0.26, 0.29, 0.29, 0.30, 0.15, 0.26, 0.29, 0.29, 0.30 });
            DataTableUtility.AddColumn(Table, "Wheat LL (mm/mm)", new double[] { 0.29, 0.25, 0.24, 0.23, 0.22, 0.29, 0.25, 0.24, 0.23, 0.22 });
            DataTableUtility.AddColumn(Table, "Wheat KL (/day)", new double[] { 0.10, 0.08, 0.06, 0.04, 0.02, 0.10, 0.08, 0.06, 0.04, 0.02 });
            DataTableUtility.AddColumn(Table, "Wheat XF (0-1)", new double[] { 1.00, 0.80, 0.80, 0.60, 0.60, 1.00, 0.80, 0.80, 0.60, 0.60 });
            DataTableUtility.AddColumn(Table, "Barley LL (mm/mm)", new double[] { 0.25, 0.24, 0.23, 0.22, 0.21, 0.25, 0.24, 0.23, 0.22, 0.21 });

            Soil[] Soils = SoilDataTable.TableToSoils(Table);

            Assert.AreEqual(Soils.Length, 2);
            Assert.AreEqual(Soils[0].Name, "soil1");
            Assert.AreEqual(Soils[1].Name, "soil2");
            Assert.AreEqual(Soils[0].Water.BD, new double[] { 1.02, 1.03, 1.02 }, 0.01);

            Assert.IsTrue(MathUtility.AreEqual(Soils[0].Water.BDMetadata,
                                               new string[] { "Field measured and checked for sensibility",
                                                              "Laboratory measured",
                                                              "Calculated from gravimetric moisture when profile wet but drained" }));

            Assert.AreEqual(Soils[1].Water.BD, new double[] { 1.06, 1.02, 1.03, 1.02, 1.02, 1.06 }, 0.01);
            Assert.AreEqual(Soils[0].SoilOrganicMatter.OC, new double[] { 0.25, 1.20, 1.60, 1.80 });
            Assert.AreEqual(Soils[0].Crop("wheat").LL, new double[] { 0.29, 0.25, 0.24 });
            Assert.AreEqual(Soils[0].Crop("wheat").KL, new double[] { 0.10, 0.08, 0.06 });
        }