PSUmodeling / Cycles

Cycles agroecosystem model
https://psumodeling.github.io/Cycles/
Other
11 stars 0 forks source link

Annual Outputs: C and N #8

Closed aramcharan closed 9 years ago

aramcharan commented 9 years ago

OutputsClass: PrintCarbonSummaryOutput (entire Sub copied here)

Private Sub PrintCarbonSummaryOutput(ByVal SoilCarbon As SoilCarbonClass, ByVal Residue As ResidueClass, ByVal Soil As SoilClass)

    Dim Sheet As Excel.Worksheet = myWorkbook.Worksheets.Item("Soil Carbon Totals")
    Dim tempArray As Object

    Dim SumProfile1, SumProfile2, SumProfile3, SumProfile4, residueResp, _
        Hum, soilResp, initialSOC, finalSOC, CBalance, CDifference, _
        SumProfile5, SumProfile6, SumProfile7, SumProfile8, SumProfile9, _
        SumProfile10, SumProfile11, SumProfile12, SumProfile13, SumProfile14 As Double

    Dim AverageProfile1, AverageProfile2, AverageProfile3, _
        AverageProfile4, AverageProfile5, AverageProfile6, _
        AverageProfile7, AverageProfile8, AverageProfile9, _
        AverageProfile10, AverageProfile11 As Double

    Dim AverageDifferenceSoilCarbon As Double

    For yr As Integer = 1 To totalYears
        For i As Integer = 1 To totalLayers
            SumProfile1 += SoilCarbon.abgdCarbonInput(yr, i)
            SumProfile2 += SoilCarbon.rootCarbonInput(yr, i) + SoilCarbon.rhizCarbonInput(yr, i)
            residueResp += SoilCarbon.annualRespiredResidueCarbonMass(yr, i)
            Hum += SoilCarbon.annualHumifiedCarbonMass(yr, i)
            soilResp += SoilCarbon.annualRespiredCarbonMass(yr, i)

            SumProfile5 += SoilCarbon.annualNmineralization(yr, i)
            SumProfile6 += SoilCarbon.annualNImmobilization(yr, i)
            SumProfile7 += SoilCarbon.annualNNetMineralization(yr, i)
        Next
        SumProfile8 += SoilCarbon.annualAmmoniumNitrification(yr)
        SumProfile9 += SoilCarbon.annualNitrousOxidefromNitrification(yr)
        SumProfile10 += SoilCarbon.annualAmmoniaVolatilization(yr)
        SumProfile11 += SoilCarbon.annualNO3Denitrification(yr)
        SumProfile12 += SoilCarbon.annualNitrousOxidefromDenitrification(yr)
        SumProfile13 += SoilCarbon.annualNitrateLeaching(yr)
        SumProfile14 += SoilCarbon.annualAmmoniumLeaching(yr)

    Next

    SumProfile3 = Residue.yearResidueBiomass.Sum
    SumProfile4 = Residue.yearRootBiomass.Sum + Residue.yearRhizodepositionBiomass.Sum

    For i As Integer = 1 To totalLayers
        initialSOC += SoilCarbon.carbonMassInitial(1, i)
        finalSOC += SoilCarbon.carbonMassFinal(totalYears, i)
    Next

    'CBalance = initialSOC + Hum - soilResp - finalSOC
    CBalance = 99999 'temp until balance is done
    CDifference = finalSOC - initialSOC

    AverageDifferenceSoilCarbon = CDifference / totalYears * 1000

    AverageProfile1 = SumProfile5 / totalYears
    AverageProfile2 = SumProfile6 / totalYears
    AverageProfile3 = SumProfile7 / totalYears
    AverageProfile4 = SumProfile8 / totalYears
    AverageProfile5 = SumProfile9 / totalYears
    AverageProfile6 = SumProfile10 / totalYears
    AverageProfile7 = SumProfile11 / totalYears
    AverageProfile8 = SumProfile12 / totalYears
    AverageProfile9 = SumProfile13 / totalYears
    AverageProfile10 = SumProfile14 / totalYears
    AverageProfile11 = AverageProfile5 + AverageProfile8

    'output outputs to evolution sheet:
    ReDim tempArray(11)

    tempArray(0) = SideSubs.Formatting(initialSOC)
    tempArray(1) = SideSubs.Formatting(finalSOC)
    tempArray(2) = SideSubs.Formatting(CDifference)
    tempArray(3) = SideSubs.Formatting(SumProfile1)
    tempArray(4) = SideSubs.Formatting(SumProfile2)
    tempArray(5) = SideSubs.Formatting(Hum)
    tempArray(6) = SideSubs.Formatting(soilResp)
    tempArray(7) = SideSubs.Formatting(residueResp)
    tempArray(8) = SideSubs.Formatting(SumProfile3)
    tempArray(9) = SideSubs.Formatting(SumProfile4)
    tempArray(10) = SideSubs.Formatting(CBalance)
    tempArray(11) = SideSubs.Formatting(AverageDifferenceSoilCarbon)

    Sheet.Cells(8, 1).Resize(1, 12).Value = tempArray

    '=============== Soil Profile ================================
    ReDim tempArray(totalLayers - 1, 3)

    For i As Integer = 1 To totalLayers
        tempArray(i - 1, 0) = i
        tempArray(i - 1, 1) = Soil.layerThickness(i)
        tempArray(i - 1, 2) = Soil.IOM(i)
        tempArray(i - 1, 3) = SideSubs.Formatting(Soil.SOC_Conc(i) / (10 * 0.58))
    Next

    Sheet.Range("A15").Resize(totalLayers, 4).Value = tempArray

    '=============Average N Data========================================

    ReDim tempArray(11)

    tempArray(0) = SideSubs.Formatting(AverageProfile1)
    tempArray(1) = SideSubs.Formatting(AverageProfile2)
    tempArray(2) = SideSubs.Formatting(AverageProfile3)
    tempArray(3) = SideSubs.Formatting(AverageProfile4)
    tempArray(4) = SideSubs.Formatting(AverageProfile5)
    tempArray(5) = SideSubs.Formatting(AverageProfile6)
    tempArray(6) = SideSubs.Formatting(AverageProfile7)
    tempArray(7) = SideSubs.Formatting(AverageProfile8)
    tempArray(8) = SideSubs.Formatting(AverageProfile9)
    tempArray(9) = SideSubs.Formatting(AverageProfile10)
    tempArray(10) = SideSubs.Formatting(AverageProfile11)
    Sheet.Range("A29").Resize(1, 12).Value = tempArray
End Sub
shiyuning commented 9 years ago

All outputs added.