[mareframe] View of /trunk/gadget/agebandmatrix.cc
View of /trunk/gadget/agebandmatrix.cc
Parent Directory
| Revision Log
Revision 1 -
( download)
( annotate)
Mon Feb 10 17:09:07 2014 UTC
(10 years, 6 months ago)
by agomez
File size: 1701 byte(s)
Initial version based on Gadget 2.2.00
#include "intvector.h"
#include "popinfomatrix.h"
#include "popinfoindexvector.h"
#include "agebandmatrix.h"
#include "mathfunc.h"
AgeBandMatrix::AgeBandMatrix(const AgeBandMatrix& initial)
: minage(initial.minAge()), nrow(initial.Nrow()) {
int i;
if (nrow > 0) {
v = new PopInfoIndexVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new PopInfoIndexVector(initial[i + minage]);
} else
v = 0;
}
AgeBandMatrix::AgeBandMatrix(int age, const IntVector& minl,
const IntVector& size) : minage(age), nrow(size.Size()) {
int i;
if (nrow > 0) {
PopInfo nullpop;
v = new PopInfoIndexVector*[nrow];
for (i = 0; i < nrow; i++)
v[i] = new PopInfoIndexVector(size[i], minl[i], nullpop);
} else
v = 0;
}
AgeBandMatrix::AgeBandMatrix(int age, const PopInfoMatrix& initial, int minl)
: minage(age), nrow(initial.Nrow()) {
if (nrow > 0) {
int i, j, lower, upper;
v = new PopInfoIndexVector*[nrow];
for (i = 0; i < nrow; i++) {
lower = 0;
upper = initial.Ncol(i) - 1;
while (isZero(initial[i][lower].N) && (lower < upper))
lower++;
while (isZero(initial[i][upper].N) && (upper > lower))
upper--;
v[i] = new PopInfoIndexVector(upper - lower + 1, lower + minl);
for (j = lower; j <= upper; j++)
(*v[i])[j + minl] = initial[i][j];
}
} else
v = 0;
}
AgeBandMatrix::AgeBandMatrix(int age, const PopInfoIndexVector& initial)
: minage(age), nrow(1) {
v = new PopInfoIndexVector*[nrow];
v[0] = new PopInfoIndexVector(initial);
}
AgeBandMatrix::~AgeBandMatrix() {
int i;
if (v != 0) {
for (i = 0; i < nrow; i++)
delete v[i];
delete[] v;
v = 0;
}
}
|