Subversion Repositories public iLand

Rev

Rev 662 | Rev 671 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 662 Rev 664
Line 83... Line 83...
83
    if (mSoil && Model::settings().useDynamicAvailableNitrogen && Model::settings().carbonCycleEnabled) {
83
    if (mSoil && Model::settings().useDynamicAvailableNitrogen && Model::settings().carbonCycleEnabled) {
84
        mSoil->setClimateFactor(1.);
84
        mSoil->setClimateFactor(1.);
85
        mSoil->calculateYear();
85
        mSoil->calculateYear();
86
        mUnitVariables.nitrogenAvailable = mSoil->availableNitrogen();
86
        mUnitVariables.nitrogenAvailable = mSoil->availableNitrogen();
87
    }
87
    }
-
 
88
    mHasDeadTrees = false;
88
    mAverageAging = 0.;
89
    mAverageAging = 0.;
89
90
90
}
91
}
91
void ResourceUnit::setBoundingBox(const QRectF &bb)
92
void ResourceUnit::setBoundingBox(const QRectF &bb)
92
{
93
{
Line 143... Line 144...
143
/// tests showed that this way of cleanup is very fast,
144
/// tests showed that this way of cleanup is very fast,
144
/// because no memory allocations are performed (simple memmove())
145
/// because no memory allocations are performed (simple memmove())
145
/// when trees are moved.
146
/// when trees are moved.
146
void ResourceUnit::cleanTreeList()
147
void ResourceUnit::cleanTreeList()
147
{
148
{
-
 
149
    if (!mHasDeadTrees)
-
 
150
        return;
-
 
151
148
    QVector<Tree>::iterator last=mTrees.end()-1;
152
    QVector<Tree>::iterator last=mTrees.end()-1;
149
    QVector<Tree>::iterator current = mTrees.begin();
153
    QVector<Tree>::iterator current = mTrees.begin();
150
    while (last>=current && (*last).isDead())
154
    while (last>=current && (*last).isDead())
151
        --last;
155
        --last;
152
156
Line 167... Line 171...
167
        if (mTrees.capacity()>100) {
171
        if (mTrees.capacity()>100) {
168
            if (mTrees.count() / double(mTrees.capacity()) < 0.2) {
172
            if (mTrees.count() / double(mTrees.capacity()) < 0.2) {
169
                //int target_size = mTrees.count()*2;
173
                //int target_size = mTrees.count()*2;
170
                //qDebug() << "reduce size from "<<mTrees.capacity() << "to" << target_size;
174
                //qDebug() << "reduce size from "<<mTrees.capacity() << "to" << target_size;
171
                //mTrees.reserve(qMax(target_size, 100));
175
                //mTrees.reserve(qMax(target_size, 100));
172
                qDebug() << "reduce tree storage of RU" << index() << " from " << mTrees.capacity() << "to" << mTrees.count();
-
 
-
 
176
                if (logLevelDebug())
-
 
177
                    qDebug() << "reduce tree storage of RU" << index() << " from " << mTrees.capacity() << "to" << mTrees.count();
173
                mTrees.squeeze();
178
                mTrees.squeeze();
174
            }
179
            }
175
        }
180
        }
176
    }
181
    }
-
 
182
    mHasDeadTrees = false; // reset flag
177
}
183
}
178
184
179
void ResourceUnit::newYear()
185
void ResourceUnit::newYear()
180
{
186
{
181
    mAggregatedWLA = 0.;
187
    mAggregatedWLA = 0.;