ALMaSS Partridge ODdox  1.1
The partridge model description following ODdox protocol
Partridge_Population_Manager.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************************************
3 Copyright (c) 2011, Christopher John Topping, University of Aarhus
4 All rights reserved.
5 
6 Redistribution and use in source and binary forms, with or without modification, are permitted provided
7 that the following conditions are met:
8 
9 Redistributions of source code must retain the above copyright notice, this list of conditions and the
10 following disclaimer.
11 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
12 the following disclaimer in the documentation and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
15 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
17 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
18 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
19 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 ********************************************************************************************************
23 */
37 //---------------------------------------------------------------------------
38 #ifndef Partridge_Population_ManagerH
39  #define Partridge_Population_ManagerH
40 //---------------------------------------------------------------------------
41 
42 
43 
44  #include <cmath>
45  #include <stdio.h>
46  #include <vector>
47 
48 #include "../BatchALMaSS/ALMaSS_Setup.h"
49 
50 #ifdef __UNIX
51  #include "../BatchALMaSS/PopulationManager.h"
52  #include "Partridge_Covey.h"
53  #include "Partridge_All.h"
54  #include "Partridge_Communication.h"
55 #else
56  #include "../BatchALMaSS/PopulationManager.h"
57  #include "Partridge_Covey.h"
58  #include "Partridge_All.h"
59  #include "Partridge_Communication.h"
60 #endif
61 
62 class Partridge_struct;
63 class Partridge_Covey;
66 
68 class CoverTempMap {
69  public:
70  ~CoverTempMap() { delete qualmap; }
71  CoverTempMap(int a_lx, int a_ly) { m_maxx = (a_lx / 10); m_maxy = (a_ly / 10); qualmap = new double[m_maxx*m_maxy]; };
72  double* qualmap;
73  int m_maxx, m_maxy;
74  void ZeroQual() { for (int i=0; i< m_maxx; i++) for (int j=0; j<m_maxy; j++) qualmap[i + j*m_maxx] = 0; }
75  double GetQual(int a_x, int a_y) { return qualmap[(a_x / 10) + m_maxx*(a_y / 10)]; }
76  void SetQual(int a_x, int a_y, double a_qual) { qualmap[(a_x / 10) + m_maxx*(a_y / 10)] = a_qual; }
77  void AddQual(int a_x, int a_y, double a_qual) { qualmap[(a_x / 10) + m_maxx*(a_y / 10)] += a_qual; }
78  double GetQualIndexed(int a_x, int a_y) { return qualmap[a_x + a_y * m_maxx]; }
79  void SetQualIndexed(int a_x, int a_y, double a_qual) {qualmap[a_x + a_y * m_maxx] = a_qual; }
80 };
81 
84  // double m_FoodNeed[200];
85  // double m_move_veg_structure[4][4];
87  virtual void DoFirst();
89  virtual void DoBefore();
91  virtual void DoAfter();
93  virtual void DoAlmostLast();
95  virtual void DoLast();
97  void TestShouldFlock();
99  void Hunting(int p_chance);
101  void HuntingGrid(int p_chance);
103  void HuntingDifferentiatedBeetleBankArea( int a_pct );
106 
107 
108  // For looping through bobjects of a certain type.
110  unsigned int m_loop_index;
112  unsigned int m_loop_limit;
116  unsigned int m_Partridge_IDs;
118  bool OpenParOutputFiles();
120  bool CloseParOutputFiles();
121  // Attributes
125  void FillInFoodArray();
130  // Output files
132  FILE * ParAdMort; //
134  FILE * ParJuvMort; //
136  FILE * ParNoB; //
138  FILE * ParClutches; //
140  FILE * ParFlocks; //
142  FILE * ParUnpairedMale; //
144  FILE * NoHatchedPerYear; //
145 
147  int HabitatEvalPolyField( int a_field );
149  double EvalHabitatQual(TTypesOfLandscapeElement a_cet, int a_poly);
151  double m_HabitatQuality[300];
153  virtual void Catastrophe();
155  void MaleImmigration( void );
156 
157 public:
172 /*
173  int m_Matured;
174  int m_Eaten;
175  int m_MaturedE;
176  int m_EatenE;
177 */
179  bool FillCoveyNeigbourList(Partridge_Covey* a_covey, int a_distance, int a_x, int a_y);
181  double TerrEvalPoly( TTypesOfLandscapeElement a_cet, int a_poly );
183  int ClutchDensity( int x, int y, int radius);
184 
186  void AddStarved() {
187  m_Starved++;
188  }
189 
190  /* void AddMatured() {
191  m_Matured++;
192  }
193 
194  void AddEaten() {
195  m_Eaten++;
196  }
197 
198  void AddMaturedE() {
199  m_MaturedE++;
200  }
201 
202  void AddEatenE() {
203  m_EatenE++;
204  }
205 */
206 
207  // void SetFoodNeed(int i, double value) {m_FoodNeed[i]=value;}
208  // double GetFoodNeed(int i) {return m_FoodNeed[i];}
209  // void SetMoveVegStructure(int i, int j, double value) {m_move_veg_structure[i][j]=value;}
210  // double GetMoveVegStructure(int i, int j) {return m_move_veg_structure[i][j];}
211 
213  void WriteParAdMort( int a_min, int a_age, int a_sex, int a_cause );
215  void WriteParJuvMort( int yr, int a_min, int a_age, int a_cause );
217  void WriteParNoB( int a_min, int a_nob );
219  void WriteParUnpairedMale( int a_min, int a_num );
221  void WriteParClutches( int a_min, int a_num1, int a_num2 );
223  void WriteParFlocks( int a_min, int a_size, int a_young );
225  void WriteNoHatchedPerYear( int a_min, int a_num );
226 
228  void AddHatchSuccess( int sz ) {
229  m_HatchSuccess += sz;
230  }
231 
233  int SupplyPegPosx( int j ) {
234  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->X();
235  };
236 
238  int SupplyPegPosy( int j ) {
239  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->Y();
240  };
241 
243  int SupplyCovPosx( int j ) {
244  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->XCenter();
245  };
246 
248  int SupplyCovPosy( int j ) {
249  return dynamic_cast < Partridge_Covey * > ( TheArray[ pob_Covey ] [ j ] )->YCenter();
250  };
251 
252 
254  void ObjectLoopInit( int ob_type );
256  TAnimal * ObjectLoopFetch( void );
257 
259  void CreateObjects( int ob_type, Partridge_struct * data, int number );
261  void CreateInitialObjects( int ob_type, int number );
263  void CreateCloneObjects( int ob_type, AdultPartridge_struct * as );
265  void AddObject( int ob_type, TAnimal * pTAo );
266 
268  virtual void Init( void );
272  virtual ~Partridge_Population_Manager( void );
273  // Interface
275  void UpdateNestingCoverMap();
277  double GetNestingCoverDensity( int x, int y );
279  double GetTerrQual( int x, int y );
281  unsigned int GetNewID() {
282  return ++m_Partridge_IDs;
283  }
284 
287  return m_ShouldFlock;
288  };
289 
291  void DissolveCovey( Partridge_Covey * a_covey );
293  bool CoveyDissolveWeather();
295  void DoSanityCheck(); // Is a de-bug method and can be removed at some point
297  void DoMaleSanityCheck(); // ditto
299  virtual void TheAOROutputProbe();
301  virtual void TheRipleysOutputProbe(FILE* a_prb);
302 
304  double GetHabitatQuality (int a_day) {return m_HabitatQuality[a_day];}
305 
306 };
307 
308 #endif
309 
CoverTempMap
For storing assessed habitat quality.
Definition: Partridge_Population_Manager.h:68
Partridge_Population_Manager::m_Ourkfactors
k_factors * m_Ourkfactors
Pointer to kfactors object.
Definition: Partridge_Population_Manager.h:169
Partridge_Population_Manager::GetHabitatQuality
double GetHabitatQuality(int a_day)
Definition: Partridge_Population_Manager.h:304
CoverTempMap::~CoverTempMap
~CoverTempMap()
Definition: Partridge_Population_Manager.h:70
Partridge_Population_Manager::m_nestingcovermap
CoverTempMap * m_nestingcovermap
Pointer to nesting cover map.
Definition: Partridge_Population_Manager.h:167
Partridge_Male
The partridge male class.
Definition: Partridge_All.h:657
CoverTempMap::AddQual
void AddQual(int a_x, int a_y, double a_qual)
Definition: Partridge_Population_Manager.h:77
CoverTempMap::m_maxy
int m_maxy
Definition: Partridge_Population_Manager.h:73
Partridge_Population_Manager::DoAlmostLast
virtual void DoAlmostLast()
Utility method called after EndStep.
Definition: Partridge_Population_Manager.cpp:1335
Partridge_Population_Manager::~Partridge_Population_Manager
virtual ~Partridge_Population_Manager(void)
Definition: Partridge_Population_Manager.cpp:177
Partridge_Population_Manager::m_loop_index
unsigned int m_loop_index
Definition: Partridge_Population_Manager.h:110
Partridge_Population_Manager::WriteNoHatchedPerYear
void WriteNoHatchedPerYear(int a_min, int a_num)
Output method.
Definition: Partridge_Population_Manager.cpp:1696
Partridge_Population_Manager
The population manager for partridge objects.
Definition: Partridge_Population_Manager.h:83
Partridge_Population_Manager::ObjectLoopFetch
TAnimal * ObjectLoopFetch(void)
Definition: Partridge_Population_Manager.cpp:196
Partridge_Population_Manager::ParFlocks
FILE * ParFlocks
Covey size 1st oct, + no. chicks.
Definition: Partridge_Population_Manager.h:140
Partridge_Population_Manager::m_maxy
int m_maxy
Definition: Partridge_Population_Manager.h:129
Partridge_Population_Manager::m_loop_ob_type
int m_loop_ob_type
Definition: Partridge_Population_Manager.h:114
Population_Manager::TheArray
vector< TListOfAnimals > TheArray
Definition: populationmanager.h:534
Partridge_Population_Manager::m_Partridge_IDs
unsigned int m_Partridge_IDs
Definition: Partridge_Population_Manager.h:116
Partridge_Population_Manager::GetTerrQual
double GetTerrQual(int x, int y)
Definition: Partridge_Population_Manager.cpp:766
Partridge_Communication.h
Partridge_Communication.h This file contains the headers for the partridge communication class
k_factors
Class for calculating k-factors.
Definition: Partridge_All.h:235
Partridge_struct
Struct to basic partridge information.
Definition: Partridge_All.h:342
Partridge_Communication
Used for messaging.
Definition: Partridge_Communication.h:100
Partridge_Population_Manager::m_loop_limit
unsigned int m_loop_limit
Definition: Partridge_Population_Manager.h:112
CoverTempMap::qualmap
double * qualmap
Definition: Partridge_Population_Manager.h:71
Partridge_Population_Manager::ParJuvMort
FILE * ParJuvMort
Juvenile mortaltiy record.
Definition: Partridge_Population_Manager.h:134
Partridge_Population_Manager::ClutchDensity
int ClutchDensity(int x, int y, int radius)
Returns clutch density at x,y with radius radius.
Definition: Partridge_Population_Manager.cpp:569
Partridge_Population_Manager::ParClutches
FILE * ParClutches
For each clutch, clutch no. & size.
Definition: Partridge_Population_Manager.h:138
Partridge_Population_Manager::CreateInitialObjects
void CreateInitialObjects(int ob_type, int number)
Definition: Partridge_Population_Manager.cpp:465
Partridge_Population_Manager::m_comms_data
PartridgeCommunicationData * m_comms_data
Message data.
Definition: Partridge_Population_Manager.h:161
Partridge_Covey.h
Partridge_Covey.h This file contains the headers for the partridge covey class
Partridge_Population_Manager::NoHatchedPerYear
FILE * NoHatchedPerYear
No. successful hatches per year.
Definition: Partridge_Population_Manager.h:144
CoverTempMap::GetQualIndexed
double GetQualIndexed(int a_x, int a_y)
Definition: Partridge_Population_Manager.h:78
Partridge_Population_Manager::Init
virtual void Init(void)
Definition: Partridge_Population_Manager.cpp:207
Partridge_Population_Manager::bad_guys
Partridge_Male * bad_guys[500]
Debug.
Definition: Partridge_Population_Manager.h:159
Partridge_Population_Manager::OpenParOutputFiles
bool OpenParOutputFiles()
Opens the partridge output files.
Definition: Partridge_Population_Manager.cpp:1612
Partridge_Population_Manager::DoAfter
virtual void DoAfter()
Utility method called before EndStep.
Definition: Partridge_Population_Manager.cpp:1307
Partridge_Population_Manager::WriteParJuvMort
void WriteParJuvMort(int yr, int a_min, int a_age, int a_cause)
Output method.
Definition: Partridge_Population_Manager.cpp:1664
Partridge_Population_Manager::ParNoB
FILE * ParNoB
No of breeding Pairs.
Definition: Partridge_Population_Manager.h:136
CoverTempMap::SetQualIndexed
void SetQualIndexed(int a_x, int a_y, double a_qual)
Definition: Partridge_Population_Manager.h:79
Partridge_Population_Manager::DoBefore
virtual void DoBefore()
Utility method called before Step.
Definition: Partridge_Population_Manager.cpp:1297
Partridge_Population_Manager::CreateObjects
void CreateObjects(int ob_type, Partridge_struct *data, int number)
Definition: Partridge_Population_Manager.cpp:368
Partridge_Population_Manager::HuntingDifferentiatedBeetleBankArea
void HuntingDifferentiatedBeetleBankArea(int a_pct)
Differentiated hunting in beetlebank areas.
Definition: Partridge_Population_Manager.cpp:1204
Partridge_Population_Manager::m_territoryqualmap
CoverTempMap * m_territoryqualmap
Pointer to territory quality map.
Definition: Partridge_Population_Manager.h:165
Landscape
The landscape class containing all environmental and topographical data.
Definition: landscape.h:112
CoverTempMap::CoverTempMap
CoverTempMap(int a_lx, int a_ly)
Definition: Partridge_Population_Manager.h:71
Partridge_Population_Manager::AddHatchSuccess
void AddHatchSuccess(int sz)
Definition: Partridge_Population_Manager.h:228
Partridge_Population_Manager::m_HatchSuccess
int m_HatchSuccess
No hatch success.
Definition: Partridge_Population_Manager.h:127
Partridge_Population_Manager::WriteParClutches
void WriteParClutches(int a_min, int a_num1, int a_num2)
Output method.
Definition: Partridge_Population_Manager.cpp:1682
Partridge_Population_Manager::HuntingGrid
void HuntingGrid(int p_chance)
Density grid-based hunting.
Definition: Partridge_Population_Manager.cpp:1159
Partridge_Population_Manager::DoLast
virtual void DoLast()
Ultility method called at the end of the time-step.
Definition: Partridge_Population_Manager.cpp:1326
Partridge_Population_Manager::DoSanityCheck
void DoSanityCheck()
Debug only.
Definition: Partridge_Population_Manager.cpp:1252
Partridge_Population_Manager::MaleImmigration
void MaleImmigration(void)
If male immigration is needed - Unused.
Definition: Partridge_Population_Manager.cpp:1813
Partridge_Population_Manager::WriteParUnpairedMale
void WriteParUnpairedMale(int a_min, int a_num)
Output method.
Definition: Partridge_Population_Manager.cpp:1676
pob_Covey
Definition: Partridge_All.h:297
TAnimal
The base class for all ALMaSS animal classes.
Definition: populationmanager.h:205
Partridge_Covey
The collective for a family of partridges
Definition: Partridge_Covey.h:90
Partridge_Population_Manager::CreateNestingCoverDensityMap
void CreateNestingCoverDensityMap()
Intitialises the nesting cover map.
Definition: Partridge_Population_Manager.cpp:778
Partridge_Population_Manager::TestShouldFlock
void TestShouldFlock()
Should the birds start to flock?
Definition: Partridge_Population_Manager.cpp:1435
Partridge_Population_Manager::m_HabitatQuality
double m_HabitatQuality[300]
Part of habitat quality map evaluation.
Definition: Partridge_Population_Manager.h:151
Population_Manager
Base class for all population managers.
Definition: populationmanager.h:424
AdultPartridge_struct
Struct to pass adult partridge information.
Definition: Partridge_All.h:386
CoverTempMap::GetQual
double GetQual(int a_x, int a_y)
Definition: Partridge_Population_Manager.h:75
Partridge_Population_Manager::m_messagecentre
Partridge_Communication m_messagecentre
Message class pointer.
Definition: Partridge_Population_Manager.h:163
Partridge_Population_Manager::GetNewID
unsigned int GetNewID()
Definition: Partridge_Population_Manager.h:281
CoverTempMap::m_maxx
int m_maxx
Definition: Partridge_Population_Manager.h:73
Partridge_Population_Manager::m_halfwidth
int m_halfwidth
Definition: Partridge_Population_Manager.h:129
Partridge_Population_Manager::FillCoveyNeigbourList
bool FillCoveyNeigbourList(Partridge_Covey *a_covey, int a_distance, int a_x, int a_y)
Get a list of neighbour covies.
Definition: Partridge_Population_Manager.cpp:1571
Partridge_Population_Manager::SupplyCovPosy
int SupplyCovPosy(int j)
Definition: Partridge_Population_Manager.h:248
Partridge_Population_Manager::SupplyPegPosx
int SupplyPegPosx(int j)
Definition: Partridge_Population_Manager.h:233
Partridge_Population_Manager::Hunting
void Hunting(int p_chance)
Global hunting.
Definition: Partridge_Population_Manager.cpp:1116
Partridge_Population_Manager::Catastrophe
virtual void Catastrophe()
Kill/clone a configuragle proportion of population.
Definition: Partridge_Population_Manager.cpp:1731
Partridge_Population_Manager::Partridge_Population_Manager
Partridge_Population_Manager(Landscape *a_map)
Definition: Partridge_Population_Manager.cpp:156
Partridge_Population_Manager::ParAdMort
FILE * ParAdMort
Adult mortality record.
Definition: Partridge_Population_Manager.h:132
Partridge_Population_Manager::CloseParOutputFiles
bool CloseParOutputFiles()
Closes the partridge output files.
Definition: Partridge_Population_Manager.cpp:1631
Partridge_Population_Manager::m_maxx
int m_maxx
internal variables
Definition: Partridge_Population_Manager.h:129
Partridge_Population_Manager::ParUnpairedMale
FILE * ParUnpairedMale
No unparied males 1st Jun.
Definition: Partridge_Population_Manager.h:142
Partridge_Population_Manager::DissolveCovey
void DissolveCovey(Partridge_Covey *a_covey)
Definition: Partridge_Population_Manager.cpp:1475
Partridge_Population_Manager::HabitatEvalPolyField
int HabitatEvalPolyField(int a_field)
Part of habitat quality map evaluation.
Definition: Partridge_Population_Manager.cpp:943
Partridge_Population_Manager::AddStarved
void AddStarved()
Record starvation event.
Definition: Partridge_Population_Manager.h:186
TTypesOfLandscapeElement
TTypesOfLandscapeElement
Definition: tole_declaration.h:36
Partridge_Population_Manager::ObjectLoopInit
void ObjectLoopInit(int ob_type)
Definition: Partridge_Population_Manager.cpp:187
PartridgeCommunicationData
Data structure of a message.
Definition: Partridge_Communication.h:78
Partridge_Population_Manager::FillInFoodArray
void FillInFoodArray()
Precalculated food values with age.
Definition: Partridge_Population_Manager.cpp:1390
Partridge_Population_Manager::CreateCloneObjects
void CreateCloneObjects(int ob_type, AdultPartridge_struct *as)
Definition: Partridge_Population_Manager.cpp:535
Partridge_Population_Manager::m_ShouldFlock
bool m_ShouldFlock
Flag for flocking or not.
Definition: Partridge_Population_Manager.h:123
Partridge_All.h
Partridge_all.h This file contains the header for all partridge lifestage classes
Partridge_Population_Manager::WriteParFlocks
void WriteParFlocks(int a_min, int a_size, int a_young)
Output method.
Definition: Partridge_Population_Manager.cpp:1688
Partridge_Population_Manager::UpdateNestingCoverMap
void UpdateNestingCoverMap()
Definition: Partridge_Population_Manager.cpp:1084
Partridge_Population_Manager::TheAOROutputProbe
virtual void TheAOROutputProbe()
Output method.
Definition: Partridge_Population_Manager.cpp:1705
Partridge_Population_Manager::TheRipleysOutputProbe
virtual void TheRipleysOutputProbe(FILE *a_prb)
Output method.
Definition: Partridge_Population_Manager.cpp:1713
Partridge_Population_Manager::GetNestingCoverDensity
double GetNestingCoverDensity(int x, int y)
Definition: Partridge_Population_Manager.cpp:754
Partridge_Population_Manager::WriteParAdMort
void WriteParAdMort(int a_min, int a_age, int a_sex, int a_cause)
Output method.
Definition: Partridge_Population_Manager.cpp:1658
Partridge_Population_Manager::CoveyDissolveWeather
bool CoveyDissolveWeather()
Definition: Partridge_Population_Manager.cpp:1422
Partridge_Population_Manager::DoMaleSanityCheck
void DoMaleSanityCheck()
Debug only.
Definition: Partridge_Population_Manager.cpp:1274
Partridge_Population_Manager::DoFirst
virtual void DoFirst()
Utility method called before BeginStep.
Definition: Partridge_Population_Manager.cpp:590
CoverTempMap::SetQual
void SetQual(int a_x, int a_y, double a_qual)
Definition: Partridge_Population_Manager.h:76
Partridge_Population_Manager::EvalHabitatQual
double EvalHabitatQual(TTypesOfLandscapeElement a_cet, int a_poly)
Part of habitat quality map evaluation.
Definition: Partridge_Population_Manager.cpp:837
Partridge_Population_Manager::WriteParNoB
void WriteParNoB(int a_min, int a_nob)
Output method.
Definition: Partridge_Population_Manager.cpp:1670
Partridge_Population_Manager::SupplyShouldFlock
bool SupplyShouldFlock()
Definition: Partridge_Population_Manager.h:286
Partridge_Population_Manager::SupplyCovPosx
int SupplyCovPosx(int j)
Definition: Partridge_Population_Manager.h:243
Partridge_Population_Manager::TerrEvalPoly
double TerrEvalPoly(TTypesOfLandscapeElement a_cet, int a_poly)
Habitat evaluation.
CoverTempMap::ZeroQual
void ZeroQual()
Definition: Partridge_Population_Manager.h:74
Partridge_Population_Manager::SupplyPegPosy
int SupplyPegPosy(int j)
Definition: Partridge_Population_Manager.h:238
Partridge_Population_Manager::m_Starved
int m_Starved
No starvation events.
Definition: Partridge_Population_Manager.h:171
Partridge_Population_Manager::AddObject
void AddObject(int ob_type, TAnimal *pTAo)
Definition: Partridge_Population_Manager.cpp:457