--- trunk/gadget/grower.cc 2014/02/10 17:09:07 1 +++ trunk/gadget/grower.cc 2015/04/29 12:55:30 2 @@ -22,6 +22,7 @@ fixedweights = 0; functionnumber = 0; LgrpDiv = new LengthGroupDivision(*GivenLgrpDiv); + vector_OK = 0; if (LgrpDiv->Error()) handle.logMessage(LOGFAIL, "Error in grower - failed to create length group"); CI = new ConversionIndex(OtherLgrpDiv, LgrpDiv, 1); @@ -99,22 +100,31 @@ numGrow.AddRows(noareas, len, nullpop); //setting storage spaces for growth - calcLengthGrowth.AddRows(noareas, len, 0.0); - calcWeightGrowth.AddRows(noareas, len, 0.0); +// calcLengthGrowth.AddRows(noareas, len, 0.0); +// calcWeightGrowth.AddRows(noareas, len, 0.0); + _calcLengthGrowth.AddRows(noareas, len, 0.0); + _calcWeightGrowth.AddRows(noareas, len, 0.0); interpLengthGrowth.AddRows(noareas, otherlen, 0.0); interpWeightGrowth.AddRows(noareas, otherlen, 0.0); dummyfphi.resize(len, 0.0); + _lgrowth = new Matrix[noareas]; + _wgrowth = new Matrix[noareas]; + for (i = 0; i < noareas; i++) { - lgrowth.resize(new DoubleMatrix(maxlengthgroupgrowth + 1, otherlen, 0.0)); - wgrowth.resize(new DoubleMatrix(maxlengthgroupgrowth + 1, otherlen, 0.0)); +// lgrowth.resize(new DoubleMatrix(maxlengthgroupgrowth + 1, otherlen, 0.0)); +// wgrowth.resize(new DoubleMatrix(maxlengthgroupgrowth + 1, otherlen, 0.0)); + _lgrowth[i] = *new Matrix(maxlengthgroupgrowth + 1, otherlen, 0.0); + _wgrowth[i] = *new Matrix(maxlengthgroupgrowth + 1, otherlen, 0.0); } } Grower::~Grower() { int i; - for (i = 0; i < lgrowth.Size(); i++) { - delete lgrowth[i]; - delete wgrowth[i]; + //TODO ojo + int size = sizeof(_lgrowth)/sizeof(_lgrowth[0]); + for (i = 0; i < size; i++) { + delete &_lgrowth[i]; + delete &_wgrowth[i]; } delete CI; delete LgrpDiv; @@ -128,23 +138,23 @@ LgrpDiv->Print(outfile); for (area = 0; area < areas.Size(); area++) { outfile << "\tLength increase on internal area " << areas[area] << ":\n\t"; - for (i = 0; i < calcLengthGrowth.Ncol(area); i++) - outfile << sep << calcLengthGrowth[area][i]; + for (i = 0; i < _calcLengthGrowth.Ncol(); i++) + outfile << sep << _calcLengthGrowth[area][i]; outfile << "\n\tWeight increase on internal area " << areas[area] << ":\n\t"; - for (i = 0; i < calcWeightGrowth.Ncol(area); i++) - outfile << sep << calcWeightGrowth[area][i]; + for (i = 0; i < _calcWeightGrowth.Ncol(); i++) + outfile << sep << _calcWeightGrowth[area][i]; outfile << "\n\tDistributed length increase on internal area " << areas[area] << ":\n"; - for (i = 0; i < lgrowth[area]->Nrow(); i++) { + for (i = 0; i < _lgrowth[area].Nrow(); i++) { outfile << TAB; - for (j = 0; j < lgrowth[area]->Ncol(i); j++) - outfile << sep << (*lgrowth[area])[i][j]; + for (j = 0; j < _lgrowth[area].Ncol(); j++) + outfile << sep << _lgrowth[area][i][j]; outfile << endl; } outfile << "\tDistributed weight increase on internal area " << areas[area] << ":\n"; - for (i = 0; i < wgrowth[area]->Nrow(); i++) { + for (i = 0; i < _wgrowth[area].Nrow(); i++) { outfile << TAB; - for (j = 0; j < wgrowth[area]->Ncol(i); j++) - outfile << sep << (*wgrowth[area])[i][j]; + for (j = 0; j < _wgrowth[area].Ncol(); j++) + outfile << sep << _wgrowth[area][i][j]; outfile << endl; } } @@ -165,10 +175,20 @@ const DoubleVector& FPhi, const DoubleVector& MaxCon) { int inarea = this->areaNum(area); - growthcalc->calcGrowth(area, calcLengthGrowth[inarea], calcWeightGrowth[inarea], - numGrow[inarea], Area, TimeInfo, FPhi, MaxCon, LgrpDiv); +// growthcalc->calcGrowth(area, calcLengthGrowth[inarea], calcWeightGrowth[inarea], +// numGrow[inarea], Area, TimeInfo, FPhi, MaxCon, LgrpDiv); - CI->interpolateLengths(interpLengthGrowth[inarea], calcLengthGrowth[inarea]); +// cout << "size::" << _calcLengthGrowth.Ncol() << endl; + growthcalc->calcGrowth(area, _calcLengthGrowth[inarea], _calcWeightGrowth[inarea], + numGrow[inarea], Area, TimeInfo, FPhi, MaxCon, LgrpDiv, _calcLengthGrowth.Ncol()); +// ofstream outfile; +// outfile.open("aaa", ios::out); +// _calcLengthGrowth.Print(outfile); +// int a; +// cout << "2-----------------" << endl; +// cin >> a; + //CI->interpolateLengths(interpLengthGrowth[inarea], calcLengthGrowth[inarea]); + CI->interpolateLengths(interpLengthGrowth[inarea], _calcLengthGrowth[inarea], _calcLengthGrowth.Ncol()); switch (functionnumber) { case 1: case 2: @@ -178,7 +198,8 @@ case 6: case 7: case 9: - CI->interpolateLengths(interpWeightGrowth[inarea], calcWeightGrowth[inarea]); +// CI->interpolateLengths(interpWeightGrowth[inarea], calcWeightGrowth[inarea]); + CI->interpolateLengths(interpWeightGrowth[inarea], _calcWeightGrowth[inarea], _calcWeightGrowth.Ncol()); break; case 8: case 10: @@ -188,17 +209,24 @@ handle.logMessage(LOGFAIL, "Error in grower - unrecognised growth function", functionnumber); break; } +// ofstream outfile1; +// outfile1.open("aaa", ios::out); +// _calcLengthGrowth.Print(outfile1); +// cout << "-----------------" << endl; +// cin >> a; } void Grower::Reset() { int i, j, area; double factorialx, tmppart, tmpmax; - calcLengthGrowth.setToZero(); - calcWeightGrowth.setToZero(); +// calcLengthGrowth.setToZero(); +// calcWeightGrowth.setToZero(); + _calcLengthGrowth.setToZero(); + _calcWeightGrowth.setToZero(); interpLengthGrowth.setToZero(); for (area = 0; area < areas.Size(); area++) { - (*lgrowth[area]).setToZero(); + (_lgrowth[area]).setToZero(); for (i = 0; i < LgrpDiv->numLengthGroups(); i++) numGrow[area][i].setToZero(); } @@ -214,7 +242,7 @@ case 9: interpWeightGrowth.setToZero(); for (area = 0; area < areas.Size(); area++) - (*wgrowth[area]).setToZero(); + (_wgrowth[area]).setToZero(); break; case 8: case 10: