14 |
double tmpPower = growthcalc->getPower(); |
double tmpPower = growthcalc->getPower(); |
15 |
double tmpDl = 1.0 / Lengths->dl(); //JMB no need to check zero here |
double tmpDl = 1.0 / Lengths->dl(); //JMB no need to check zero here |
16 |
|
|
17 |
for (lgroup = 0; lgroup < Lengths->numLengthGroups(); lgroup++) { |
double pow_L; double aux; |
18 |
|
int numLenGr = Lengths->numLengthGroups();; |
19 |
|
|
20 |
|
switch (functionnumber) { |
21 |
|
case 1: |
22 |
|
case 2: |
23 |
|
case 3: |
24 |
|
case 4: |
25 |
|
case 5: |
26 |
|
case 6: |
27 |
|
case 7: |
28 |
|
case 9: break; |
29 |
|
case 8: |
30 |
|
case 10: |
31 |
|
case 11: |
32 |
|
if (vector_OK == 0) |
33 |
|
{ |
34 |
|
meanlength_vectorPow = Lengths->meanlengthvecPow_initilize(maxlengthgroupgrowth,tmpPower); |
35 |
|
vector_OK = 1; |
36 |
|
} |
37 |
|
break; |
38 |
|
default: break; |
39 |
|
} |
40 |
|
|
41 |
|
|
42 |
|
for (lgroup = 0; lgroup < numLenGr; lgroup++) { |
43 |
|
|
44 |
part3 = 1.0; |
part3 = 1.0; |
45 |
growth = interpLengthGrowth[inarea][lgroup] * tmpDl; |
growth = interpLengthGrowth[inarea][lgroup] * tmpDl; |
46 |
if (growth >= maxlengthgroupgrowth) |
if (growth >= maxlengthgroupgrowth) |
58 |
part4[j] = part4[j - 1] * (j - 1 + alpha); |
part4[j] = part4[j - 1] * (j - 1 + alpha); |
59 |
|
|
60 |
for (j = 0; j <= maxlengthgroupgrowth; j++) |
for (j = 0; j <= maxlengthgroupgrowth; j++) |
61 |
(*lgrowth[inarea])[j][lgroup] = part1[j] * part2[j] * tmppart3 * part4[j]; |
(*lgrowth)[j][lgroup] = part1[j] * part2[j] * tmppart3 * part4[j]; |
62 |
|
|
63 |
switch (functionnumber) { |
switch (functionnumber) { |
64 |
case 1: |
case 1: |
72 |
meanw = 0.0; |
meanw = 0.0; |
73 |
tmpweight = (NumberInArea[lgroup].W * tmpPower * Lengths->dl()) / Lengths->meanLength(lgroup); |
tmpweight = (NumberInArea[lgroup].W * tmpPower * Lengths->dl()) / Lengths->meanLength(lgroup); |
74 |
for (j = 0; j <= maxlengthgroupgrowth; j++) { |
for (j = 0; j <= maxlengthgroupgrowth; j++) { |
75 |
(*wgrowth[inarea])[j][lgroup] = tmpweight * j; |
(*wgrowth)[j][lgroup] = tmpweight * j; |
76 |
meanw += (*wgrowth[inarea])[j][lgroup] * (*lgrowth[inarea])[j][lgroup]; |
meanw += (*wgrowth)[j][lgroup] * (*lgrowth)[j][lgroup]; |
77 |
} |
} |
78 |
|
|
79 |
tmpweight = interpWeightGrowth[inarea][lgroup] - meanw; |
tmpweight = interpWeightGrowth[inarea][lgroup] - meanw; |
80 |
for (j = 0; j <= maxlengthgroupgrowth; j++) |
for (j = 0; j <= maxlengthgroupgrowth; j++) |
81 |
(*wgrowth[inarea])[j][lgroup] += tmpweight; |
{ |
82 |
|
aux = (*wgrowth)[j][lgroup]; |
83 |
|
(*wgrowth)[j][lgroup] = aux + tmpweight; |
84 |
|
} |
85 |
break; |
break; |
86 |
case 8: |
case 8: |
87 |
case 10: |
case 10: |
88 |
case 11: |
case 11: |
89 |
if (lgroup != Lengths->numLengthGroups()) |
pow_L = meanlength_vectorPow[lgroup]; |
90 |
|
if (lgroup != numLenGr) //FIXME for (lgroup = 0; ¿¿¿lgroup < numLenGr????; lgroup++) |
91 |
for (j = 1; j <= maxlengthgroupgrowth; j++) |
for (j = 1; j <= maxlengthgroupgrowth; j++) |
92 |
(*wgrowth[inarea])[j][lgroup] = tmpMult * (pow(Lengths->meanLength(lgroup + j), tmpPower) - pow(Lengths->meanLength(lgroup), tmpPower)); |
(*wgrowth)[j][lgroup] = tmpMult * (meanlength_vectorPow[lgroup + j] - pow_L); |
93 |
break; |
break; |
94 |
default: |
default: |
95 |
handle.logMessage(LOGFAIL, "Error in grower - unrecognised growth function", functionnumber); |
handle.logMessage(LOGFAIL, "Error in grower - unrecognised growth function", functionnumber); |
123 |
part4[j] = part4[j - 1] * (j - 1 + alpha); |
part4[j] = part4[j - 1] * (j - 1 + alpha); |
124 |
|
|
125 |
for (j = 0; j <= maxlengthgroupgrowth; j++) |
for (j = 0; j <= maxlengthgroupgrowth; j++) |
126 |
(*lgrowth[inarea])[j][lgroup] = part1[j] * part2[j] * tmppart3 * part4[j]; |
(lgrowth[inarea])[j][lgroup] = part1[j] * part2[j] * tmppart3 * part4[j]; |
127 |
} |
} |
128 |
} |
} |