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
DE_Carrots Class Reference

DE_Carrots class
. More...

#include <DE_Carrots.h>

Inheritance diagram for DE_Carrots:
Crop

Public Member Functions

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. More...
 
 DE_Carrots (TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
 
void SetUpFarmCategoryInformation ()
 
- Public Member Functions inherited from Crop
virtual ~Crop ()
 
 Crop (TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
 
int GetFirstDate (void)
 
void ChooseNextCrop (int a_no_dates)
 Chooses the next crop to grow in a field. More...
 
int GetCropClassification ()
 
void SetCropClassification (int a_classification)
 
void GetCropType (TTypesOfCrops a_toc)
 
TTypesOfCrops GetCropType ()
 
FarmManagementCategory LookUpManagementCategory (int a_todo)
 
bool GetForceSpringOK ()
 

Additional Inherited Members

- Public Attributes inherited from Crop
TTypesOfVegetation m_tov
 
- Protected Member Functions inherited from Crop
void SimpleEvent (long a_date, int a_todo, bool a_lock)
 Adds an event to this crop management. More...
 
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. More...
 
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 associated with it More...
 
bool AphidDamage (LE *a_field)
 Compares aphid numbers per m2 with a threshold to return true if threshold is exceeded. More...
 
- Protected Attributes inherited from Crop
Farmm_farm
 
LEm_field
 
FarmEventm_ev
 
int m_first_date
 
int m_count
 
int m_last_date
 
int m_ddegstoharvest
 
int m_base_elements_no
 
Landscapem_OurLandscape
 
bool m_forcespringpossible = false
 Used to signal that the crop can be forced to start in spring. More...
 
TTypesOfCrops m_toc
 The Crop type in terms of the TTypesOfCrops list (smaller list than tov, no country designation) More...
 
int m_CropClassification
 Contains information on whether this is a winter crop, spring crop, or catch crop that straddles the year boundary (0,1,2) More...
 
vector< FarmManagementCategorym_ManagementCategories
 Holds the translation between the farm operation enum for each crop and the farm management category associated with it. More...
 
- Static Protected Attributes inherited from Crop
static int m_date_modifier = 0
 Holds a value that shifts test pesticide use by this many days in crops modified to use it. More...
 

Detailed Description

DE_Carrots class
.

See DE_Carrots.h::DECarrotsToDo for a complete list of all possible events triggered codes by the carrot management plan. When triggered these events are handled by Farm and are available as information for other objects such as animal and bird models.

Constructor & Destructor Documentation

◆ DE_Carrots()

DE_Carrots::DE_Carrots ( TTypesOfVegetation  a_tov,
TTypesOfCrops  a_toc,
Landscape a_L 
)
inline
104  : Crop(a_tov, a_toc, a_L)
105  {
106  // When we start it off, the first possible date for a farm operation is 1st October
107  // This information is used by other crops when they decide how much post processing of
108  // the management is allowed after harvest before the next crop starts.
109  m_first_date=g_date->DayInYear( 1,12 );
111  }

References Calendar::DayInYear(), g_date, Crop::m_first_date, and SetUpFarmCategoryInformation().

Member Function Documentation

◆ Do()

bool DE_Carrots::Do ( Farm a_farm,
LE a_field,
FarmEvent a_ev 
)
virtual

The one and only method for a crop management plan. All farm actions go through here.

Called every time something is done to the crop by the farmer in the first instance it is always called with m_ev->todo set to start, but susequently will be called whenever the farmer wants to carry out a new operation.
This method details all the management and relationships between operations necessary to grow and ALMaSS crop - in this case conventional carrot.

Reimplemented from Crop.

85 {
86 
87  /******************** This block can be added to the top of all Crop::Do methods ***********************************************/
88  m_farm = a_farm; // These assignments are necessary, not for this method but for related event calls
89  m_field = a_field;
90  m_ev = a_ev;
91  bool done = false; // The boolean value done indicates when we are totally finished with this plan (i.e. it is set to true).
92  bool flag = false;
93  int d1 = 0;
94  TTypesOfVegetation l_tov = tov_DECarrots; // The current type - change to match the crop you have
95 /**********************************************To Here *************************************************************************/
96 
97  // Depending what event has occured jump to the correct bit of code e.g. for ww_start jump to line 67 below
98  switch (m_ev->m_todo)
99  {
100  case de_car_start:
101  {
102 
103  // de_car_start just sets up all the starting conditions and reference dates that are needed to start a DE_CAR
104  DE_CAR_WINTER_PLOUGH = false;
105  DE_CAR_HERBI1 = false;
106  DE_CAR_FUNGI1 = false;
107  DE_CAR_FUNGI2 = false;
108 
110 
111  m_last_date = g_date->DayInYear(30, 9); // Should match the last flexdate below
112  //Create a 2d array of 1 plus the number of operations you use. Change only 4+1 to what you need in the line below
113  std::vector<std::vector<int>> flexdates(1 + 1, std::vector<int>(2, 0));
114  // Set up the date management stuff
115  // Start and stop dates for all events after harvest
116  flexdates[0][1] = g_date->DayInYear(30, 9); // last possible day of harvest - this is in effect day before the earliest date that a following crop can use
117 
118  flexdates[1][0] = -1; // This date will be moved back as far as necessary and potentially to flexdates 1 (start op 1)
119  flexdates[1][1] = g_date->DayInYear(30, 9); // This date will be moved back as far as necessary and potentially to flexdates 1 (end op 1)
120 
121  // Below if this is a spring crop use 365, otherwise set this to 0, second parameter is fixed, and the third is the start up operation in the first year
122  int isSpring = 0;
123  if (StartUpCrop(isSpring, flexdates, int(de_car_spring_sow))) break;
124 
125  // End single block date checking code. Please see next line comment as well.
126  // Reinit d1 to first possible starting date.
127  d1 = g_date->OldDays() + g_date->DayInYear(1, 10) + isSpring;
128  // OK, let's go.
129  // Here we queue up the first event which changes dependent on whether it is a forced spring sow or not
130  if (m_ev->m_forcespring) {
131  int day_num_shift = 365;
132  if (g_date->DayInYear() < 70) day_num_shift = 0;
133  if (m_field->GetSoilType() == 8) { // on sandy soils
134  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 3) + day_num_shift, de_car_spring_plough_sandy, false);
135  break;
136  }
137  else {
138  if (m_farm->IsStockFarmer()) //Stock Farmer
139  {
140  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 3) + day_num_shift, de_car_ferti_s1, false, m_farm, m_field);
141  }
142  else SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 3) + day_num_shift, de_car_ferti_p1, false, m_farm, m_field);
143  break;
144  }
145  }
147  break;
148  }
149  break;
150 
151  // This is the first real farm operation
152  case de_car_winter_plough_clay: // not on sandy soils
153  if (m_farm->DoIt_prob(0.80) && (m_field->GetSoilType() != 1 && m_field->GetSoilType() != 2 && m_field->GetSoilType() != 3 && m_field->GetSoilType() != 4))
154  {
155  if (m_ev->m_lock || m_farm->DoIt_prob(0.95))
156  {
157  if (!m_farm->WinterPlough(m_field, 0.0, g_date->DayInYear(1, 12) - g_date->DayInYear())) {
159  break;
160  }
161  else
162  {
163  DE_CAR_WINTER_PLOUGH = true;
164  if (m_farm->IsStockFarmer()) //Stock Farmer
165  {
167  }
168  else SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 3) + 365, de_car_ferti_p1, false, m_farm, m_field);
169  break;
170  }
171  }
173  break;
174  }
176  break;
180  break;
181  }
182  if (m_farm->IsStockFarmer()) //Stock Farmer
183  {
185  }
186  else SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 3) + 365, de_car_ferti_p1, false, m_farm, m_field);
187  break;
189  if (!m_farm->SpringPlough(m_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
191  break;
192  }
193  if (m_farm->IsStockFarmer()) //Stock Farmer
194  {
196  }
197  else SimpleEvent_(g_date->Date() + 7, de_car_ferti_p1, false, m_farm, m_field);
198  break;
199  case de_car_ferti_p1:
200  if (m_ev->m_lock || m_farm->DoIt_prob(0.95))
201  {
202  if (!m_farm->FP_NPK(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
204  break;
205  }
206  }
207  d1 = g_date->Date() + 1;
208  if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
209  d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
210  }
212  break;
213  case de_car_ferti_s1:
214  if (m_ev->m_lock || m_farm->DoIt_prob(0.95))
215  {
216  if (!m_farm->FA_NPK(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
218  break;
219  }
220  }
221  d1 = g_date->Date() + 1;
222  if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
223  d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
224  }
226  break;
228  if (!m_farm->PreseedingCultivator(m_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
230  break;
231  }
233  break;
234  case de_car_bed_forming:
235  if (!m_farm->BedForming(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
237  break;
238  }
240  break;
241  case de_car_spring_sow:
242  if (!m_farm->SpringSow(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
244  break;
245  }
246  // Here is a fork leading to four parallel events
247  SimpleEvent_(g_date->Date() + 3, de_car_herbicide1, false, m_farm, m_field); // Herbicide thread
248  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 7), de_car_fungicide1, false, m_farm, m_field); // Fungicide thread = MAIN THREAD
249  if (m_farm->IsStockFarmer()) //Stock Farmer
250  {
251  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 6), de_car_ferti_s2, false, m_farm, m_field); // Fertilizers thread
252  }
254  break;
255  case de_car_ferti_p2:
256  if (m_ev->m_lock || m_farm->DoIt_prob(0.80))
257  {
258  if (!m_farm->FP_AmmoniumSulphate(m_field, 0.0, g_date->DayInYear(30, 7) - g_date->DayInYear())) {
260  break;
261  }
262  }
263  // End of thread
264  break;
265  case de_car_ferti_s2:
266  if (m_ev->m_lock || m_farm->DoIt_prob(0.80))
267  {
268  if (!m_farm->FA_AmmoniumSulphate(m_field, 0.0, g_date->DayInYear(30, 7) - g_date->DayInYear())) {
270  break;
271  }
272  }
273  // End of thread
274  break;
275  case de_car_herbicide1: // The first of the pesticide managements.
276  // Here comes the herbicide thread
277  if (m_field->GetGreenBiomass() <= 0)
278  {
279  if (m_ev->m_lock || m_farm->DoIt_prob(0.80))
280  {
281  if (!m_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
283  break;
284  }
285  }
287  break;
288  }
290  break;
291  case de_car_herbicide2:
292  if (m_field->GetGreenBiomass() <= 0) {
294  }
295  else
296  {
297  if (m_ev->m_lock || (m_farm->DoIt_prob(0.8)))
298  {
299  if (!m_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(5, 6) - g_date->DayInYear())) {
301  break;
302  }
303  DE_CAR_HERBI1 = true;
304  }
306  break;
307  }
308  break;
309  case de_car_herbicide3:
310  if (m_ev->m_lock || (m_farm->DoIt_prob(0.75) && DE_CAR_HERBI1 == 1)) // 60% of all farmers
311  {
312  if (!m_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
314  break;
315  }
316  }
317  // End of thread
318  break;
319  case de_car_fungicide1:
320  // Here comes the fungicide thread
321  if (m_ev->m_lock || m_farm->DoIt_prob(0.80))
322  {
323  if (!m_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 7) - g_date->DayInYear())) {
325  break;
326  }
327  DE_CAR_FUNGI1 = true;
328  }
330  break;
331  case de_car_fungicide2:
332  if (a_ev->m_lock || (a_farm->DoIt_prob(1.00) && DE_CAR_FUNGI1 == 1))
333  {
334  if (!m_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 8) - g_date->DayInYear())) {
336  break;
337  }
338  DE_CAR_FUNGI2 = true;
339  }
341  break;
342  case de_car_fungicide3:
343  if (m_ev->m_lock || (m_farm->DoIt_prob(0.75) && DE_CAR_FUNGI2 == 2)) // 75% of the previous 80% = 60% of all farmers
344  {
345  if (!m_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
347  break;
348  }
349  }
351  break;
352  case de_car_harvest:
353  if (!m_farm->Harvest(m_field, 0.0, m_field->GetMDates(1, 0) - g_date->DayInYear())) {
355  break;
356  }
357  done = true;
358  // So we are done, and somwhere else the farmer will queue up the start event of the next crop
359  // END of MAIN THREAD
360  break;
361  default:
362  g_msg->Warn(WARN_BUG, "DE_Carrots::Do(): "
363  "Unknown event type! ", "");
364  exit(1);
365  }
366  return done;
367 }

References Farm::BedForming(), LE::ClearManagementActionSum(), Calendar::Date(), Calendar::DayInYear(), de_car_bed_forming, de_car_ferti_p1, de_car_ferti_p2, de_car_ferti_s1, de_car_ferti_s2, DE_CAR_FUNGI1, DE_CAR_FUNGI2, de_car_fungicide1, de_car_fungicide2, de_car_fungicide3, de_car_harvest, DE_CAR_HERBI1, de_car_herbicide1, de_car_herbicide2, de_car_herbicide3, de_car_preseeding_cultivator, de_car_spring_plough_sandy, de_car_spring_sow, de_car_start, de_car_winter_deep_harrow_clay, DE_CAR_WINTER_PLOUGH, de_car_winter_plough_clay, Farm::DoIt_prob(), Farm::FA_AmmoniumSulphate(), Farm::FA_NPK(), Farm::FP_AmmoniumSulphate(), Farm::FP_NPK(), Farm::FungicideTreat(), g_date, g_msg, LE::GetGreenBiomass(), LE::GetMDates(), LE::GetSoilType(), Farm::Harvest(), Farm::HerbicideTreat(), Farm::IsStockFarmer(), Crop::m_ev, Crop::m_farm, Crop::m_field, FarmEvent::m_forcespring, Crop::m_last_date, FarmEvent::m_lock, FarmEvent::m_todo, Calendar::OldDays(), Farm::PreseedingCultivator(), Crop::SimpleEvent(), Crop::SimpleEvent_(), Farm::SpringPlough(), Farm::SpringSow(), Crop::StartUpCrop(), Farm::StubbleCultivatorHeavy(), tov_DECarrots, MapErrorMsg::Warn(), WARN_BUG, and Farm::WinterPlough().

◆ SetUpFarmCategoryInformation()

void DE_Carrots::SetUpFarmCategoryInformation ( )
inline
112  {
113  const int elements = 2 + (de_car_foobar - DE_CAR_BASE);
115 
116  FarmManagementCategory catlist[elements] =
117  {
118  fmc_Others, // zero element unused but must be here
119  // ALL THE NECESSARY ENTRIES HERE
120  fmc_Others, // de_car_start = 1, // Compulsory, must always be 1 (one).
121  fmc_Others, // de_car_sleep_all_day
122  fmc_Cultivation, // de_car_spring_plough_sandy
123  fmc_Cultivation, // de_car_winter_plough_clay
124  fmc_Cultivation, // de_car_winter_deep_harrow_clay
125  fmc_Fertilizer, // de_car_ferti_p1
126  fmc_Fertilizer, // de_car_ferti_s1
127  fmc_Cultivation, // de_car_preseeding_cultivator
128  fmc_Cultivation, // de_car_bed_forming
129  fmc_Others, // de_car_spring_sow
130  fmc_Fertilizer, // de_car_ferti_p2
131  fmc_Fertilizer, // de_car_ferti_s2
132  fmc_Herbicide, // de_car_herbicide1
133  fmc_Herbicide, // de_car_herbicide2
134  fmc_Herbicide, // de_car_herbicide3
135  fmc_Fungicide, // de_car_fungicide1
136  fmc_Fungicide, // de_car_fungicide2
137  fmc_Fungicide, // de_car_fungicide3
138  fmc_Harvest, // de_car_harvest
139  // no foobar entry
140 
141  };
142  // Iterate over the catlist elements and copy them to vector
143  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
144 
145  }

References DE_CAR_BASE, de_car_foobar, fmc_Cultivation, fmc_Fertilizer, fmc_Fungicide, fmc_Harvest, fmc_Herbicide, fmc_Others, Crop::m_base_elements_no, and Crop::m_ManagementCategories.

Referenced by DE_Carrots().


The documentation for this class was generated from the following files:
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
FarmEvent::m_forcespring
bool m_forcespring
Definition: Farm.h:392
de_car_fungicide2
Definition: DE_Carrots.h:85
de_car_harvest
Definition: DE_Carrots.h:87
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
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
de_car_ferti_s1
Definition: DE_Carrots.h:75
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
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
de_car_winter_plough_clay
Definition: DE_Carrots.h:72
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
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
Crop::m_base_elements_no
int m_base_elements_no
Definition: Farm.h:505
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
de_car_fungicide3
Definition: DE_Carrots.h:86
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: Farm.cpp:747
DE_CAR_FUNGI1
#define DE_CAR_FUNGI1
Definition: DE_Carrots.h:60
de_car_spring_plough_sandy
Definition: DE_Carrots.h:71
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
de_car_herbicide2
Definition: DE_Carrots.h:82
DE_CAR_WINTER_PLOUGH
#define DE_CAR_WINTER_PLOUGH
Flags.
Definition: DE_Carrots.h:57
tov_DECarrots
Definition: LandscapeFarmingEnums.h:473
Calendar::Date
long Date(void)
Definition: Calendar.h:57
de_car_fungicide1
Definition: DE_Carrots.h:84
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
de_car_foobar
Definition: DE_Carrots.h:88
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
LE::GetSoilType
int GetSoilType()
Definition: Elements.h:302
de_car_herbicide3
Definition: DE_Carrots.h:83
DE_CAR_HERBI1
#define DE_CAR_HERBI1
Definition: DE_Carrots.h:58
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
de_car_bed_forming
Definition: DE_Carrots.h:77
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
de_car_ferti_s2
Definition: DE_Carrots.h:80
de_car_herbicide1
Definition: DE_Carrots.h:81
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
de_car_winter_deep_harrow_clay
Definition: DE_Carrots.h:73
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
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
LE::GetGreenBiomass
virtual double GetGreenBiomass(void)
Definition: Elements.h:160
Crop::m_last_date
int m_last_date
Definition: Farm.h:503
g_msg
MapErrorMsg * g_msg
Definition: MapErrorMsg.cpp:41
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
DE_CAR_BASE
#define DE_CAR_BASE
Definition: DE_Carrots.h:53
TTypesOfVegetation
TTypesOfVegetation
Values that represent the types of vegetation that are represented in ALMaSS.
Definition: LandscapeFarmingEnums.h:192
de_car_preseeding_cultivator
Definition: DE_Carrots.h:76
fmc_Harvest
Definition: LandscapeFarmingEnums.h:1012
DE_Carrots::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: DE_Carrots.h:112
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
DE_CAR_FUNGI2
#define DE_CAR_FUNGI2
Definition: DE_Carrots.h:61
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
Crop::Crop
Crop(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: Farm.cpp:733
de_car_spring_sow
Definition: DE_Carrots.h:78
de_car_start
Definition: DE_Carrots.h:69
de_car_ferti_p2
Definition: DE_Carrots.h:79
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
WARN_BUG
Definition: MapErrorMsg.h:34
fmc_Fungicide
Definition: LandscapeFarmingEnums.h:1007
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
de_car_ferti_p1
Definition: DE_Carrots.h:74
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