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

DK_OOrchCherry class
. More...

#include <DK_OOrchCherry.h>

Inheritance diagram for DK_OOrchCherry:
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_OOrchCherry (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_OOrchCherry class
.

See DK_OOrchCherry.h::DK_OOrchCherryToDo 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_OOrchCherry()

DK_OOrchCherry::DK_OOrchCherry ( TTypesOfVegetation  a_tov,
TTypesOfCrops  a_toc,
Landscape a_L 
)
inline
96  : Crop(a_tov, a_toc, a_L)
97  {
98  // When we start it off, the first possible date for a farm operation is ...
99  // This information is used by other crops when they decide how much post processing of
100  // the management is allowed after harvest before the next crop starts.
101  m_first_date=g_date->DayInYear( 31,1 );
103  }

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

Member Function Documentation

◆ Do()

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

58 {
59  m_farm = a_farm;
60  m_field = a_field;
61  m_ev = a_ev;
62  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).
63  bool flag = false;
64  int d1 = 0;
65  int noDates = 1;
67  // Depending what event has occured jump to the correct bit of code
68  switch (m_ev->m_todo)
69  {
70  case dk_ooch_start:
71  {
72  // dk_ooch_start just sets up all the starting conditions and reference dates that are needed to start a dk_och
73 
75  DK_OOCH_YEARS_HARVEST = false;
76  DK_OOCH_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  if (StartUpCrop(365, flexdates, int(dk_ooch_manual_cutting1))) break;
92 
93  // End single block date checking code. Please see next line comment as well.
94  // Reinit d1 to first possible starting date.
95  // Here we queue up the first event
96  //Each field has assign randomly a DK_ooap_YEARS_AFTER_PLANT
97 
98  if ((DK_OOCH_YEARS_AFTER_PLANT + g_date->GetYearNumber()) % 10 == 0)
99  {
100  d1 = g_date->OldDays() + g_date->DayInYear(1, 1) + 365;
101  SimpleEvent(d1, dk_ooch_wait, false);
102  }
103  else if ((DK_OOCH_YEARS_AFTER_PLANT + g_date->GetYearNumber()) % 10 == 1)
104  {
105  d1 = g_date->OldDays() + g_date->DayInYear(1, 1) + 365;
107  }
108  else if ((DK_OOCH_YEARS_AFTER_PLANT + g_date->GetYearNumber()) % 10 == 2)
109  {
110  d1 = g_date->OldDays() + g_date->DayInYear(1, 1) + 365;
112  }
113  else
114  {
115  d1 = g_date->OldDays() + g_date->DayInYear(1, 1);
116  if (g_date->Date() >= d1) d1 += 365;
118  }
119  break;
120 
121  }
122  break;
123 
124  // LKM: This is the first real farm operation
125  case dk_ooch_wait:
126  if (!m_farm->SleepAllDay(m_field, 0.0, g_date->DayInYear(31, 1) - g_date->DayInYear())) {
127  SimpleEvent(g_date->Date() + 1, dk_ooch_wait, true);
128  break;
129  }
131  break;
132 
134  if (m_ev->m_lock || m_farm->DoIt_prob(1.00)) {
135  if (!m_farm->SpringPlough(m_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
137  break;
138  }
139  DK_OOCH_EST_YEAR = true;
140  }
141  SimpleEvent(g_date->Date() + 1, dk_ooch_manure_s1, false);
142  break;
143 
144  case dk_ooch_manure_s1:
145  if (a_farm->IsStockFarmer()) {
146  if (!a_farm->FA_Manure(m_field, 0.0, g_date->DayInYear(1, 9) - g_date->DayInYear())) {
147  SimpleEvent(g_date->Date() + 1, dk_ooch_manure_s1, true);
148  break;
149  }
150  }
151  SimpleEvent(g_date->Date() + 1, dk_ooch_water1, false);
152  break;
153 
154  case dk_ooch_manure_p1:
155  if (!a_farm->FP_Manure(m_field, 0.0, g_date->DayInYear(1, 9) - g_date->DayInYear())) {
156  SimpleEvent(g_date->Date() + 1, dk_ooch_manure_p1, true);
157  break;
158  }
159  SimpleEvent(g_date->Date() + 1, dk_ooch_subsoiler, false);
160  break;
161 
162  case dk_ooch_subsoiler:
163  if (!a_farm->DeepPlough(m_field, 0.0, g_date->DayInYear(2, 9) - g_date->DayInYear())) {
164  SimpleEvent(g_date->Date() + 1, dk_ooch_subsoiler, true);
165  break;
166  }
167  SimpleEvent(g_date->Date() + 25, dk_ooch_water1, false);
168  break;
169 
170  case dk_ooch_water1:
171  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
172  SimpleEvent(g_date->Date() + 1, dk_ooch_water1, true);
173  break;
174  }
176  break;
177  case dk_ooch_planting:
178  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
179  SimpleEvent(g_date->Date() + 1, dk_ooch_planting, true);
180  break;
181  }
182  SimpleEvent(g_date->Date(), dk_ooch_sow_grass, false); // sow thread
183  SimpleEvent(g_date->Date(), dk_ooch_manual_cutting10, false); // cutting thread
184  break;
185 
186  case dk_ooch_sow_grass:
187  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
188  SimpleEvent(g_date->Date() + 1, dk_ooch_sow_grass, true);
189  break;
190  }
191  break; // end of thread
192 
193  // start of years after planting year:
195  if (!a_farm->SleepAllDay(m_field, 0.0, g_date->DayInYear(31, 1) - g_date->DayInYear())) {
197  break;
198  }
199  DK_OOCH_YEARS_HARVEST = true; // we need to remember who do this (they should harvest)
201  break;
202 
204  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 1) - g_date->DayInYear())) {
206  break;
207  }
208  SimpleEvent(g_date->Date() + 25, dk_ooch_manual_cutting2, false); // thread for manual cutting (once a month)
209  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 3), dk_ooch_manure_s2, false); // main thread
210  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 6), dk_ooch_insecticide1, false); // insecticide thread
211  break;
213  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(28, 2) - g_date->DayInYear())) {
215  break;
216  }
218  break;
220  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
222  break;
223  }
225  break;
227  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
229  break;
230  }
232  break;
234  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
236  break;
237  }
239  break;
241  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
243  break;
244  }
246  break;
248  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
250  break;
251  }
253  break;
255  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
257  break;
258  }
260  break;
262  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
264  break;
265  }
267  break;
269  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
271  break;
272  }
274  break;
276  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
278  break;
279  }
280  if (DK_OOCH_EST_YEAR == true)
281  {
282  done = true;
283  break;
284  }
285  break;
286  // end of cutting thread
287 
289  if (m_ev->m_lock || m_farm->DoIt_prob(1.00)) {
290  if (!a_farm->OrganicInsecticide(m_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
292  break;
293  }
294  }
297  break;
298 
300  if (m_ev->m_lock || m_farm->DoIt_prob(1.00)) {
301  if (!a_farm->OrganicInsecticide(m_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
303  break;
304  }
305  }
306  break;
307 
309  if (m_ev->m_lock || m_farm->DoIt_prob(1.00)) {
310  if (!a_farm->OrganicInsecticide(m_field, 0.0, g_date->DayInYear(15, 8) - g_date->DayInYear())) {
312  break;
313  }
314  }
315  SimpleEvent(g_date->Date() + 14, dk_ooch_insecticide4, false);
316  break;
317 
319  if (m_ev->m_lock || m_farm->DoIt_prob(1.00)) {
320  if (!a_farm->OrganicInsecticide(m_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
322  break;
323  }
324  }
325  break; // end of thread
326 
327  case dk_ooch_manure_s2:
328  if (a_farm->IsStockFarmer()) {
329  if (!a_farm->FA_Slurry(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
330  SimpleEvent(g_date->Date() + 1, dk_ooch_manure_s2, true);
331  break;
332  }
333  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_ooch_row_cultivation1, false); //row cultivation thread
334  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_ooch_water2, false); // water thread
335  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_ooch_cutting1, false); // cutting grass thread
336  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 8), dk_ooch_harvest, false); // harvest thread
337  break;
338  }
339  else SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_ooch_manure_p2, false);
340  break;
341 
342  case dk_ooch_manure_p2:
343  if (!a_farm->FP_NPK(m_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
344  SimpleEvent(g_date->Date() + 1, dk_ooch_manure_s2, true);
345  break;
346  }
347  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_ooch_row_cultivation1, false); //row cultivation thread
348  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 4), dk_ooch_water2, false); // water thread
349  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 5), dk_ooch_cutting1, false); // cutting grass thread
350  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 8), dk_ooch_harvest, false); // harvest - main thread
351  break;
352 
354  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) { // suggestion - not so often in conv. orchards
355  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
357  break;
358  }
359  }
361  break;
362 
364  if (m_ev->m_lock || m_farm->DoIt_prob(0.10)) { // suggestion - not so often in conv. orchards
365  if (!a_farm->RowCultivation(m_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
367  break;
368  }
369  }
370  break;
371  // end of thread
372 
373  //Here comes water thread:
374  case dk_ooch_water2:
375  if (m_field->GetSoilType() == tos_Sand || m_field->GetSoilType() == tos_LoamySand || m_field->GetSoilType() == tos_SandyLoam || m_field->GetSoilType() == tos_SandyClayLoam) // on sandy soils (NL ZAND & LOSS)
376  {
377  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
378  SimpleEvent(g_date->Date() + 1, dk_ooch_water2, true);
379  break;
380  }
381  SimpleEvent(g_date->Date() + 25, dk_ooch_water3, false);
382  break;
383  }
384  break; // no watering if clay soils
385 
386  case dk_ooch_water3:
387  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 6) - g_date->DayInYear())) {
388  SimpleEvent(g_date->Date() + 1, dk_ooch_water3, true);
389  break;
390  }
391  SimpleEvent(g_date->Date() + 25, dk_ooch_water4, false);
392  break;
393  case dk_ooch_water4:
394  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 7) - g_date->DayInYear())) {
395  SimpleEvent(g_date->Date() + 1, dk_ooch_water4, true);
396  break;
397  }
398  SimpleEvent(g_date->Date() + 25, dk_ooch_water5, false);
399  break;
400  case dk_ooch_water5:
401  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 8) - g_date->DayInYear())) {
402  SimpleEvent(g_date->Date() + 1, dk_ooch_water5, true);
403  break;
404  }
405  SimpleEvent(g_date->Date() + 25, dk_ooch_water6, false);
406  break;
407  case dk_ooch_water6:
408  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 9) - g_date->DayInYear())) {
409  SimpleEvent(g_date->Date() + 1, dk_ooch_water6, true);
410  break;
411  }
412  SimpleEvent(g_date->Date() + 25, dk_ooch_water7, false);
413  break;
414  case dk_ooch_water7:
415  if (!a_farm->Water(m_field, 0.0, g_date->DayInYear(1, 10) - g_date->DayInYear())) {
416  SimpleEvent(g_date->Date() + 1, dk_ooch_water7, true);
417  break;
418  }
419  break;
420  // end of thread
421  // cutting grass thread:
422  case dk_ooch_cutting1:
423  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 6) - g_date->DayInYear())) {
424  SimpleEvent(g_date->Date() + 1, dk_ooch_cutting1, true);
425  break;
426  }
427  SimpleEvent(g_date->Date() + 25, dk_ooch_cutting2, false);
428  break;
429  case dk_ooch_cutting2:
430  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 7) - g_date->DayInYear())) {
431  SimpleEvent(g_date->Date() + 1, dk_ooch_cutting2, true);
432  break;
433  }
434  SimpleEvent(g_date->Date() + 25, dk_ooch_cutting3, false);
435  break;
436  case dk_ooch_cutting3:
437  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 8) - g_date->DayInYear())) {
438  SimpleEvent(g_date->Date() + 1, dk_ooch_cutting3, true);
439  break;
440  }
441  SimpleEvent(g_date->Date() + 25, dk_ooch_cutting4, false);
442  break;
443  case dk_ooch_cutting4:
444  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 9) - g_date->DayInYear())) {
445  SimpleEvent(g_date->Date() + 1, dk_ooch_cutting4, true);
446  break;
447  }
448  SimpleEvent(g_date->Date() + 25, dk_ooch_cutting5, false);
449  break;
450  case dk_ooch_cutting5:
451  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 10) - g_date->DayInYear())) {
452  SimpleEvent(g_date->Date() + 1, dk_ooch_cutting5, true);
453  break;
454  }
455  SimpleEvent(g_date->Date() + 25, dk_ooch_cutting6, false);
456  break;
457  case dk_ooch_cutting6:
458  if (!a_farm->CutOrch(m_field, 0.0, g_date->DayInYear(1, 11) - g_date->DayInYear())) {
459  SimpleEvent(g_date->Date() + 1, dk_ooch_cutting6, true);
460  break;
461  }
462  break;
463  // end of thread
464 
465  case dk_ooch_harvest:
466  if (DK_OOCH_YEARS_HARVEST == true) {
467  if (!a_farm->FruitHarvest(m_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
468  SimpleEvent(g_date->Date() + 1, dk_ooch_harvest, true);
469  break;
470  }
471  }
473  break;
474 
476  if (!a_farm->Pruning(m_field, 0.0, m_field->GetMDates(1, 0) - g_date->DayInYear())) {
478  break;
479  }
480  done = true;
481  break;
482  // So we are done, and somewhere else the farmer will queue up the start event of the next crop (DK_OOrchCherry)
483  // END of MAIN THREAD
484  break;
485  default:
486  g_msg->Warn(WARN_BUG, "DK_OOrchCherry::Do(): "
487  "Unknown event type! ", "");
488  exit(1);
489  }
490  return done;
491 }

References LE::ClearManagementActionSum(), Farm::CutOrch(), Calendar::Date(), Calendar::DayInYear(), Farm::DeepPlough(), dk_ooch_autumn_plough, dk_ooch_cutting1, dk_ooch_cutting2, dk_ooch_cutting3, dk_ooch_cutting4, dk_ooch_cutting5, dk_ooch_cutting6, DK_OOCH_EST_YEAR, dk_ooch_harvest, dk_ooch_insecticide1, dk_ooch_insecticide2, dk_ooch_insecticide3, dk_ooch_insecticide4, dk_ooch_manual_cutting1, dk_ooch_manual_cutting10, dk_ooch_manual_cutting11, dk_ooch_manual_cutting12, dk_ooch_manual_cutting2, dk_ooch_manual_cutting3, dk_ooch_manual_cutting4, dk_ooch_manual_cutting5, dk_ooch_manual_cutting6, dk_ooch_manual_cutting7, dk_ooch_manual_cutting8, dk_ooch_manual_cutting9, dk_ooch_manure_p1, dk_ooch_manure_p2, dk_ooch_manure_s1, dk_ooch_manure_s2, dk_ooch_planting, dk_ooch_row_cultivation1, dk_ooch_row_cultivation2, dk_ooch_sleep_all_day, dk_ooch_sow_grass, dk_ooch_start, dk_ooch_subsoiler, dk_ooch_wait, dk_ooch_water1, dk_ooch_water2, dk_ooch_water3, dk_ooch_water4, dk_ooch_water5, dk_ooch_water6, dk_ooch_water7, DK_OOCH_YEARS_AFTER_PLANT, DK_OOCH_YEARS_HARVEST, Farm::DoIt_prob(), Farm::FA_Manure(), Farm::FA_Slurry(), Farm::FP_Manure(), Farm::FP_NPK(), Farm::FruitHarvest(), g_date, g_msg, LE::GetMDates(), LE::GetSoilType(), 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::OrganicInsecticide(), Farm::Pruning(), Farm::RowCultivation(), Crop::SimpleEvent(), Farm::SleepAllDay(), Farm::SpringPlough(), Farm::SpringSow(), Crop::StartUpCrop(), tos_LoamySand, tos_Sand, tos_SandyClayLoam, tos_SandyLoam, tov_DKOOrchCherry, MapErrorMsg::Warn(), WARN_BUG, and Farm::Water().

◆ SetUpFarmCategoryInformation()

void DK_OOrchCherry::SetUpFarmCategoryInformation ( )
inline
104  {
105  const int elements = 2 + (dk_ooch_foobar - DK_OOCH_BASE);
107 
108  FarmManagementCategory catlist[elements] =
109  {
110  fmc_Others, // zero element unused but must be here
111  fmc_Others, // dk_ooch_start = 1, // Compulsory, must always be 1 (one).
112  fmc_Others, // dk_ooch_sleep_all_day = DK_OOCH_BASE,
113  fmc_Others, // dk_ooch_wait,
114  fmc_Cultivation, //dk_ooch_spring_plough,
115  fmc_Fertilizer, //dk_ooch_manure_s1,
116  fmc_Fertilizer, //dk_ooch_manure_p1,
117  fmc_Watering, //dk_ooch_water1,
118  fmc_Cultivation, //dk_ooch_subsoiler,
119  fmc_Others, //dk_ooch_planting,
120  fmc_Others, //dk_ooch_sow_grass,
121  fmc_Others, //dk_ooch_insecticide1,
122  fmc_Others, //dk_ooch_insecticide2,
123  fmc_Others, //dk_ooch_insecticide3,
124  fmc_Cutting, //dk_ooch_manual_cutting1,
125  fmc_Cutting, //dk_ooch_manual_cutting2,
126  fmc_Cutting, //dk_ooch_manual_cutting3,
127  fmc_Cutting, //dk_ooch_manual_cutting4,
128  fmc_Cutting, //dk_ooch_manual_cutting5,
129  fmc_Cutting, //dk_ooch_manual_cutting6,
130  fmc_Cutting, //dk_ooch_manual_cutting7,
131  fmc_Cutting, //dk_ooch_manual_cutting8,
132  fmc_Cutting, //dk_ooch_manual_cutting9,
133  fmc_Cutting, //dk_ooch_manual_cutting10,
134  fmc_Cutting, //dk_ooch_manual_cutting11,
135  fmc_Cutting, //dk_ooch_manual_cutting12,
136  fmc_Cutting, //dk_ooch_manure_s2,
137  fmc_Cutting, //dk_ooch_manure_p2,
138  fmc_Cultivation, //dk_ooch_row_cultivation1,
139  fmc_Watering, //dk_ooch_water2,
140  fmc_Watering, //dk_ooch_water3,
141  fmc_Watering, //dk_ooch_water4,
142  fmc_Watering, //dk_ooch_water5,
143  fmc_Watering, //dk_ooch_water6,
144  fmc_Watering, //dk_ooch_water7,
145  fmc_Cutting, //dk_ooch_cutting1,
146  fmc_Cutting, //dk_ooch_cutting2,
147  fmc_Cutting, //dk_ooch_cutting3,
148  fmc_Cutting, //dk_ooch_cutting4,
149  fmc_Cutting, //dk_ooch_cutting5,
150  fmc_Cutting, //dk_ooch_cutting6,
151  fmc_Cultivation, //dk_ooch_row_cultivation2,
152  fmc_Others, //dk_ooch_insecticide4,
153  fmc_Harvest, //dk_ooch_harvest,
154 
155  // no foobar entry
156 
157  };
158  // Iterate over the catlist elements and copy them to vector
159  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
160 
161  }

References DK_OOCH_BASE, dk_ooch_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_OOrchCherry().


The documentation for this class was generated from the following files:
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
DK_OOCH_EST_YEAR
#define DK_OOCH_EST_YEAR
Definition: DK_OOrchCherry.h:25
dk_ooch_manual_cutting3
Definition: DK_OOrchCherry.h:53
Farm::FA_Slurry
virtual bool FA_Slurry(LE *a_field, double a_user, int a_days)
Spready slurry on a_field owned by an stock farmer.
Definition: FarmFuncs.cpp:1067
DK_OOCH_YEARS_AFTER_PLANT
#define DK_OOCH_YEARS_AFTER_PLANT
Definition: DK_OOrchCherry.h:23
Farm::OrganicInsecticide
virtual bool OrganicInsecticide(LE *a_field, double a_user, int a_days)
Biocide applied on a_field.
Definition: FarmFuncs.cpp:2195
DK_OOrchCherry::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: DK_OOrchCherry.h:104
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_ooch_manual_cutting10
Definition: DK_OOrchCherry.h:60
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
dk_ooch_manual_cutting2
Definition: DK_OOrchCherry.h:52
dk_ooch_manure_s2
Definition: DK_OOrchCherry.h:63
dk_ooch_planting
Definition: DK_OOrchCherry.h:46
dk_ooch_foobar
Definition: DK_OOrchCherry.h:81
LE::ClearManagementActionSum
void ClearManagementActionSum()
clears the management action counters
Definition: Elements.h:247
Farm::FP_NPK
virtual bool FP_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer, on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:645
dk_ooch_manual_cutting8
Definition: DK_OOrchCherry.h:58
Calendar::GetYearNumber
int GetYearNumber(void)
Definition: Calendar.h:72
dk_ooch_cutting1
Definition: DK_OOrchCherry.h:72
dk_ooch_water6
Definition: DK_OOrchCherry.h:70
tos_SandyClayLoam
Definition: LandscapeFarmingEnums.h:722
dk_ooch_manure_p1
Definition: DK_OOrchCherry.h:43
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_ooch_subsoiler
Definition: DK_OOrchCherry.h:45
dk_ooch_manual_cutting11
Definition: DK_OOrchCherry.h:61
dk_ooch_cutting5
Definition: DK_OOrchCherry.h:76
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
tos_SandyLoam
Definition: LandscapeFarmingEnums.h:721
dk_ooch_water5
Definition: DK_OOrchCherry.h:69
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_ooch_manual_cutting5
Definition: DK_OOrchCherry.h:55
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
dk_ooch_autumn_plough
Definition: DK_OOrchCherry.h:41
tov_DKOOrchCherry
Definition: LandscapeFarmingEnums.h:468
dk_ooch_cutting2
Definition: DK_OOrchCherry.h:73
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_ooch_water2
Definition: DK_OOrchCherry.h:66
dk_ooch_sow_grass
Definition: DK_OOrchCherry.h:47
dk_ooch_water1
Definition: DK_OOrchCherry.h:44
dk_ooch_manual_cutting9
Definition: DK_OOrchCherry.h:59
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_OOCH_YEARS_HARVEST
#define DK_OOCH_YEARS_HARVEST
Definition: DK_OOrchCherry.h:24
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
dk_ooch_row_cultivation1
Definition: DK_OOrchCherry.h:65
Calendar::Date
long Date(void)
Definition: Calendar.h:57
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
LE::GetSoilType
int GetSoilType()
Definition: Elements.h:302
dk_ooch_manure_p2
Definition: DK_OOrchCherry.h:64
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
dk_ooch_insecticide3
Definition: DK_OOrchCherry.h:50
dk_ooch_manual_cutting6
Definition: DK_OOrchCherry.h:56
fmc_Watering
Definition: LandscapeFarmingEnums.h:1011
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
dk_ooch_sleep_all_day
Definition: DK_OOrchCherry.h:39
dk_ooch_cutting4
Definition: DK_OOrchCherry.h:75
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
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
dk_ooch_insecticide2
Definition: DK_OOrchCherry.h:49
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
dk_ooch_manual_cutting1
Definition: DK_OOrchCherry.h:51
dk_ooch_water4
Definition: DK_OOrchCherry.h:68
dk_ooch_manual_cutting4
Definition: DK_OOrchCherry.h:54
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
dk_ooch_insecticide4
Definition: DK_OOrchCherry.h:79
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
tos_Sand
Definition: LandscapeFarmingEnums.h:719
dk_ooch_cutting3
Definition: DK_OOrchCherry.h:74
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
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_ooch_manure_s1
Definition: DK_OOrchCherry.h:42
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
dk_ooch_water7
Definition: DK_OOrchCherry.h:71
Crop::m_last_date
int m_last_date
Definition: Farm.h:503
g_msg
MapErrorMsg * g_msg
Definition: MapErrorMsg.cpp:41
TTypesOfVegetation
TTypesOfVegetation
Values that represent the types of vegetation that are represented in ALMaSS.
Definition: LandscapeFarmingEnums.h:192
dk_ooch_insecticide1
Definition: DK_OOrchCherry.h:48
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
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_ooch_water3
Definition: DK_OOrchCherry.h:67
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
dk_ooch_manual_cutting7
Definition: DK_OOrchCherry.h:57
dk_ooch_row_cultivation2
Definition: DK_OOrchCherry.h:78
dk_ooch_harvest
Definition: DK_OOrchCherry.h:80
Crop::Crop
Crop(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: Farm.cpp:733
dk_ooch_start
Definition: DK_OOrchCherry.h:38
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
tos_LoamySand
Definition: LandscapeFarmingEnums.h:720
dk_ooch_cutting6
Definition: DK_OOrchCherry.h:77
DK_OOCH_BASE
#define DK_OOCH_BASE
Definition: DK_OOrchCherry.h:27
dk_ooch_wait
Definition: DK_OOrchCherry.h:40
WARN_BUG
Definition: MapErrorMsg.h:34
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
dk_ooch_manual_cutting12
Definition: DK_OOrchCherry.h:62