[mareframe] View of /trunk/gadget/predatoroveraggregator.cc
View of /trunk/gadget/predatoroveraggregator.cc
Parent Directory
| Revision Log
Revision 1 -
( download)
( annotate)
Mon Feb 10 17:09:07 2014 UTC
(10 years, 5 months ago)
by agomez
File size: 1445 byte(s)
Initial version based on Gadget 2.2.00
#include "predatoroveraggregator.h"
#include "predator.h"
#include "errorhandler.h"
#include "gadget.h"
#include "global.h"
PredatorOverAggregator::PredatorOverAggregator(const PredatorPtrVector& preds,
const IntMatrix& Areas, const LengthGroupDivision* const LgrpDiv)
: predators(preds), areas(Areas) {
int i, j;
for (i = 0; i < predators.Size(); i++) {
if (!checkLengthGroupStructure(predators[i]->getLengthGroupDiv(), LgrpDiv))
handle.logMessage(LOGFAIL, "Error in predatoroveraggregator - invalid length group structure");
predConv.AddRows(1, predators[i]->getLengthGroupDiv()->numLengthGroups(), -1);
for (j = 0; j < predConv.Ncol(i); j++)
predConv[i][j] = LgrpDiv->numLengthGroup(predators[i]->getLengthGroupDiv()->meanLength(j));
}
total.AddRows(areas.Nrow(), LgrpDiv->numLengthGroups(), 0.0);
}
void PredatorOverAggregator::Reset() {
total.setToZero();
}
void PredatorOverAggregator::Sum() {
int i, j, k, l;
this->Reset();
//Sum over the appropriate predators, areas, and lengths.
for (k = 0; k < predators.Size(); k++)
for (i = 0; i < areas.Nrow(); i++)
for (j = 0; j < areas.Ncol(i); j++)
if ((predators[k]->isInArea(areas[i][j])) && (predators[k]->hasOverConsumption(areas[i][j])))
for (l = 0; l < predConv.Ncol(k); l++)
if (predConv[k][l] >= 0)
total[i][predConv[k][l]] += (predators[k]->getOverConsumption(areas[i][j]))[l];
}
|