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
FR_Grassland.h
Go to the documentation of this file.
1 
46 #ifndef FR_GRASSLAND_H
47 #define FR_GRASSLAND_H
48 
49 #define FR_G_SOW_YEAR a_field->m_user[1]
50 #define FR_G_CUT a_field->m_user[2]
51 #define FR_G_CUT_ONLY a_field->m_user[3]
52 #define FR_G_GRAZE_ONLY a_field->m_user[4]
53 #define FR_G_CUT_GRAZE a_field->m_user[5]
54 
55 
56 #define FR_G_BASE 190700
57 
66 typedef enum {
67  fr_g_start = 1, // Compulsory, must always be 1 (one).
97 
98 
107 class FR_Grassland : public Crop
108 {
109 public:
110  virtual bool Do(Farm* a_farm, LE* a_field, FarmEvent* a_ev);
111  FR_Grassland(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape* a_L) : Crop(a_tov, a_toc, a_L)
112  {
113  // When we start it off, the first possible date for a farm operation is 1st October
114  // This information is used by other crops when they decide how much post processing of
115  // the management is allowed after harvest before the next crop starts.
116  m_first_date = g_date->DayInYear(1, 12);
118  }
120  const int elements = 2 + (fr_g_foobar - FR_G_BASE);
122 
123  FarmManagementCategory catlist[elements] =
124  {
125  fmc_Others, // zero element unused but must be here
126  fmc_Others, //fr_g_start = 1, // Compulsory, must always be 1 (one).
127  fmc_Others, //fr_g_sleep_all_day = FR_G_BASE,
128  fmc_Fertilizer, //fr_g_slurry1,
129  fmc_Cultivation, // fr_g_winter_plough,
130  fmc_Fertilizer, //fr_g_n_mineral1,
131  fmc_Others, //fr_g_preseed_sow,
132  fmc_Herbicide, //fr_g_herbicide,
133  fmc_Cutting, //fr_g_cutting1,
134  fmc_Grazing, //fr_g_grazing,
135  fmc_Grazing, //fr_g_cattle_is_out
136  fmc_Fertilizer, //fr_g_slurry2,
137  fmc_Fertilizer, //fr_g_n_mineral2,
138  fmc_Cutting, //fr_g_cutting2,
139  fmc_Fertilizer, //fr_g_slurry3,
140  fmc_Fertilizer, //fr_g_npk1
141  fmc_Cutting, //fr_g_cutting3,
142  fmc_Fertilizer, //fr_g_slurry4,
143  fmc_Fertilizer, //fr_g_npk2,
144  fmc_Cutting, // fr_g_cutting4,
145  fmc_Fertilizer, //fr_g_slurry5,
146  fmc_Fertilizer, //fr_g_npk3,
147  fmc_Cutting, //fr_g_cutting5,
148  fmc_Others, //fr_g_sleep_cg,
149  fmc_Others, //fr_g_sleep_c,
150  fmc_Others, //fr_g_sleep_g,
151  fmc_Cutting, //fr_g_cutting_ny,
152  fmc_Fertilizer, //fr_g_slurry6,
153  fmc_Watering, //fr_g_water,
154 
155  // no foobar entry
156 
157  };
158  // Iterate over the catlist elements and copy them to vector
159  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
160 
161  }
162 };
163 #endif // FR_GRASSLAND_H
164 
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
cfg_greg_app_prop
CfgFloat cfg_greg_app_prop
FR_Grassland::Do
virtual bool Do(Farm *a_farm, LE *a_field, FarmEvent *a_ev)
The one and only method for a crop management plan. All farm actions go through here.
Definition: FR_Grassland.cpp:98
FarmEvent::m_forcespring
bool m_forcespring
Definition: Farm.h:392
fr_g_cutting2
Definition: FR_Grassland.h:79
FR_G_SOW_YEAR
#define FR_G_SOW_YEAR
Definition: FR_Grassland.h:49
cfg_pest_product_amounts
CfgArray_Double cfg_pest_product_amounts
Amount of pesticide applied in grams of active substance per hectare for each of the 10 pesticides.
Farm::HerbicideTreat
virtual bool HerbicideTreat(LE *a_field, double a_user, int a_days)
Apply herbicide to a_field.
Definition: FarmFuncs.cpp:2025
cfg_fungi_app_prop2
CfgFloat cfg_fungi_app_prop2
FR_Grassland::FR_Grassland
FR_Grassland(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: FR_Grassland.h:111
fr_g_cutting_ny
Definition: FR_Grassland.h:92
fr_g_npk2
Definition: FR_Grassland.h:84
cfg_ins_app_prop1
CfgFloat cfg_ins_app_prop1
fr_g_sleep_g
Definition: FR_Grassland.h:91
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
fr_g_slurry3
Definition: FR_Grassland.h:80
fr_g_slurry5
Definition: FR_Grassland.h:86
cfg_GP_InsecticideMonth
CfgInt cfg_GP_InsecticideMonth
FarmEvent
A struct to hold the information required to trigger a farm event.
Definition: Farm.h:372
Farm::CattleIsOut
virtual bool CattleIsOut(LE *a_field, double a_user, int a_days, int a_max)
Generate a 'cattle_out' event for every day the cattle are on a_field.
Definition: FarmFuncs.cpp:2470
LE::ClearManagementActionSum
void ClearManagementActionSum()
clears the management action counters
Definition: Elements.h:247
Farm::FP_NPK
virtual bool FP_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer, on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:645
Farm::CutToSilage
virtual bool CutToSilage(LE *a_field, double a_user, int a_days)
Cut vegetation for silage on a_field.
Definition: FarmFuncs.cpp:1644
Farm::DoIt
bool DoIt(double a_probability)
Return chance out of 0 to 100.
Definition: Farm.cpp:856
Calendar::GetYearNumber
int GetYearNumber(void)
Definition: Calendar.h:72
l_pest_insecticide_amount
CfgFloat l_pest_insecticide_amount
fr_g_grazing
Definition: FR_Grassland.h:75
FR_Grassland::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: FR_Grassland.h:119
fr_g_cutting3
Definition: FR_Grassland.h:82
FR_G_GRAZE_ONLY
#define FR_G_GRAZE_ONLY
Definition: FR_Grassland.h:52
Farm::DoIt_prob
bool DoIt_prob(double a_probability)
Return chance out of 0 to 1.
Definition: Farm.cpp:864
fr_g_n_mineral1
Definition: FR_Grassland.h:71
g_date
class Calendar * g_date
Definition: Calendar.cpp:37
fmc_Herbicide
Definition: LandscapeFarmingEnums.h:1006
cfg_herbi_app_prop
CfgFloat cfg_herbi_app_prop
cfg_FR_Grassland_SkScrapes
CfgBool cfg_FR_Grassland_SkScrapes("FR_CROP_GP_SK_SCRAPES", CFG_CUSTOM, false)
fr_g_winter_plough
Definition: FR_Grassland.h:70
Crop::m_base_elements_no
int m_base_elements_no
Definition: Farm.h:505
fr_g_herbicide
Definition: FR_Grassland.h:73
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
fr_g_foobar
Definition: FR_Grassland.h:95
Crop
The base class for all crops.
Definition: Farm.h:495
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: Farm.cpp:747
fr_g_sleep_c
Definition: FR_Grassland.h:90
fr_g_npk1
Definition: FR_Grassland.h:81
FR_G_CUT_GRAZE
#define FR_G_CUT_GRAZE
Definition: FR_Grassland.h:53
fmc_Cutting
Definition: LandscapeFarmingEnums.h:1009
Landscape
The landscape class containing all environmental and topographical data.
Definition: Landscape.h:142
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
fr_g_slurry4
Definition: FR_Grassland.h:83
FR_G_CUT
#define FR_G_CUT
Definition: FR_Grassland.h:50
Calendar::Date
long Date(void)
Definition: Calendar.h:57
cfg_pest_grassland_on
CfgBool cfg_pest_grassland_on
fr_g_slurry6
Definition: FR_Grassland.h:93
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
fr_g_preseed_sow
Definition: FR_Grassland.h:72
Farm::FP_N
virtual bool FP_N(LE *a_field, double a_user, int a_days)
Apply N fertilizer, on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:700
CfgBool
Bool configurator entry class.
Definition: Configurator.h:155
FR_Grassland_ToDo
FR_Grassland_ToDo
A flag used to indicate autumn ploughing status.
Definition: FR_Grassland.h:66
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
cfg_fungi_app_prop1
CfgFloat cfg_fungi_app_prop1
fr_g_n_mineral2
Definition: FR_Grassland.h:78
fmc_Watering
Definition: LandscapeFarmingEnums.h:1011
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
FR_G_CUT_ONLY
#define FR_G_CUT_ONLY
Definition: FR_Grassland.h:51
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
CfgArray_Double
Definition: Configurator.h:208
Crop::StartUpCrop
bool StartUpCrop(int a_spring, std::vector< std::vector< int >> a_flexdates, int a_todo)
Holds the translation between the farm operation enum for each cropand the farm management category a...
Definition: Farm.cpp:652
fr_g_cutting5
Definition: FR_Grassland.h:88
FR_Grassland
FR_Grassland class .
Definition: FR_Grassland.h:107
Crop::m_farm
Farm * m_farm
Definition: Farm.h:498
Crop::m_field
LE * m_field
Definition: Farm.h:499
fr_g_slurry1
Definition: FR_Grassland.h:69
fr_g_slurry2
Definition: FR_Grassland.h:77
Crop::m_ManagementCategories
vector< FarmManagementCategory > m_ManagementCategories
Holds the translation between the farm operation enum for each crop and the farm management category ...
Definition: Farm.h:530
Farm::PreseedingCultivatorSow
virtual bool PreseedingCultivatorSow(LE *a_field, double a_user, int a_days, double a_seed_coating_amount=-1, PlantProtectionProducts a_ppp=ppp_foobar)
Carry out preseeding cultivation together with sow on a_field (tilling and sowing set including culti...
Definition: FarmFuncs.cpp:325
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
Farm::FP_Slurry
virtual bool FP_Slurry(LE *a_field, double a_user, int a_days)
Apply slurry to a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:823
cfg_ins_app_prop2
CfgFloat cfg_ins_app_prop2
Farm::SleepAllDay
virtual bool SleepAllDay(LE *a_field, double a_user, int a_days)
Nothing to to today on a_field.
Definition: FarmFuncs.cpp:272
TTypesOfCrops
TTypesOfCrops
Definition: LandscapeFarmingEnums.h:781
LE
Definition: Elements.h:86
Farm::Water
virtual bool Water(LE *a_field, double a_user, int a_days)
Carry out a watering on a_field.
Definition: FarmFuncs.cpp:1330
Crop::m_last_date
int m_last_date
Definition: Farm.h:503
g_msg
MapErrorMsg * g_msg
Definition: MapErrorMsg.cpp:41
fr_g_npk3
Definition: FR_Grassland.h:87
fmc_Grazing
Definition: LandscapeFarmingEnums.h:1010
TTypesOfVegetation
TTypesOfVegetation
Values that represent the types of vegetation that are represented in ALMaSS.
Definition: LandscapeFarmingEnums.h:192
CfgInt
Integer configurator entry class.
Definition: Configurator.h:102
Farm
The base class for all farm types.
Definition: Farm.h:755
fr_g_cutting4
Definition: FR_Grassland.h:85
fr_g_start
Definition: FR_Grassland.h:67
CfgFloat
Double configurator entry class.
Definition: Configurator.h:126
Farm::WinterPlough
virtual bool WinterPlough(LE *a_field, double a_user, int a_days)
Carry out a ploughing event in the winter on a_field.
Definition: FarmFuncs.cpp:395
fr_g_water
Definition: FR_Grassland.h:94
CFG_CUSTOM
Definition: Configurator.h:70
fr_g_cutting1
Definition: FR_Grassland.h:74
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
fr_g_cattle_is_out
Definition: FR_Grassland.h:76
fr_g_sleep_cg
Definition: FR_Grassland.h:89
cfg_ins_app_prop3
CfgFloat cfg_ins_app_prop3
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
Farm::CattleOut
virtual bool CattleOut(LE *a_field, double a_user, int a_days)
Start a grazing event on a_field today.
Definition: FarmFuncs.cpp:2368
FR_G_BASE
#define FR_G_BASE
Definition: FR_Grassland.h:56
WARN_BUG
Definition: MapErrorMsg.h:34
cfg_GP_InsecticideDay
CfgInt cfg_GP_InsecticideDay
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
fr_g_sleep_all_day
Definition: FR_Grassland.h:68