![]() |
ALMaSS
1.2 (after EcoStack, March 2024)
The Animal, Landscape and Man Simulation System
|
Class for juvenile hares (after 5 weeks old, fully mobile) More...
#include <Hare_All.h>
Public Member Functions | |
void | BeginStep (void) override |
BeginStep for Hare_Juvenile. More... | |
void | Step (void) override |
Step for Hare_Juvenile. More... | |
void | EndStep (void) override |
BeginStep for Hare_Juvenile. More... | |
Hare_Juvenile (int p_x, int p_y, Landscape *p_L, THare_Population_Manager *p_PPM, double p_weight) | |
Constructor for the juvenile hare object. More... | |
void | ReInit (struct_Hare a_data) |
Juvenile object reinitiation. More... | |
void | Init (double p_weight) |
Object initiation. More... | |
~Hare_Juvenile () override | |
Destructor for the juvenile hare object. More... | |
void | ON_Dead () override |
![]() | |
THare (int p_x, int p_y, Landscape *p_L, THare_Population_Manager *p_PPM) | |
Constructor. More... | |
void | THareInit (int p_x, int p_y, THare_Population_Manager *p_PPM) |
Object Initiation. More... | |
~THare () override | |
Destructor. More... | |
double | GetWeight () |
double | GetTotalWeight () |
Provide the wet weight of the hare. More... | |
int | GetAge () |
Provide the age of the hare. More... | |
void | ON_MumDead (Hare_Female *a_Mum) |
Inform Mum that we are dead. More... | |
Hare_Female * | GetMum () |
Get the mother pointer. More... | |
double | GetRMR () |
Get todays RMR. More... | |
int | GetRefNum () |
Get the refnum for this hare. More... | |
void | loadVegPalatability (void) |
Loads static member m_vegPalatability with data. More... | |
![]() | |
TAnimal (int x, int y, Landscape *L) | |
The TAnimal constructor saving the x,y, location and the landscape pointer. More... | |
TAnimal (int x, int y) | |
The TAnimal constructor saving the x,y used if landscape is already set. More... | |
void | SetGuardMapIndex (int a_index_x, int a_index_y) |
Set the guard map index, this is used to avoid two animals operating in the same location when using multithread. More... | |
unsigned | SupplyFarmOwnerRef () const |
Get the current location farm ref if any. More... | |
AnimalPosition | SupplyPosition () const |
Returns the objects location and habitat type and veg type. More... | |
APoint | SupplyPoint () const |
Returns the objects location in ALMaSS coordinates. More... | |
int | SupplyPolygonRef () const |
Returns the polygon reference where the object is located. More... | |
TTypesOfLandscapeElement | SupplyPolygonType () const |
Returns the polygon type where the object is located. More... | |
int | Supply_m_Location_x () const |
Returns the ALMaSS x-coordinate. More... | |
int | Supply_m_Location_y () const |
Returns the ALMaSS y-coordinate. More... | |
int | SupplyGuardCellX () const |
Returns the x-index to the guard cell. More... | |
int | SupplyGuardCellY () const |
Returns the y-index to the guard cell. More... | |
int | SupplyAge () const |
Returns the animals age in days. More... | |
void | SetAge (int a_age) |
Sets the animals age in days. More... | |
virtual void | KillThis () |
Sets all parameters ready for object destruction. More... | |
virtual void | CopyMyself () |
Used to copy the object details to another in descendent classes. More... | |
void | SetX (const int a_x) |
Sets the x-coordinate. More... | |
void | SetY (const int a_y) |
Sets the y-coordinate. More... | |
virtual void | ReinitialiseObject (int a_x, int a_y, Landscape *a_l_ptr) |
virtual void | ReinitialiseObject (int a_x, int a_y) |
Used to re-use an object - must be implemented in descendent classes. More... | |
virtual int | WhatState () |
Returns the objects current state number. More... | |
virtual void | Dying () |
A wrapped for KillThis - ideally should not be used. More... | |
void | CheckManagement () |
Used to start a check for any management related effects at the objects current location. More... | |
void | CheckManagementXY (int a_x, int a_y) |
Used to start a check for any management related effects at x,y. More... | |
![]() | |
int | GetCurrentStateNo () const |
Returns the current state number. More... | |
void | SetCurrentStateNo (int a_num) |
Sets the current state number. More... | |
bool | GetStepDone () const |
Returns the step done indicator flag. More... | |
void | SetStepDone (bool a_bool) |
Sets the step done indicator flag. More... | |
void | ReinitialiseObjectBase () |
Used to initialise an object. More... | |
TALMaSSObject () | |
The constructor for TALMaSSObject. More... | |
virtual | ~TALMaSSObject ()=default |
The destructor for TALMaSSObject. More... | |
Protected Member Functions | |
virtual TTypeOfHareState | st_Developing () |
The development code for Hare_Juvenile. More... | |
TTypeOfHareState | st_Dispersal () override |
Juvenile Dispersal. More... | |
TTypeOfHareState | st_Foraging () |
Juvenile foraging. More... | |
void | st_NextStage () |
Maturation to Hare_Male or Hare_Female. More... | |
TTypeOfHareState | st_Resting () |
Juvenile Resting. More... | |
bool | ShouldMature () |
Test for maturation. More... | |
bool | WasPredated () override |
Test for mortality. More... | |
![]() | |
bool | Run (int a_dist, int a_direction) |
Run a distance in a direction. More... | |
void | EnergyBalance (TTypeOfActivity a_activity, int dist) |
Adjust energy balance for an activity. More... | |
void | TimeBudget (TTypeOfActivity a_activity, int dist) |
Adjust time budger for an activity. More... | |
void | st_Dying () |
Tidy up before removing the object on death. More... | |
virtual void | Running (int a_max_dist) |
Run. More... | |
void | Walking (int a_dist, int a_direction) |
Walking. More... | |
double | Forage (int &time) |
Foraging. More... | |
double | ForageP (int &time) |
Foraging but also incorporating pesticide exposure. More... | |
virtual void | InternalPesticideHandlingAndResponse () |
Handles internal effects of pesticide exposure. If any effects are needed this method must be re-implemented by descendent classes. More... | |
virtual void | GeneralEndocrineDisruptor (double) |
Handles internal effects of endocrine distrupter pesticide exposure. If any effects are needed this method must be re-implemented by descendent classes. More... | |
virtual void | GeneralOrganoPhosphate (double) |
Handles internal effects of organophosphate pesticide exposure. If any effects are needed this method must be re-implemented by descendent classes. More... | |
double | ForageSquare (int a_x, int a_y) |
Forage from an area. More... | |
double | ForageSquareP (int a_x, int a_y, double *a_pestexposure) |
Forage from an area and resturn pesticide exposure as well as food. More... | |
int | GetPegDistance () |
Get peg distance. More... | |
int | GetPegPull () |
Get attractive force of peg. More... | |
int | GetPegDirection () |
Get direction of peg. More... | |
void | MovePeg () |
Move the peg according to attraction forces. More... | |
bool | OnFarmEvent (FarmToDo event) override |
Do we require a response to a farm event. More... | |
![]() | |
void | CorrectWrapRound () |
Corrects wrap around co-ordinate problems. More... | |
Additional Inherited Members | |
![]() | |
static void | SetMum (Hare_Female *) |
Set the mother pointer. Reimplemented in Hare_Infant. More... | |
![]() | |
static void | SetSimulationWidth (int a_value) |
Sets the simulation width. More... | |
static void | SetSimulationHeight (int a_value) |
Sets the simulation height. More... | |
static void | SetDayInYear (int a_value) |
Sets the day in year attribute. More... | |
static void | SetOurLandscape (Landscape *a_value) |
Sets the landscape pointer. More... | |
static void | SetTempToday (double a_value) |
Sets the temperature today attribute. More... | |
![]() | |
static void | OnArrayBoundsError () |
Used for debugging only, tests basic object properties. More... | |
![]() | |
static double * | m_vegPalatability = nullptr |
Will hold and array of palatability for hare for each tov type. Most are 1, but unpalatable vegetation can be specified here. More... | |
![]() | |
TTypeOfHareState | m_CurrentHState |
Defines the current activity. More... | |
int | m_Age = 0 |
State variale - hare age. More... | |
Hare_Object | m_Type |
State variale - the type of hare. More... | |
double | m_weight = 0.0 |
State variale - hare weight g. More... | |
double | m_old_weight = 0.0 |
State variale - last hare weight. More... | |
Hare_Female * | m_MyMum = nullptr |
Pointer to the hare's mum. More... | |
THare_Population_Manager * | m_OurPopulationManager |
Pointer to the hare population manager. More... | |
int | m_Lifespan = 0 |
Physiolocal lifespan, assuming nothing else kills the hare (unlikely to reach this age) More... | |
int | m_ActivityTime = 0 |
Minutes of potential activity time per day. More... | |
int | m_StarvationDays = 0 |
State variable - the number of consecutive days in negative energy balance. More... | |
double | m_fatReserve = 0.0 |
State variable - the energy reserve of the hare. More... | |
double | m_TodaysEnergy = 0.0 |
State variable - the amount of energy available today, can be in deficit. More... | |
double | m_EnergyMax = 0.0 |
State variable - the amount of energy it is possible to eat as a multiplyer or RMR. More... | |
double | m_KJRunning = 0.0 |
KJ/m cost of running per kg hare. More... | |
double | m_KJWalking = 0.0 |
KJ/m cost of walking per kg hare. More... | |
double | m_KJForaging = 0.0 |
KJ/m cost of foraging per kg hare. More... | |
double | m_SpeedRunning = 0.0 |
m/min speed of running per kg hare More... | |
double | m_SpeedWalking = 0.0 |
m/min speed of walking per kg hare More... | |
double | m_foragingenergy = 0.0 |
Energy obtained from foraging/feeding. More... | |
int | m_peg_x = 0 |
peg x-coordinate More... | |
int | m_peg_y = 0 |
peg y-coordinate More... | |
int | m_RefNum = 0 |
Unique hare reference number, also functions as sex flag. More... | |
int | m_experiencedDensity = 0 |
State variable used in alternative density-dependent configurations. More... | |
int | m_lastYearsDensity = 0 |
State variable used in alternative density-dependent configurations. More... | |
int | m_ddindex = 0 |
State variable used in alternative density-dependent configurations. More... | |
int | m_expDensity [365] = {} |
State variable used in alternative density-dependent configurations. More... | |
int | m_DensitySum = 0 |
State variable used in alternative density-dependent configurations. More... | |
bool | m_IamSick = false |
flag for sickness - used in conjunction with disease configurations More... | |
double | m_pesticide_burden = 0.0 |
State variable used to hold the current body-burden of pesticide. More... | |
double | m_pesticidedegradationrate = 0.0 |
State variable used to hold the daily degredation rate of the pesticide in the body. More... | |
bool | m_pesticideInfluenced1 = false |
Flag to indicate pesticide effects (e.g. can be used for endocrine distruptors with delayed effects until birth). More... | |
![]() | |
int | m_Location_x |
The objects ALMaSS x coordinate. More... | |
int | m_Location_y |
The objects ALMaSS y coordinate. More... | |
int | m_guard_cell_x |
The index x to the guard cell. More... | |
int | m_guard_cell_y |
The index y to the guard cell. More... | |
int | m_AgeDays {0} |
To hold the age in days. More... | |
PesticideToxicity | m_my_pesticide |
![]() | |
int | m_CurrentStateNo |
The basic state number for all objects - '-1' indicates death. More... | |
bool | m_StepDone |
Indicates whether the iterative step code is done for this timestep. More... | |
![]() | |
static Landscape * | m_OurLandscape = nullptr |
A pointer to the landscape object shared with all TAnimal objects. More... | |
static int | m_SimulationWidth = 0 |
A static member for the simulation width because it is often used by descendent classes. More... | |
static int | m_SimulationHeight = 0 |
A static member for the simulation height because it is often used by descendent classes. More... | |
static double | m_TemperatureToday = 0.0 |
A holder for the temperature today shared with all TAnimal objects. More... | |
static int | m_DayInYear = 0 |
A holder for the day in year shared with all TAnimal objects. More... | |
Class for juvenile hares (after 5 weeks old, fully mobile)
Hare_Juvenile::Hare_Juvenile | ( | int | p_x, |
int | p_y, | ||
Landscape * | p_L, | ||
THare_Population_Manager * | p_PPM, | ||
double | p_weight | ||
) |
|
override |
|
overridevirtual |
BeginStep for Hare_Juvenile.
Resets the day's activity counter and checks for default mortalities and potentially extra mortalities. Calculates energy usage for movement based on todays weight
Reimplemented from THare.
Reimplemented in Hare_Female, and Hare_Male.
References cfg_hare_escape_dist, cfg_hare_proximity_alert, cfg_MaxEnergyIntakeScaler, TAnimal::CheckManagement(), g_rand_uni_fnc(), THare_Population_Manager::GetInterference(), THare_Population_Manager::GetKJperM(), THare::GetRMR(), THare_Population_Manager::GetTotalDensity(), THare::m_ActivityTime, TALMaSSObject::m_CurrentStateNo, THare::m_ddindex, THare::m_DensitySum, THare::m_EnergyMax, THare::m_expDensity, THare_Population_Manager::m_HareThresholdDD, THare_Population_Manager::m_JuvMortRate, THare::m_KJForaging, THare::m_KJRunning, THare::m_KJWalking, THare::m_lastYearsDensity, TAnimal::m_Location_x, TAnimal::m_Location_y, THare::m_old_weight, THare::m_OurPopulationManager, TALMaSSObject::m_StepDone, THare::m_weight, ON_Dead(), THare::Running(), CfgInt::value(), and CfgFloat::value().
|
overridevirtual |
BeginStep for Hare_Juvenile.
Just moves the homerange centre peg closer to where the hare has been active today
Reimplemented from THare.
Reimplemented in Hare_Female, and Hare_Male.
References cfg_hare_pesticideresponse_on, THare::InternalPesticideHandlingAndResponse(), THare::MovePeg(), and CfgBool::value().
void Hare_Juvenile::Init | ( | double | p_weight | ) |
Object initiation.
References hob_Juvenile, THare::m_Age, THare::m_Type, and THare::m_weight.
Referenced by Hare_Juvenile(), and ReInit().
|
overridevirtual |
Do the housekeeping necessary for removal of the object - in this case minimal.
Reimplemented from THare.
Reimplemented in Hare_Female, and Hare_Male.
References THare::m_CurrentHState, TALMaSSObject::m_CurrentStateNo, TALMaSSObject::m_StepDone, and tohs_DestroyObject.
Referenced by BeginStep(), and Step().
void Hare_Juvenile::ReInit | ( | struct_Hare | a_data | ) |
Juvenile object reinitiation.
References struct_Hare::HM, Init(), struct_Hare::L, TALMaSSObject::m_CurrentStateNo, TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, THare::THareInit(), struct_Hare::weight, struct_Hare::x, and struct_Hare::y.
|
protected |
Test for maturation.
This method will be used to determine whether the hare becomes sexually active - and therefore needs to become an adult hare.
References THare::m_Age, TAnimal::m_OurLandscape, and Landscape::SupplyDayInYear().
Referenced by st_Developing().
|
protectedvirtual |
The development code for Hare_Juvenile.
Tests for the onset of maturation. Also tests for minimum growth attainment if this is switched on - too low growth results in death.
Assumes that the fatReserve has been added to by st_Foraging from yesterday.
This is the last behaviour state called each day, so we can use this to sort out the energetics.
Reimplemented in Hare_Female, and Hare_Male.
References cfg_AdultMaxFat, cfg_juv_starve, cfg_juvenile_starvation_threshold, g_rand_uni_fnc(), THare_Population_Manager::GetGrowthEfficiencyF(), THare_Population_Manager::GetGrowthEfficiencyP(), THare_Population_Manager::GetMaxDailyGrowthEnergyF(), THare_Population_Manager::GetMaxDailyGrowthEnergyP(), THare::m_Age, THare::m_fatReserve, THare::m_OurPopulationManager, THare::m_StarvationDays, THare::m_TodaysEnergy, THare::m_weight, ShouldMature(), tohs_Dying, tohs_Foraging, tohs_NextStage, CfgInt::value(), and CfgFloat::value().
Referenced by Step().
|
overrideprotectedvirtual |
Juvenile Dispersal.
Makes a test of habitat quality (basically food) in 8 directions, then moves to the best one. This is basically a teleport move, so testing for barriers is not done. This will need to be added if it becomes a problem (e.g. hares appearing on islands they could not otherwise get too), however, this will also confer an extreme performance penalty!
Reimplemented from THare.
Reimplemented in Hare_Female.
References activity_Dispersal, THare_Population_Manager::AddHareDensity(), cfg_hare_max_dispersal, THare::EnergyBalance(), g_random_fnc(), THare_Population_Manager::GetAdultDensity(), Landscape::GetHareFoodQuality(), THare_Population_Manager::GetInterference(), TAnimal::m_guard_cell_x, TAnimal::m_guard_cell_y, TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, THare::m_OurPopulationManager, THare::m_Type, THare::m_vegPalatability, THare_Population_Manager::SubtractHareDensity(), Landscape::SupplyCropType(), Landscape::SupplyPolyRef(), THare::TimeBudget(), toc_None, tohs_Dying, tohs_Foraging, Population_Manager::UpdateGuardMap(), CfgInt::value(), THare::Walking(), and WasPredated().
Referenced by Hare_Female::st_Dispersal(), Step(), and Hare_Male::Step().
|
protected |
Juvenile foraging.
Given the time we have then we need to feed, which will return an energy value obtained.
References activity_Foraging, cfg_ForageRestingRatio, cfg_hare_pesticideresponse_on, cfg_JuvDDScale, THare::Forage(), THare::ForageP(), g_rand_uni_fnc(), THare_Population_Manager::GetInterference(), THare::m_ActivityTime, THare_Population_Manager::m_HareThresholdDD, THare::m_OurPopulationManager, THare::m_TodaysEnergy, THare::TimeBudget(), tohs_Dispersal, tohs_Resting, CfgFloat::value(), and CfgBool::value().
Referenced by Step().
|
protected |
Maturation to Hare_Male or Hare_Female.
This creates a Hare_Juvenile object via a call to create objects, then sets the flag for destruction of this object.
References THare_Population_Manager::CreateObjects(), struct_Hare::HM, THare::m_Age, THare::m_CurrentHState, TALMaSSObject::m_CurrentStateNo, TAnimal::m_Location_x, TAnimal::m_Location_y, TAnimal::m_OurLandscape, THare::m_OurPopulationManager, THare::m_RefNum, THare::m_weight, and tohs_DestroyObject.
Referenced by Step().
|
protected |
Juvenile Resting.
The hare spends some time resting (using time and a little energy)
References activity_Resting, THare::EnergyBalance(), THare::m_ActivityTime, THare::TimeBudget(), and tohs_Developing.
Referenced by Step().
|
overridevirtual |
Step for Hare_Juvenile.
As with all other ALMaSS animal objects, Step is where the primary state/transtion work is done
Reimplemented from THare.
Reimplemented in Hare_Female, and Hare_Male.
References cfg_hare_juvenile_predation, THare::m_CurrentHState, TALMaSSObject::m_CurrentStateNo, TAnimal::m_OurLandscape, TALMaSSObject::m_StepDone, ON_Dead(), st_Developing(), st_Dispersal(), st_Foraging(), st_NextStage(), st_Resting(), tohs_Developing, tohs_Dispersal, tohs_Dying, tohs_Foraging, tohs_InitialState, tohs_NextStage, tohs_Resting, CfgFloat::value(), and Landscape::Warn().
|
overrideprotectedvirtual |
Test for mortality.
Reimplemented from THare.
References g_rand_uni_fnc(), THare_Population_Manager::m_JuvMortRate, and THare::m_OurPopulationManager.
Referenced by Hare_Male::BeginStep(), Hare_Female::BeginStep(), and st_Dispersal().