File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/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
DK_BushFruit_Perm1 Class Reference

DK_BushFruit_Perm1 class
. More...

#include <DK_BushFruit_Perm1.h>

Inheritance diagram for DK_BushFruit_Perm1:
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...
 
 DK_BushFruit_Perm1 (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

DK_BushFruit_Perm1 class
.

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

◆ DK_BushFruit_Perm1()

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

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

Member Function Documentation

◆ Do()

bool DK_BushFruit_Perm1::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.

Reimplemented from Crop.

65 {
66  m_farm = a_farm;
67  m_field = a_field;
68  m_ev = a_ev;
69  bool done = false; // The boolean value done indicates when we are totally finished with this plan (i.e. it is set to true, m_farm, m_field).
70  bool flag = false;
71  int d1 = 0;
72  int noDates = 1;
73  int today = g_date->Date();
75  // Depending what event has occured jump to the correct bit of code
76  switch (m_ev->m_todo)
77  {
78  case dk_bfp1_start:
79  {
80  DK_BFP_AFTER_EST = 0; //Here flags should get randomly for each field a value
81  DK_BFP_EARLY_HARVEST = false;
82  m_last_date = g_date->DayInYear(31, 10); // Should match the last flexdate below
83  //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
84  std::vector<std::vector<int>> flexdates(1 + 1, std::vector<int>(2, 0));
85  // Set up the date management stuff
86  // Start and stop dates for all events after harvest
87  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 - NO harvest here - this is herbicide2 instead
88  // Now these are done in pairs, start & end for each operation. If its not used then -1
89  flexdates[1][0] = -1; // This date will be moved back as far as necessary and potentially to flexdates 1 (start op 1)
90  flexdates[1][1] = g_date->DayInYear(15, 10); // This date will be moved back as far as necessary and potentially to flexdates 1 (end op 1) - water2
91  flexdates[1][0] = -1; // This date will be moved back as far as necessary and potentially to flexdates 1 (start op 1)
92  flexdates[1][1] = g_date->DayInYear(31, 10);
93  // Below if this is a spring crop use 365, otherwise first parameter is always 0, second parameter is fixed, and the third is the start up operation in the first year
94  int isSpring = 365;
95  if (StartUpCrop(isSpring, flexdates, int(dk_bfp1_molluscicide))) break;
96 
97  // End single block date checking code. Please see next line comment as well.
98  // Reinit d1 to first possible starting date.
99  //Each field has assign randomly a DK_BFP_Yx flag value from 0 to 5
100 
101  if ((DK_BFP_AFTER_EST + g_date->GetYearNumber()) % 5 == 0)
102  {
103  d1 = g_date->OldDays() + g_date->DayInYear(1, 3);
104  if (g_date->Date() >= d1) d1 += 365;
105 
106  SimpleEvent(d1, dk_bfp1_molluscicide, false);
107  break;
108  }
109  else
110  {
111  d1 = g_date->OldDays() + g_date->DayInYear(1, 1);
112  if (g_date->Date() >= d1) d1 += 365;
113 
114  SimpleEvent(d1, dk_bfp_cover_on, false);
115  break;
116  }
117  }
118  break;
119 
120  // LKM: This is the first real farm operation - molluscicide if many snails (suggest 10%) - EST YEAR
122  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
123  if (!m_farm->Molluscicide(m_field, 0.0, g_date->DayInYear(28, 4) - g_date->DayInYear())) {
125  break;
126  }
127  }
128  d1 = g_date->Date();
129  if (d1 < g_date->OldDays() + g_date->DayInYear(1, 3))
130  {
131  d1 = g_date->OldDays() + g_date->DayInYear(1, 3);
132  }
133  if (a_farm->IsStockFarmer()) {
135  break;
136  }
137  else
139  break;
140 
142  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
143  {
144  if (!a_farm->FA_PK(m_field, 0.0, g_date->DayInYear(29, 4) - g_date->DayInYear())) {
146  break;
147  }
148  }
150  break;
151 
153  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
154  {
155  if (!a_farm->FP_PK(m_field, 0.0, g_date->DayInYear(29, 4) - g_date->DayInYear())) {
157  break;
158  }
159  }
161  break;
162 
164  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
165  {
166  if (!a_farm->SpringHarrow(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
168  break;
169  }
170  } // if time the harrow can continue, if not herbicide
171  d1 = g_date->Date();
172  if (d1 > g_date->OldDays() + g_date->DayInYear(23, 4)) {
174  break;
175  }
176  else {
178  break;
179  }
181  if (!a_farm->SpringHarrow(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
183  break;
184  }
185  // if time the harrow can continue, if not herbicide
186  d1 = g_date->Date();
187  if (d1 > g_date->OldDays() + g_date->DayInYear(23, 4)) {
188  SimpleEvent(g_date->Date() + 1, dk_bfp1_herbicide1, false);
189  break;
190  }
191  else {
193  break;
194  }
196  if (!a_farm->SpringHarrow(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
198  break;
199  }
201  break;
202  case dk_bfp1_herbicide1:
203  if (!a_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
204  SimpleEvent(g_date->Date() + 1, dk_bfp1_herbicide1, true);
205  break;
206  }
208  break;
210  if (!a_farm->ShallowHarrow(m_field, 0.0, g_date->DayInYear(7, 5) - g_date->DayInYear())) {
212  break;
213  }
215  break;
217  if (!a_farm->ShallowHarrow(m_field, 0.0, g_date->DayInYear(8, 5) - g_date->DayInYear())) {
219  break;
220  }
222  break;
224  // here we check whether we are using ERA pesticide or not
225  d1 = g_date->DayInYear(29, 6) - g_date->DayInYear();
226  if (!cfg_pest_bushfruit_on.value() || !m_field->GetLandscape()->SupplyShouldSpray()) // Not using pesticide spray
227  {
228  flag = m_farm->InsecticideTreat(m_field, 0.0, d1);
229  }
230  else {
231  flag = m_farm->ProductApplication(m_field, 0.0, d1, cfg_pest_product_amounts.value(0), ppp_1, false, 3);
232  }
233  if (!flag) {
235  break;
236  }
237  SimpleEvent(g_date->Date()+1, dk_bfp1_plant, false);
238  break;
239  case dk_bfp1_plant:
240  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
241  SimpleEvent(g_date->Date() + 1, dk_bfp1_plant, true);
242  break;
243  }
245  break;
246  case dk_bfp1_water1:
247  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
248  SimpleEvent(g_date->Date() + 1, dk_bfp1_water1, true);
249  break;
250  }
251 
252  //fork with parallel events:
253  SimpleEvent(g_date->Date() + 10, dk_bfp1_strigling1, false); // weeding thread - main thread
254  if (a_farm->IsStockFarmer()) {
255  SimpleEvent(g_date->Date() + 14, dk_bfp1_fertilizer2_s, false); // fertilizer thread
256  break;
257  }
258  else SimpleEvent(g_date->Date() + 14, dk_bfp1_fertilizer2_p, false); // fertilizer thread
259  break;
260 
262  if (!a_farm->FA_N(m_field, 0.0, g_date->DayInYear(21, 7) - g_date->DayInYear())) {
264  break;
265  }
266  break; // end of thread
267 
269  if (!a_farm->FP_N(m_field, 0.0, g_date->DayInYear(21, 7) - g_date->DayInYear())) {
271  break;
272  }
273  break;
274  //end of fertilizer thread
275 
276  case dk_bfp1_strigling1:
277  if (!a_farm->Strigling(m_field, 0.0, g_date->DayInYear(10, 7) - g_date->DayInYear())) {
278  SimpleEvent(g_date->Date() + 1, dk_bfp1_strigling1, true);
279  break;
280  }
281  SimpleEvent(g_date->Date() + 10, dk_bfp1_strigling2, false);
282  break;
283  case dk_bfp1_strigling2:
284  if (!a_farm->Strigling(m_field, 0.0, g_date->DayInYear(20, 7) - g_date->DayInYear())) {
285  SimpleEvent(g_date->Date() + 1, dk_bfp1_strigling2, true);
286  break;
287  }
289  break;
291  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(30, 7) - g_date->DayInYear())) {
293  break;
294  }
296  break;
298  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(10, 8) - g_date->DayInYear())) {
300  break;
301  }
303  break;
305  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(20, 8) - g_date->DayInYear())) {
307  break;
308  }
309 
310  //fork of parallel events:
311  SimpleEvent(g_date->Date(), dk_bfp1_herbicide2, false); // herbicide thread
312  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 9), dk_bfp1_fungicide1, false); // fungicide thread
313  break;
314 
315  case dk_bfp1_herbicide2:
316  if (!a_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(15, 10) - g_date->DayInYear())) {
317  SimpleEvent(g_date->Date() + 1, dk_bfp1_herbicide2, true);
318  break;
319  }
320  break; // end of herbicide thread
321 
322  case dk_bfp1_fungicide1:
323  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
324  SimpleEvent(g_date->Date() + 1, dk_bfp1_fungicide1, true);
325  break;
326  }
328  break;
329 
330  case dk_bfp1_water2:
331  if (!a_farm->Water(m_field, 0.0, m_field->GetMDates(1, 2) - g_date->DayInYear())) {
332  SimpleEvent(g_date->Date() + 1, dk_bfp1_water2, true);
333  break;
334  }
335  d1 = g_date->Date();
336  if (d1 > g_date->OldDays() + g_date->DayInYear(15, 10))
337  {
339  break;
340  }
341  else done = true;
342  break;
343 
345  done = true;
346  break;
347  // So we are done, and somewhere else the farmer will queue up the start event of the next crop (DK_BushFruit_Perm2)
348  // END of EST YEAR
349 
350  //BEGIN HARVEST YEARS
351  // LKM: This is the first real farm operation - cover bushes with fiber (suggest 50%)
352  case dk_bfp_cover_on:
353  if (m_ev->m_lock || m_farm->DoIt_prob(0.50)) {
354  if (!m_farm->FiberCovering(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
355  SimpleEvent(g_date->Date() + 1, dk_bfp_cover_on, true);
356  break;
357  }
358  else
359  {
360  //We need to remember who did cover
361  DK_BFP_EARLY_HARVEST = true;
362  }
364  break;
365  }
366  // fork of parallel events:
367  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 3), dk_bfp_water1, false); // water thread
368  if (a_farm->IsStockFarmer())
369  {
371  break;
372  }
373  else
375  break;
376  case dk_bfp_water1_cover:
377  if (!m_farm->Water(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
379  break;
380  }
382  break;
383  case dk_bfp_cover_off:
384  if (!m_farm->FiberRemoval(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
385  SimpleEvent(g_date->Date() + 1, dk_bfp_cover_off, true);
386  break;
387  }
388  if (a_farm->IsStockFarmer())
389  {
391  break;
392  }
393  else
395  break;
396  case dk_bfp_water1:
397  if (!m_farm->Water(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
398  SimpleEvent(g_date->Date() + 1, dk_bfp_water1, true);
399  break;
400  }
401  break; // end of water thread
402  case dk_bfp_fertilizer1_s: // only for weak varieties, suggest 50%
403  if (m_ev->m_lock || m_farm->DoIt_prob(0.50))
404  {
405  if (!a_farm->FA_N(m_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
407  break;
408  }
409  }
410  //fork of parallel events:
411  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_bfp_row_cultivation1, false); // weeding thread - main thread
412  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4) + m_date_modifier, dk_bfp_insecticide1, false); // insecticide thread
413  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_bfp_fungicide1, false); // fungicide thread
414  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_bfp_fungicide3, false); // fungicide thread
415  SimpleEvent(g_date->OldDays() + g_date->DayInYear(15, 4), dk_bfp_herbicide1, false); // herbicide thread
416  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_bfp_water2, false); // water thread
417  break;
418 
419  case dk_bfp_fertilizer1_p: // only for weak varieties, suggest 50%
420  if (m_ev->m_lock || m_farm->DoIt_prob(0.50))
421  {
422  if (!a_farm->FP_N(m_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
424  break;
425  }
426  }
427  //fork of parallel events:
428  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_bfp_row_cultivation1, false); // weeding thread - main thread
429  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4) + m_date_modifier, dk_bfp_insecticide1, false); // insecticide thread
430  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_bfp_fungicide1, false); // fungicide thread
431  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_bfp_fungicide3, false); // fungicide thread
432  SimpleEvent(g_date->OldDays() + g_date->DayInYear(15, 4), dk_bfp_herbicide1, false); // herbicide thread
433  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_bfp_water2, false); // water thread
434  break;
435  case dk_bfp_insecticide1:
436  // here we check whether we are using ERA pesticide or not
437  d1 = g_date->DayInYear(30, 4) - g_date->DayInYear();
438  if (!cfg_pest_bushfruit_on.value() || !m_field->GetLandscape()->SupplyShouldSpray()) // Not using pesticide spray
439  {
440  flag = m_farm->InsecticideTreat(m_field, 0.0, d1);
441  }
442  else {
443  flag = m_farm->ProductApplication(m_field, 0.0, d1, cfg_pest_product_amounts.value(0), ppp_1, false, 3);
444  }
445  if (!flag) {
447  break;
448  }
449  SimpleEvent(g_date->Date() + 14, dk_bfp_insecticide2, false); // insecticide thread
450  break;
451 
452  case dk_bfp_insecticide2:
453  // here we check whether we are using ERA pesticide or not
454  d1 = g_date->DayInYear(15, 5) - g_date->DayInYear();
455  if (!cfg_pest_bushfruit_on.value() || !m_field->GetLandscape()->SupplyShouldSpray()) // Not using pesticide spray
456  {
457  flag = m_farm->InsecticideTreat(m_field, 0.0, d1);
458  }
459  else {
460  flag = m_farm->ProductApplication(m_field, 0.0, d1, cfg_pest_product_amounts.value(0), ppp_1, false, 3);
461  }
462  if (!flag) {
464  break;
465  }
466  SimpleEvent(g_date->Date() + 14, dk_bfp_insecticide3, false); // insecticide thread
467  break;
468 
469  case dk_bfp_insecticide3:
470  // here we check whether we are using ERA pesticide or not
471  d1 = g_date->DayInYear(31, 5) - g_date->DayInYear();
472  if (!cfg_pest_bushfruit_on.value() || !m_field->GetLandscape()->SupplyShouldSpray()) // Not using pesticide spray
473  {
474  flag = m_farm->InsecticideTreat(m_field, 0.0, d1);
475  }
476  else {
477  flag = m_farm->ProductApplication(m_field, 0.0, d1, cfg_pest_product_amounts.value(0), ppp_1, false, 3);
478  }
479  if (!flag) {
481  break;
482  }
483  break; // end of insecticide thread
484  case dk_bfp_herbicide1:
485  if (!a_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
486  SimpleEvent(g_date->Date() + 1, dk_bfp_herbicide1, true);
487  break;
488  }
489  break; // end of herbicide thread
490  case dk_bfp_fungicide1:
491  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(15, 4) - g_date->DayInYear())) {
492  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide1, true);
493  break;
494  }
495  SimpleEvent(g_date->Date() + 14, dk_bfp_fungicide2, false);
496  break;
497  case dk_bfp_fungicide2:
498  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
499  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide2, true);
500  break;
501  }
502  break; // end of fungicide thread
503 
504  case dk_bfp_fungicide3:
505  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(15, 4) - g_date->DayInYear())) {
506  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide3, true);
507  break;
508  }
509  SimpleEvent(g_date->Date() + 10, dk_bfp_fungicide4, false);
510  break;
511  case dk_bfp_fungicide4:
512  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
513  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide4, true);
514  break;
515  }
516  SimpleEvent(g_date->Date() + 10, dk_bfp_fungicide5, false);
517  break;
518  case dk_bfp_fungicide5:
519  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
520  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide5, true);
521  break;
522  }
523  SimpleEvent(g_date->Date() + 10, dk_bfp_fungicide6, false);
524  break;
525  case dk_bfp_fungicide6:
526  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
527  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide6, true);
528  break;
529  }
530  SimpleEvent(g_date->Date() + 10, dk_bfp_fungicide7, false);
531  break;
532  case dk_bfp_fungicide7:
533  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
534  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide7, true);
535  break;
536  }
537  break;
538 
539  case dk_bfp_water2:
540  if (!m_farm->Water(m_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
541  SimpleEvent(g_date->Date() + 1, dk_bfp_water2, true);
542  break;
543  }
544  break; // end of water thread
546  if (DK_BFP_EARLY_HARVEST == false) {
547  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
549  break;
550  }
552  break;
553  }
554  else if (DK_BFP_EARLY_HARVEST == true) {
556  break;
557  }
558  break;
559 
561  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
563  break;
564  }
566  break;
568  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
570  break;
571  }
572  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 6), dk_bfp_straw_cover, false); // water thread
573  break;
574  case dk_bfp_straw_cover:
575  if (!a_farm->StrawCovering(m_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
576  SimpleEvent(g_date->Date() + 1, dk_bfp_straw_cover, true);
577  break;
578  }
579 
580  if (DK_BFP_EARLY_HARVEST == true) {
582  break;
583  }
584  else if (DK_BFP_EARLY_HARVEST == false) {
586  break;
587  }
588  break;
589 
590  case dk_bfp_harvest:
591  // continuous harvesting till 20 July, every third day
592  m_farm->HarvestBushFruit(m_field, 0.0, 0);
593  if (today < g_date->OldDays() + g_date->DayInYear(20, 7)) {
594  SimpleEvent(g_date->Date() + 3, dk_bfp_harvest, true);
595  break;
596  }
597  //fork of parallel events:
598  SimpleEvent(g_date->Date(), dk_bfp_herbicide2, false); // herbicide thread
599  if (a_farm->IsStockFarmer())
600  {
601  SimpleEvent(g_date->OldDays() + g_date->DayInYear(20, 7), dk_bfp_fertilizer2_s, false); // fertilizer thread - main thread
602  break;
603  }
604  else SimpleEvent(g_date->OldDays() + g_date->DayInYear(20, 7), dk_bfp_fertilizer2_p, false); // fertilizer thread - main thread
605  break;
606  case dk_bfp_herbicide2:
607  if (!a_farm->HerbicideTreat(m_field, 0.0, g_date->DayInYear(22, 7) - g_date->DayInYear())) {
608  SimpleEvent(g_date->Date() + 1, dk_bfp_herbicide2, true);
609  break;
610  }
611  break; // end of herbicide thread
613  if (!a_farm->FA_NPK(m_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
615  break;
616  }
617  //fork of parallel events:
618  SimpleEvent(g_date->Date(), dk_bfp_herbicide3, false); // herbicide thread
620  break;
621 
623  if (!a_farm->FP_NPK(m_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
625  break;
626  }
627  //fork of parallel events:
628  SimpleEvent(g_date->Date(), dk_bfp_herbicide3, false); // herbicide thread
630  break;
631 
632  case dk_bfp_fungicide8:
633  if (!a_farm->FungicideTreat(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
634  SimpleEvent(g_date->Date() + 1, dk_bfp_fungicide8, true);
635  break;
636  }
637  SimpleEvent(g_date->Date()+1, dk_bfp_water3, false);
638  break; // end of fungicide thread
639 
640  case dk_bfp_herbicide3:
641  if (!a_farm->HerbicideTreat(m_field, 0.0, m_field->GetMDates(1, 1) - g_date->DayInYear())) {
642  SimpleEvent(g_date->Date() + 1, dk_bfp_herbicide3, true);
643  break;
644  }
645  break; // end of herbicide thread
646  case dk_bfp_water3:
647  if (!a_farm->Water(m_field, 0.0, m_field->GetMDates(1, 2) - g_date->DayInYear())) {
648  SimpleEvent(g_date->Date() + 1, dk_bfp_water3, true);
649  break;
650  }
651  d1 = g_date->Date();
652  if (d1 > g_date->OldDays() + g_date->DayInYear(15, 10))
653  {
655  break;
656  }
657  else done = true;
658  break;
659 
660  default:
661  g_msg->Warn(WARN_BUG, "DK_BushFruit_Perm1::Do(): "
662  "Unknown event type! ", "");
663  exit(1);
664  }
665  return done;
666 }

References cfg_pest_bushfruit_on, cfg_pest_product_amounts, Calendar::Date(), Calendar::DayInYear(), dk_bfp1_fertilizer1_p, dk_bfp1_fertilizer1_s, dk_bfp1_fertilizer2_p, dk_bfp1_fertilizer2_s, dk_bfp1_fungicide1, dk_bfp1_herbicide1, dk_bfp1_herbicide2, dk_bfp1_insecticide1, dk_bfp1_molluscicide, dk_bfp1_plant, dk_bfp1_row_cultivation1, dk_bfp1_row_cultivation2, dk_bfp1_row_cultivation3, dk_bfp1_shallow_harrow1, dk_bfp1_shallow_harrow2, dk_bfp1_sleep_all_day, dk_bfp1_spring_harrow1, dk_bfp1_spring_harrow2, dk_bfp1_spring_harrow3, dk_bfp1_start, dk_bfp1_strigling1, dk_bfp1_strigling2, dk_bfp1_water1, dk_bfp1_water2, DK_BFP_AFTER_EST, dk_bfp_cover_off, dk_bfp_cover_on, DK_BFP_EARLY_HARVEST, dk_bfp_fertilizer1_p, dk_bfp_fertilizer1_s, dk_bfp_fertilizer2_p, dk_bfp_fertilizer2_s, dk_bfp_fungicide1, dk_bfp_fungicide2, dk_bfp_fungicide3, dk_bfp_fungicide4, dk_bfp_fungicide5, dk_bfp_fungicide6, dk_bfp_fungicide7, dk_bfp_fungicide8, dk_bfp_harvest, dk_bfp_herbicide1, dk_bfp_herbicide2, dk_bfp_herbicide3, dk_bfp_insecticide1, dk_bfp_insecticide2, dk_bfp_insecticide3, dk_bfp_row_cultivation1, dk_bfp_row_cultivation2, dk_bfp_row_cultivation3, dk_bfp_straw_cover, dk_bfp_water1, dk_bfp_water1_cover, dk_bfp_water2, dk_bfp_water3, Farm::DoIt_prob(), Farm::FA_N(), Farm::FA_NPK(), Farm::FA_PK(), Farm::FiberCovering(), Farm::FiberRemoval(), Farm::FP_N(), Farm::FP_NPK(), Farm::FP_PK(), Farm::FungicideTreat(), g_date, g_msg, LE::GetMDates(), Calendar::GetYearNumber(), Farm::HarvestBushFruit(), Farm::HerbicideTreat(), Farm::InsecticideTreat(), Farm::IsStockFarmer(), Crop::m_date_modifier, Crop::m_ev, Crop::m_farm, Crop::m_field, Crop::m_last_date, FarmEvent::m_lock, FarmEvent::m_todo, Farm::Molluscicide(), Calendar::OldDays(), ppp_1, Farm::ProductApplication(), Farm::RowCultivation(), Farm::ShallowHarrow(), Crop::SimpleEvent(), Farm::SpringHarrow(), Farm::SpringSow(), Crop::StartUpCrop(), Farm::StrawCovering(), Farm::Strigling(), tov_DKBushFruit_Perm1, CfgBool::value(), CfgArray_Double::value(), MapErrorMsg::Warn(), WARN_BUG, and Farm::Water().

◆ SetUpFarmCategoryInformation()

void DK_BushFruit_Perm1::SetUpFarmCategoryInformation ( )
inline
113  {
114  const int elements = 2 + (dk_bfp1_foobar - DK_BFP1_BASE);
116 
117  FarmManagementCategory catlist[elements] =
118  {
119  fmc_Others, // zero element unused but must be here
120  fmc_Others, // dk_bfp1_start = 1, // Compulsory, must always be 1 (one).
121  fmc_Others, // dk_bfp1_sleep_all_day = // dk_BFP1_BASE,
122  fmc_Insecticide, // dk_bfp1_molluscicide,
123  fmc_Fertilizer, // dk_bfp1_fertilizer1_s,
124  fmc_Fertilizer, // dk_bfp1_fertilizer1_p,
125  fmc_Cultivation, // dk_bfp1_spring_harrow1,
126  fmc_Cultivation, // dk_bfp1_spring_harrow2,
127  fmc_Cultivation, // dk_bfp1_spring_harrow3,
128  fmc_Herbicide, // dk_bfp1_herbicide1,
129  fmc_Cultivation, // dk_bfp1_shallow_harrow1,
130  fmc_Cultivation, // dk_bfp1_shallow_harrow2,
131  fmc_Insecticide, // dk_bfp1_insecticide,
132  fmc_Insecticide, // dk_bfp1_insecticide,
133  fmc_Others, // dk_bfp1_plant,
134  fmc_Watering, // dk_bfp1_water1,
135  fmc_Others, // dk_bfp1_strigling1,
136  fmc_Others, // dk_bfp1_strigling2,
137  fmc_Cultivation, // dk_bfp1_row_cultivation1,
138  fmc_Cultivation, // dk_bfp1_row_cultivation2,
139  fmc_Cultivation, // dk_bfp1_row_cultivation3,
140  fmc_Fertilizer, // dk_bfp1_fertilizer2_s,
141  fmc_Fertilizer, // dk_bfp1_fertilizer2_p,
142  fmc_Fungicide, // dk_bfp1_fungicide1,
143  fmc_Watering, // dk_bfp1_water2,
144  fmc_Herbicide, // dk_bfp1_herbicide2,
145  fmc_Others, // dk_bfp_cover_on,
146  fmc_Others, // dk_bfp_cover_off,
147  fmc_Fertilizer, // dk_bfp_fertilizer1_s,
148  fmc_Fertilizer, // dk_bfp_fertilizer1_p,
149  fmc_Watering, // dk_bfp_water1,
150  fmc_Watering, // dk_bfp_water1_cover,
151  fmc_Cultivation, // dk_bfp_row_cultivation1,
152  fmc_Cultivation, // dk_bfp_row_cultivation2,
153  fmc_Cultivation, // dk_bfp_row_cultivation3,
154  fmc_Herbicide, // dk_bfp_herbicide1,
155  fmc_Insecticide, // dk_bfp_insecticide,
156  fmc_Insecticide, // dk_bfp_insecticide,
157  fmc_Insecticide, // dk_bfp_insecticide,
158  fmc_Fungicide, // dk_bfp_fungicide1,
159  fmc_Fungicide, // dk_bfp_fungicide2,
160  fmc_Fungicide, // dk_bfp_fungicide3,
161  fmc_Fungicide, // dk_bfp_fungicide4,
162  fmc_Fungicide, // dk_bfp_fungicide5,
163  fmc_Fungicide, // dk_bfp_fungicide6,
164  fmc_Fungicide, // dk_bfp_fungicide7,
165  fmc_Fungicide, // dk_bfp_fungicide8,
166  fmc_Watering, // dk_bfp_water2,
167  fmc_Others, // dk_bfp_straw_cover,
168  fmc_Harvest, // dk_bfp_harvest,
169  fmc_Herbicide, // dk_bfp_herbicide2,
170  fmc_Fertilizer, // dk_bfp_fertilizer2_s,
171  fmc_Fertilizer, // dk_bfp_fertilizer2_p,
172  fmc_Watering, // dk_bfp_water3,
173  fmc_Herbicide // dk_bfp_herbicide3,
174  // no foobar entry
175 
176  };
177  // Iterate over the catlist elements and copy them to vector
178  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
179  }

References DK_BFP1_BASE, dk_bfp1_foobar, fmc_Cultivation, fmc_Fertilizer, fmc_Fungicide, fmc_Harvest, fmc_Herbicide, fmc_Insecticide, fmc_Others, fmc_Watering, Crop::m_base_elements_no, and Crop::m_ManagementCategories.

Referenced by DK_BushFruit_Perm1().


The documentation for this class was generated from the following files:
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
fmc_Insecticide
Definition: LandscapeFarmingEnums.h:1005
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::Strigling
virtual bool Strigling(LE *a_field, double a_user, int a_days)
Carry out a mechanical weeding on a_field.
Definition: FarmFuncs.cpp:1206
dk_bfp1_strigling1
Definition: DK_BushFruit_Perm1.h:51
dk_bfp1_molluscicide
Definition: DK_BushFruit_Perm1.h:38
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
Farm::ProductApplication
virtual bool ProductApplication(LE *a_field, double a_user, int a_days, double a_applicationrate, PlantProtectionProducts a_ppp, bool a_isgranularpesticide=false, int a_orcharddrifttype=0)
Apply test pesticide to a_field.
Definition: FarmFuncs.cpp:2267
dk_bfp_fungicide5
Definition: DK_BushFruit_Perm1.h:78
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
DK_BushFruit_Perm1::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: DK_BushFruit_Perm1.h:113
Calendar::GetYearNumber
int GetYearNumber(void)
Definition: Calendar.h:72
dk_bfp_fungicide7
Definition: DK_BushFruit_Perm1.h:80
Farm::Molluscicide
virtual bool Molluscicide(LE *a_field, double a_user, int a_days)
Apply molluscicide to a_field.
Definition: FarmFuncs.cpp:2310
dk_bfp1_plant
Definition: DK_BushFruit_Perm1.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
fmc_Herbicide
Definition: LandscapeFarmingEnums.h:1006
dk_bfp1_sleep_all_day
Definition: DK_BushFruit_Perm1.h:37
dk_bfp_fungicide4
Definition: DK_BushFruit_Perm1.h:77
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
dk_bfp_row_cultivation3
Definition: DK_BushFruit_Perm1.h:69
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
dk_bfp1_fungicide1
Definition: DK_BushFruit_Perm1.h:58
dk_bfp_fertilizer1_s
Definition: DK_BushFruit_Perm1.h:63
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
dk_bfp_herbicide3
Definition: DK_BushFruit_Perm1.h:89
dk_bfp_harvest
Definition: DK_BushFruit_Perm1.h:84
DK_BFP_AFTER_EST
#define DK_BFP_AFTER_EST
A flag used to indicate autumn ploughing status.
Definition: DK_BushFruit_Perm1.h:27
Farm::FP_PK
virtual bool FP_PK(LE *a_field, double a_user, int a_days)
Apply PK fertilizer, on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:673
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: Farm.cpp:747
dk_bfp_water1_cover
Definition: DK_BushFruit_Perm1.h:66
CfgBool::value
bool value() const
Definition: Configurator.h:164
DK_BFP_EARLY_HARVEST
#define DK_BFP_EARLY_HARVEST
Definition: DK_BushFruit_Perm1.h:28
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.
dk_bfp1_strigling2
Definition: DK_BushFruit_Perm1.h:52
DK_BFP1_BASE
#define DK_BFP1_BASE
Definition: DK_BushFruit_Perm1.h:23
dk_bfp1_row_cultivation2
Definition: DK_BushFruit_Perm1.h:54
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
dk_bfp_insecticide3
Definition: DK_BushFruit_Perm1.h:73
dk_bfp_water2
Definition: DK_BushFruit_Perm1.h:82
dk_bfp_row_cultivation2
Definition: DK_BushFruit_Perm1.h:68
dk_bfp_insecticide2
Definition: DK_BushFruit_Perm1.h:72
dk_bfp_fertilizer2_p
Definition: DK_BushFruit_Perm1.h:87
dk_bfp1_water2
Definition: DK_BushFruit_Perm1.h:59
Calendar::Date
long Date(void)
Definition: Calendar.h:57
Farm::HarvestBushFruit
virtual bool HarvestBushFruit(LE *a_field, double a_user, int a_days)
Harvest bush fruit on a_field - no tramlines since fruits are picked by hand, the bush stays on field...
Definition: FarmFuncs.cpp:1794
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
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
dk_bfp_water1
Definition: DK_BushFruit_Perm1.h:65
dk_bfp_insecticide1
Definition: DK_BushFruit_Perm1.h:71
dk_bfp_herbicide2
Definition: DK_BushFruit_Perm1.h:85
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
dk_bfp1_row_cultivation1
Definition: DK_BushFruit_Perm1.h:53
dk_bfp_fungicide1
Definition: DK_BushFruit_Perm1.h:74
dk_bfp1_row_cultivation3
Definition: DK_BushFruit_Perm1.h:55
fmc_Watering
Definition: LandscapeFarmingEnums.h:1011
dk_bfp1_herbicide1
Definition: DK_BushFruit_Perm1.h:44
dk_bfp_cover_off
Definition: DK_BushFruit_Perm1.h:62
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
dk_bfp_cover_on
Definition: DK_BushFruit_Perm1.h:61
Farm::FiberCovering
virtual bool FiberCovering(LE *a_field, double a_user, int a_days)
Fiber covering applied on a_field.
Definition: FarmFuncs.cpp:1766
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
dk_bfp_herbicide1
Definition: DK_BushFruit_Perm1.h:70
dk_bfp1_insecticide1
Definition: DK_BushFruit_Perm1.h:47
Farm::FA_N
virtual bool FA_N(LE *a_field, double a_user, int a_days)
Apply N fertilizer, on a_field owned by a stock farmer.
Definition: FarmFuncs.cpp:713
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
tov_DKBushFruit_Perm1
Definition: LandscapeFarmingEnums.h:442
Crop::m_farm
Farm * m_farm
Definition: Farm.h:498
Crop::m_field
LE * m_field
Definition: Farm.h:499
dk_bfp1_fertilizer2_p
Definition: DK_BushFruit_Perm1.h:57
dk_bfp1_shallow_harrow2
Definition: DK_BushFruit_Perm1.h:46
dk_bfp_fertilizer1_p
Definition: DK_BushFruit_Perm1.h:64
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
dk_bfp_row_cultivation1
Definition: DK_BushFruit_Perm1.h:67
CfgArray_Double::value
std::vector< double > value() const
Definition: Configurator.h:219
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
Farm::InsecticideTreat
virtual bool InsecticideTreat(LE *a_field, double a_user, int a_days)
Apply insecticide to a_field.
Definition: FarmFuncs.cpp:2135
dk_bfp1_water1
Definition: DK_BushFruit_Perm1.h:50
Farm::ShallowHarrow
virtual bool ShallowHarrow(LE *a_field, double a_user, int a_days)
Carry out a shallow harrow event on a_field, e.g., after grass cutting event.
Definition: FarmFuncs.cpp:473
Farm::RowCultivation
virtual bool RowCultivation(LE *a_field, double a_user, int a_days)
Carry out a harrowing between crop rows on a_field.
Definition: FarmFuncs.cpp:1183
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
dk_bfp1_foobar
Definition: DK_BushFruit_Perm1.h:90
dk_bfp1_start
Definition: DK_BushFruit_Perm1.h:36
dk_bfp_fungicide8
Definition: DK_BushFruit_Perm1.h:81
TTypesOfVegetation
TTypesOfVegetation
Values that represent the types of vegetation that are represented in ALMaSS.
Definition: LandscapeFarmingEnums.h:192
dk_bfp1_shallow_harrow1
Definition: DK_BushFruit_Perm1.h:45
Farm::StrawCovering
virtual bool StrawCovering(LE *a_field, double a_user, int a_days)
Straw covering applied on a_field.
Definition: FarmFuncs.cpp:1738
Crop::m_date_modifier
static int m_date_modifier
Holds a value that shifts test pesticide use by this many days in crops modified to use it.
Definition: Farm.h:514
fmc_Harvest
Definition: LandscapeFarmingEnums.h:1012
dk_bfp_straw_cover
Definition: DK_BushFruit_Perm1.h:83
dk_bfp_fertilizer2_s
Definition: DK_BushFruit_Perm1.h:86
dk_bfp1_fertilizer2_s
Definition: DK_BushFruit_Perm1.h:56
Farm::FiberRemoval
virtual bool FiberRemoval(LE *a_field, double a_user, int a_days)
Fiber covering removed from a_field.
Definition: FarmFuncs.cpp:1780
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
dk_bfp_fungicide3
Definition: DK_BushFruit_Perm1.h:76
Crop::Crop
Crop(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: Farm.cpp:733
dk_bfp_fungicide2
Definition: DK_BushFruit_Perm1.h:75
Farm::FA_PK
virtual bool FA_PK(LE *a_field, double a_user, int a_days)
Apply PK fertilizer to a_field owned by an stock farmer.
Definition: FarmFuncs.cpp:1010
dk_bfp1_fertilizer1_p
Definition: DK_BushFruit_Perm1.h:40
cfg_pest_bushfruit_on
CfgBool cfg_pest_bushfruit_on
Turn on pesticides for bush fruit.
dk_bfp_water3
Definition: DK_BushFruit_Perm1.h:88
dk_bfp1_spring_harrow3
Definition: DK_BushFruit_Perm1.h:43
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
dk_bfp1_herbicide2
Definition: DK_BushFruit_Perm1.h:60
WARN_BUG
Definition: MapErrorMsg.h:34
ppp_1
Definition: LandscapeFarmingEnums.h:1079
dk_bfp1_spring_harrow1
Definition: DK_BushFruit_Perm1.h:41
dk_bfp1_spring_harrow2
Definition: DK_BushFruit_Perm1.h:42
fmc_Fungicide
Definition: LandscapeFarmingEnums.h:1007
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
Farm::SpringHarrow
virtual bool SpringHarrow(LE *a_field, double a_user, int a_days)
Carry out a harrow event in the spring on a_field.
Definition: FarmFuncs.cpp:459
dk_bfp_fungicide6
Definition: DK_BushFruit_Perm1.h:79
dk_bfp1_fertilizer1_s
Definition: DK_BushFruit_Perm1.h:39