ALMaSS Skylark ODDox  1.1
The skylark model description following ODdox protocol
NLSpringBarleySpring Class Reference

NLSpringBarleySpring class
. More...

#include <NLSpringBarleySpring.h>

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...
 
 NLSpringBarleySpring ()
 
- Public Member Functions inherited from Crop
virtual ~Crop ()
 
 Crop ()
 
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)
 

Additional Inherited Members

- 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...
 
- Protected Attributes inherited from Crop
Farmm_farm
 
LE * m_field
 
FarmEventm_ev
 
int m_first_date
 
int m_count
 
int m_last_date
 
int m_ddegstoharvest
 
int m_CropClassification
 

Detailed Description

NLSpringBarleySpring class
.

See NLSpringBarleySpring.h::NLSpringBarleySpringToDo for a complete list of all possible events triggered codes by the spring barley 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

◆ NLSpringBarleySpring()

NLSpringBarleySpring::NLSpringBarleySpring ( )
inline
76  {
77  // When we start it off, the first possible date for a farm operation is 5th November
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( 25,3 );
81  }

References Crop::m_first_date.

Member Function Documentation

◆ Do()

bool NLSpringBarleySpring::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 a_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 spring barley.

Reimplemented from Crop.

65 {
66  bool done = false; // The boolean value done indicates when we are totally finished with this plan (i.e. it is set to true).
67  int d1 = 0;
68  // Depending what event has occured jump to the correct bit of code
69  switch (a_ev->m_todo)
70  {
71  case nl_sbs_start:
72  {
73  // nl_sbs_start just sets up all the starting conditions and reference dates that are needed to start a nl_sb
74  NL_SBS_FUNGII = false;
75 
76  // Set up the date management stuff
77  // The next bit of code just allows for altering dates after harvest if it is necessary
78  // to allow for a crop which starts its management early.
79 
80  // 5 start and stop dates for all 'movable' events for this crop
81  int noDates = 2;
82  a_field->SetMDates(0, 0, g_date->DayInYear(15, 8)); // last possible day of harvest
83  a_field->SetMDates(1, 0, g_date->DayInYear(20, 8)); // last possible day of straw chopping
84  a_field->SetMDates(0, 1, 0); // start day of hay bailing (not used as it depend on previous treatment)
85  a_field->SetMDates(1, 1, g_date->DayInYear(20, 8)); // end day of hay bailing
86  // Can be up to 10 of these. If the shortening code is triggered
87  // then these will be reduced in value to 0
88 
89  a_field->SetMConstants(0, 1);
90 
91  // Check the next crop for early start, unless it is a spring crop
92  // in which case we ASSUME that no checking is necessary!!!!
93  // So DO NOT implement a crop that runs over the year boundary (i.e. from spring to spring!), at least not without fixing this.
94 
95  //new if: do the check only for non-optimising farms and if year>0. (030713 - m_rotation used only in the hidden year, so I modified the condition from >7 to >0)
96  //optimising farms not used for now so most of related code is removed (but not in 'start' case)
97  if (!(a_farm->GetType() == tof_OptimisingFarm && g_date->GetYearNumber() > 0)) {
98 
99  if (a_ev->m_startday > g_date->DayInYear(1, 7)) {
100  if (a_field->GetMDates(0, 0) >= a_ev->m_startday)
101  {
102  g_msg->Warn(WARN_BUG, "NLSpringBarleySpring::Do(): ", "Harvest too late for the next crop to start!!!");
103  int almassnum = g_landscape_p->BackTranslateVegTypes(a_ev->m_next_tov);
104  g_msg->Warn("Next Crop ", (double)almassnum); // this causes exit
105  }
106  // Now fix any late finishing problems
107  for (int i = 0; i < noDates; i++) {
108  if (a_field->GetMDates(0, i) >= a_ev->m_startday) {
109  a_field->SetMDates(0, i, a_ev->m_startday - 1); //move the starting date
110  }
111  if (a_field->GetMDates(1, i) >= a_ev->m_startday) {
112  a_field->SetMConstants(i, 0); //change the default value of the MConst (=1) to 0 (necessary to correctly execute farm events in case the finishing date (MDate) was moved)
113  a_field->SetMDates(1, i, a_ev->m_startday - 1); //move the finishing date
114  }
115  }
116  }
117  // Now no operations can be timed after the start of the next crop.
118 
119  if (!a_ev->m_first_year) {
120  d1 = g_date->OldDays() + 365 + m_first_date; // Add 365 for spring crop
121  if (g_date->Date() > d1) {
122  // Yes too late - should not happen - raise an error
123  g_msg->Warn(WARN_BUG, "NLSpringBarleySpring::Do(): ", "Crop start attempt after last possible start date");
124  int prev = g_landscape_p->BackTranslateVegTypes(a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex()));
125  g_msg->Warn(WARN_BUG, "Previous Crop ", prev);
126  int almassnum = g_landscape_p->BackTranslateVegTypes(a_ev->m_next_tov);
127  g_msg->Warn("Next Crop ", (double)almassnum); // this causes exit
128  exit(1);
129  }
130  }
131  else {
132  // Is the first year
133  // Some special code to cope with that first start-up year in ALMaSS - ignore for all practical purposes
134  // Code for first spring treatment used
135  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 3), nl_sbs_spring_sow, false, a_farm, a_field);
136  break;
137  }
138  }//if
139  // End single block date checking code. Please see next line comment as well.
140  // Reinit d1 to first possible starting date.
141  d1 = g_date->OldDays() + g_date->DayInYear(1, 3);
142  if (g_date->Date() >= d1) d1 += 365;
143  // OK, let's go.
144  // Here we queue up the first event - this differs depending on whether we have field on snady or clay soils
145  if (a_field->GetSoilType() == 2 || a_field->GetSoilType() == 6) { // on sandy soils (NL ZAND & LOSS)
146  SimpleEvent_(d1, nl_sbs_spring_plough_sandy, false, a_farm, a_field);
147  }
148  else
149  {
150  if (a_farm->IsStockFarmer()) //Stock Farmer
151  {
152  SimpleEvent_(d1, nl_sbs_ferti_s2_clay, false, a_farm, a_field);
153  }
154  else SimpleEvent_(d1, nl_sbs_ferti_p2_clay, false, a_farm, a_field);
155  }
156  }
157  break;
158 
159  // This is the first real farm operation
161  if (!a_farm->SpringPlough(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
162  SimpleEvent_(g_date->Date() + 1, nl_sbs_spring_plough_sandy, true, a_farm, a_field);
163  break;
164  }
165  if (a_farm->IsStockFarmer()) //Stock Farmer
166  {
167  SimpleEvent_(g_date->Date() + 7, nl_sbs_ferti_s2_sandy, false, a_farm, a_field);
168  }
169  else SimpleEvent_(g_date->Date() + 7, nl_sbs_ferti_p2_sandy, false, a_farm, a_field);
170  break;
172  if (a_ev->m_lock || a_farm->DoIt_prob(0.70))
173  {
174  if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
175  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_p2_sandy, true, a_farm, a_field);
176  break;
177  }
178  }
179  d1 = g_date->Date() + 1;
180  if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
181  d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
182  }
183  if (a_farm->IsStockFarmer()) //Stock Farmer
184  {
185  SimpleEvent_(d1, nl_sbs_ferti_s3, false, a_farm, a_field);
186  }
187  else SimpleEvent_(d1, nl_sbs_ferti_p3, false, a_farm, a_field);
188  break;
190  if (a_ev->m_lock || a_farm->DoIt_prob(0.70))
191  {
192  if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
193  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_s2_sandy, true, a_farm, a_field);
194  break;
195  }
196  }
197  d1 = g_date->Date() + 1;
198  if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
199  d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
200  }
201  if (a_farm->IsStockFarmer()) //Stock Farmer
202  {
203  SimpleEvent_(d1, nl_sbs_ferti_s3, false, a_farm, a_field);
204  }
205  else SimpleEvent_(d1, nl_sbs_ferti_p3, false, a_farm, a_field);
206  break;
208  if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
209  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_p2_clay, true, a_farm, a_field);
210  break;
211  }
212  d1 = g_date->Date() + 1;
213  if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
214  d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
215  }
216  if (a_farm->IsStockFarmer()) //Stock Farmer
217  {
218  SimpleEvent_(d1, nl_sbs_ferti_s3, false, a_farm, a_field);
219  }
220  else SimpleEvent_(d1, nl_sbs_ferti_p3, false, a_farm, a_field);
221  break;
223  if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
224  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_s2_clay, true, a_farm, a_field);
225  break;
226  }
227  d1 = g_date->Date() + 1;
228  if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
229  d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
230  }
231  if (a_farm->IsStockFarmer()) //Stock Farmer
232  {
233  SimpleEvent_(d1, nl_sbs_ferti_s3, false, a_farm, a_field);
234  }
235  else SimpleEvent_(d1, nl_sbs_ferti_p3, false, a_farm, a_field);
236  break;
237  case nl_sbs_ferti_p3:
238  if (a_ev->m_lock || a_farm->DoIt_prob(0.50))
239  {
240  if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
241  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_p3, true, a_farm, a_field);
242  break;
243  }
244  }
245  SimpleEvent_(g_date->Date() + 3, nl_sbs_preseeding_cultivator, false, a_farm, a_field);
246  break;
247  case nl_sbs_ferti_s3:
248  if (a_ev->m_lock || a_farm->DoIt_prob(0.50))
249  {
250  if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
251  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_s3, true, a_farm, a_field);
252  break;
253  }
254  }
255  SimpleEvent_(g_date->Date() + 3, nl_sbs_preseeding_cultivator, false, a_farm, a_field);
256  break;
258  if (a_ev->m_lock || a_farm->DoIt_prob(0.80))
259  {
260  if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
261  SimpleEvent_(g_date->Date() + 1, nl_sbs_preseeding_cultivator, true, a_farm, a_field);
262  break;
263  }
264  else
265  {
266  SimpleEvent_(g_date->Date() + 1, nl_sbs_spring_sow, false, a_farm, a_field);
267  break;
268  }
269  }
270  SimpleEvent_(g_date->Date() + 1, nl_sbs_preseeding_cultivator_sow, false, a_farm, a_field);
271  break;
272  case nl_sbs_spring_sow:
273  if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
274  SimpleEvent_(g_date->Date() + 1, nl_sbs_spring_sow, true, a_farm, a_field);
275  break;
276  }
277  // Here is a fork leading to four parallel events
278  SimpleEvent_(g_date->Date() + 3, nl_sbs_harrow, false, a_farm, a_field); // Harrowing
279  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 4), nl_sbs_herbicide1, false, a_farm, a_field); // Herbidide thread
280  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_fungicide1, false, a_farm, a_field); // Fungicide thread
281  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 5), nl_sbs_insecticide1, false, a_farm, a_field); // Insecticide thread = MAIN THREAD
282  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_growth_regulator1, false, a_farm, a_field); // GR thread
283  if (a_farm->IsStockFarmer()) //Stock Farmer // N thread
284  {
285  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_ferti_s4_clay, false, a_farm, a_field);
286  }
287  else SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_ferti_p4_clay, false, a_farm, a_field);
288  break;
290  if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
291  SimpleEvent_(g_date->Date() + 1, nl_sbs_preseeding_cultivator_sow, true, a_farm, a_field);
292  break;
293  }
294  // Here is a fork leading to four parallel events
295  SimpleEvent_(g_date->Date() + 3, nl_sbs_harrow, false, a_farm, a_field); // Harrowing
296  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 4), nl_sbs_herbicide1, false, a_farm, a_field); // Herbidide thread
297  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_fungicide1, false, a_farm, a_field); // Fungicide thread
298  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(15, 5), nl_sbs_insecticide1, false, a_farm, a_field); // Insecticide thread = MAIN THREAD
299  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_growth_regulator1, false, a_farm, a_field); // GR thread
300  if (a_farm->IsStockFarmer()) //Stock Farmer // N thread
301  {
302  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_ferti_s4_clay, false, a_farm, a_field);
303  }
304  else SimpleEvent_(g_date->OldDays() + g_date->DayInYear(1, 5), nl_sbs_ferti_p4_clay, false, a_farm, a_field);
305  break;
306  case nl_sbs_harrow:
307  if (a_field->GetGreenBiomass() <= 0)
308  {
309  if (a_ev->m_lock || a_farm->DoIt_prob(0.20))
310  {
311  if (!a_farm->ShallowHarrow(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
312  SimpleEvent_(g_date->Date() + 1, nl_sbs_harrow, true, a_farm, a_field);
313  break;
314  }
315  }
316  }
317  // end of thread
318  break;
320  if (a_ev->m_lock || (a_farm->DoIt_prob(0.50) && (a_field->GetSoilType() != 2 && a_field->GetSoilType() != 6)))
321  {
322  if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
323  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_p4_clay, true, a_farm, a_field);
324  break;
325  }
326  }
327  // End of thread
328  break;
330  if (a_ev->m_lock || (a_farm->DoIt_prob(0.50) && (a_field->GetSoilType() != 2 && a_field->GetSoilType() != 6)))
331  {
332  if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
333  SimpleEvent_(g_date->Date() + 1, nl_sbs_ferti_s4_clay, true, a_farm, a_field);
334  break;
335  }
336  }
337  // End of thread
338  break;
339  case nl_sbs_herbicide1: // The first of the pesticide managements.
340  // Here comes the herbicide thread
341  if (a_ev->m_lock || a_farm->DoIt_prob(0.90))
342  {
343  if (a_field->GetGreenBiomass() <= 0) {
344  SimpleEvent_(g_date->Date() + 5, nl_sbs_herbicide1, true, a_farm, a_field);
345  }
346  else
347  {
348  if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
349  SimpleEvent_(g_date->Date() + 1, nl_sbs_herbicide1, true, a_farm, a_field);
350  break;
351  }
352  }
353  }
354  // End of thread
355  break;
356  case nl_sbs_fungicide1:
357  // Here comes the fungicide thread
358  if (a_ev->m_lock || a_farm->DoIt_prob(0.80))
359  {
360  if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
361  SimpleEvent_(g_date->Date() + 1, nl_sbs_fungicide1, true, a_farm, a_field);
362  break;
363  }
364  NL_SBS_FUNGII = true;
365  }
366  SimpleEvent_(g_date->Date() + 14, nl_sbs_fungicide2, false, a_farm, a_field);
367  break;
368  case nl_sbs_fungicide2:
369  if (a_ev->m_lock || (a_farm->DoIt_prob(0.50) && NL_SBS_FUNGII == 1)) // 40% of all farmers
370  {
371  if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
372  SimpleEvent_(g_date->Date() + 1, nl_sbs_fungicide2, true, a_farm, a_field);
373  break;
374  }
375  }
376  // End of thread
377  break;
378  case nl_sbs_insecticide1:
379  // Here comes the insecticide thread = MAIN THREAD
380  if (a_ev->m_lock || a_farm->DoIt_prob(0.30))
381  {
382  // here we check wheter we are using ERA pesticide or not
383  if (!cfg_pest_springbarley_on.value() ||
384  !g_landscape_p->SupplyShouldSpray()) // Not using pesticide spray
385  {
386  if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
387  SimpleEvent_(g_date->Date() + 1, nl_sbs_insecticide1, true, a_farm, a_field);
388  break;
389  }
390  }
391  else {
392  a_farm->ProductApplication(a_field, 0.0, 0, cfg_pest_product_1_amount.value(), ppp_1);
393  }
394  }
395  SimpleEvent_(g_date->OldDays() + g_date->DayInYear(20, 7), nl_sbs_harvest, false, a_farm, a_field);
396  break;
398  // Here comes the GR thread
399  if (a_ev->m_lock || a_farm->DoIt_prob(0.80))
400  {
401  if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
402  SimpleEvent_(g_date->Date() + 1, nl_sbs_growth_regulator1, true, a_farm, a_field);
403  break;
404  }
405  }
406  // End of thread
407  break;
408  case nl_sbs_harvest:
409  // Here the MAIN thread continues
410  // We don't move harvest days
411  if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
412  SimpleEvent_(g_date->Date() + 1, nl_sbs_harvest, true, a_farm, a_field);
413  break;
414  }
415  SimpleEvent_(g_date->Date() + 1, nl_sbs_straw_chopping, false, a_farm, a_field);
416  break;
418  if (a_ev->m_lock || a_farm->DoIt_prob(0.50))
419  {
420  if (a_field->GetMConstants(0) == 0) {
421  if (!a_farm->StrawChopping(a_field, 0.0, -1)) { // raise an error
422  g_msg->Warn(WARN_BUG, "NLSpringBarleySpring::Do(): failure in 'StrawChopping' execution", "");
423  exit(1);
424  }
425  }
426  else {
427  if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
428  SimpleEvent_(g_date->Date() + 1, nl_sbs_straw_chopping, true, a_farm, a_field);
429  break;
430  }
431  }
432  done = true;
433  break;
434  }
435  SimpleEvent_(g_date->Date() + 1, nl_sbs_hay_bailing, false, a_farm, a_field);
436  break;
437  case nl_sbs_hay_bailing:
438  if (a_field->GetMConstants(1) == 0) {
439  if (!a_farm->HayBailing(a_field, 0.0, -1)) { // raise an error
440  g_msg->Warn(WARN_BUG, "NLWinterWheat::Do(): failure in 'HayBailing' execution", "");
441  exit(1);
442  }
443  }
444  else {
445  if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1, 1) - g_date->DayInYear())) {
446  SimpleEvent_(g_date->Date() + 1, nl_sbs_hay_bailing, true, a_farm, a_field);
447  break;
448  }
449  }
450  done = true;
451  break;
452  default:
453  g_msg->Warn(WARN_BUG, "PLSpringBarleySpring::Do(): "
454  "Unknown event type! ", "");
455  exit(1);
456  }
457  return done;
458 }

References Landscape::BackTranslateVegTypes(), cfg_pest_product_1_amount, cfg_pest_springbarley_on, g_landscape_p, Farm::GetType(), Farm::IsStockFarmer(), Crop::m_first_date, FarmEvent::m_first_year, FarmEvent::m_lock, FarmEvent::m_next_tov, FarmEvent::m_startday, FarmEvent::m_todo, nl_sbs_ferti_p2_clay, nl_sbs_ferti_p2_sandy, nl_sbs_ferti_p3, nl_sbs_ferti_p4_clay, nl_sbs_ferti_s2_clay, nl_sbs_ferti_s2_sandy, nl_sbs_ferti_s3, nl_sbs_ferti_s4_clay, nl_sbs_fungicide1, nl_sbs_fungicide2, NL_SBS_FUNGII, nl_sbs_growth_regulator1, nl_sbs_harrow, nl_sbs_harvest, nl_sbs_hay_bailing, nl_sbs_herbicide1, nl_sbs_insecticide1, nl_sbs_preseeding_cultivator, nl_sbs_preseeding_cultivator_sow, nl_sbs_spring_plough_sandy, nl_sbs_spring_sow, nl_sbs_start, nl_sbs_straw_chopping, ppp_1, Crop::SimpleEvent_(), Farm::SpringPlough(), Landscape::SupplyShouldSpray(), and tof_OptimisingFarm.


The documentation for this class was generated from the following files:
NL_SBS_FUNGII
#define NL_SBS_FUNGII
A flag used to indicate autumn ploughing status.
Definition: NLSpringBarleySpring.h:28
nl_sbs_start
Definition: NLSpringBarleySpring.h:37
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:444
nl_sbs_ferti_p3
Definition: NLSpringBarleySpring.h:44
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: farm.h:905
FarmEvent::m_lock
bool m_lock
Definition: farm.h:465
nl_sbs_hay_bailing
Definition: NLSpringBarleySpring.h:59
Landscape::SupplyShouldSpray
bool SupplyShouldSpray()
Definition: Landscape.h:357
nl_sbs_harrow
Definition: NLSpringBarleySpring.h:49
FarmEvent::m_first_year
bool m_first_year
Definition: farm.h:467
tof_OptimisingFarm
Definition: farm.h:273
nl_sbs_preseeding_cultivator
Definition: NLSpringBarleySpring.h:46
Landscape::BackTranslateVegTypes
int BackTranslateVegTypes(TTypesOfVegetation VegReference)
Definition: Landscape.h:1669
nl_sbs_harvest
Definition: NLSpringBarleySpring.h:57
nl_sbs_preseeding_cultivator_sow
Definition: NLSpringBarleySpring.h:47
nl_sbs_spring_sow
Definition: NLSpringBarleySpring.h:48
Farm::GetType
TTypesOfFarm GetType(void)
Definition: farm.h:901
nl_sbs_ferti_s3
Definition: NLSpringBarleySpring.h:45
Crop::m_first_date
int m_first_date
Definition: farm.h:540
FarmEvent::m_startday
int m_startday
Definition: farm.h:466
nl_sbs_ferti_s2_sandy
Definition: NLSpringBarleySpring.h:41
nl_sbs_spring_plough_sandy
Definition: NLSpringBarleySpring.h:39
nl_sbs_herbicide1
Definition: NLSpringBarleySpring.h:52
nl_sbs_ferti_p2_clay
Definition: NLSpringBarleySpring.h:42
nl_sbs_ferti_p4_clay
Definition: NLSpringBarleySpring.h:50
nl_sbs_straw_chopping
Definition: NLSpringBarleySpring.h:58
FarmEvent::m_next_tov
TTypesOfVegetation m_next_tov
Definition: farm.h:471
FarmEvent::m_todo
int m_todo
Definition: farm.h:469
nl_sbs_fungicide1
Definition: NLSpringBarleySpring.h:53
ppp_1
Definition: farm.h:422
nl_sbs_fungicide2
Definition: NLSpringBarleySpring.h:54
nl_sbs_growth_regulator1
Definition: NLSpringBarleySpring.h:56
nl_sbs_ferti_p2_sandy
Definition: NLSpringBarleySpring.h:40
nl_sbs_insecticide1
Definition: NLSpringBarleySpring.h:55
nl_sbs_ferti_s2_clay
Definition: NLSpringBarleySpring.h:43
nl_sbs_ferti_s4_clay
Definition: NLSpringBarleySpring.h:51
cfg_pest_springbarley_on
CfgBool cfg_pest_springbarley_on
cfg_pest_product_1_amount
CfgFloat cfg_pest_product_1_amount
g_landscape_p
Landscape * g_landscape_p
Definition: Landscape.cpp:258
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:312