Subversion Repositories public iLand

Rev

Rev 193 | Rev 209 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/** @class SpeciesResponse calculates production relevant responses for a tree species on resource unit level.
*/

#include "speciesresponse.h"

#include "resourceunit.h"
#include "species.h"
#include "resourceunitspecies.h"
#include "climate.h"

SpeciesResponse::SpeciesResponse()
{
}

void SpeciesResponse::setup(ResourceUnitSpecies *rus)
{
    mSpecies = rus->species();
    mRu = rus->ru();
    for (int i=0;i<12;i++)
        mVpdResponse[i]=mSoilWaterResponse[i]=mTempResponse[i]=0.;

    mCO2Response=mNitrogenResponse=0.;
}

/// Main function that calculates monthly / annual species responses
void SpeciesResponse::calculate()
{
    calcVpd();
}

void SpeciesResponse::calcVpd()
{

    ClimateDay *begin, *end;
    for (int mon=0;mon<12;mon++) {
        mRu->climate()->monthRange(mon, &begin, &end);
        for (ClimateDay *day=begin; day!=end; ++day) {
            mVpdResponse[mon]+=day->vpd;
        }
        mVpdResponse[mon] /= mRu->climate()->days(mon);


    }

}