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
NLCarrots.h
Go to the documentation of this file.
1 
16 //
17 // NLCarrots.h
18 //
19 
20 
21 #ifndef NLCARROTS_H
22 #define NLCARROTS_H
23 
24 #define NLCARROTS_BASE 20600
25 
28 #define NL_CA_WINTER_PLOUGH a_field->m_user[1]
29 #define NL_CA_HERBI1 a_field->m_user[2]
30 #define NL_CA_HERBI2 a_field->m_user[3]
31 #define NL_CA_FUNGI1 a_field->m_user[4]
32 #define NL_CA_FUNGI2 a_field->m_user[5]
33 
39 typedef enum {
40  nl_ca_start = 1, // Compulsory, must always be 1 (one).
61 
62 
71 class NLCarrots: public Crop
72 {
73  public:
74  virtual bool Do( Farm *a_farm, LE *a_field, FarmEvent *a_ev );
75  NLCarrots(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape* a_L) : Crop(a_tov, a_toc, a_L)
76  {
77  // When we start it off, the first possible date for a farm operation is 20th October
78  // This information is used by other crops when they decide how much post processing of
79  // the management is allowed after harvest before the next crop starts.
80  m_first_date=g_date->DayInYear( 1,12 );
81  m_forcespringpossible = true;
83  }
85  const int elements = 2 + (nl_ca_foobar - NLCARROTS_BASE);
87 
88  FarmManagementCategory catlist[elements] =
89  {
90  fmc_Others, // zero element unused but must be here
91  fmc_Others,//nl_ca_start = 1, // Compulsory, must always be 1 (one).
92  fmc_Others,//nl_ca_sleep_all_day = NLCARROTS_BASE,
93  fmc_Cultivation,//nl_ca_spring_plough_sandy,
94  fmc_Cultivation,//nl_ca_winter_plough_clay,
95  fmc_Cultivation,//nl_ca_winter_deep_harrow_clay,
96  fmc_Fertilizer,//nl_ca_ferti_p1,
97  fmc_Fertilizer,//nl_ca_ferti_s1,
98  fmc_Cultivation,//nl_ca_preseeding_cultivator,
99  fmc_Others,//nl_ca_bed_forming,
100  fmc_Others,//nl_ca_spring_sow,
101  fmc_Fertilizer,//nl_ca_ferti_p2,
102  fmc_Fertilizer,//nl_ca_ferti_s2,
103  fmc_Herbicide,//nl_ca_herbicide1,
104  fmc_Herbicide,//nl_ca_herbicide2,
105  fmc_Herbicide,//nl_ca_herbicide3,
106  fmc_Fungicide,//nl_ca_fungicide1,
107  fmc_Fungicide,//nl_ca_fungicide2,
108  fmc_Fungicide,//nl_ca_fungicide3,
109  fmc_Harvest//nl_ca_harvest,
110  };
111  // Iterate over the catlist elements and copy them to vector
112  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
113 
114  }
115 };
116 
117 #endif // NLCARROTS_H
118 
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
NLCARROTS_BASE
#define NLCARROTS_BASE
Definition: NLCarrots.h:24
FarmEvent::m_forcespring
bool m_forcespring
Definition: Farm.h:392
Farm::PreseedingCultivator
virtual bool PreseedingCultivator(LE *a_field, double a_user, int a_days)
Carry out preseeding cultivation on a_field (tilling set including cultivator and string roller to co...
Definition: FarmFuncs.cpp:312
Farm::SpringPlough
virtual bool SpringPlough(LE *a_field, double a_user, int a_days)
Carry out a ploughing event in the spring on a_field.
Definition: FarmFuncs.cpp:421
Farm::HerbicideTreat
virtual bool HerbicideTreat(LE *a_field, double a_user, int a_days)
Apply herbicide to a_field.
Definition: FarmFuncs.cpp:2025
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: Farm.h:961
nl_ca_ferti_p1
Definition: NLCarrots.h:45
Farm::Harvest
virtual bool Harvest(LE *a_field, double a_user, int a_days)
Carry out a harvest on a_field.
Definition: FarmFuncs.cpp:1364
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
Farm::StubbleCultivatorHeavy
virtual bool StubbleCultivatorHeavy(LE *a_field, double a_user, int a_days)
Carry out a stubble cultivation event on a_field. This is non-inversion type of cultivation which can...
Definition: FarmFuncs.cpp:245
NL_CA_WINTER_PLOUGH
#define NL_CA_WINTER_PLOUGH
A flag used to indicate autumn ploughing status.
Definition: NLCarrots.h:28
nl_ca_fungicide3
Definition: NLCarrots.h:57
FarmEvent
A struct to hold the information required to trigger a farm event.
Definition: Farm.h:372
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
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.
nl_ca_spring_sow
Definition: NLCarrots.h:49
Farm::DoIt_prob
bool DoIt_prob(double a_probability)
Return chance out of 0 to 1.
Definition: Farm.cpp:864
g_date
class Calendar * g_date
Definition: Calendar.cpp:37
Farm::BedForming
virtual bool BedForming(LE *a_field, double a_user, int a_days)
Do bed forming up on a_field, probably of carrots.
Definition: FarmFuncs.cpp:1316
fmc_Herbicide
Definition: LandscapeFarmingEnums.h:1006
l_pest_insecticide_amount
CfgFloat l_pest_insecticide_amount
Farm::SpringSow
virtual bool SpringSow(LE *a_field, double a_user, int a_days, double a_seed_coating_amount=-1, PlantProtectionProducts a_ppp=ppp_foobar)
Carry out a sowing event in the spring on a_field.
Definition: FarmFuncs.cpp:501
nl_ca_ferti_s1
Definition: NLCarrots.h:46
nl_ca_herbicide2
Definition: NLCarrots.h:53
Crop::m_base_elements_no
int m_base_elements_no
Definition: Farm.h:505
nl_ca_harvest
Definition: NLCarrots.h:58
nl_ca_sleep_all_day
Definition: NLCarrots.h:41
nl_ca_start
Definition: NLCarrots.h:40
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
Farm::FA_NPK
virtual bool FA_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer to a_field owned by an stock farmer.
Definition: FarmFuncs.cpp:982
Farm::FungicideTreat
virtual bool FungicideTreat(LE *a_field, double a_user, int a_days)
Apply fungicide to a_field.
Definition: FarmFuncs.cpp:2101
Crop
The base class for all crops.
Definition: Farm.h:495
nl_ca_preseeding_cultivator
Definition: NLCarrots.h:47
Landscape
The landscape class containing all environmental and topographical data.
Definition: Landscape.h:142
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
NLCarrots::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: NLCarrots.h:84
cfg_CA_InsecticideDay
CfgInt cfg_CA_InsecticideDay
nl_ca_winter_deep_harrow_clay
Definition: NLCarrots.h:44
Calendar::Date
long Date(void)
Definition: Calendar.h:57
nl_ca_fungicide2
Definition: NLCarrots.h:56
nl_ca_herbicide1
Definition: NLCarrots.h:52
Farm::FP_AmmoniumSulphate
virtual bool FP_AmmoniumSulphate(LE *a_field, double a_user, int a_days)
Apply Ammonium Sulphate to a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:882
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
LE::GetSoilType
int GetSoilType()
Definition: Elements.h:302
CfgBool
Bool configurator entry class.
Definition: Configurator.h:155
NLCarrots::NLCarrots
NLCarrots(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: NLCarrots.h:75
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
NL_CA_HERBI2
#define NL_CA_HERBI2
Definition: NLCarrots.h:30
nl_ca_ferti_s2
Definition: NLCarrots.h:51
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
NL_CA_FUNGI1
#define NL_CA_FUNGI1
Definition: NLCarrots.h:31
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
Crop::m_farm
Farm * m_farm
Definition: Farm.h:498
Crop::m_field
LE * m_field
Definition: Farm.h:499
nl_ca_spring_plough_sandy
Definition: NLCarrots.h:42
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
NLCarrotsToDo
NLCarrotsToDo
Definition: NLCarrots.h:39
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
LE::GetGreenBiomass
virtual double GetGreenBiomass(void)
Definition: Elements.h:160
TTypesOfCrops
TTypesOfCrops
Definition: LandscapeFarmingEnums.h:781
NL_CA_HERBI1
#define NL_CA_HERBI1
Definition: NLCarrots.h:29
nl_ca_fungicide1
Definition: NLCarrots.h:55
LE
Definition: Elements.h:86
nl_ca_winter_plough_clay
Definition: NLCarrots.h:43
Crop::m_last_date
int m_last_date
Definition: Farm.h:503
g_msg
MapErrorMsg * g_msg
Definition: MapErrorMsg.cpp:41
nl_ca_foobar
Definition: NLCarrots.h:59
cfg_CA_InsecticideMonth
CfgInt cfg_CA_InsecticideMonth
Farm::FA_AmmoniumSulphate
virtual bool FA_AmmoniumSulphate(LE *a_field, double a_user, int a_days)
Apply ammonium sulphate to a_field owned by an stock farmer.
Definition: FarmFuncs.cpp:1081
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
nl_ca_bed_forming
Definition: NLCarrots.h:48
CfgFloat
Double configurator entry class.
Definition: Configurator.h:126
fmc_Harvest
Definition: LandscapeFarmingEnums.h:1012
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
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
cfg_pest_carrots_on
CfgBool cfg_pest_carrots_on
Turn on pesticides for carrots.
nl_ca_herbicide3
Definition: NLCarrots.h:54
NLCarrots
NLCarrots class .
Definition: NLCarrots.h:71
NL_CA_FUNGI2
#define NL_CA_FUNGI2
Definition: NLCarrots.h:32
Crop::m_forcespringpossible
bool m_forcespringpossible
Used to signal that the crop can be forced to start in spring.
Definition: Farm.h:508
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
nl_ca_ferti_p2
Definition: NLCarrots.h:50
WARN_BUG
Definition: MapErrorMsg.h:34
fmc_Fungicide
Definition: LandscapeFarmingEnums.h:1007
NLCarrots::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: NLCarrots.cpp:64
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
Crop::SimpleEvent_
void SimpleEvent_(long a_date, int a_todo, bool a_lock, Farm *a_farm, LE *a_field)
Adds an event to this crop management without relying on member variables.
Definition: Farm.cpp:751
tov_NLCarrots
Definition: LandscapeFarmingEnums.h:252