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

#include <SpringBarleySpr.h>

Public Member Functions

bool Do (Farm *a_farm, LE *a_field, FarmEvent *a_ev)
 
 SpringBarleySpr ()
 
- Public Member Functions inherited from Crop
virtual ~Crop ()
 
 Crop ()
 
int GetFirstDate (void)
 
void ChooseNextCrop (int a_no_dates)
 Chooses the next crop to grow in a field. More...
 
int GetCropClassification ()
 
void SetCropClassification (int a_classification)
 

Additional Inherited Members

- Protected Member Functions inherited from Crop
void SimpleEvent (long a_date, int a_todo, bool a_lock)
 Adds an event to this crop management. More...
 
void SimpleEvent_ (long a_date, int a_todo, bool a_lock, Farm *a_farm, LE *a_field)
 Adds an event to this crop management without relying on member variables. More...
 
- Protected Attributes inherited from Crop
Farmm_farm
 
LE * m_field
 
FarmEventm_ev
 
int m_first_date
 
int m_count
 
int m_last_date
 
int m_ddegstoharvest
 
int m_CropClassification
 

Constructor & Destructor Documentation

◆ SpringBarleySpr()

SpringBarleySpr::SpringBarleySpr ( )
inline
80  {
81  m_first_date=g_date->DayInYear(1,4);
82  }

References Crop::m_first_date.

Member Function Documentation

◆ Do()

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

Reimplemented from Crop.

43 {
44 
45  double ins_app_prop=cfg_ins_app_prop1.value();
46  double herbi_app_prop=cfg_herbi_app_prop.value();
47  m_farm = a_farm;
48  m_field = a_field;
49  m_ev = a_ev;
50 
51  bool done = false;
52 
53  switch ( m_ev->m_todo )
54  {
55  case sbspr_start:
56  {
59 
60  // Record whether skylark scrapes are present and adjust flag accordingly
61  if (cfg_SpringBarley_SkScrapes.value()) {
62  a_field->m_skylarkscrapes=true;
63  } else {
64  a_field->m_skylarkscrapes=false;
65  }
66  // Set up the date management stuff
67  // Could save the start day in case it is needed later
68  // m_field->m_startday = m_ev->m_startday;
69  m_last_date=g_date->DayInYear(30,8);
70  // Start and stop dates for all events after harvest
71  int noDates=2;
72  m_field->SetMDates(0,0,g_date->DayInYear(20,8));
73  // Determined by harvest date - used to see if at all possible
74  m_field->SetMDates(1,0,g_date->DayInYear(10,8));
75  m_field->SetMDates(0,1,g_date->DayInYear(10,8));
76  m_field->SetMDates(1,1,g_date->DayInYear(30,8));
77  // Check the next crop for early start, unless it is a spring crop
78  // in which case we ASSUME that no checking is necessary!!!!
79  // So DO NOT implement a crop that runs over the year boundary
80 
81  //new if: do the check only for non-optimising farms and if year>0. (030713 - m_rotation used only in the hidden year, so I modified the condition from >7 to >0)
82  int d1;
83  if (!(m_farm->GetType() == tof_OptimisingFarm && g_date->GetYearNumber() > 0)) {
84 
85  if (m_ev->m_startday > g_date->DayInYear( 1, 7 )) {
86  if (m_field->GetMDates( 0, 0 ) >= m_ev->m_startday) {
87  g_msg->Warn( WARN_BUG, "SpringBarleySpr::Do(): "
88  "Harvest too late for the next crop to start!!!", "" );
89  exit( 1 );
90  }
91  // Now fix any late finishing problems
92  for (int i = 0; i < noDates; i++) {
93  if (m_field->GetMDates( 0, i ) >= m_ev->m_startday) {
94  m_field->SetMDates( 0, i, m_ev->m_startday - 1 ); //move the starting date
95  }
96  if (m_field->GetMDates( 1, i ) >= m_ev->m_startday) {
97  m_field->SetMConstants( i, 0 );
98  m_field->SetMDates( 1, i, m_ev->m_startday - 1 ); //move the finishing date
99  }
100  }
101  }
102  // Now no operations can be timed after the start of the next crop.
103 
104  if (!m_ev->m_first_year) {
105  int today = g_date->Date();
106  d1 = g_date->OldDays() + m_first_date + 365; // Add 365 for spring crop
107  if (today > d1) {
108  // Yes too late - should not happen - raise an error
109  g_msg->Warn( WARN_BUG, "SpringBarleySpr::Do(): " "Crop start attempt after last possible start date", "" );
110  exit( 1 );
111  }
112  }
113  else {
114  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1, 4 ),
115  sbspr_spring_plough, false );
116  break;
117  }
118  }//if
119 
120  // End single block date checking code. Please see next line
121  // comment as well.
122  // Reinit d1 to first possible starting date.
123  d1 = g_date->OldDays() + 365 + g_date->DayInYear( 1, 4 );
124  // OK, let's go.
125  SimpleEvent(d1, sbspr_spring_plough, false);
126  SBSPR_SLURRY_DONE = false;
127  SBSPR_MANURE_DONE=false;
128  SBSPR_SLURRY_EXEC=false;
129  SBSPR_MANURE_EXEC=false;
130  SBSPR_DID_AUTUMN_PLOUGH = false;
131  }
132  break;
133 
134  case sbspr_spring_plough:
135  if (!m_farm->SpringPlough( m_field, 0.0, g_date->DayInYear( 10,4 ) - g_date->DayInYear()))
136  {
137  SimpleEvent( g_date->Date()+1, sbspr_spring_plough, true );
138  break;
139  }
140  {
141  int d1 = g_date->Date();
142  if ( d1 < g_date->OldDays() + g_date->DayInYear( 20,3 ))
143  {
144  d1 = g_date->OldDays() + g_date->DayInYear( 20,3 );
145  }
146  SimpleEvent( d1, sbspr_spring_harrow, false );
147  }
148  break;
149 
150  case sbspr_spring_harrow:
151  if (!m_farm->SpringHarrow( m_field, 0.0,
152  g_date->DayInYear( 10,4 ) - g_date->DayInYear())) { // WAS 10,4
153  SimpleEvent( g_date->Date() + 1, sbspr_spring_harrow, true );
154  break;
155  }
156  if (m_farm->IsStockFarmer()) {
157  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,4 ), // was 5,4
159  } else {
160  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 20,3 ),
161  sbspr_fertmanure_plant, false );
162  }
163  break;
164 
166  if ( m_ev->m_lock || m_farm->DoIt( 65 ) ||
168  {
169  if (!m_farm->FA_NPK( m_field, 0.0,
170  g_date->DayInYear( 10,4 ) - g_date->DayInYear())) { // was 10,4
171  SimpleEvent( g_date->Date() + 1, sbspr_fertmanure_stock_two, true );
172  break;
173  }
174  }
175  {
176  int d1 = g_date->Date();
177  if ( d1 < g_date->OldDays() + g_date->DayInYear( 25,3 )) {
178  d1 = g_date->OldDays() + g_date->DayInYear( 25,3 );
179  }
180  SimpleEvent( d1, sbspr_spring_sow, false );
181  }
182  break;
183 
185  if ( m_ev->m_lock || m_farm->DoIt( 75 ))
186  {
187  if (!m_farm->FP_NPK( m_field, 0.0,
188  g_date->DayInYear( 10, 4 ) - g_date->DayInYear())) { // WAS 10,4
189  SimpleEvent( g_date->Date() + 1, sbspr_fertmanure_plant, true );
190  break;
191  }
192  // Did FP_NPK so go directly to spring sow.
193  {
194  int d1 = g_date->Date();
195  if ( d1 < g_date->OldDays() + g_date->DayInYear( 25,3 )) { // was 25,3
196  d1 = g_date->OldDays() + g_date->DayInYear( 25,3 ); // was 25,3
197  }
198  SimpleEvent( d1, sbspr_spring_sow, false );
199  }
200  break;
201  }
202  SimpleEvent( g_date->Date(), sbspr_fertlnh3_plant, false );
203  break;
204 
206  if (!m_farm->FP_LiquidNH3( m_field, 0.0,
207  g_date->DayInYear( 10, 4 ) - // WAS 10,4
208  g_date->DayInYear())) {
209  SimpleEvent( g_date->Date() + 1, sbspr_fertlnh3_plant, true );
210  break;
211  }
212  SimpleEvent( g_date->Date(), sbspr_fertpk_plant, false );
213  break;
214 
215  case sbspr_fertpk_plant:
216  if (!m_farm->FP_PK( m_field, 0.0,
217  g_date->DayInYear( 10, 4 ) - // WAS 10,4
218  g_date->DayInYear())) {
219  SimpleEvent( g_date->Date() + 1, sbspr_fertpk_plant, true );
220  break;
221  }
222  {
223  int d1 = g_date->Date();
224  if ( d1 < g_date->OldDays() + g_date->DayInYear( 25,3 )) { // was 25,3
225  d1 = g_date->OldDays() + g_date->DayInYear( 25,3 ); // was 25,3
226  }
227  SimpleEvent( d1, sbspr_spring_sow, false );
228  }
229  break;
230 
231  case sbspr_spring_sow:
232  if (!m_farm->SpringSow( m_field, 0.0,
233  g_date->DayInYear( 10,4 ) - g_date->DayInYear())) { // WAS 10,4
234  SimpleEvent( g_date->Date() + 1, sbspr_spring_sow, true );
235  break;
236  }
237  {
238  int d1 = g_date->Date();
239  if ( d1 < g_date->OldDays() + g_date->DayInYear( 5,4 )) {
240  d1 = g_date->OldDays() + g_date->DayInYear( 5,4 );
241  }
242  SimpleEvent( d1, sbspr_spring_roll, false );
243  }
244  break;
245 
246  case sbspr_spring_roll:
247  if ( m_ev->m_lock || m_farm->DoIt( 0 )) // was 30
248  {
249  if (!m_farm->SpringRoll( m_field, 0.0,
250  g_date->DayInYear( 20,4 ) - g_date->DayInYear())) {
251  SimpleEvent( g_date->Date() + 1, sbspr_spring_roll, true );
252  break;
253  }
254  }
255  SBSPR_HERBI_DATE = 0;
256  SBSPR_GR_DATE = 0;
257  SBSPR_FUNGI_DATE = 0;
258  SBSPR_WATER_DATE = 0;
259  SBSPR_INSECT_DATE = 0;
260  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 5,5 ),
261  sbspr_herbicide_one, false );
262  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,5 ), sbspr_fungicide_one, false ); // Main.
263  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,5 ),
264  sbspr_GR, false );
265  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,5 ),
266  sbspr_water_one, false );
267  break;
268 
269  // Herbicide thread
270 
271  //ask for your BIherb: >0 - want to spray, otherwise - don't spray even if you should
272 
273  case sbspr_herbicide_one:
274  if ( g_date->Date() < SBSPR_GR_DATE + 1 ) {
275  SimpleEvent( g_date->Date() + 1, sbspr_herbicide_one, m_ev->m_lock );
276  break;
277  }
278  if ( m_ev->m_lock || m_farm->DoIt( (int) floor(0.5+70*herbi_app_prop * m_farm->Prob_multiplier()))) //modified probability
279  {
280  //new - for decision making
281  TTypesOfVegetation tov = m_field->GetVegType();
282  if(!m_ev->m_lock && !m_farm->Spraying_herbicides(tov)){
283  Field * pf = dynamic_cast<Field*>(m_field);
284  pf->Add_missed_herb_app();
285  if(m_farm->DoIt(47)) pf->Add_missed_herb_app(); //the 2nd missed application
287  } //end of the part for dec. making
288  else{
289  if (!m_farm->HerbicideTreat( m_field, 0.0, g_date->DayInYear( 15,5 ) - g_date->DayInYear()))
290  {
291  SimpleEvent( g_date->Date() + 1, sbspr_herbicide_one, true );
292  break;
293  }
294  }
295  SBSPR_HERBI_DATE = g_date->Date();
296  // Did first spray so see if should do another, 14 days later (min)
297  {
298  int d1 = g_date->Date() + 10;
299  if ( d1 < g_date->OldDays() + g_date->DayInYear( 16,5 )) {
300  d1 = g_date->OldDays() + g_date->DayInYear( 16,5 );
301  }
302  SimpleEvent( d1, sbspr_herbicide_two, false );
303  }
304  }
305  break;
306 
307  case sbspr_herbicide_two:
308  if ( g_date->Date() < SBSPR_GR_DATE + 1 ) {
309  SimpleEvent( g_date->Date() + 1, sbspr_herbicide_two, m_ev->m_lock );
310  break;
311  }
312  if ( m_ev->m_lock || m_farm->DoIt( (int) floor(0.5+47*herbi_app_prop*SBSPR_DECIDE_TO_HERB * m_farm->Prob_multiplier()))) //modified probability
313  {
314  if (!m_farm->HerbicideTreat( m_field, 0.0,
315  g_date->DayInYear( 30,5 ) - g_date->DayInYear())) {
316  SimpleEvent( g_date->Date() + 1, sbspr_herbicide_two, true );
317  break;
318  }
319  SBSPR_HERBI_DATE = g_date->Date();
320  }
321  break;
322 
323  // GReg thread
324  case sbspr_GR:
325  if ( g_date->Date() < SBSPR_HERBI_DATE + 1 ||
326  g_date->Date() < SBSPR_FUNGI_DATE + 1 ) {
327  SimpleEvent( g_date->Date() + 1, sbspr_GR, m_ev->m_lock );
328  break;
329  }
330  if ( m_ev->m_lock || m_farm->DoIt( (int) floor(0.5+5*cfg_greg_app_prop.value())))
331  {
332  if (!m_farm->GrowthRegulator( m_field, 0.0,
333  g_date->DayInYear( 25,5 ) - g_date->DayInYear())) {
334  SimpleEvent( g_date->Date() + 1, sbspr_GR, true );
335  break;
336  }
337  SBSPR_GR_DATE = g_date->Date();
338  }
339  break;
340 
341  // Fungicide thread & MAIN THREAD
342  case sbspr_fungicide_one:
343  if ( g_date->Date() < SBSPR_HERBI_DATE + 1 || g_date->Date() < SBSPR_GR_DATE + 1 ) {
344  SimpleEvent( g_date->Date() + 1, sbspr_fungicide_one, m_ev->m_lock );
345  break;
346  }
347  if ( m_ev->m_lock || m_farm->DoIt( (int) floor(0.5+30*cfg_fungi_app_prop1.value() * m_farm->Prob_multiplier()))) //modified probability
348  {
349  //new - for decision making
350  TTypesOfVegetation tov = m_field->GetVegType();
351  if(!m_ev->m_lock && !m_farm->Spraying_fungins(tov)){
352  Field * pf = dynamic_cast<Field*>(m_field);
353  pf->Add_missed_fi_app();
354  if(m_farm->DoIt(10)) pf->Add_missed_fi_app(); //the 2nd missed application
356  } //end of the part for dec. making
357  else{
358  if (!m_farm->FungicideTreat( m_field, 0.0, g_date->DayInYear( 25,5 ) - g_date->DayInYear())) {
359  SimpleEvent( g_date->Date() + 1, sbspr_fungicide_one, true );
360  break;
361  }
362  }
363  SBSPR_FUNGI_DATE = g_date->Date();
364  {
365  int d1 = g_date->Date() + 10;
366  if ( d1 < g_date->OldDays() + g_date->DayInYear( 25,5 )) {
367  d1 = g_date->OldDays() + g_date->DayInYear( 25,5 );
368  }
369  SimpleEvent( d1, sbspr_fungicide_two, false );
370  }
371  }
372  {
373  int d1 = g_date->Date();
374  if ( d1 < g_date->OldDays() + g_date->DayInYear( 15,5 )) {
375  d1 = g_date->OldDays() + g_date->DayInYear( 15,5 );
376  }
377  SimpleEvent( d1, sbspr_insecticide1, false );
378  }
379  break;
380 
381  case sbspr_fungicide_two:
382  if ( g_date->Date() < SBSPR_HERBI_DATE + 1 ||
383  g_date->Date() < SBSPR_GR_DATE + 1 ) {
384  SimpleEvent( g_date->Date() + 1, sbspr_fungicide_two, m_ev->m_lock );
385  break;
386  }
387  if ( m_ev->m_lock || m_farm->DoIt( (int) floor(0.5+10*cfg_fungi_app_prop1.value()*SBSPR_DECIDE_TO_FI * m_farm->Prob_multiplier()) )) //modified probability
388  {
389  if (!m_farm->FungicideTreat( m_field, 0.0,
390  g_date->DayInYear( 10,6 ) - g_date->DayInYear())) {
391  SimpleEvent( g_date->Date() + 1, sbspr_fungicide_two, true );
392  break;
393  }
394  SBSPR_FUNGI_DATE = g_date->Date();
395  }
396  break;
397 
398  // Water thread
399  case sbspr_water_one:
400  if ( g_date->Date() < SBSPR_HERBI_DATE + 1 ||
401  g_date->Date() < SBSPR_FUNGI_DATE + 1 ) {
402  SimpleEvent( g_date->Date() + 1, sbspr_water_one, m_ev->m_lock );
403  break;
404  }
405  if ( m_ev->m_lock || m_farm->DoIt( 20 ))
406  {
407  if (!m_farm->Water( m_field, 0.0,
408  g_date->DayInYear( 30,5 ) - g_date->DayInYear())) {
409  SimpleEvent( g_date->Date() + 1, sbspr_water_one, true );
410  break;
411  }
412  SBSPR_WATER_DATE = g_date->Date();
413  }
414  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
415  sbspr_water_two, false );
416  break;
417 
418  case sbspr_water_two:
419  if ( g_date->Date() < SBSPR_INSECT_DATE + 1 ) {
420  SimpleEvent( g_date->Date() + 1, sbspr_water_two, m_ev->m_lock );
421  break;
422  }
423  if ( m_ev->m_lock || m_farm->DoIt( 10 ))
424  {
425  if (!m_farm->Water( m_field, 0.0,
426  g_date->DayInYear( 1,7 ) - g_date->DayInYear())) {
427  SimpleEvent( g_date->Date() + 1, sbspr_water_two, true );
428  break;
429  }
430  SBSPR_WATER_DATE = g_date->Date();
431  }
432  break;
433 
434  // Insecticide thread & MAIN THREAD
435  case sbspr_insecticide1:
436  if ( g_date->Date() < SBSPR_WATER_DATE + 1 ) {
437  SimpleEvent( g_date->Date() + 1, sbspr_insecticide1, m_ev->m_lock );
438  break;
439  }
440  if (m_ev->m_lock || m_farm->DoIt((int)floor(0.5 + 35 * ins_app_prop * m_farm->Prob_multiplier()))) //modified probability
441  {
442  //new - for decision making
443  TTypesOfVegetation tov = m_field->GetVegType();
444  if (!m_ev->m_lock && !m_farm->Spraying_fungins(tov)){
445  Field * pf = dynamic_cast<Field*>(m_field);
446  pf->Add_missed_fi_app();
447  } //end of the part for dec. making
448  else{
449  // Here we check wheter we are using ERA pesticde or not
451  {
452  if (!m_farm->InsecticideTreat(m_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear()))
453  {
454  SimpleEvent(g_date->Date() + 1, sbspr_insecticide1, true);
455  break;
456  }
457  else SBSPR_INSECT_DATE = g_date->Date();
458  }
459  else {
461  SBSPR_INSECT_DATE = g_date->Date();
462  }
463  }
464  }
465  ChooseNextCrop (2);
466  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 8), sbspr_harvest, false);
467  SimpleEvent(g_date->Date() + 14, sbspr_insecticide2, false);
468  break;
469 
470  case sbspr_insecticide2:
471  if (m_ev->m_lock || m_farm->DoIt((int)floor(0.5 + 35 * cfg_ins_app_prop2.value()*m_farm->Prob_multiplier()))) //modified probability
472  {
474  {
476  }
477  else
478  {
479  if (!m_farm->InsecticideTreat(m_field, 0.0, SBSPR_INSECT_DATE + 28 - g_date->DayInYear())) {
480  SimpleEvent(g_date->Date() + 1, sbspr_insecticide2, true);
481  }
482  }
483  }
484  SimpleEvent(g_date->Date() + 14, sbspr_insecticide3, false);
485  break;
486 
487  case sbspr_insecticide3:
488  if (m_ev->m_lock || m_farm->DoIt((int)floor(0.5 + 35 * cfg_ins_app_prop3.value()*m_farm->Prob_multiplier()))) //modified probability
489  {
491  {
493  }
494  else
495  {
496  if (!m_farm->InsecticideTreat(m_field, 0.0, SBSPR_INSECT_DATE + 28 - g_date->DayInYear())) {
497  SimpleEvent(g_date->Date() + 1, sbspr_insecticide3, true);
498  }
499  }
500  }
501  break;
502 
503  case sbspr_harvest:
504  if (!m_farm->Harvest( m_field, 0.0, g_date->DayInYear( 20,8 ) - g_date->DayInYear())) {
505  SimpleEvent( g_date->Date() + 1, sbspr_harvest, true );
506  break;
507  }
508  SimpleEvent( g_date->Date(), sbspr_straw_chopping, false );
509  break;
510 
512  if ( m_ev->m_lock || m_farm->DoIt( 50 )) // was 50
513  {
514  // Force straw chopping to happen on the same day as harvest.
515  if (!m_farm->StrawChopping( m_field, 0.0, 0 )) {
516  // Shouldn't happen.
517  SimpleEvent( g_date->Date(), sbspr_straw_chopping, true );
518  break;
519  }
520  // Did chop, so go directly to stubble harrowing.
521  SimpleEvent( g_date->OldDays() + m_field->GetMDates(0,1),
522  sbspr_stubble_harrow, false );
523  break;
524  }
525  // Do hay baling first.
526  SimpleEvent( g_date->Date(), sbspr_hay_baling, false );
527  break;
528 
529  case sbspr_hay_baling:
530  if (m_field->GetMConstants(0)==0) {
531  if (!m_farm->HayBailing( m_field, 0.0, -1)) { //raise an error
532  g_msg->Warn( WARN_BUG, "SpringBarleySpr::Do(): failure in 'HayBailing' execution", "" );
533  exit( 1 );
534  }
535  }
536  else {
537  if (!m_farm->HayBailing( m_field, 0.0, m_field->GetMDates(1,0) - g_date->DayInYear())) {
538  SimpleEvent( g_date->Date() + 1, sbspr_hay_baling, true );
539  break;
540  }
541  }
542  SimpleEvent( g_date->OldDays() + m_field->GetMDates(0,1),
543  sbspr_stubble_harrow, false );
544  break;
545 
547  if ( m_ev->m_lock || m_farm->DoIt( 60 )) // WAS 60
548  {
549  if (m_field->GetMConstants(1)==0) {
550  if (!m_farm->StubbleHarrowing( m_field, 0.0, -1)) { //raise an error
551  g_msg->Warn( WARN_BUG, "SpringBarleySpr::Do(): failure in 'StubbleHarrowing' execution", "" );
552  exit( 1 );
553  }
554  }
555  else {
556  if (!m_farm->StubbleHarrowing( m_field, 0.0, m_field->GetMDates(1,1) - g_date->DayInYear())) {
557  SimpleEvent( g_date->Date() + 1, sbspr_stubble_harrow, true );
558  break;
559  }
560  }
561  }
562  // END MAIN THREAD
563  done=true;
564  break;
565 
566  default:
567  g_msg->Warn( WARN_BUG, "SpringBarleySpr::Do(): "
568  "Unknown event type! ", "" );
569  exit( 1 );
570  }
571  return done;
572 }

References cfg_fungi_app_prop1, cfg_greg_app_prop, cfg_herbi_app_prop, cfg_ins_app_prop1, cfg_ins_app_prop2, cfg_ins_app_prop3, cfg_pest_product_1_amount, cfg_pest_springbarley_on, cfg_SpringBarley_SkScrapes, Crop::ChooseNextCrop(), Farm::DoIt(), Farm::FA_NPK(), Farm::FP_LiquidNH3(), Farm::FP_NPK(), Farm::FP_PK(), Farm::FungicideTreat(), g_landscape_p, Farm::GetType(), Farm::GrowthRegulator(), Farm::Harvest(), Farm::HayBailing(), Farm::HerbicideTreat(), Farm::InsecticideTreat(), Farm::IsStockFarmer(), Crop::m_ev, Crop::m_farm, Crop::m_field, Crop::m_first_date, FarmEvent::m_first_year, Crop::m_last_date, FarmEvent::m_lock, FarmEvent::m_startday, FarmEvent::m_todo, ppp_1, Farm::Prob_multiplier(), Farm::ProductApplication_DateLimited(), SBSPR_DECIDE_TO_FI, SBSPR_DECIDE_TO_HERB, SBSPR_DID_AUTUMN_PLOUGH, sbspr_fertlnh3_plant, sbspr_fertmanure_plant, sbspr_fertmanure_stock_two, sbspr_fertpk_plant, SBSPR_FUNGI_DATE, sbspr_fungicide_one, sbspr_fungicide_two, sbspr_GR, SBSPR_GR_DATE, sbspr_harvest, sbspr_hay_baling, SBSPR_HERBI_DATE, sbspr_herbicide_one, sbspr_herbicide_two, SBSPR_INSECT_DATE, sbspr_insecticide1, sbspr_insecticide2, sbspr_insecticide3, SBSPR_MANURE_DONE, SBSPR_MANURE_EXEC, SBSPR_SLURRY_DONE, SBSPR_SLURRY_EXEC, sbspr_spring_harrow, sbspr_spring_plough, sbspr_spring_roll, sbspr_spring_sow, sbspr_start, sbspr_straw_chopping, sbspr_stubble_harrow, SBSPR_WATER_DATE, sbspr_water_one, sbspr_water_two, Crop::SimpleEvent(), Farm::Spraying_fungins(), Farm::Spraying_herbicides(), Farm::SpringHarrow(), Farm::SpringPlough(), Farm::SpringRoll(), Farm::SpringSow(), Farm::StrawChopping(), Farm::StubbleHarrowing(), Landscape::SupplyShouldSpray(), tof_OptimisingFarm, and Farm::Water().


The documentation for this class was generated from the following files:
cfg_SpringBarley_SkScrapes
CfgBool cfg_SpringBarley_SkScrapes
Farm::SpringRoll
virtual bool SpringRoll(LE *a_field, double a_user, int a_days)
Carry out a roll event in the spring on a_field.
Definition: farmfuncs.cpp:525
sbspr_spring_sow
Definition: SpringBarleySpr.h:55
Farm::SpringPlough
virtual bool SpringPlough(LE *a_field, double a_user, int a_days)
Carry out a ploughing event in the spring on a_field.
Definition: farmfuncs.cpp:444
Farm::HerbicideTreat
virtual bool HerbicideTreat(LE *a_field, double a_user, int a_days)
Apply herbicide to a_field.
Definition: farmfuncs.cpp:1156
SBSPR_GR_DATE
#define SBSPR_GR_DATE
Definition: SpringBarleySpr.h:39
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: farm.h:905
cfg_pest_product_1_amount
CfgFloat cfg_pest_product_1_amount
Farm::Harvest
virtual bool Harvest(LE *a_field, double a_user, int a_days)
Carry out a harvest on a_field.
Definition: farmfuncs.cpp:1769
FarmEvent::m_lock
bool m_lock
Definition: farm.h:465
Landscape::SupplyShouldSpray
bool SupplyShouldSpray()
Definition: Landscape.h:357
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:629
sbspr_fungicide_one
Definition: SpringBarleySpr.h:63
Farm::DoIt
bool DoIt(double a_probability)
Return chance out of 0 to 100.
Definition: farm.cpp:800
sbspr_spring_plough
Definition: SpringBarleySpr.h:48
FarmEvent::m_first_year
bool m_first_year
Definition: farm.h:467
SBSPR_DID_AUTUMN_PLOUGH
#define SBSPR_DID_AUTUMN_PLOUGH
Definition: SpringBarleySpr.h:36
tof_OptimisingFarm
Definition: farm.h:273
sbspr_fungicide_two
Definition: SpringBarleySpr.h:64
SBSPR_HERBI_DATE
#define SBSPR_HERBI_DATE
Definition: SpringBarleySpr.h:38
sbspr_straw_chopping
Definition: SpringBarleySpr.h:68
cfg_greg_app_prop
CfgFloat cfg_greg_app_prop
SBSPR_DECIDE_TO_HERB
#define SBSPR_DECIDE_TO_HERB
Definition: SpringBarleySpr.h:43
Farm::GetType
TTypesOfFarm GetType(void)
Definition: farm.h:901
sbspr_water_one
Definition: SpringBarleySpr.h:65
Farm::ProductApplication_DateLimited
virtual bool ProductApplication_DateLimited(LE *a_field, double, int, double a_applicationrate, PlantProtectionProducts a_ppp)
Special pesticide trial functionality.
Definition: farmfuncs.cpp:2396
sbspr_start
Definition: SpringBarleySpr.h:47
Crop::m_first_date
int m_first_date
Definition: farm.h:540
sbspr_herbicide_two
Definition: SpringBarleySpr.h:58
FarmEvent::m_startday
int m_startday
Definition: farm.h:466
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:917
Farm::FungicideTreat
virtual bool FungicideTreat(LE *a_field, double a_user, int a_days)
Apply fungicide to a_field.
Definition: farmfuncs.cpp:1279
sbspr_fertpk_plant
Definition: SpringBarleySpr.h:52
sbspr_hay_baling
Definition: SpringBarleySpr.h:69
sbspr_herbicide_one
Definition: SpringBarleySpr.h:57
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:653
SBSPR_MANURE_DONE
#define SBSPR_MANURE_DONE
Definition: SpringBarleySpr.h:33
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: farm.cpp:307
sbspr_fertmanure_plant
Definition: SpringBarleySpr.h:50
SBSPR_MANURE_EXEC
#define SBSPR_MANURE_EXEC
Definition: SpringBarleySpr.h:35
sbspr_harvest
Definition: SpringBarleySpr.h:67
Farm::Prob_multiplier
virtual double Prob_multiplier()
Definition: farm.h:786
cfg_ins_app_prop2
CfgFloat cfg_ins_app_prop2
TTypesOfVegetation
TTypesOfVegetation
Definition: tov_declaration.h:30
SBSPR_INSECT_DATE
#define SBSPR_INSECT_DATE
Definition: SpringBarleySpr.h:42
Farm::Spraying_herbicides
virtual bool Spraying_herbicides(TTypesOfVegetation)
Definition: farm.h:784
Farm::HayBailing
virtual bool HayBailing(LE *a_field, double a_user, int a_days)
Carry out hay bailing on a_field.
Definition: farmfuncs.cpp:2184
sbspr_spring_harrow
Definition: SpringBarleySpr.h:49
Farm::StrawChopping
virtual bool StrawChopping(LE *a_field, double a_user, int a_days)
Carry out straw chopping on a_field.
Definition: farmfuncs.cpp:2132
sbspr_GR
Definition: SpringBarleySpr.h:59
SBSPR_WATER_DATE
#define SBSPR_WATER_DATE
Definition: SpringBarleySpr.h:41
SBSPR_DECIDE_TO_FI
#define SBSPR_DECIDE_TO_FI
Definition: SpringBarleySpr.h:44
Crop::m_farm
Farm * m_farm
Definition: farm.h:537
Crop::m_field
LE * m_field
Definition: farm.h:538
FarmEvent::m_todo
int m_todo
Definition: farm.h:469
Farm::InsecticideTreat
virtual bool InsecticideTreat(LE *a_field, double a_user, int a_days)
Apply insecticide to a_field.
Definition: farmfuncs.cpp:1348
sbspr_insecticide3
Definition: SpringBarleySpr.h:62
ppp_1
Definition: farm.h:422
Farm::Water
virtual bool Water(LE *a_field, double a_user, int a_days)
Carry out a watering on a_field.
Definition: farmfuncs.cpp:1717
Crop::m_last_date
int m_last_date
Definition: farm.h:542
sbspr_spring_roll
Definition: SpringBarleySpr.h:56
Farm::SpringSow
virtual bool SpringSow(LE *a_field, double a_user, int a_days)
Carry out a sowing event in the spring on a_field.
Definition: farmfuncs.cpp:546
cfg_ins_app_prop3
CfgFloat cfg_ins_app_prop3
Farm::FP_LiquidNH3
virtual bool FP_LiquidNH3(LE *a_field, double a_user, int a_days)
Apply liquid ammonia fertilizer to a_field owned by an arable farmer.
Definition: farmfuncs.cpp:677
cfg_herbi_app_prop
CfgFloat cfg_herbi_app_prop
sbspr_insecticide2
Definition: SpringBarleySpr.h:61
Farm::GrowthRegulator
virtual bool GrowthRegulator(LE *a_field, double a_user, int a_days)
Apply growth regulator to a_field.
Definition: farmfuncs.cpp:1250
sbspr_stubble_harrow
Definition: SpringBarleySpr.h:70
sbspr_water_two
Definition: SpringBarleySpr.h:66
SBSPR_FUNGI_DATE
#define SBSPR_FUNGI_DATE
Definition: SpringBarleySpr.h:40
sbspr_fertlnh3_plant
Definition: SpringBarleySpr.h:51
cfg_fungi_app_prop1
CfgFloat cfg_fungi_app_prop1
cfg_ins_app_prop1
CfgFloat cfg_ins_app_prop1
Crop::ChooseNextCrop
void ChooseNextCrop(int a_no_dates)
Chooses the next crop to grow in a field.
Definition: farm.cpp:318
Crop::m_ev
FarmEvent * m_ev
Definition: farm.h:539
cfg_pest_springbarley_on
CfgBool cfg_pest_springbarley_on
sbspr_insecticide1
Definition: SpringBarleySpr.h:60
SBSPR_SLURRY_DONE
#define SBSPR_SLURRY_DONE
Definition: SpringBarleySpr.h:32
sbspr_fertmanure_stock_two
Definition: SpringBarleySpr.h:53
Farm::Spraying_fungins
virtual bool Spraying_fungins(TTypesOfVegetation)
Definition: farm.h:785
g_landscape_p
Landscape * g_landscape_p
Definition: Landscape.cpp:258
Farm::StubbleHarrowing
virtual bool StubbleHarrowing(LE *a_field, double a_user, int a_days)
Carry out stubble harrowing on a_field.
Definition: farmfuncs.cpp:2209
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:471
SBSPR_SLURRY_EXEC
#define SBSPR_SLURRY_EXEC
Definition: SpringBarleySpr.h:34