Loading [MathJax]/extensions/ams.js
ALMaSS  1.2 (after EcoStack, March 2024)
The Animal, Landscape and Man Simulation System
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
OsmiaParasitoidSubPopulation Class Reference

#include <Osmia_Population_Manager.h>

Public Member Functions

 OsmiaParasitoidSubPopulation (double a_dispersalfraction, double a_startno, int a_x, int a_y, int a_wide, int a_high, OsmiaParasitoid_Population_Manager *a_popman)
 
 ~OsmiaParasitoidSubPopulation ()
 
void Add (double a_change)
 
void Remove (double a_change)
 
double GetSubPopnSize ()
 
void DailyMortality ()
 Removes parasitoids killed by daily mortality. More...
 
void Dispersal ()
 Moves parasitoids that move by dispersal. More...
 
void Reproduce ()
 Carries out any reproduction possible. More...
 
virtual void DoFirst ()
 
void SetThisMonth (int a_month)
 
void SetMortalities (array< double, 12 > a_morts)
 

Protected Attributes

double m_NoParasitoids
 The total number of parasitoids in this population. More...
 
double m_DiffusionRate
 The time-step related total dispersal loss. More...
 
double m_DiffusionConstant
 The distance related dispersal loss constants. More...
 
int m_CellIndexArray [8]
 The index of the surrounding cells, a speed optimisation. More...
 
int m_x
 cell_index x More...
 
int m_y
 cell_index y More...
 
OsmiaParasitoid_Population_Managerm_OurPopulationManager
 A pointer to the owning population manager. More...
 

Static Protected Attributes

static array< double, 12 > m_MortalityPerMonth = { 0,0,0,0,0,0,0,0,0,0,0,0 }
 Daily mortality rates each month. More...
 
static int m_ThisMonth = -1
 records the month (optimsation) More...
 

Constructor & Destructor Documentation

◆ OsmiaParasitoidSubPopulation()

OsmiaParasitoidSubPopulation::OsmiaParasitoidSubPopulation ( double  a_dispersalfraction,
double  a_startno,
int  a_x,
int  a_y,
int  a_wide,
int  a_high,
OsmiaParasitoid_Population_Manager a_popman 
)

Calculate neighbour cells for dispersal. There will be 8 cells for dispersal We need also to consider the bounds for wrap around m_CellIndexArray is an array containing numbers which represent the cell position in a spatial array (1 dimension representing the matrix). The actual cells are stored in the population manager for the parasitoids.

Calculate the diffusion rates. This is done per row by dividing the total diffusion rate by the number of rows, then dividing out result by the number of squares in the row. Currently we assume dispersal only to the next square (8 round this current population)

754 {
755  m_NoParasitoids = a_startno;
756  m_x = a_x;
757  m_y = a_y;
758  m_OurPopulationManager = a_popman;
759  m_DiffusionRate = a_dispersalfraction;
760 
768  int count = 0;
769  int dx = -1;
770  int dy = 0;
771  int dxx = 1;
772  int dyy = 0;
773  for (int x = dx; x <= dxx; x++)
774  {
775  int actualx = m_x + dx;
776  if (actualx < 0) actualx += a_wide;
777  if (actualx >= a_wide) actualx -= a_wide;
778  int actualy1 = m_y - dx;
779  if (actualy1 < 0) actualy1 += a_high;
780  int actualy2 = m_y + dx;
781  if (actualy2 > a_high) actualy2 -= a_high;
782  m_CellIndexArray[count] = actualx + actualy1 * a_wide;
783  count++;
784  m_CellIndexArray[count] = actualx + actualy2 * a_wide;
785  count++;
786  // Now do the y
787  }
788  int actualx1 = m_x + dx;
789  int actualx2 = m_x - dx;
790  if (actualx1 < 0) actualx1 += a_wide;
791  if (actualx2 >= a_wide) actualx2 -= a_wide;
792  for (int y = dy; y <= dyy; y++)
793  {
794  int actualy = m_y + dy;
795  if (actualy < 0) actualy += a_high;
796  if (actualy > a_high) actualy -= a_high;
797  m_CellIndexArray[count] = actualx1 + actualy * a_wide;
798  count++;
799  m_CellIndexArray[count] = actualx2 + actualy * a_wide;
800  count++;
801  }
802 
809 }

References count, m_CellIndexArray, m_DiffusionConstant, m_DiffusionRate, m_NoParasitoids, m_OurPopulationManager, m_x, and m_y.

◆ ~OsmiaParasitoidSubPopulation()

OsmiaParasitoidSubPopulation::~OsmiaParasitoidSubPopulation ( )
847 {
848 }

Member Function Documentation

◆ Add()

void OsmiaParasitoidSubPopulation::Add ( double  a_change)
inline
95 { m_NoParasitoids += a_change; }

References m_NoParasitoids.

◆ DailyMortality()

void OsmiaParasitoidSubPopulation::DailyMortality ( )

Removes parasitoids killed by daily mortality.

Applies a daily probability of mortality for adults. This is provided as a monthly figure, which allows some seaonality to be included. It is a static member so only one copy exists per subpopulation type.

References m_MortalityPerMonth, m_NoParasitoids, and m_ThisMonth.

Referenced by DoFirst().

◆ Dispersal()

void OsmiaParasitoidSubPopulation::Dispersal ( )

Moves parasitoids that move by dispersal.

Calculates the number of dispersers per cell to the 8 surrounding cells and removes them from the present cell

821 {
825  int count = 0;
826  double dispersers = m_NoParasitoids * m_DiffusionConstant;
827  m_NoParasitoids-=dispersers;
828  double disperserspercell = dispersers / 8.0;
829  m_NoParasitoids -= dispersers;
830  for (int c = 0; c < 8; c++)
831  {
833  }
834 }

References OsmiaParasitoid_Population_Manager::AddDispersers(), count, m_CellIndexArray, m_DiffusionConstant, m_NoParasitoids, and m_OurPopulationManager.

Referenced by DoFirst().

◆ DoFirst()

virtual void OsmiaParasitoidSubPopulation::DoFirst ( void  )
inlinevirtual

Removes parasitoids killed by daily mortality

Moves parasitoids that move by dispersal

Carries out any reproduction possible

104  {
106  DailyMortality();
108  Dispersal();
110  Reproduce();
111  }

References DailyMortality(), Dispersal(), and Reproduce().

◆ GetSubPopnSize()

double OsmiaParasitoidSubPopulation::GetSubPopnSize ( )
inline
97 { return m_NoParasitoids; }

References m_NoParasitoids.

◆ Remove()

void OsmiaParasitoidSubPopulation::Remove ( double  a_change)
inline
96 { m_NoParasitoids -= a_change; }

References m_NoParasitoids.

◆ Reproduce()

void OsmiaParasitoidSubPopulation::Reproduce ( )

Carries out any reproduction possible.

This links the chance of a cell being parasitised to the local population size. The probability of attack depends on factors under control of the bee therefore currently there is nothing needed here. When an egg is produced the local conditions will determine its fate wrt parasitoids. Therefore parasitoid attack density related probability curves are a property of the bee.

837 {
844 }

Referenced by DoFirst().

◆ SetMortalities()

void OsmiaParasitoidSubPopulation::SetMortalities ( array< double, 12 >  a_morts)
inline
113  {
114  m_MortalityPerMonth = a_morts;
115  }

References m_MortalityPerMonth.

◆ SetThisMonth()

void OsmiaParasitoidSubPopulation::SetThisMonth ( int  a_month)
inline
112 { m_ThisMonth = a_month; }

References m_ThisMonth.

Member Data Documentation

◆ m_CellIndexArray

int OsmiaParasitoidSubPopulation::m_CellIndexArray[8]
protected

The index of the surrounding cells, a speed optimisation.

Referenced by Dispersal(), and OsmiaParasitoidSubPopulation().

◆ m_DiffusionConstant

double OsmiaParasitoidSubPopulation::m_DiffusionConstant
protected

The distance related dispersal loss constants.

Referenced by Dispersal(), and OsmiaParasitoidSubPopulation().

◆ m_DiffusionRate

double OsmiaParasitoidSubPopulation::m_DiffusionRate
protected

The time-step related total dispersal loss.

Referenced by OsmiaParasitoidSubPopulation().

◆ m_MortalityPerMonth

array< double, 12 > OsmiaParasitoidSubPopulation::m_MortalityPerMonth = { 0,0,0,0,0,0,0,0,0,0,0,0 }
staticprotected

Daily mortality rates each month.

Referenced by DailyMortality(), and SetMortalities().

◆ m_NoParasitoids

double OsmiaParasitoidSubPopulation::m_NoParasitoids
protected

The total number of parasitoids in this population.

Referenced by Add(), DailyMortality(), Dispersal(), GetSubPopnSize(), OsmiaParasitoidSubPopulation(), and Remove().

◆ m_OurPopulationManager

OsmiaParasitoid_Population_Manager* OsmiaParasitoidSubPopulation::m_OurPopulationManager
protected

A pointer to the owning population manager.

Referenced by Dispersal(), and OsmiaParasitoidSubPopulation().

◆ m_ThisMonth

int OsmiaParasitoidSubPopulation::m_ThisMonth = -1
staticprotected

records the month (optimsation)

Referenced by DailyMortality(), and SetThisMonth().

◆ m_x

int OsmiaParasitoidSubPopulation::m_x
protected

cell_index x

Referenced by OsmiaParasitoidSubPopulation().

◆ m_y

int OsmiaParasitoidSubPopulation::m_y
protected

cell_index y

Referenced by OsmiaParasitoidSubPopulation().


The documentation for this class was generated from the following files:
OsmiaParasitoidSubPopulation::m_x
int m_x
cell_index x
Definition: Osmia_Population_Manager.h:82
OsmiaParasitoidSubPopulation::DailyMortality
void DailyMortality()
Removes parasitoids killed by daily mortality.
Definition: Osmia_Population_Manager.cpp:811
OsmiaParasitoidSubPopulation::m_y
int m_y
cell_index y
Definition: Osmia_Population_Manager.h:84
OsmiaParasitoidSubPopulation::m_DiffusionConstant
double m_DiffusionConstant
The distance related dispersal loss constants.
Definition: Osmia_Population_Manager.h:78
OsmiaParasitoidSubPopulation::Dispersal
void Dispersal()
Moves parasitoids that move by dispersal.
Definition: Osmia_Population_Manager.cpp:820
OsmiaParasitoidSubPopulation::m_CellIndexArray
int m_CellIndexArray[8]
The index of the surrounding cells, a speed optimisation.
Definition: Osmia_Population_Manager.h:80
OsmiaParasitoidSubPopulation::Reproduce
void Reproduce()
Carries out any reproduction possible.
Definition: Osmia_Population_Manager.cpp:836
OsmiaParasitoid_Population_Manager::AddDispersers
void AddDispersers(int a_ref, double a_dispersers)
Definition: Osmia_Population_Manager.h:140
OsmiaParasitoidSubPopulation::m_ThisMonth
static int m_ThisMonth
records the month (optimsation)
Definition: Osmia_Population_Manager.h:90
OsmiaParasitoidSubPopulation::m_OurPopulationManager
OsmiaParasitoid_Population_Manager * m_OurPopulationManager
A pointer to the owning population manager.
Definition: Osmia_Population_Manager.h:86
OsmiaParasitoidSubPopulation::m_DiffusionRate
double m_DiffusionRate
The time-step related total dispersal loss.
Definition: Osmia_Population_Manager.h:76
OsmiaParasitoidSubPopulation::m_MortalityPerMonth
static array< double, 12 > m_MortalityPerMonth
Daily mortality rates each month.
Definition: Osmia_Population_Manager.h:88
OsmiaParasitoidSubPopulation::m_NoParasitoids
double m_NoParasitoids
The total number of parasitoids in this population.
Definition: Osmia_Population_Manager.h:74
count
Definition: SubPopulation.h:48