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] Annotation of /trunk/gadget/growthcalc.h
[mareframe] / trunk / gadget / growthcalc.h Repository:
ViewVC logotype

Annotation of /trunk/gadget/growthcalc.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4 - (view) (download)

1 : agomez 1 #ifndef growthcalc_h
2 :     #define growthcalc_h
3 :    
4 :     #include "areatime.h"
5 :     #include "conversionindex.h"
6 :     #include "formulamatrixptrvector.h"
7 :     #include "commentstream.h"
8 :     #include "popinfovector.h"
9 :     #include "livesonareas.h"
10 :     #include "modelvariablevector.h"
11 :     #include "keeper.h"
12 : ulcessvp 2 #include "matrix.h"
13 : agomez 1
14 :     /**
15 :     * \class GrowthCalcBase
16 :     * \brief This is the base class used to calculate the growth of a stock within the model
17 :     * \note This will always be overridden by the derived classes that actually calculate the growth
18 :     */
19 :     class GrowthCalcBase : protected LivesOnAreas {
20 :     public:
21 :     /**
22 :     * \brief This is the default GrowthCalcBase constructor
23 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
24 :     */
25 :     GrowthCalcBase(const IntVector& Areas);
26 :     /**
27 :     * \brief This is the default GrowthCalcBase destructor
28 :     */
29 :     ~GrowthCalcBase() {};
30 : ulcessvp 4 //FIXME doc
31 : agomez 1 /**
32 :     * \brief This is the function that calculates the growth
33 :     * \param area is the area that the growth is being calculated on
34 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
35 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
36 :     * \param numGrow is the PopInfoVector of the current population of the stock
37 :     * \param Area is the AreaClass for the current model
38 :     * \param TimeInfo is the TimeClass for the current model
39 :     * \param Fphi is the DoubleVector of the feeding level of the stock
40 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
41 :     * \param LgrpDiv is the LengthGroupDivision of the stock
42 :     * \note This will be overridden by the derived classes that actually calculate the growth
43 :     */
44 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
45 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
46 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
47 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv) = 0;
48 : ulcessvp 2
49 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
50 :     const PopInfoVector& numGrow, const AreaClass* const Area,
51 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
52 :     const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size) = 0;
53 : agomez 1 /**
54 :     * \brief This will return the power term of the length - weight relationship
55 :     * \return 0 (will be overridden in derived classes)
56 :     */
57 :     virtual double getPower() { return 0.0; };
58 :     /**
59 :     * \brief This will return the multiplier of the length - weight relationship
60 :     * \return 0 (will be overridden in derived classes)
61 :     */
62 :     virtual double getMult() { return 0.0; };
63 :     };
64 :    
65 :     /**
66 :     * \class GrowthCalcA
67 :     * \brief This is the class used to calculate the growth of a stock using the MULTSPEC growth function
68 :     */
69 :     class GrowthCalcA : public GrowthCalcBase {
70 :     public:
71 :     /**
72 :     * \brief This is the default GrowthCalcA constructor
73 :     * \param infile is the CommentStream to read the growth parameters from
74 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
75 :     * \param TimeInfo is the TimeClass for the current model
76 :     * \param keeper is the Keeper for the current model
77 :     */
78 :     GrowthCalcA(CommentStream& infile, const IntVector& Areas,
79 :     const TimeClass* const TimeInfo, Keeper* const keeper);
80 :     /**
81 :     * \brief This is the default GrowthCalcA destructor
82 :     */
83 :     ~GrowthCalcA() {};
84 :     /**
85 :     * \brief This is the function that calculates the growth using the MULTSPEC function
86 :     * \param area is the area that the growth is being calculated on
87 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
88 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
89 :     * \param numGrow is the PopInfoVector of the current population of the stock
90 :     * \param Area is the AreaClass for the current model
91 :     * \param TimeInfo is the TimeClass for the current model
92 :     * \param Fphi is the DoubleVector of the feeding level of the stock
93 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
94 :     * \param LgrpDiv is the LengthGroupDivision of the stock
95 :     */
96 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
97 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
98 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
99 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
100 : ulcessvp 2
101 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
102 :     const PopInfoVector& numGrow, const AreaClass* const Area,
103 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
104 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
105 : agomez 1 protected:
106 :     /**
107 :     * \brief This is the number of growth parameters (set to 9)
108 :     */
109 :     int numGrowthConstants;
110 :     /**
111 :     * \brief This is the ModelVariableVector of growth parameters
112 :     */
113 :     ModelVariableVector growthPar;
114 :     };
115 :    
116 :     /**
117 :     * \class GrowthCalcB
118 :     * \brief This is the class used to calculate the growth when reading the growth directly from a file
119 :     */
120 :     class GrowthCalcB : public GrowthCalcBase {
121 :     public:
122 :     /**
123 :     * \brief This is the default GrowthCalcB constructor
124 :     * \param infile is the CommentStream to read the growth parameters from
125 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
126 :     * \param TimeInfo is the TimeClass for the current model
127 :     * \param keeper is the Keeper for the current model
128 :     * \param Area is the AreaClass for the current model
129 :     * \param lenindex is the CharPtrVector of the lengths used for the growth of the stock
130 :     */
131 :     GrowthCalcB(CommentStream& infile, const IntVector& Areas, const TimeClass* const TimeInfo,
132 :     Keeper* const keeper, const AreaClass* const Area, const CharPtrVector& lenindex);
133 :     /**
134 :     * \brief This is the default GrowthCalcB destructor
135 :     */
136 :     ~GrowthCalcB();
137 :     /**
138 :     * \brief This is the function that calculates the growth read from file
139 :     * \param area is the area that the growth is being calculated on
140 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
141 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
142 :     * \param numGrow is the PopInfoVector of the current population of the stock
143 :     * \param Area is the AreaClass for the current model
144 :     * \param TimeInfo is the TimeClass for the current model
145 :     * \param Fphi is the DoubleVector of the feeding level of the stock
146 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
147 :     * \param LgrpDiv is the LengthGroupDivision of the stock
148 :     */
149 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
150 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
151 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
152 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
153 : ulcessvp 2
154 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
155 :     const PopInfoVector& numGrow, const AreaClass* const Area,
156 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
157 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
158 : agomez 1 protected:
159 :     /**
160 :     * \brief This is the FormulaMatrixPtrVector of increase in length for each length group
161 :     */
162 :     FormulaMatrixPtrVector lgrowth;
163 :     /**
164 :     * \brief This is the FormulaMatrixPtrVector of increase in weight for each length group
165 :     */
166 :     FormulaMatrixPtrVector wgrowth;
167 :     };
168 :    
169 :     /**
170 :     * \class GrowthCalcC
171 :     * \brief This is the class used to calculate the growth of a stock using a weight-based Von Bertalanffy growth function
172 :     */
173 :     class GrowthCalcC : public GrowthCalcBase {
174 :     public:
175 :     /**
176 :     * \brief This is the default GrowthCalcC constructor
177 :     * \param infile is the CommentStream to read the growth parameters from
178 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
179 :     * \param TimeInfo is the TimeClass for the current model
180 :     * \param LgrpDiv is the LengthGroupDivision of the stock
181 :     * \param keeper is the Keeper for the current model
182 :     * \param refWeightFile is the name of the file containing the reference weight information for the stock
183 :     */
184 :     GrowthCalcC(CommentStream& infile, const IntVector& Areas, const TimeClass* const TimeInfo,
185 :     const LengthGroupDivision* const LgrpDiv, Keeper* const keeper, const char* refWeightFile);
186 :     /**
187 :     * \brief This is the default GrowthCalcC destructor
188 :     */
189 :     ~GrowthCalcC() {};
190 :     /**
191 :     * \brief This is the function that calculates the growth using a weight-based Von Bertalanffy function
192 :     * \param area is the area that the growth is being calculated on
193 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
194 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
195 :     * \param numGrow is the PopInfoVector of the current population of the stock
196 :     * \param Area is the AreaClass for the current model
197 :     * \param TimeInfo is the TimeClass for the current model
198 :     * \param Fphi is the DoubleVector of the feeding level of the stock
199 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
200 :     * \param LgrpDiv is the LengthGroupDivision of the stock
201 :     */
202 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
203 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
204 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
205 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
206 : ulcessvp 2
207 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
208 :     const PopInfoVector& numGrow, const AreaClass* const Area,
209 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
210 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
211 : agomez 1 /**
212 :     * \brief This will return the power term of the length - weight relationship
213 :     * \return lgrowthPar[7]
214 :     */
215 :     virtual double getPower() { return lgrowthPar[7]; };
216 :     /**
217 :     * \brief This will return the multiplier of the length - weight relationship
218 :     * \return lgrowthPar[6]
219 :     */
220 :     virtual double getMult() { return lgrowthPar[6]; };
221 :     protected:
222 :     /**
223 :     * \brief This is the number of weight growth parameters (set to 6)
224 :     */
225 :     int numWeightGrowthConstants;
226 :     /**
227 :     * \brief This is the number of length growth parameters (set to 9)
228 :     */
229 :     int numLengthGrowthConstants;
230 :     /**
231 :     * \brief This is the ModelVariableVector of weight growth parameters
232 :     */
233 :     ModelVariableVector wgrowthPar;
234 :     /**
235 :     * \brief This is the ModelVariableVector of length growth parameters
236 :     */
237 :     ModelVariableVector lgrowthPar;
238 :     /**
239 :     * \brief This is the DoubleVector of the reference weight values
240 :     */
241 :     DoubleVector refWeight;
242 :     };
243 :    
244 :     /**
245 :     * \class GrowthCalcD
246 :     * \brief This is the class used to calculate the growth of a stock using the Jones growth function
247 :     */
248 :     class GrowthCalcD : public GrowthCalcBase {
249 :     public:
250 :     /**
251 :     * \brief This is the default GrowthCalcD constructor
252 :     * \param infile is the CommentStream to read the growth parameters from
253 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
254 :     * \param TimeInfo is the TimeClass for the current model
255 :     * \param LgrpDiv is the LengthGroupDivision of the stock
256 :     * \param keeper is the Keeper for the current model
257 :     * \param refWeightFile is the name of the file containing the reference weight information for the stock
258 :     */
259 :     GrowthCalcD(CommentStream& infile, const IntVector& Areas, const TimeClass* const TimeInfo,
260 :     const LengthGroupDivision* const LgrpDiv, Keeper* const keeper, const char* refWeightFile);
261 :     /**
262 :     * \brief This is the default GrowthCalcD destructor
263 :     */
264 :     ~GrowthCalcD() {};
265 :     /**
266 :     * \brief This is the function that calculates the growth using the Jones growth function
267 :     * \param area is the area that the growth is being calculated on
268 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
269 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
270 :     * \param numGrow is PopInfoVector of the the current population of the stock
271 :     * \param Area is the AreaClass for the current model
272 :     * \param TimeInfo is the TimeClass for the current model
273 :     * \param Fphi is the DoubleVector of the feeding level of the stock
274 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
275 :     * \param LgrpDiv is the LengthGroupDivision of the stock
276 :     */
277 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
278 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
279 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
280 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
281 : ulcessvp 2
282 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
283 :     const PopInfoVector& numGrow, const AreaClass* const Area,
284 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
285 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
286 : agomez 1 /**
287 :     * \brief This will return the power term of the length - weight relationship
288 :     * \return lgrowthPar[7]
289 :     */
290 :     virtual double getPower() { return lgrowthPar[7]; };
291 :     /**
292 :     * \brief This will return the multiplier of the length - weight relationship
293 :     * \return lgrowthPar[6]
294 :     */
295 :     virtual double getMult() { return lgrowthPar[6]; };
296 :     protected:
297 :     /**
298 :     * \brief This is the number of weight growth parameters (set to 6)
299 :     */
300 :     int numWeightGrowthConstants;
301 :     /**
302 :     * \brief This is the number of length growth parameters (set to 9)
303 :     */
304 :     int numLengthGrowthConstants;
305 :     /**
306 :     * \brief This is the ModelVariableVector of weight growth parameters
307 :     */
308 :     ModelVariableVector wgrowthPar;
309 :     /**
310 :     * \brief This is the ModelVariableVector of length growth parameters
311 :     */
312 :     ModelVariableVector lgrowthPar;
313 :     /**
314 :     * \brief This is the DoubleVector of the reference weight values
315 :     */
316 :     DoubleVector refWeight;
317 :     };
318 :    
319 :     /**
320 :     * \class GrowthCalcE
321 :     * \brief This is the class used to calculate the growth of a stock using an extended form of the Von Bertalanffy function
322 :     */
323 :     class GrowthCalcE : public GrowthCalcBase {
324 :     public:
325 :     /**
326 :     * \brief This is the default GrowthCalcE constructor
327 :     * \param infile is the CommentStream to read the growth parameters from
328 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
329 :     * \param TimeInfo is the TimeClass for the current model
330 :     * \param LgrpDiv is the LengthGroupDivision of the stock
331 :     * \param keeper is the Keeper for the current model
332 :     * \param refWeightFile is the name of the file containing the reference weight information for the stock
333 :     */
334 :     GrowthCalcE(CommentStream& infile, const IntVector& Areas, const TimeClass* const TimeInfo,
335 :     const LengthGroupDivision* const LgrpDiv, Keeper* const keeper, const char* refWeightFile);
336 :     /**
337 :     * \brief This is the default GrowthCalcE destructor
338 :     */
339 :     ~GrowthCalcE() {};
340 :     /**
341 :     * \brief This is the function that calculates the growth using an extended Von Bertalanffy growth function
342 :     * \param area is the area that the growth is being calculated on
343 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
344 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
345 :     * \param numGrow is the PopInfoVector of the current population of the stock
346 :     * \param Area is the AreaClass for the current model
347 :     * \param TimeInfo is the TimeClass for the current model
348 :     * \param Fphi is the DoubleVector of the feeding level of the stock
349 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
350 :     * \param LgrpDiv is the LengthGroupDivision of the stock
351 :     */
352 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
353 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
354 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
355 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
356 : ulcessvp 2
357 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
358 :     const PopInfoVector& numGrow, const AreaClass* const Area,
359 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
360 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
361 : agomez 1 /**
362 :     * \brief This will return the power term of the length - weight relationship
363 :     * \return lgrowthPar[7]
364 :     */
365 :     virtual double getPower() { return lgrowthPar[7]; };
366 :     /**
367 :     * \brief This will return the multiplier of the length - weight relationship
368 :     * \return lgrowthPar[6]
369 :     */
370 :     virtual double getMult() { return lgrowthPar[6]; };
371 :     protected:
372 :     /**
373 :     * \brief This is the number of weight growth parameters (set to 6)
374 :     */
375 :     int numWeightGrowthConstants;
376 :     /**
377 :     * \brief This is the number of length growth parameters (set to 9)
378 :     */
379 :     int numLengthGrowthConstants;
380 :     /**
381 :     * \brief This is the ModelVariableVector of weight growth parameters
382 :     */
383 :     ModelVariableVector wgrowthPar;
384 :     /**
385 :     * \brief This is the ModelVariableVector of length growth parameters
386 :     */
387 :     ModelVariableVector lgrowthPar;
388 :     /**
389 :     * \brief This is the DoubleVector of the reference weight values
390 :     */
391 :     DoubleVector refWeight;
392 :     /**
393 :     * \brief This is the FormulaVector of parameters for the year effect
394 :     */
395 :     FormulaVector yearEffect;
396 :     /**
397 :     * \brief This is the FormulaVector of parameters for the step effect
398 :     */
399 :     FormulaVector stepEffect;
400 :     /**
401 :     * \brief This is the FormulaVector of parameters for the area effect
402 :     */
403 :     FormulaVector areaEffect;
404 :     };
405 :    
406 :     /**
407 :     * \class GrowthCalcF
408 :     * \brief This is the class used to calculate the growth of a stock using a length based Von Bertalanffy growth function
409 :     */
410 :     class GrowthCalcF : public GrowthCalcBase {
411 :     public:
412 :     /**
413 :     * \brief This is the default GrowthCalcF constructor
414 :     * \param infile is the CommentStream to read the growth parameters from
415 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
416 :     * \param TimeInfo is the TimeClass for the current model
417 :     * \param keeper is the Keeper for the current model
418 :     * \param Area is the AreaClass for the current model
419 :     * \param lenindex is the CharPtrVector of the lengths used for the growth of the stock
420 :     */
421 :     GrowthCalcF(CommentStream& infile, const IntVector& Areas, const TimeClass* const TimeInfo,
422 :     Keeper* const keeper, const AreaClass* const Area, const CharPtrVector& lenindex);
423 :     /**
424 :     * \brief This is the default GrowthCalcF destructor
425 :     */
426 :     ~GrowthCalcF();
427 :     /**
428 :     * \brief This is the function that calculates the growth using a length based Von Bertalanffy growth function
429 :     * \param area is the area that the growth is being calculated on
430 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
431 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
432 :     * \param numGrow is the PopInfoVector of the current population of the stock
433 :     * \param Area is the AreaClass for the current model
434 :     * \param TimeInfo is the TimeClass for the current model
435 :     * \param Fphi is the DoubleVector of the feeding level of the stock
436 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
437 :     * \param LgrpDiv is the LengthGroupDivision of the stock
438 :     */
439 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
440 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
441 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
442 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
443 : ulcessvp 2
444 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
445 :     const PopInfoVector& numGrow, const AreaClass* const Area,
446 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
447 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
448 : agomez 1 protected:
449 :     /**
450 :     * \brief This is the number of growth parameters (set to 2)
451 :     */
452 :     int numGrowthConstants;
453 :     /**
454 :     * \brief This is the ModelVariableVector of growth parameters
455 :     */
456 :     ModelVariableVector growthPar;
457 :     /**
458 :     * \brief This is the FormulaMatrixPtrVector of increase in weight for each length group
459 :     */
460 :     FormulaMatrixPtrVector wgrowth;
461 :     };
462 :    
463 :     /**
464 :     * \class GrowthCalcG
465 :     * \brief This is the class used to calculate the growth of a stock using a power growth function
466 :     */
467 :     class GrowthCalcG : public GrowthCalcBase {
468 :     public:
469 :     /**
470 :     * \brief This is the default GrowthCalcG constructor
471 :     * \param infile is the CommentStream to read the growth parameters from
472 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
473 :     * \param TimeInfo is the TimeClass for the current model
474 :     * \param keeper is the Keeper for the current model
475 :     * \param Area is the AreaClass for the current model
476 :     * \param lenindex is the CharPtrVector of the lengths used for the growth of the stock
477 :     */
478 :     GrowthCalcG(CommentStream& infile, const IntVector& Areas, const TimeClass* const TimeInfo,
479 :     Keeper* const keeper, const AreaClass* const Area, const CharPtrVector& lenindex);
480 :     /**
481 :     * \brief This is the default GrowthCalcG destructor
482 :     */
483 :     ~GrowthCalcG();
484 :     /**
485 :     * \brief This is the function that calculates the growth using a power growth function
486 :     * \param area is the area that the growth is being calculated on
487 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
488 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
489 :     * \param numGrow is PopInfoVector of the the current population of the stock
490 :     * \param Area is the AreaClass for the current model
491 :     * \param TimeInfo is the TimeClass for the current model
492 :     * \param Fphi is the DoubleVector of the feeding level of the stock
493 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
494 :     * \param LgrpDiv is the LengthGroupDivision of the stock
495 :     */
496 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
497 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
498 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
499 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
500 : ulcessvp 2
501 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
502 :     const PopInfoVector& numGrow, const AreaClass* const Area,
503 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
504 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
505 : agomez 1 protected:
506 :     /**
507 :     * \brief This is the number of growth parameters (set to 2)
508 :     */
509 :     int numGrowthConstants;
510 :     /**
511 :     * \brief This is the ModelVariableVector of growth parameters
512 :     */
513 :     ModelVariableVector growthPar;
514 :     /**
515 :     * \brief This is the FormulaMatrixPtrVector of increase in weight for each length group
516 :     */
517 :     FormulaMatrixPtrVector wgrowth;
518 :     };
519 :    
520 :     /**
521 :     * \class GrowthCalcH
522 :     * \brief This is the class used to calculate the growth of a stock using a simple length based Von Bertalanffy growth function
523 :     */
524 :     class GrowthCalcH : public GrowthCalcBase {
525 :     public:
526 :     /**
527 :     * \brief This is the default GrowthCalcH constructor
528 :     * \param infile is the CommentStream to read the growth parameters from
529 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
530 :     * \param TimeInfo is the TimeClass for the current model
531 :     * \param keeper is the Keeper for the current model
532 :     */
533 :     GrowthCalcH(CommentStream& infile, const IntVector& Areas,
534 :     const TimeClass* const TimeInfo, Keeper* const keeper);
535 :     /**
536 :     * \brief This is the default GrowthCalcH destructor
537 :     */
538 :     ~GrowthCalcH() {};
539 :     /**
540 :     * \brief This is the function that calculates the growth using a simple length based Von Bertalanffy growth function
541 :     * \param area is the area that the growth is being calculated on
542 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
543 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
544 :     * \param numGrow is the PopInfoVector of the current population of the stock
545 :     * \param Area is the AreaClass for the current model
546 :     * \param TimeInfo is the TimeClass for the current model
547 :     * \param Fphi is the DoubleVector of the feeding level of the stock
548 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
549 :     * \param LgrpDiv is the LengthGroupDivision of the stock
550 :     */
551 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
552 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
553 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
554 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
555 : ulcessvp 2
556 :    
557 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
558 :     const PopInfoVector& numGrow, const AreaClass* const Area,
559 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
560 :     const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
561 :    
562 : agomez 1 /**
563 :     * \brief This will return the power term of the length - weight relationship
564 :     * \return growthPar[3]
565 :     */
566 :     virtual double getPower() { return growthPar[3]; };
567 :     /**
568 :     * \brief This will return the multiplier of the length - weight relationship
569 :     * \return growthPar[2]
570 :     */
571 :     virtual double getMult() { return growthPar[2]; };
572 :     protected:
573 :     /**
574 :     * \brief This is the number of growth parameters (set to 4)
575 :     */
576 :     int numGrowthConstants;
577 :     /**
578 :     * \brief This is the ModelVariableVector of growth parameters
579 :     */
580 :     ModelVariableVector growthPar;
581 :     };
582 :    
583 :     /**
584 :     * \class GrowthCalcI
585 :     * \brief This is the class used to calculate the growth of a stock using a simple Jones growth function
586 :     */
587 :     class GrowthCalcI : public GrowthCalcBase {
588 :     public:
589 :     /**
590 :     * \brief This is the default GrowthCalcI constructor
591 :     * \param infile is the CommentStream to read the growth parameters from
592 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
593 :     * \param TimeInfo is the TimeClass for the current model
594 :     * \param keeper is the Keeper for the current model
595 :     */
596 :     GrowthCalcI(CommentStream& infile, const IntVector& Areas,
597 :     const TimeClass* const TimeInfo, Keeper* const keeper);
598 :     /**
599 :     * \brief This is the default GrowthCalcI destructor
600 :     */
601 :     ~GrowthCalcI() {};
602 :     /**
603 :     * \brief This is the function that calculates the growth using a simple Jones growth function
604 :     * \param area is the area that the growth is being calculated on
605 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
606 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
607 :     * \param numGrow is the PopInfoVector of the current population of the stock
608 :     * \param Area is the AreaClass for the current model
609 :     * \param TimeInfo is the TimeClass for the current model
610 :     * \param Fphi is the DoubleVector of the feeding level of the stock
611 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
612 :     * \param LgrpDiv is the LengthGroupDivision of the stock
613 :     */
614 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
615 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
616 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
617 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
618 : ulcessvp 2
619 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
620 :     const PopInfoVector& numGrow, const AreaClass* const Area,
621 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
622 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
623 : agomez 1 /**
624 :     * \brief This will return the power term of the length - weight relationship
625 :     * \return growthPar[4]
626 :     */
627 :     virtual double getPower() { return growthPar[4]; };
628 :     /**
629 :     * \brief This will return the multiplier of the length - weight relationship
630 :     * \return growthPar[5]
631 :     */
632 :     virtual double getMult() { return growthPar[5]; };
633 :     protected:
634 :     /**
635 :     * \brief This is the number of growth parameters (set to 6)
636 :     */
637 :     int numGrowthConstants;
638 :     /**
639 :     * \brief This is the ModelVariableVector of growth parameters
640 :     */
641 :     ModelVariableVector growthPar;
642 :     };
643 :    
644 :     /**
645 :     * \class GrowthCalcJ
646 :     * \brief This is the class used to calculate the growth of a stock using a simple length based Von Bertalanffy growth function with a non-zero value for t0
647 :     */
648 :     class GrowthCalcJ : public GrowthCalcBase {
649 :     public:
650 :     /**
651 :     * \brief This is the default GrowthCalcJ constructor
652 :     * \param infile is the CommentStream to read the growth parameters from
653 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
654 :     * \param TimeInfo is the TimeClass for the current model
655 :     * \param keeper is the Keeper for the current model
656 :     */
657 :     GrowthCalcJ(CommentStream& infile, const IntVector& Areas,
658 :     const TimeClass* const TimeInfo, Keeper* const keeper);
659 :     /**
660 :     * \brief This is the default GrowthCalcJ destructor
661 :     */
662 :     ~GrowthCalcJ() {};
663 :     /**
664 :     * \brief This is the function that calculates the growth using a simple length based Von Bertalanffy growth function with a non-zero value for t0
665 :     * \param area is the area that the growth is being calculated on
666 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
667 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
668 :     * \param numGrow is the PopInfoVector of the current population of the stock
669 :     * \param Area is the AreaClass for the current model
670 :     * \param TimeInfo is the TimeClass for the current model
671 :     * \param Fphi is the DoubleVector of the feeding level of the stock
672 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
673 :     * \param LgrpDiv is the LengthGroupDivision of the stock
674 :     */
675 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
676 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
677 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
678 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
679 : ulcessvp 2
680 :    
681 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
682 :     const PopInfoVector& numGrow, const AreaClass* const Area,
683 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
684 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
685 : agomez 1 /**
686 :     * \brief This will return the power term of the length - weight relationship
687 :     * \return growthPar[4]
688 :     */
689 :     virtual double getPower() { return growthPar[4]; };
690 :     /**
691 :     * \brief This will return the multiplier of the length - weight relationship
692 :     * \return growthPar[3]
693 :     */
694 :     virtual double getMult() { return growthPar[3]; };
695 :     protected:
696 :     /**
697 :     * \brief This is the number of growth parameters (set to 5)
698 :     */
699 :     int numGrowthConstants;
700 :     /**
701 :     * \brief This is the ModelVariableVector of growth parameters
702 :     */
703 :     ModelVariableVector growthPar;
704 :     };
705 :    
706 :     /**
707 :     * \class GrowthCalcK
708 :     * \brief This is the class used to calculate the growth of a stock using a simple length based Gompertz function
709 :     */
710 :     class GrowthCalcK : public GrowthCalcBase {
711 :     public:
712 :     /**
713 :     * \brief This is the default GrowthCalcK constructor
714 :     * \param infile is the CommentStream to read the growth parameters from
715 :     * \param Areas is the IntVector of areas that the growth calculation can take place on
716 :     * \param TimeInfo is the TimeClass for the current model
717 :     * \param keeper is the Keeper for the current model
718 :     */
719 :     GrowthCalcK(CommentStream& infile, const IntVector& Areas,
720 :     const TimeClass* const TimeInfo, Keeper* const keeper);
721 :     /**
722 :     * \brief This is the default GrowthCalcK destructor
723 :     */
724 :     ~GrowthCalcK() {};
725 :     /**
726 :     * \brief This is the function that calculates the growth using a simple length based Gompertz function
727 :     * \param area is the area that the growth is being calculated on
728 :     * \param Lgrowth is the DoubleVector of the mean length increase for each length group of the stock
729 :     * \param Wgrowth is the DoubleVector of the mean weight increase for each length group of the stock
730 :     * \param numGrow is the PopInfoVector of the current population of the stock
731 :     * \param Area is the AreaClass for the current model
732 :     * \param TimeInfo is the TimeClass for the current model
733 :     * \param Fphi is the DoubleVector of the feeding level of the stock
734 :     * \param MaxCon is the DoubleVector of the maximum consumption of the stock
735 :     * \param LgrpDiv is the LengthGroupDivision of the stock
736 :     */
737 : ulcessvp 4 // virtual void calcGrowth(int area, DoubleVector& Lgrowth, DoubleVector& Wgrowth,
738 :     // const PopInfoVector& numGrow, const AreaClass* const Area,
739 :     // const TimeClass* const TimeInfo, const DoubleVector& Fphi,
740 :     // const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv);
741 : ulcessvp 2
742 :     virtual void calcGrowth(int area, double* Lgrowth, double* Wgrowth,
743 :     const PopInfoVector& numGrow, const AreaClass* const Area,
744 :     const TimeClass* const TimeInfo, const DoubleVector& Fphi,
745 : ulcessvp 4 const DoubleVector& MaxCon, const LengthGroupDivision* const LgrpDiv, int size);
746 : agomez 1 /**
747 :     * \brief This will return the power term of the length - weight relationship
748 :     * \return growthPar[4]
749 :     */
750 :     virtual double getPower() { return growthPar[4]; };
751 :     /**
752 :     * \brief This will return the multiplier of the length - weight relationship
753 :     * \return growthPar[3]
754 :     */
755 :     virtual double getMult() { return growthPar[3]; };
756 :     protected:
757 :     /**
758 :     * \brief This is the number of growth parameters (set to 5)
759 :     */
760 :     int numGrowthConstants;
761 :     /**
762 :     * \brief This is the ModelVariableVector of growth parameters
763 :     */
764 :     ModelVariableVector growthPar;
765 :     };
766 :    
767 :     #endif

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

Powered By FusionForge