ALMaSS Rabbit ODdox  1.00
The rabbit model description following ODdox protocol
Rabbit.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************************************
3 
4 Copyright (c) 2015, Christopher John Topping, Faarupvej 54, DK-8410 Rønde
5 ADAMA Makhteshim Ltd., PO Box 60, Beer-Sheva 84100, Israel
6 
7 All rights reserved.
8 
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions are met:
11 
12 1. Redistributions of source code must retain the above copyright notice, this
13 list of conditions and the following disclaimer.
14 2. Redistributions in binary form must reproduce the above copyright notice,
15 this list of conditions and the following disclaimer in the documentation
16 and/or other materials provided with the distribution.
17 
18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 
29 The views and conclusions contained in the software and documentation are those
30 of the authors and should not be interpreted as representing official policies,
31 either expressed or implied, of the FreeBSD Project.
32 
33 ********************************************************************************************************
34 
35 */
44 //---------------------------------------------------------------------------
45 #ifndef RabbitH
46 #define RabbitH
47 //---------------------------------------------------------------------------
48 
49 //---------------------------------------------------------------------------
50 
52 class Rabbit_Female;
53 class Rabbit_Warren;
54 class Rabbit_Adult;
55 class Landscape;
56 
57 //------------------------------------------------------------------------------
61 //typedef vector<Rabbit*> TListOfRabbit;
62 //---------------------------------------------------------------------------
63 
69 {
70  rob_Young = 0,
76 };
77 
83 {
98 } ;
99 
102 {
108 };
109 
116 };
117 
120 {
122  int m_area;
123  int m_ref;
125  double m_forage;
128 };
129 
132 {
133  int m_x;
134  int m_y;
136  int m_decay;
137 };
138 
141 {
143  int m_dist;
144  double m_visitprob;
145 };
146 
151 {
152 public:
154  RabbitMemory( void );
156  vector <RabbitMemoryLocation> m_MyMemory;
158  void Update( void );
160  void AddMemory( RabbitMemoryLocation a_mem);
162  RabbitMemoryLocation GetBestLocation( void );
163 };
164 
165 //************************Rabbit_Base***********************************************************************
166 class Rabbit_Base : public TAnimal {
167  // ATTRIBUTES
168 public:
172  static double m_dispersalmortperm;
175 protected:
177  int m_Age;
187  //bool m_haveMate;
195  double m_weight;
206 
207  // METHODS
208 public:
211  return m_CurrentRState;
212  }
214  void SetAge( int a_age ) {
215  m_Age = a_age;
216  }
219  return m_RabbitType;
220  }
222  int GetAge( void ) {
223  return m_Age;
224  }
226  void SetweightAge( int a_age ) {
227  m_weightAge = a_age;
228  }
230  int GetweightAge( void ) {
231  return m_weightAge;
232  }
235  return m_myWarren;
236  }
238  void SetWarren( Rabbit_Warren* a_warren ) {
239  m_myWarren = a_warren;
240  }
242  bool GetHasBurrow( void ) {
243  return m_haveBurrow;
244  }
246  void SetHasBurrow( bool a_status ) {
247  m_haveBurrow = a_status;
248  }
250  void SetDigging( int a_days ) {
251  m_digging = a_days;
252  }
254  int GetDigging() {
255  return m_digging;
256  }
258  APoint GetBornLocation() {
259  return m_born_location;
260  }
262  Rabbit_Base(int p_x, int p_y, int p_x2, int p_y2, Landscape* p_L, Rabbit_Population_Manager* p_NPM, Rabbit_Warren* a_warren);
264  virtual ~Rabbit_Base( void );
266  virtual void BeginStep( void );
268  virtual void Step( void ) {
269  ;
270  }
272  virtual void EndStep( void ) {
273  ;
274  }
276  void OnFed( void ) {
277  m_FedToday = true;
278  }
280  void OnMumDead( void ) {
281  m_Mum = NULL;
282  }
284  void OnEvicted( void ) {
285  m_Mum = NULL; m_CurrentRState = toRabbits_Weaning;
286  }
288  virtual Rabbit_Adult* GetMate( void ) {
289  return NULL;
290  };
291 protected:
293  virtual void Explore( void ) {
294  ;
295  }
297  virtual void st_Dying( void );
299  bool MortalityTest( double a_prop );
301  bool WalkTo( int a_x, int a_y );
304  ;
305  }
307  virtual void GeneralEndocrineDisruptor( double /* a_pesticide_dose */ ) {
308  ;
309  }
311  virtual void GeneralOrganoPhosphate( double /* a_pesticide_dose */ );
312 };
313 
314 
315 //************************Rabbit_Young***********************************************************************
319 class Rabbit_Young : public Rabbit_Base
320 {
321 public:
323  Rabbit_Young(int p_x, int p_y, int p_x2, int p_y2, Rabbit_Female* a_mum, Landscape* p_L, Rabbit_Population_Manager* p_NPM, Rabbit_Warren* a_warren);
325  virtual ~Rabbit_Young( void );
327  TTypeOfRabbitState st_Develop( void );
329  TTypeOfRabbitState st_BecomeJuvenile( void );
331  virtual void BeingStep(void);
333  virtual void Step(void);
335  virtual void EndStep(void);
337  virtual bool ShouldMature(void);
338 protected:
340  virtual void st_Dying( void );
341 };
342 
343 //************************Rabbit_Juvenile***********************************************************************
348 {
349 public:
351  Rabbit_Juvenile(int p_x, int p_y, int p_x2, int p_y2, Rabbit_Female* p_M, Landscape* p_L, Rabbit_Population_Manager* p_NPM, int a_age, int a_weightage, Rabbit_Warren* a_warren);
353  virtual ~Rabbit_Juvenile( void );
355  TTypeOfRabbitState st_Develop();
357  TTypeOfRabbitState st_BecomeAdult( void );
359  TTypeOfRabbitState st_Explore( void );
361  TTypeOfRabbitState st_Forage( void );
363  virtual void Step(void);
365  virtual void EndStep(void);
367  virtual bool ShouldMature(void);
368 protected:
370  virtual void st_Dying( void );
372  virtual void InternalPesticideHandlingAndResponse();
373 };
374 //************************Rabbit_Adult***********************************************************************
378 class Rabbit_Adult : public Rabbit_Base
379 {
380 public:
381 // Methods
383  Rabbit_Adult( int p_x, int p_y, int p_x2, int p_y2, Landscape* p_L, Rabbit_Population_Manager* p_NPM, int a_age, int a_weightage, Rabbit_Warren* a_warren );
385  virtual ~Rabbit_Adult();
388  return m_socialstatus;
389  }
392  m_socialstatus = a_status;
393  }
395  void SetMate( Rabbit_Adult* a_mate );
397  virtual Rabbit_Adult* GetMate( void ) { return m_myMate; };
399  void OnMateFinishedDigging( Rabbit_Adult* a_mate );
401  void OnMateDead( Rabbit_Adult* a_mate );
402 protected:
403 // Attributes
410 
411 // Methods
413  virtual void st_Dying( void );
415  virtual void EndStep(void);
416 };
417 
418 //************************Rabbit_Male***********************************************************************
422 class Rabbit_Male : public Rabbit_Adult
423 {
424 public:
426  Rabbit_Male(int p_x, int p_y, int p_x2, int p_y2, Landscape* p_L, Rabbit_Population_Manager* p_NPM, int a_age, int a_weightage, Rabbit_Warren* a_warren);
428  virtual ~Rabbit_Male( void );
430  virtual void Step( void );
431 protected:
433  virtual TTypeOfRabbitState st_EvaluateTerritory( void );
435  virtual TTypeOfRabbitState st_Forage(void);
437  virtual void InternalPesticideHandlingAndResponse();
438 };
439 //************************Rabbit_Female***********************************************************************
444 {
445 public:
446 // METHODS
448  Rabbit_Female(int p_x, int p_y, int p_x2, int p_y2, Landscape* p_L, Rabbit_Population_Manager* p_NPM, int a_age, int a_weightage, Rabbit_Warren* a_warren);
450  virtual ~Rabbit_Female( void );
452  virtual void Step( void );
454  void AddYoung(Rabbit_Young* a_young)
455  {
456  m_myLitter[m_myLitterSize++] = a_young;
457  }
459  void OnYoungDeath(Rabbit_Young* a_young);
461  void Weaned(Rabbit_Young* a_young);
462  void SetMinKits(double a_num) { m_MinKitsNo = a_num; }
463  void SetMaxKits(double a_num) { m_MaxKitsNo = a_num; }
464  int GetTotalOffspring() { return m_MyOffspring; }
465  int GetTotalLitters() { return m_MyTotalLitters; }
467  return static_cast<int>(m_AnnualLitters.size());
468  }
469 
470 protected:
472  virtual TTypeOfRabbitState st_EvaluateTerritory( void );
474  virtual TTypeOfRabbitState st_UpdateBreedingStatus( void );
476  virtual TTypeOfRabbitState st_GiveBirth( void );
478  virtual TTypeOfRabbitState st_Lactating( void );
480  virtual TTypeOfRabbitState st_Gestating( void );
482  virtual TTypeOfRabbitState st_Forage(void);
484  virtual void st_Dying( void );
486  int CalcLitterSize( void );
487 // ATTRIBUTES
495  Rabbit_Young* m_myLitter[20];
499  static double m_MinKitsNo;
501  static double m_MaxKitsNo;
507  vector<int> m_AnnualLitters;
509  virtual void InternalPesticideHandlingAndResponse();
511  virtual void GeneralEndocrineDisruptor( double /* a_pesticide_dose */ );
512 };
513 
514 //************************Rabbit_Warren***********************************************************************
518 class Rabbit_Warren : public TAnimal
519 {
538 public:
539 // ATTRIBUTES
541  static double m_maxForageHeight;
552 // METHODS
554  Rabbit_Warren(int p_x, int p_y, Landscape* p_L, Rabbit_Population_Manager* p_NPM, int a_size, int a_soil);
556  virtual ~Rabbit_Warren();
558  virtual void Step();
560  virtual void BeginStep() {
561  CalcCarryingCapacityRatio1();
562  }
564  int Get_TL_x() { return m_TL_x; }
566  int Get_TL_y() { return m_TL_y; }
568  APoint GetPointTL() { APoint TL; TL.m_x=m_TL_x; TL.m_y=m_TL_y; return TL; }
570  int GetActiveBurrows() { return m_NoOccupiedBurrows; }
572  int GetPopulationSize() { return (int)m_InhabitantsList.size(); }
574  bool GetCarryingCapacityFilled() { return (m_CarryingCapacity >= m_NoOccupiedBurrows); }
576  double GetCarryingCapacityRatio() { return m_CarryingCapacityRatio; }
578  int GetCarryingCapacity() { return m_CarryingCapacity; }
580  double GetDiseaseConstant(void) { return m_diseaseconstant; }
582  void RabbitProductionRecord(RabbitObjectTypes YoungType, int kits) { m_ThisYearsProduction[YoungType] += kits; }
584  int GetRabbitProductionRecord(RabbitObjectTypes YoungType) { return m_ThisYearsProduction[YoungType]; }
586  void ResetRabbitProductionRecord(RabbitObjectTypes YoungType) { m_ThisYearsProduction[YoungType] = 0; }
588  void ResetAllRabbitProductionRecord(void) { for (int r = (int) rob_Young; r < (int) rob_foobar; r++) m_ThisYearsProduction[r] = 0; }
590  void AddNetworkConnection( LocalWarrenNewtorkEntry a_LWNE ) { m_LocalWarrenNetwork.push_back( a_LWNE ); }
592  Rabbit_Warren* GetNetworkWarren( void );
594  void NetworkEvaluation( void );
596  bool IsMember( Rabbit_Base* a_rabbit );
598  bool IsFreeFemale( void );
600  bool IsFreeMale( void );
602  void UpdateDominance( void );
604  void ChooseNewDominant( void );
606  int IsFreeBurrow( void );
608  void Leave( Rabbit_Base* a_rabbit );
610  void Join( Rabbit_Base* a_rabbit );
612  void OccupyWarren( Rabbit_Adult* a_rabbit );
614  void JoinNOccupy( Rabbit_Adult* a_rabbit );
616  void JoinNMate(Rabbit_Adult* a_mate, RabbitObjectTypes rob_type);
618  void Mate(Rabbit_Adult* a_mate, RabbitObjectTypes rob_type);
620  void OccupyNewBurrow();
622  void OccupyBurrow();
624  int GetAllBreedingFemaleRabbits();
626  int GetAllBigFemaleRabbits();
628  double GetForagePesticide( void ) {
629  return m_forageP;
630  }
632  int GetSoilType(void) { return m_soiltype; }
633  //* \brief Debugging method */
634  bool DEBUG_InternalTest();
635  //* \brief Debugging method */
636  bool DEBUG_InternalTest2();
638  double Disease() { return m_diseaseconstant; }
640  void CalcDisease();
642  double GetAvailableForage( void ) {
643  return m_availableforage;
644  }
646  double GetInvAvailableForage( void ) {
647  return m_inv_availableforage;
648  }
650  double GetLitterReabsortionConst( void ) {
651  return m_litterreabosorptionchance;
652  }
655  return m_breedingfemales;
656  }
659  double av = 0;
660  if (m_runningavCount>0) av = m_runningavFemales / static_cast<double>(m_runningavCount);
661  m_runningavFemales = 0;
662  m_runningavCount = 0;
663  return av;
664  }
667  return m_1yrOldFemales;
668  }
671  return m_littersthisyear;
672  }
675  return m_nonbreedingfemales;
676  }
678  void UpdateThisYearsBreeders();
681  return m_mortalitymultiplierA;
682  }
685  return m_mortalitymultiplierJ;
686  }
688  double GetCCRabbitsR() {
689  return m_BigFemaleRabbitsR;
690  }
691 protected:
692 // ATTRIBUTES
694  int m_size;
698  int m_TL_x;
700  int m_TL_y;
736  double m_forageP;
744  int m_ThisYearsProduction[rob_foobar];
748  vector<RabbitWarrenLEInfo> m_LEList;
750  vector<LocalWarrenNewtorkEntry> m_LocalWarrenNetwork;
752  vector<Rabbit_Base*> m_InhabitantsList;
759 
760 // METHODS
762  void st_WarrenBeing( void );
764  void InitEvaluation( void );
766  int GetForageArea( void ) { return m_permforagearea; }
768  int CalcForageArea(void);
770  int CalcPermForageArea(void);
772  int GetTemporaryForageArea( void );
774  int GetCoverArea( void );
776  int GetTempForageAreaVeg( void );
778  int GetCoverAreaVeg( void );
780  void UpdateForageInformation(void);
782  void UpdatePesticide(void);
784  void CalcCarryingCapacityRatio1();
786  double CalcCarryingCapacityRatio2();
787 };
788 
789 
790 #endif
virtual Rabbit_Adult * GetMate(void)
Get mate pointer.
Definition: Rabbit.h:288
int m_myLitterSize
Holds the current litter size.
Definition: Rabbit.h:497
void SetMaxKits(double a_num)
Definition: Rabbit.h:463
The rabbit young class. All special young behaviour is described here.
Definition: Rabbit.h:319
bool m_FedToday
Flag for been fed today.
Definition: Rabbit.h:193
The landscape class containing all environmental and topographical data.
Definition: landscape.h:109
void SetSocialStatus(TTypesOfRabbitSocialStatus a_status)
Sets the dominance status.
Definition: Rabbit.h:391
The rabbit female class. All special female behaviour is described here.
Definition: Rabbit.h:443
virtual void Step(void)
The Step is the second &#39;part&#39; of the timestep that an animal can behave in. It is called continuously...
Definition: Rabbit.h:268
The information needed to hold a single rabbit memory.
Definition: Rabbit.h:131
RabbitObjectTypes
Definition: Rabbit.h:68
void SetHasBurrow(bool a_status)
Set/unset burrow status.
Definition: Rabbit.h:246
double GetDailyMortalityChanceJ()
Returns the juvenile daily mortality multiplier.
Definition: Rabbit.h:684
vector< Rabbit_Base * > m_InhabitantsList
List of rabbits that live here - for easy communication purposes.
Definition: Rabbit.h:752
static double m_minForageDigestability
The minimum vegetation digestability allowed for foraging.
Definition: Rabbit.h:543
int m_lifespan
The rabbit&#39;s alloted lifespan.
Definition: Rabbit.h:407
virtual void BeginStep()
Warren begin step code.
Definition: Rabbit.h:560
double GetCCRabbitsR()
Records the number of big female rabbits for carrying capacity calculations.
Definition: Rabbit.h:688
Rabbit_Population_Manager * m_OurPopulationManager
This is a time saving pointer to the correct population manager object.
Definition: Rabbit.h:181
double GetCarryingCapacityRatio()
Checks whether all possible burrows are filled with rabbits. This is updated daily by Rabbit_Warren::...
Definition: Rabbit.h:576
int m_TL_y
Stores original m_Location_y.
Definition: Rabbit.h:700
Rabbit_Adult * m_myMate
Pointer to the mate if any.
Definition: Rabbit.h:409
virtual void Explore(void)
Exploration method.
Definition: Rabbit.h:293
void AddYoung(Rabbit_Young *a_young)
Add a young.
Definition: Rabbit.h:454
int m_runningavFemales
Keeps track of the number of breeding females.
Definition: Rabbit.h:756
APoint GetPointTL()
Get the TL coords as a point.
Definition: Rabbit.h:568
int GetPopulationSize()
Gets the total warren population of rabbits.
Definition: Rabbit.h:572
double m_visitprob
Definition: Rabbit.h:144
The rabbit male class. All special male behaviour is described here.
Definition: Rabbit.h:422
Rabbit_Female * m_Mum
Pointer to mum.
Definition: Rabbit.h:191
int GetTotalLitters()
Definition: Rabbit.h:465
double GetLitterReabsortionConst(void)
Returns litter reabsorption chance.
Definition: Rabbit.h:650
double GetDailyMortalityChanceA()
Returns the adult daily mortality multiplier.
Definition: Rabbit.h:680
int GetweightAge(void)
Get age method.
Definition: Rabbit.h:230
int GetThisYearsBreeders()
Returns the number of females breeding this year.
Definition: Rabbit.h:654
int Get_TL_y()
Get m_TL_x.
Definition: Rabbit.h:566
int m_breedingfemales
The number of females that bred this year.
Definition: Rabbit.h:545
static double m_pesticidedegradationrate
State variable used to hold the daily degredation rate of the pesticide in the body.
Definition: Rabbit.h:174
int m_soiltype
Variable holding the soil type, 1 = heavy, 0 = sandy, 3 = unsuitable (never used in warrens) ...
Definition: Rabbit.h:720
int m_size
Warren core size in m.
Definition: Rabbit.h:694
A class to describe the rabbits warren system.
Definition: Rabbit.h:518
int GetLittersThisYear()
Definition: Rabbit.h:466
Rabbit_Warren * GetWarren(void)
Get warren pointer.
Definition: Rabbit.h:234
void ResetRabbitProductionRecord(RabbitObjectTypes YoungType)
Reset specific data about production of rabbits throughout year.
Definition: Rabbit.h:586
An entry in the local warren network - a helper list of accessibly local warren locations.
Definition: Rabbit.h:140
void ResetAllRabbitProductionRecord(void)
Reset data about production of rabbits throughout year.
Definition: Rabbit.h:588
void SetweightAge(int a_age)
Set age method.
Definition: Rabbit.h:226
static double m_MinKitsNo
The minimum number of kits.
Definition: Rabbit.h:499
double m_weight
The weight in g.
Definition: Rabbit.h:195
int m_Age
The rabbit&#39;s age.
Definition: Rabbit.h:177
virtual Rabbit_Adult * GetMate(void)
Get mate pointer.
Definition: Rabbit.h:397
Definition: elements.h:81
Rabbit_Population_Manager * m_OurPopulationManager
This is a time saving pointer to the correct population manager object.
Definition: Rabbit.h:754
int GetDigging()
Get number of days to dig.
Definition: Rabbit.h:254
double m_availableforage
Records the amount of forage currently available in the warren area as a proportion of what is the po...
Definition: Rabbit.h:728
APoint GetBornLocation()
Get location of birth.
Definition: Rabbit.h:258
vector< RabbitMemoryLocation > m_MyMemory
A list of memory locations.
Definition: Rabbit.h:156
virtual void InternalPesticideHandlingAndResponse()
Handles internal effects of pesticide exposure. If any effects are needed this method must be re-impl...
Definition: Rabbit.h:303
int m_NoOccupiedBurrows
Records the burrows that are occupied.
Definition: Rabbit.h:716
int m_digging
Flag to denote digging behaviour. This keeps the rabbit in a warren without burrows whilst it tries t...
Definition: Rabbit.h:199
TTypeOfRabbitState
Definition: Rabbit.h:82
bool m_lactating
Flag to indicate lactating.
Definition: Rabbit.h:491
double m_CarryingCapacityR
Records the max number of rabbits possible here.
Definition: Rabbit.h:706
A class to describe the data held in a rabbit memory. Warren locations and quality.
Definition: Rabbit.h:150
APoint m_born_location
The x,y location at birth.
Definition: Rabbit.h:201
The rabbit adult class. All generic adult behaviour is described here.
Definition: Rabbit.h:378
The class to handle all predator population related matters.
The rabbit juvenile class. All special juvenile behaviour is described here.
Definition: Rabbit.h:347
void SetAge(int a_age)
Set age method.
Definition: Rabbit.h:214
int Get_TL_x()
Get m_TL_x.
Definition: Rabbit.h:564
void OnEvicted(void)
Signals mum has a new litter to look after.
Definition: Rabbit.h:284
TTypesOfRabbitHabitat
A classification of rabbit habitat types. All landscape elements will be classified into one of the c...
Definition: Rabbit.h:101
int m_gestationcounter
Counter to record the number of days gestating.
Definition: Rabbit.h:493
int GetLittersThisYear()
Returns the number litters produced in the last 12 months.
Definition: Rabbit.h:670
TTypesOfRabbitSocialStatus m_socialstatus
Flag to record dominance status (0-4)
Definition: Rabbit.h:405
TTypesOfRabbitSocialStatus
A classification of rabbit habitat types. All landscape elements will be classified into one of the c...
Definition: Rabbit.h:111
int GetActiveBurrows()
Gets the number of occupied burrows.
Definition: Rabbit.h:570
double m_CarryingCapacityRatio
Records the ratio between carrying capacity and no rabbits in warren.
Definition: Rabbit.h:712
RabbitObjectTypes m_RabbitType
The rabbits type.
Definition: Rabbit.h:170
bool GetCarryingCapacityFilled()
Checks whether all possible burrows are filled with rabbits.
Definition: Rabbit.h:574
int m_littersthisyear
The number of litters produced this year.
Definition: Rabbit.h:549
int m_nonbreedingfemales
The number of females that did not breed this year but are older than 1 year.
Definition: Rabbit.h:551
TTypesOfRabbitSocialStatus GetSocialStatus(void)
Return the dominance status.
Definition: Rabbit.h:387
int m_CarryingCapacity
Records the max number of rabbit pairs possible here.
Definition: Rabbit.h:704
int m_rabbitdiggingtime
The time taken for burrow construction.
Definition: Rabbit.h:722
The base class for all ALMaSS animal classes.
int GetThisYearsNonBreeders()
Returns the number of females not breeding this year but older than 1 year.
Definition: Rabbit.h:674
int m_weightAge
A physiological age parameter, this is the growth age based on an optimal curve (if optimal condition...
Definition: Rabbit.h:197
double m_inv_availableforage
The inverse of m_availableforage, prevents multiple re-calculation.
Definition: Rabbit.h:732
double m_diseaseconstant
a measure of disease mortality likelihood
Definition: Rabbit.h:738
int m_dist
Definition: Rabbit.h:143
The basic information needed for an LE present in a warren area.
Definition: Rabbit.h:119
vector< RabbitWarrenLEInfo > m_LEList
List of polygons and the area which is part of the warren.
Definition: Rabbit.h:748
double GetForagePesticide(void)
Gets the current mean pesticide concentration per unit forage.
Definition: Rabbit.h:628
double m_pesticide_conc
Definition: Rabbit.h:124
double GetAvailableForage(void)
Returns the available forage realtive to rabbit numbers.
Definition: Rabbit.h:642
double m_litterreabosorptionchance
Chance of litter reaborption based on the m_availableforage.
Definition: Rabbit.h:734
int m_foragesize
Warren forage size in m.
Definition: Rabbit.h:696
int m_permforagearea
Variable holding the total permanent forage area.
Definition: Rabbit.h:724
Rabbit_Warren * m_aWarren
Definition: Rabbit.h:142
int GetSoilType(void)
Gets the warren soil type.
Definition: Rabbit.h:632
int m_1yrOldFemales
The number of 1 year old females.
Definition: Rabbit.h:547
double m_mortalitymultiplierJ
a measure of mortality likelihood - juveniles
Definition: Rabbit.h:742
void AddNetworkConnection(LocalWarrenNewtorkEntry a_LWNE)
Adds a warren to the local network list.
Definition: Rabbit.h:590
virtual void GeneralEndocrineDisruptor(double)
Handles internal effects of endocrine distrupter pesticide exposure.
Definition: Rabbit.h:307
static double m_dispersalmortperm
The extra dispersal mortality per m travelled.
Definition: Rabbit.h:172
void SetDigging(int a_days)
Set number of days to dig.
Definition: Rabbit.h:250
TTypeOfRabbitState m_CurrentRState
Variable to record current behavioural state.
Definition: Rabbit.h:746
int GetRabbitProductionRecord(RabbitObjectTypes YoungType)
Get data about production of rabbits throughout year.
Definition: Rabbit.h:584
int m_NoBurrows
Records the maintenence restricted current carrying capacity (burrow number)
Definition: Rabbit.h:714
static double m_MaxKitsNo
The maximum number of kits.
Definition: Rabbit.h:501
TTypeOfRabbitState GetCurrentRState()
Definition: Rabbit.h:210
int GetThisYears1yrOldFemales()
Returns the number of 1yr old females.
Definition: Rabbit.h:666
virtual void EndStep(void)
The EndStep is the third &#39;part&#39; of the timestep that an animal can behave in. It is called once per t...
Definition: Rabbit.h:272
int GetTotalOffspring()
Definition: Rabbit.h:464
Rabbit_Warren * m_myWarren
True if currently mated.
Definition: Rabbit.h:189
double Disease()
Supply the current disease mortality constant.
Definition: Rabbit.h:638
int m_MyOffspring
The total number of kits born to her.
Definition: Rabbit.h:503
int GetForageArea(void)
Returns the total area of permanent forage.
Definition: Rabbit.h:766
double m_BigFemaleRabbitsR
Records the number of big female rabbits divided by m_CarryingCapacityR2.
Definition: Rabbit.h:710
RabbitObjectTypes GetRabbitType(void)
Get rabbit type.
Definition: Rabbit.h:218
int m_maintenence
Warren maintenence score - if not max then houseing capacity is reduced.
Definition: Rabbit.h:702
void OnMumDead(void)
Signals death of mum.
Definition: Rabbit.h:280
double m_pesticide_burden
State variable used to hold the current body-burden of pesticide.
Definition: Rabbit.h:203
vector< int > m_AnnualLitters
The number of litters produced.
Definition: Rabbit.h:507
int GetAge(void)
Get age method.
Definition: Rabbit.h:222
double m_forage
Definition: Rabbit.h:125
double m_CarryingCapacityR2
Records the max number of rabbits possible here divided by 2.
Definition: Rabbit.h:708
double m_mortalitymultiplierA
a measure of mortality likelihood - adults
Definition: Rabbit.h:740
void SetMinKits(double a_num)
Definition: Rabbit.h:462
TTypesOfRabbitHabitat m_torh
Definition: Rabbit.h:127
int m_MyTotalLitters
The number of litters produced.
Definition: Rabbit.h:505
double GetThisYearsBreedersAv()
Returns the number of females breeding this year.
Definition: Rabbit.h:658
vector< LocalWarrenNewtorkEntry > m_LocalWarrenNetwork
List of local warrens and their accessibility from this warren.
Definition: Rabbit.h:750
double m_forageP
Records the amount of pesticde as a mean concentration per unit area forage.
Definition: Rabbit.h:736
double GetInvAvailableForage(void)
Returns the inverse of available forage realtive to rabbit numbers.
Definition: Rabbit.h:646
int m_BurrowsUnderConstruction
Records the burrows that are being dug.
Definition: Rabbit.h:718
void RabbitProductionRecord(RabbitObjectTypes YoungType, int kits)
Stores data about production of rabbits throughout year.
Definition: Rabbit.h:582
void OnFed(void)
Signals food arrived today.
Definition: Rabbit.h:276
int m_runningavCount
Keeps track of the number of breeding days.
Definition: Rabbit.h:758
void SetWarren(Rabbit_Warren *a_warren)
Set the warren pointer.
Definition: Rabbit.h:238
static double m_maxForageHeight
The maximum vegetation height assumed for forage potential.
Definition: Rabbit.h:541
bool m_haveBurrow
Flag to record burrow status.
Definition: Rabbit.h:185
TTypeOfRabbitState m_CurrentRState
Variable to record current behavioural state.
Definition: Rabbit.h:179
double m_foragearearatio
Records the amount of forage currently available in the warren area as a proportion of total forage a...
Definition: Rabbit.h:730
int m_foragearea
Variable holding the total potential forage area.
Definition: Rabbit.h:726
int GetCarryingCapacity()
Returns the carrying capacity in burrows.
Definition: Rabbit.h:578
bool m_pregnant
Flag to indicate pregnancy.
Definition: Rabbit.h:489
bool m_pesticideInfluenced1
Flag to indicate pesticide effects (e.g. can be used for endocrine distruptors with delayed effects u...
Definition: Rabbit.h:205
int m_TL_x
Stores original m_Location_x.
Definition: Rabbit.h:698
double GetDiseaseConstant(void)
Returns the warrens current disease constant.
Definition: Rabbit.h:580
double m_MyMortChance
Definition: Rabbit.h:183
bool GetHasBurrow(void)
Get burrow status.
Definition: Rabbit.h:242