//---------------------------------------------------------------------
        //public static void Initialize(IInputParameters parameters)
        public static void Initialize()
        {
            AnnualWeather = new Library.Parameters.Ecoregions.AuxParm <AnnualClimate_Monthly>(PlugIn.ModelCore.Ecoregions);

            foreach (IEcoregion ecoregion in PlugIn.ModelCore.Ecoregions)
            {
                if (ecoregion.Active)
                {
                    // Latitude is contained in the PnET Ecoregion
                    Climate.GenerateEcoregionClimateData(ecoregion, 0, EcoregionPnET.GetPnETEcoregion(ecoregion).Latitude);
                    SetSingleAnnualClimate(ecoregion, 0, Climate.Phase.SpinUp_Climate);  // Some placeholder data to get things started.
                }
            }
        }
Exemple #2
0
        public void WriteUpdate <T>(int year, ISiteVar <T> values)
        {
            string line = year + "\t";

            Landis.Library.Parameters.Ecoregions.AuxParm <double> sum_values_per_ecoregion = new Library.Parameters.Ecoregions.AuxParm <double>(PlugIn.ModelCore.Ecoregions);
            Landis.Library.Parameters.Ecoregions.AuxParm <int>    cnt_values_per_ecoregion = new Library.Parameters.Ecoregions.AuxParm <int>(PlugIn.ModelCore.Ecoregions);
            Landis.Library.Parameters.Ecoregions.AuxParm <double> avg_values_per_ecoregion = new Library.Parameters.Ecoregions.AuxParm <double>(PlugIn.ModelCore.Ecoregions);
            foreach (ActiveSite site in PlugIn.ModelCore.Landscape)
            {
                sum_values_per_ecoregion[PlugIn.ModelCore.Ecoregion[site]] += double.Parse(values[site].ToString());
                cnt_values_per_ecoregion[PlugIn.ModelCore.Ecoregion[site]]++;
                avg_values_per_ecoregion[PlugIn.ModelCore.Ecoregion[site]] = sum_values_per_ecoregion[PlugIn.ModelCore.Ecoregion[site]] / ((double)cnt_values_per_ecoregion[PlugIn.ModelCore.Ecoregion[site]]);
            }
            foreach (IEcoregion e in PlugIn.ModelCore.Ecoregions)
            {
                line += avg_values_per_ecoregion[e] + "\t";
            }

            FileContent.Add(line);

            System.IO.File.WriteAllLines(FileName, FileContent.ToArray());
        }
        public static void Initialize()
        {
            Parameter<string> PressureHeadCalculationMethod = null;
            if (PlugIn.TryGetParameter(Names.PressureHeadCalculationMethod, out PressureHeadCalculationMethod))
            {
                Parameter<string> p = PlugIn.GetParameter(Names.PressureHeadCalculationMethod);

                if (p.Value == Names.VanGenuchten) Pressureheadtable = new PressureHeadVanGenuchten();
                else if (PlugIn.GetParameter(Names.PressureHeadCalculationMethod).Value == Names.SaxtonAndRawls) Pressureheadtable = new PressureHeadSaxton_Rawls();
                else
                {
                    string msg = "Unknown presciption for calculating pressurehead, value for " + Names.PressureHeadCalculationMethod + " can be "+ Names.VanGenuchten+" or " + Names.SaxtonAndRawls;
                    throw new System.Exception(msg);
                }
            }
            else
            {
                string msg = "Missing presciption for calculating pressurehead, expected keyword " + Names.PressureHeadCalculationMethod + " in " + PlugIn.GetParameter(Names.PnETGenericParameters).Value + " or in " + PlugIn.GetParameter(Names.ExtensionName).Value;
                throw new System.Exception(msg);
            }

            WiltPnt = new Library.Parameters.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions);
            FieldCap = new Library.Parameters.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions);
            Porosity = new Library.Parameters.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions);

            SoilType = (Landis.Library.Parameters.Ecoregions.AuxParm<string>)PlugIn.GetParameter(Names.SoilType);

            PlugIn.ModelCore.UI.WriteLine("Eco\tSoilt\tWiltPnt\tFieldCap(mm)\tFC-WP\tPorosity");
            foreach (IEcoregion eco in PlugIn.ModelCore.Ecoregions) if (eco.Active)
            {
                // takes PH (MPa)
                // Calculates water content (m3H2O/m3 SOIL)

                // Water content at field capacity (calculated as an output variable)
                //  −33 kPa (or −0.33 bar)
                // mH2O value =  kPa value x 0.101972
                FieldCap[eco] = (float)Hydrology.Pressureheadtable.CalculateWaterContent((ushort)3.36, SoilType[eco]) * eco.RootingDepth();

                WiltPnt[eco] = (float)Hydrology.Pressureheadtable.CalculateWaterContent((ushort)150, SoilType[eco]) * eco.RootingDepth();

                Porosity[eco] = (float)Hydrology.Pressureheadtable.Porosity(eco.RootingDepth(), SoilType[eco]);

                float f = FieldCap[eco] - WiltPnt[eco];
                PlugIn.ModelCore.UI.WriteLine(eco.Name + "\t" + SoilType[eco] + "\t" + WiltPnt[eco] + "\t" + FieldCap[eco] + "\t" + f + "\t" + Porosity[eco] );
            }
        }