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

DK_OOrchPear class
. More...

#include <DK_OOrchPear.h>

Inheritance diagram for DK_OOrchPear:
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_OOrchPear (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_OOrchPear class
.

See DK_OOrchPear.h::DK_OOrchPearToDo 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_OOrchPear()

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

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

Member Function Documentation

◆ Do()

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

59 {
60  m_farm = a_farm;
61  m_field = a_field;
62  m_ev = a_ev;
63  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).
64  bool flag = false;
65  int d1 = 0;
66  int noDates = 1;
68  // Depending what event has occured jump to the correct bit of code
69  switch (m_ev->m_todo)
70  {
71  case dk_oope_start:
72  {
73  // dk_obfp1_start just sets up all the starting conditions and reference dates that are needed to start a dk_obfp1
74 
76  DK_OOPE_EST_YEAR = false;
77 
78  a_field->ClearManagementActionSum();
79 
80  m_last_date = g_date->DayInYear(31, 12); // Should match the last flexdate below
81  //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
82  std::vector<std::vector<int>> flexdates(1 + 1, std::vector<int>(2, 0));
83  // Set up the date management stuff
84  // Start and stop dates for all events after harvest
85  flexdates[0][1] = g_date->DayInYear(31, 12); // last possible day of cutting orch
86  // Now these are done in pairs, start & end for each operation. If its not used then -1
87  flexdates[1][0] = -1; // This date will be moved back as far as necessary and potentially to flexdates 1 (start op 1)
88  flexdates[1][1] = -1; // This date will be moved back as far as necessary and potentially to flexdates 1 (end op 1)
89 
90  // 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
91  int isSpring = 365;
92  if (StartUpCrop(isSpring, flexdates, int(dk_oope_spring_plough))) break;
93 
94  // End single block date checking code. Please see next line comment as well.
95  // Reinit d1 to first possible starting date.
96  // Here we queue up the first event
97  //Each field has assign randomly a DK_ooap_YEARS_AFTER_PLANT
98 
100  {
101  d1 = g_date->OldDays() + g_date->DayInYear(1, 3) + isSpring;
103  }
104  else if ((DK_OOPE_YEARS_AFTER_PLANT + g_date->GetYearNumber()) % 1 == 0)
105  {
106  d1 = g_date->OldDays() + g_date->DayInYear(1, 1) + isSpring;
108  }
109  break;
110 
111  }
112  break;
113 
114  // LKM: This is the first real farm operation
116  if (m_ev->m_lock || m_farm->DoIt_prob(1.00)) {
117  if (!m_farm->SpringPlough(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
119  break;
120  }
121  DK_OOPE_EST_YEAR = true;
122  }
124  break;
126  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
127  {
128  if (!a_farm->StubbleHarrowing(m_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
130  break;
131  }
132  }
134  break;
136  if (m_ev->m_lock || m_farm->DoIt_prob(0.50))
137  {
138  if (!a_farm->StubbleHarrowing(m_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
140  break;
141  }
142  }
143  if (a_farm->IsStockFarmer()) {
144  SimpleEvent(g_date->Date() + 1, dk_oope_manure1_s, false);
145  break;
146  }
147  else SimpleEvent(g_date->Date() + 1, dk_oope_manure1_p, false);
148  break;
149  case dk_oope_manure1_s:
150  if (!a_farm->FA_Manure(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
151  SimpleEvent(g_date->Date() + 1, dk_oope_manure1_s, true);
152  break;
153  }
154  SimpleEvent(g_date->Date() + 1, dk_oope_water1, false);
155  break;
156 
157  case dk_oope_manure1_p:
158  if (!a_farm->FP_Manure(m_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
159  SimpleEvent(g_date->Date() + 1, dk_oope_manure1_p, true);
160  break;
161  }
162  SimpleEvent(g_date->Date() + 1, dk_oope_water1, false);
163  break;
164  case dk_oope_water1:
165  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
166  SimpleEvent(g_date->Date() + 1, dk_oope_water1, true);
167  break;
168  }
170  break;
171  case dk_oope_subsoiler:
172  if (!a_farm->DeepPlough(m_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
173  SimpleEvent(g_date->Date() + 1, dk_oope_subsoiler, true);
174  break;
175  }
177  break;
178  case dk_oope_planting:
179  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
180  SimpleEvent(g_date->Date() + 1, dk_oope_planting, true);
181  break;
182  }
183  SimpleEvent(g_date->Date(), dk_oope_sow_grass, false); // sow thread
184  SimpleEvent(g_date->Date(), dk_oope_manual_cutting5, false); // cutting thread
185  break;
186 
187  case dk_oope_sow_grass:
188  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
189  SimpleEvent(g_date->Date() + 1, dk_oope_sow_grass, true);
190  break;
191  }
192  break; // end of thread
193 
194  // start of years after planting year:
196  if (!a_farm->SleepAllDay(m_field, 0.0, g_date->DayInYear(31, 1) - g_date->DayInYear())) {
198  break;
199  }
202  break;
203 
204  case dk_oope_fungicide5:
205  if (!a_farm->OrganicFungicide(m_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
206  SimpleEvent(g_date->Date() + 1, dk_oope_fungicide5, true);
207  break;
208  }
209  break;
210 
212  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 1) - g_date->DayInYear())) {
214  break;
215  }
216  if (a_farm->IsStockFarmer()) {
217  SimpleEvent(g_date->Date() + 25, dk_oope_manual_cutting2, false); // thread for manual cutting (once a month)
218  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 3), dk_oope_manure2_s, false); // main thread
219  SimpleEvent(g_date->OldDays() + g_date->DayInYear(20, 3), dk_oope_fungicide1, false); // pesticide thread
220  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_oope_boron_s, false); // fertilizer thread
221  break;
222  }
223  else SimpleEvent(g_date->Date() + 25, dk_oope_manual_cutting2, false); // thread for manual cutting (once a month)
224  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 3), dk_oope_manure2_p, false); // main thread
225  SimpleEvent(g_date->OldDays() + g_date->DayInYear(20, 3), dk_oope_fungicide1, false); // pesticide thread
226  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_oope_boron_p, false); // fertilizer thread
227  break;
229  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(28, 2) - g_date->DayInYear())) {
231  break;
232  }
234  break;
236  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
238  break;
239  }
241  break;
243  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
245  break;
246  }
248  break;
250  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
252  break;
253  }
255  break;
257  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
259  break;
260  }
262  break;
264  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
266  break;
267  }
269  break;
271  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
273  break;
274  }
276  break;
278  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
280  break;
281  }
283  break;
285  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
287  break;
288  }
290  break;
292  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
294  break;
295  }
296  if (DK_OOPE_EST_YEAR == true)
297  {
298  done = true;
299  break;
300  }
301  break;
302  // end of cutting thread
303  // fertilizer thread:
304 
305  case dk_oope_boron_s:
306  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
307  if (!a_farm->FA_Boron(m_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
308  SimpleEvent(g_date->Date() + 1, dk_oope_boron_s, true);
309  break;
310  }
311  }
312  break;
313  // end of fertilizer thread
314 
315  case dk_oope_boron_p:
316  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
317  if (!a_farm->FP_Boron(m_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
318  SimpleEvent(g_date->Date() + 1, dk_oope_boron_p, true);
319  break;
320  }
321  }
322  break;
323  // end of fertilizer thread
324  // pesticide thread:
325  case dk_oope_fungicide1:
326  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
327  if (!a_farm->OrganicFungicide(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
328  SimpleEvent(g_date->Date() + 1, dk_oope_fungicide1, true);
329  break;
330  }
331  }
334  break;
335 
336  case dk_oope_insecticide:
337  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
338  if (!a_farm->OrganicInsecticide(m_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
340  break;
341  }
342  }
343  break;
344 
345  case dk_oope_fungicide2:
346  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
347  if (!a_farm->OrganicFungicide(m_field, 0.0, g_date->DayInYear(25, 6) - g_date->DayInYear())) {
348  SimpleEvent(g_date->Date() + 1, dk_oope_fungicide2, true);
349  break;
350  }
351  }
353  break;
354 
355  case dk_oope_fungicide3:
356  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) {
357  if (!a_farm->OrganicFungicide(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
358  SimpleEvent(g_date->Date() + 1, dk_oope_fungicide3, true);
359  break;
360  }
361  }
363  break;
364 
365  case dk_oope_fungicide4:
366  if (!a_farm->OrganicFungicide(m_field, 0.0, g_date->DayInYear(31, 12) - g_date->DayInYear())) {
367  SimpleEvent(g_date->Date() + 1, dk_oope_fungicide4, true);
368  break;
369  }
370  break;
371  // end of thread
372 
373  case dk_oope_manure2_s:
374  if (!a_farm->FA_Manure(m_field, 0.0, g_date->DayInYear(1, 4) - g_date->DayInYear())) {
375  SimpleEvent(g_date->Date() + 1, dk_oope_manure2_s, true);
376  break;
377  }
378  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_oope_row_cultivation1, false); //row cultivation thread
379  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_oope_water2, false); // water thread
380  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_oope_cutting1, false); // cutting grass thread
381  SimpleEvent(g_date->OldDays() + g_date->DayInYear(15, 6), dk_oope_remove_fruits, false); // main thread
382  break;
383 
384  case dk_oope_manure2_p:
385  if (!a_farm->FP_Manure(m_field, 0.0, g_date->DayInYear(1, 4) - g_date->DayInYear())) {
386  SimpleEvent(g_date->Date() + 1, dk_oope_manure2_p, true);
387  break;
388  }
389  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_oope_row_cultivation1, false); //row cultivation thread
390  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_oope_water2, false); // water thread
391  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_oope_cutting1, false); // cutting grass thread
392  SimpleEvent(g_date->OldDays() + g_date->DayInYear(15, 6), dk_oope_remove_fruits, false); // main thread
393  break;
394 
396  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
398  break;
399  }
401  break;
402 
404  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
406  break;
407  }
408  break;
409  // end of thread
410 
411  //Here comes water thread:
412  case dk_oope_water2:
413  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
414  SimpleEvent(g_date->Date() + 1, dk_oope_water2, true);
415  break;
416  }
417  SimpleEvent(g_date->Date() + 25, dk_oope_water3, false);
418  break;
419  case dk_oope_water3:
420  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 6) - g_date->DayInYear())) {
421  SimpleEvent(g_date->Date() + 1, dk_oope_water3, true);
422  break;
423  }
424  SimpleEvent(g_date->Date() + 25, dk_oope_water4, false);
425  break;
426  case dk_oope_water4:
427  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 7) - g_date->DayInYear())) {
428  SimpleEvent(g_date->Date() + 1, dk_oope_water4, true);
429  break;
430  }
431  SimpleEvent(g_date->Date() + 25, dk_oope_water5, false);
432  break;
433  case dk_oope_water5:
434  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 8) - g_date->DayInYear())) {
435  SimpleEvent(g_date->Date() + 1, dk_oope_water5, true);
436  break;
437  }
438  SimpleEvent(g_date->Date() + 25, dk_oope_water6, false);
439  break;
440  case dk_oope_water6:
441  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 9) - g_date->DayInYear())) {
442  SimpleEvent(g_date->Date() + 1, dk_oope_water6, true);
443  break;
444  }
445  SimpleEvent(g_date->Date() + 25, dk_oope_water7, false);
446  break;
447  case dk_oope_water7:
448  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 10) - g_date->DayInYear())) {
449  SimpleEvent(g_date->Date() + 1, dk_oope_water7, true);
450  break;
451  }
452  break;
453  // end of thread
454  // cutting grass thread:
455  //Here comes water thread:
456  case dk_oope_cutting1:
457  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 6) - g_date->DayInYear())) {
458  SimpleEvent(g_date->Date() + 1, dk_oope_cutting1, true);
459  break;
460  }
461  SimpleEvent(g_date->Date() + 25, dk_oope_cutting2, false);
462  break;
463  case dk_oope_cutting2:
464  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 7) - g_date->DayInYear())) {
465  SimpleEvent(g_date->Date() + 1, dk_oope_cutting2, true);
466  break;
467  }
468  SimpleEvent(g_date->Date() + 25, dk_oope_cutting3, false);
469  break;
470  case dk_oope_cutting3:
471  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 8) - g_date->DayInYear())) {
472  SimpleEvent(g_date->Date() + 1, dk_oope_cutting3, true);
473  break;
474  }
475  SimpleEvent(g_date->Date() + 25, dk_oope_cutting4, false);
476  break;
477  case dk_oope_cutting4:
478  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 9) - g_date->DayInYear())) {
479  SimpleEvent(g_date->Date() + 1, dk_oope_cutting4, true);
480  break;
481  }
482  SimpleEvent(g_date->Date() + 25, dk_oope_cutting5, false);
483  break;
484  case dk_oope_cutting5:
485  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 10) - g_date->DayInYear())) {
486  SimpleEvent(g_date->Date() + 1, dk_oope_cutting5, true);
487  break;
488  }
489  SimpleEvent(g_date->Date() + 25, dk_oope_cutting6, false);
490  break;
491  case dk_oope_cutting6:
492  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 11) - g_date->DayInYear())) {
493  SimpleEvent(g_date->Date() + 1, dk_oope_cutting6, true);
494  break;
495  }
496  break;
497  // end of thread
498 
500  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
502  break;
503  }
505  break;
506  case dk_oope_harvest:
507  if (!a_farm->FruitHarvest(m_field, 0.0, g_date->DayInYear(1, 11) - g_date->DayInYear())) {
508  SimpleEvent(g_date->Date() + 1, dk_oope_harvest, true);
509  break;
510  }
512  break;
513  case dk_oope_fungicide6:
514  if (!a_farm->OrganicFungicide(m_field, 0.0, g_date->DayInYear(2, 11) - g_date->DayInYear())) {
515  SimpleEvent(g_date->Date() + 1, dk_oope_fungicide6, true);
516  break;
517  }
519  break;
521  if (!a_farm->Pruning(m_field, 0.0, m_field->GetMDates(1, 0) - g_date->DayInYear())) {
523  break;
524  }
525  done = true;
526  break;
527  // So we are done, and somewhere else the farmer will queue up the start event of the next crop (DK_OOrchPear)
528  // END of MAIN THREAD
529  break;
530  default:
531  g_msg->Warn(WARN_BUG, "DK_OOrchPear::Do(): "
532  "Unknown event type! ", "");
533  exit(1);
534  }
535  return done;
536 }

References LE::ClearManagementActionSum(), Farm::CutOrch(), Calendar::Date(), Calendar::DayInYear(), Farm::DeepPlough(), dk_oope_boron_p, dk_oope_boron_s, dk_oope_cutting1, dk_oope_cutting2, dk_oope_cutting3, dk_oope_cutting4, dk_oope_cutting5, dk_oope_cutting6, DK_OOPE_EST_YEAR, dk_oope_fungicide1, dk_oope_fungicide2, dk_oope_fungicide3, dk_oope_fungicide4, dk_oope_fungicide5, dk_oope_fungicide6, dk_oope_harvest, dk_oope_insecticide, dk_oope_manual_cutting1, dk_oope_manual_cutting10, dk_oope_manual_cutting11, dk_oope_manual_cutting12, dk_oope_manual_cutting2, dk_oope_manual_cutting3, dk_oope_manual_cutting4, dk_oope_manual_cutting5, dk_oope_manual_cutting6, dk_oope_manual_cutting7, dk_oope_manual_cutting8, dk_oope_manual_cutting9, dk_oope_manure1_p, dk_oope_manure1_s, dk_oope_manure2_p, dk_oope_manure2_s, dk_oope_planting, dk_oope_remove_fruits, dk_oope_row_cultivation1, dk_oope_row_cultivation2, dk_oope_sleep_all_day, dk_oope_sow_grass, dk_oope_spring_plough, dk_oope_start, dk_oope_stubble_harrow1, dk_oope_stubble_harrow2, dk_oope_subsoiler, dk_oope_water1, dk_oope_water2, dk_oope_water3, dk_oope_water4, dk_oope_water5, dk_oope_water6, dk_oope_water7, DK_OOPE_YEARS_AFTER_PLANT, Farm::DoIt_prob(), Farm::FA_Boron(), Farm::FA_Manure(), Farm::FP_Boron(), Farm::FP_Manure(), Farm::FruitHarvest(), g_date, g_msg, LE::GetMDates(), Calendar::GetYearNumber(), Farm::IsStockFarmer(), Crop::m_ev, Crop::m_farm, Crop::m_field, Crop::m_last_date, FarmEvent::m_lock, FarmEvent::m_todo, Calendar::OldDays(), Farm::OrganicFungicide(), Farm::OrganicInsecticide(), Farm::Pruning(), Farm::RowCultivation(), Crop::SimpleEvent(), Farm::SleepAllDay(), Farm::SpringPlough(), Farm::SpringSow(), Crop::StartUpCrop(), Farm::StubbleHarrowing(), tov_DKOOrchPear, MapErrorMsg::Warn(), WARN_BUG, and Farm::Water().

◆ SetUpFarmCategoryInformation()

void DK_OOrchPear::SetUpFarmCategoryInformation ( )
inline
110  {
111  const int elements = 2 + (dk_oope_foobar - DK_OOPE_BASE);
113 
114  FarmManagementCategory catlist[elements] =
115  {
116  fmc_Others, // zero element unused but must be here
117  fmc_Others, // dk_oope_start = 1, // Compulsory, must always be 1 (one).
118  fmc_Others, // dk_oope_sleep_all_day = DK_OOPE_BASE,
119  fmc_Cultivation, //dk_oope_spring_plough,
120  fmc_Cultivation, //dk_oope_stubble_harrow1,
121  fmc_Cultivation, //dk_oope_stubble_harrow2,
122  fmc_Fertilizer, //dk_oope_manure1,
123  fmc_Watering, //dk_oope_water1,
124  fmc_Cultivation, //dk_oope_subsoiler,
125  fmc_Others, //dk_oope_planting,
126  fmc_Others, //dk_oope_sow_grass,
127  fmc_Cutting, //dk_oope_manual_cutting1,
128  fmc_Cutting, //dk_oope_manual_cutting2,
129  fmc_Cutting, //dk_oope_manual_cutting3,
130  fmc_Cutting, //dk_oope_manual_cutting4,
131  fmc_Cutting, //dk_oope_manual_cutting5,
132  fmc_Cutting, //dk_oope_manual_cutting6,
133  fmc_Cutting, //dk_oope_manual_cutting7,
134  fmc_Cutting, //dk_oope_manual_cutting8,
135  fmc_Cutting, //dk_oope_manual_cutting9,
136  fmc_Cutting, //dk_oope_manual_cutting10,
137  fmc_Cutting, //dk_oope_manual_cutting11,
138  fmc_Cutting, //dk_oope_manual_cutting12,
139  fmc_Cutting, //dk_oope_manure2,
140  fmc_Cultivation, //dk_oope_row_cultivation1,
141  fmc_Watering, //dk_oope_water2,
142  fmc_Watering, //dk_oope_water3,
143  fmc_Watering, //dk_oope_water4,
144  fmc_Watering, //dk_oope_water5,
145  fmc_Watering, //dk_oope_water6,
146  fmc_Watering, //dk_oope_water7,
147  fmc_Cutting, //dk_oope_cutting1,
148  fmc_Cutting, //dk_oope_cutting2,
149  fmc_Cutting, //dk_oope_cutting3,
150  fmc_Cutting, //dk_oope_cutting4,
151  fmc_Cutting, //dk_oope_cutting5,
152  fmc_Cutting, //dk_oope_cutting6,
153  fmc_Cultivation, //dk_oope_row_cultivation2,
154  fmc_Others, //dk_oope_fungicide1,
155  fmc_Fertilizer, //dk_oope_boron,
156  fmc_Others, //dk_oope_fungicide2,
157  fmc_Others, //dk_oope_insecticide,
158  fmc_Cutting, //dk_oope_remove_fruits,
159  fmc_Others, //dk_oope_fungicide3,
160  fmc_Harvest, //dk_oope_harvest,
161  fmc_Others, //dk_oope_fungicide4,
162  fmc_Others, //dk_oope_fungicide5,
163  fmc_Others, //dk_oope_fungicide6,
164 
165 
166  // no foobar entry
167 
168  };
169  // Iterate over the catlist elements and copy them to vector
170  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
171 
172  }

References DK_OOPE_BASE, dk_oope_foobar, fmc_Cultivation, fmc_Cutting, fmc_Fertilizer, fmc_Harvest, fmc_Others, fmc_Watering, Crop::m_base_elements_no, and Crop::m_ManagementCategories.

Referenced by DK_OOrchPear().


The documentation for this class was generated from the following files:
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
dk_oope_water6
Definition: DK_OOrchPear.h:67
dk_oope_foobar
Definition: DK_OOrchPear.h:87
dk_oope_harvest
Definition: DK_OOrchPear.h:83
Farm::OrganicInsecticide
virtual bool OrganicInsecticide(LE *a_field, double a_user, int a_days)
Biocide applied on a_field.
Definition: FarmFuncs.cpp:2195
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::IsStockFarmer
bool IsStockFarmer(void)
Definition: Farm.h:961
dk_oope_fungicide3
Definition: DK_OOrchPear.h:82
dk_oope_manure1_s
Definition: DK_OOrchPear.h:42
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
LE::ClearManagementActionSum
void ClearManagementActionSum()
clears the management action counters
Definition: Elements.h:247
dk_oope_manual_cutting8
Definition: DK_OOrchPear.h:55
Calendar::GetYearNumber
int GetYearNumber(void)
Definition: Calendar.h:72
dk_oope_stubble_harrow1
Definition: DK_OOrchPear.h:40
dk_oope_manual_cutting3
Definition: DK_OOrchPear.h:50
dk_oope_manual_cutting1
Definition: DK_OOrchPear.h:48
dk_oope_sleep_all_day
Definition: DK_OOrchPear.h:38
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
dk_oope_cutting3
Definition: DK_OOrchPear.h:71
Farm::FA_Manure
virtual bool FA_Manure(LE *a_field, double a_user, int a_days)
Spread manure on a_field owned by an stock farmer.
Definition: FarmFuncs.cpp:1110
dk_oope_cutting2
Definition: DK_OOrchPear.h:70
DK_OOrchPear::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: DK_OOrchPear.h:110
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_oope_water1
Definition: DK_OOrchPear.h:44
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
dk_oope_manual_cutting12
Definition: DK_OOrchPear.h:59
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_oope_manual_cutting11
Definition: DK_OOrchPear.h:58
dk_oope_boron_p
Definition: DK_OOrchPear.h:78
Farm::FP_Manure
virtual bool FP_Manure(LE *a_field, double a_user, int a_days)
Spread manure on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:896
fmc_Cutting
Definition: LandscapeFarmingEnums.h:1009
dk_oope_row_cultivation1
Definition: DK_OOrchPear.h:62
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
DK_OOPE_BASE
#define DK_OOPE_BASE
Definition: DK_OOrchPear.h:26
dk_oope_manual_cutting10
Definition: DK_OOrchPear.h:57
dk_oope_manual_cutting6
Definition: DK_OOrchPear.h:53
dk_oope_water3
Definition: DK_OOrchPear.h:64
dk_oope_manual_cutting9
Definition: DK_OOrchPear.h:56
dk_oope_spring_plough
Definition: DK_OOrchPear.h:39
dk_oope_cutting4
Definition: DK_OOrchPear.h:72
Calendar::Date
long Date(void)
Definition: Calendar.h:57
dk_oope_row_cultivation2
Definition: DK_OOrchPear.h:75
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
dk_oope_manure2_s
Definition: DK_OOrchPear.h:60
tov_DKOOrchPear
Definition: LandscapeFarmingEnums.h:467
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
dk_oope_insecticide
Definition: DK_OOrchPear.h:80
fmc_Watering
Definition: LandscapeFarmingEnums.h:1011
dk_oope_water2
Definition: DK_OOrchPear.h:63
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
Farm::FA_Boron
virtual bool FA_Boron(LE *a_field, double a_user, int a_days)
Apply soluble Boron to a_field owned by a stock farmer.
Definition: FarmFuncs.cpp:868
Farm::CutOrch
virtual bool CutOrch(LE *a_field, double a_user, int a_days)
Cut vegetation on orchard crop. //based on cut to silage - values from cutting function of orchard.
Definition: FarmFuncs.cpp:1666
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
Farm::FP_Boron
virtual bool FP_Boron(LE *a_field, double a_user, int a_days)
Apply soluble Boron to a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:854
dk_oope_water7
Definition: DK_OOrchPear.h:68
dk_oope_cutting6
Definition: DK_OOrchPear.h:74
Crop::m_farm
Farm * m_farm
Definition: Farm.h:498
Crop::m_field
LE * m_field
Definition: Farm.h:499
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
dk_oope_cutting5
Definition: DK_OOrchPear.h:73
dk_oope_manual_cutting2
Definition: DK_OOrchPear.h:49
Farm::SleepAllDay
virtual bool SleepAllDay(LE *a_field, double a_user, int a_days)
Nothing to to today on a_field.
Definition: FarmFuncs.cpp:272
dk_oope_fungicide1
Definition: DK_OOrchPear.h:76
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
dk_oope_sow_grass
Definition: DK_OOrchPear.h:47
dk_oope_remove_fruits
Definition: DK_OOrchPear.h:81
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_oope_manual_cutting4
Definition: DK_OOrchPear.h:51
TTypesOfVegetation
TTypesOfVegetation
Values that represent the types of vegetation that are represented in ALMaSS.
Definition: LandscapeFarmingEnums.h:192
Farm::DeepPlough
virtual bool DeepPlough(LE *a_field, double a_user, int a_days)
Carry out a deep ploughing event on a_field.
Definition: FarmFuncs.cpp:408
fmc_Harvest
Definition: LandscapeFarmingEnums.h:1012
Farm::FruitHarvest
virtual bool FruitHarvest(LE *a_field, double a_user, int a_days)
FruitHarvest (harvest of the mature fruits, e.g., grapes) applied on a_field.
Definition: FarmFuncs.cpp:1959
dk_oope_manure1_p
Definition: DK_OOrchPear.h:43
dk_oope_planting
Definition: DK_OOrchPear.h:46
dk_oope_manual_cutting5
Definition: DK_OOrchPear.h:52
Farm::Pruning
virtual bool Pruning(LE *a_field, double a_user, int a_days)
Pruning applied on a_field - details needs to be added (e.g., impact on biomass, influence/impacts in...
Definition: FarmFuncs.cpp:1897
dk_oope_water5
Definition: DK_OOrchPear.h:66
dk_oope_water4
Definition: DK_OOrchPear.h:65
DK_OOPE_EST_YEAR
#define DK_OOPE_EST_YEAR
Definition: DK_OOrchPear.h:24
dk_oope_stubble_harrow2
Definition: DK_OOrchPear.h:41
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
dk_oope_fungicide5
Definition: DK_OOrchPear.h:85
dk_oope_fungicide2
Definition: DK_OOrchPear.h:79
dk_oope_boron_s
Definition: DK_OOrchPear.h:77
Farm::OrganicFungicide
virtual bool OrganicFungicide(LE *a_field, double a_user, int a_days)
Biocide applied on a_field.
Definition: FarmFuncs.cpp:2231
Crop::Crop
Crop(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: Farm.cpp:733
dk_oope_cutting1
Definition: DK_OOrchPear.h:69
dk_oope_manure2_p
Definition: DK_OOrchPear.h:61
dk_oope_subsoiler
Definition: DK_OOrchPear.h:45
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
dk_oope_manual_cutting7
Definition: DK_OOrchPear.h:54
WARN_BUG
Definition: MapErrorMsg.h:34
dk_oope_start
Definition: DK_OOrchPear.h:37
DK_OOPE_YEARS_AFTER_PLANT
#define DK_OOPE_YEARS_AFTER_PLANT
Definition: DK_OOrchPear.h:23
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
dk_oope_fungicide4
Definition: DK_OOrchPear.h:84
Farm::StubbleHarrowing
virtual bool StubbleHarrowing(LE *a_field, double a_user, int a_days)
Carry out stubble harrowing on a_field.
Definition: FarmFuncs.cpp:1523
dk_oope_fungicide6
Definition: DK_OOrchPear.h:86