protected static void GrowPspStand(PspStand huffmanPeak, TestStand stand, OrganonVariant variant, int startYear, int endYear, string baseFileName) { OrganonConfiguration configuration = OrganonTest.CreateOrganonConfiguration(variant); TestStand initialTreeData = new TestStand(stand); TreeLifeAndDeath treeGrowth = new TreeLifeAndDeath(); Dictionary <FiaCode, SpeciesCalibration> calibrationBySpecies = configuration.CreateSpeciesCalibration(); if (configuration.IsEvenAge) { // stand error if less than one year to grow to breast height stand.AgeInYears = stand.BreastHeightAgeInYears + 2; } TestStandDensity density = new TestStandDensity(stand, variant); using StreamWriter densityWriter = density.WriteToCsv(baseFileName + " density.csv", variant, startYear); TreeQuantiles quantiles = new TreeQuantiles(stand); using StreamWriter quantileWriter = quantiles.WriteToCsv(baseFileName + " quantiles.csv", variant, startYear); using StreamWriter treeGrowthWriter = stand.WriteTreesToCsv(baseFileName + " tree growth.csv", variant, startYear); for (int simulationStep = 0, year = startYear + variant.TimeStepInYears; year <= endYear; year += variant.TimeStepInYears, ++simulationStep) { OrganonGrowth.Grow(simulationStep, configuration, stand, calibrationBySpecies); treeGrowth.AccumulateGrowthAndMortality(stand); huffmanPeak.AddIngrowth(year, stand, density); OrganonTest.Verify(ExpectedTreeChanges.DiameterGrowthOrNoChange | ExpectedTreeChanges.HeightGrowthOrNoChange, stand, variant); density = new TestStandDensity(stand, variant); density.WriteToCsv(densityWriter, variant, year); quantiles = new TreeQuantiles(stand); quantiles.WriteToCsv(quantileWriter, variant, year); stand.WriteTreesToCsv(treeGrowthWriter, variant, year); } OrganonTest.Verify(ExpectedTreeChanges.ExpansionFactorConservedOrIncreased | ExpectedTreeChanges.DiameterGrowthOrNoChange | ExpectedTreeChanges.HeightGrowthOrNoChange, treeGrowth, initialTreeData, stand); OrganonTest.Verify(calibrationBySpecies); }
public void RS39() { string plotFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "OSU", "Organon", "RS39 lower half.xlsx"); PspStand rs39 = new PspStand(plotFilePath, "RS39 lower half", 0.154441F); OrganonVariant variant = new OrganonVariantNwo(); OrganonConfiguration configuration = new OrganonConfiguration(variant); TestStand stand = rs39.ToStand(configuration, 105.0F); int startYear = 1992; stand.WriteCompetitionAsCsv("RS39 lower half initial competition.csv", variant, startYear); OrganonTest.GrowPspStand(rs39, stand, variant, startYear, 2019, Path.GetFileNameWithoutExtension(plotFilePath)); TreeQuantiles measuredQuantiles = new TreeQuantiles(stand, rs39, startYear); using StreamWriter quantileWriter = measuredQuantiles.WriteToCsv("RS39 lower half measured quantiles.csv", variant, startYear); foreach (int measurementYear in rs39.MeasurementYears) { if (measurementYear != startYear) { measuredQuantiles = new TreeQuantiles(stand, rs39, measurementYear); measuredQuantiles.WriteToCsv(quantileWriter, variant, measurementYear); } } }
public void HuffmanPeakNobleFir() { string plotFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "OSU", "Organon", "HPNF.xlsx"); PspStand huffmanPeak = new PspStand(plotFilePath, "HPNF", 0.2F); OrganonVariant variant = new OrganonVariantSwo(); // SWO allows mapping ABAM -> ABGR and ABPR -> ABCO OrganonConfiguration configuration = OrganonTest.CreateOrganonConfiguration(variant); TestStand stand = huffmanPeak.ToStand(configuration, 80.0F); int startYear = 1980; stand.WriteCompetitionAsCsv("HPNF initial competition.csv", variant, startYear); OrganonTest.GrowPspStand(huffmanPeak, stand, variant, startYear, 2015, Path.GetFileNameWithoutExtension(plotFilePath)); TreeQuantiles measuredQuantiles = new TreeQuantiles(stand, huffmanPeak, startYear); using StreamWriter quantileWriter = measuredQuantiles.WriteToCsv("HPNF measured quantiles.csv", variant, startYear); foreach (int measurementYear in huffmanPeak.MeasurementYears) { if (measurementYear != startYear) { measuredQuantiles = new TreeQuantiles(stand, huffmanPeak, measurementYear); measuredQuantiles.WriteToCsv(quantileWriter, variant, measurementYear); } } }