Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] View of /trunk/gadget/agebandmatrix.cc
[mareframe] / trunk / gadget / agebandmatrix.cc Repository:
ViewVC logotype

View of /trunk/gadget/agebandmatrix.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (download) (annotate)
Mon Feb 10 17:09:07 2014 UTC (10 years, 3 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;
  }
}

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge