ALMaSS Hare ODDox  1.1
The hare model description following ODdox protocol
FieldPeas Class Reference

#include <FieldPeas.h>

Public Member Functions

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

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
int m_count
 
int m_CropClassification
 
int m_ddegstoharvest
 
FarmEventm_ev
 
Farmm_farm
 
LE * m_field
 
int m_first_date
 
int m_last_date
 

Detailed Description

Definition at line 61 of file FieldPeas.h.

Constructor & Destructor Documentation

◆ FieldPeas()

FieldPeas::FieldPeas ( )
inline

Definition at line 65 of file FieldPeas.h.

66  {
67  m_first_date=g_date->DayInYear(1,10);
68  }

References Crop::m_first_date.

Member Function Documentation

◆ Do()

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

Reimplemented from Crop.

Definition at line 37 of file FieldPeas.cpp.

38 {
39  m_farm = a_farm;
40  m_field = a_field;
41  m_ev = a_ev;
42  double ins_app_prop=cfg_ins_app_prop1.value();
43  double herbi_app_prop=cfg_herbi_app_prop.value();
44 
45  bool done = false;
46 
47  switch ( m_ev->m_todo )
48  {
49  case fp_start:
50  {
52  FPEAD_FUNGI_DATE = 0;
53  FPEAD_WATER_DATE = 0;
55  // Set up the date management stuff
56  // Could save the start day in case it is needed later
57  // m_field->m_startday = m_ev->m_startday;
58  m_last_date=g_date->DayInYear(15,10);
59  // Start and stop dates for all events after harvest
60  int noDates=1;
61  m_field->SetMDates(0,0,g_date->DayInYear(30,8));
62  // 0,0 determined by harvest date - used to see if at all possible
63  m_field->SetMDates(1,0,g_date->DayInYear(30,8));
64  // Check the next crop for early start, unless it is a spring crop
65  // in which case we ASSUME that no checking is necessary!!!!
66  // So DO NOT implement a crop that runs over the year boundary
67 
68  //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)
69  int d1;
70  if(!(m_farm->GetType() == tof_OptimisingFarm && g_date->GetYearNumber()>0)){
71 
72  if (m_ev->m_startday>g_date->DayInYear(1,7))
73  {
74  if (m_field->GetMDates(0,0) >=m_ev->m_startday)
75  {
76  //g_msg->Warn( WARN_BUG, "FieldPeas::Do(): Harvest too late for the next crop to start!!!", "" );
77 
78  char veg_type[ 20 ];
79  sprintf( veg_type, "%d", m_ev->m_next_tov );
80  g_msg->Warn( WARN_FILE, "FieldPeas::Do(): Harvest too late for the next crop to start!!! The next crop is: ", veg_type );
81 
82  exit( 1 );
83  }
84  // Now fix any late finishing problems
85  for (int i=0; i<noDates; i++) {
86  if(m_field->GetMDates(0,i)>=m_ev->m_startday) {
87  m_field->SetMDates(0,i,m_ev->m_startday-1); //move the starting date
88  }
89  if(m_field->GetMDates(1,i)>=m_ev->m_startday){
90  m_field->SetMConstants(i,0);
91  m_field->SetMDates(1,i,m_ev->m_startday-1); //move the finishing date
92  }
93  }
94  }
95  // Now no operations can be timed after the start of the next crop.
96 
97  // CJT note:
98  // Start single block date checking code to be cut-'n-pasted...
99 
100  if ( ! m_ev->m_first_year )
101  {
102  // Are we before July 1st?
103  d1 = g_date->OldDays() + g_date->DayInYear( 1,7 );
104  if (g_date->Date() < d1)
105  {
106  // Yes, too early. We assumme this is because the last crop was late
107  g_msg->Warn( WARN_BUG, "FieldPeas::Do(): "
108  "Crop start attempt between 1st Jan & 1st July", "" );
109  exit( 1 );
110  }
111  else
112  {
113  d1 = g_date->OldDays() + m_first_date; // Add 365 for spring crop
114  if (g_date->Date() > d1)
115  {
116  // Yes too late - should not happen - raise an error
117  g_msg->Warn( WARN_BUG, "FieldPeas::Do(): Crop start attempt after last possible start date", "" );
118  exit( 1 );
119  }
120  }
121  }
122  else
123  {
124  // If this is the first year of running then it is possible to start
125  // on day 0, so need this to tell us what to do:
126  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,3 ),
127  fp_spring_plough, false );
128  break;
129  }
130  }//if
131  // End single block date checking code. Please see next line
132  // comment as well.
133  // Reinit d1 to first possible starting date.
134  d1 = g_date->OldDays() + g_date->DayInYear( 1,10 );
135  if ( g_date->Date() > d1 ) {
136  d1 = g_date->Date();
137  }
138  // OK, let's go.
139  SimpleEvent( d1, fp_autumn_plough, false );
140  }
141  break;
142 
143  case fp_autumn_plough:
144  if ( m_ev->m_lock || m_farm->DoIt( 90 )) {
145  if (!m_farm->AutumnPlough( m_field, 0.0,
146  g_date->DayInYear( 1, 12 ) -
147  g_date->DayInYear())) {
148  SimpleEvent( g_date->Date() + 1, fp_autumn_plough, true );
149  break;
150  }
151  }
152  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,3 ) + 365,
153  fp_spring_plough, false );
154  break;
155 
156  case fp_spring_plough:
157  if ( m_ev->m_lock || m_farm->DoIt( 100 )) {
158  if (!m_farm->SpringPlough( m_field, 0.0,
159  g_date->DayInYear( 1,4 ) -
160  g_date->DayInYear())) {
161  SimpleEvent( g_date->Date() + 1, fp_spring_plough, true );
162  break;
163  }
164  }
165  {
166  int d1 = g_date->Date()+1;
167  int d2 = g_date->OldDays() + g_date->DayInYear( 5,3 );
168  if ( d1 < d2 ) {
169  d1 = d2;
170  }
171  SimpleEvent( d1, fp_spring_harrow, false );
172  }
173  break;
174 
175  case fp_spring_harrow:
176  if (!m_farm->SpringHarrow( m_field, 0.0,
177  g_date->DayInYear( 5,4 ) - g_date->DayInYear())) {
178  SimpleEvent( g_date->Date() + 1, fp_spring_harrow, true );
179  break;
180  }
181  {
183  if ( m_farm->IsStockFarmer()) {
184  dothis = fp_fertmanure_stock;
185  }
186 
187  int d1 = g_date->Date();
188  int d2 = g_date->OldDays() + g_date->DayInYear( 20,3 );
189  if ( d1 < d2 ) {
190  d1 = d2;
191  }
192  SimpleEvent( d1, dothis, false );
193  }
194  break;
195 
196  case fp_fertmanure_plant:
197  if (!m_farm->FP_Manure( m_field, 0.0,
198  g_date->DayInYear( 15,4 ) -
199  g_date->DayInYear())) {
200  SimpleEvent( g_date->Date() + 1, fp_fertmanure_plant, true );
201  break;
202  }
203  {
204  int d1 = g_date->Date();
205  int d2 = g_date->OldDays() + g_date->DayInYear( 25,3 );
206  if ( d1 < d2 ) {
207  d1 = d2;
208  }
209  SimpleEvent( d1, fp_spring_sow, false );
210  }
211  break;
212 
213  case fp_fertmanure_stock:
214  if ( m_ev->m_lock || m_farm->DoIt( 75 )) {
215  if (!m_farm->FA_Manure( m_field, 0.0,
216  g_date->DayInYear( 15,4 ) -
217  g_date->DayInYear())) {
218  SimpleEvent( g_date->Date() + 1, fp_fertmanure_stock, true );
219  break;
220  }
221  }
222  {
223  int d1 = g_date->Date();
224  int d2 = g_date->OldDays() + g_date->DayInYear( 25,3 );
225  if ( d1 < d2 ) {
226  d1 = d2;
227  }
228  SimpleEvent( d1, fp_spring_sow, false );
229  }
230  break;
231 
232  case fp_spring_sow:
233  if (!m_farm->SpringSow( m_field, 0.0,
234  g_date->DayInYear( 15,4 ) -
235  g_date->DayInYear())) {
236  SimpleEvent( g_date->Date() + 1, fp_spring_sow, true );
237  break;
238  }
239  SimpleEvent( g_date->Date(), fp_spring_roll, false );
240  break;
241 
242  case fp_spring_roll:
243  if (!m_farm->SpringRoll( m_field, 0.0,
244  g_date->DayInYear( 15,4 ) -
245  g_date->DayInYear())) {
246  SimpleEvent( g_date->Date() + 1, fp_spring_roll, true );
247  break;
248  }
249  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,4 ),
250  fp_herbicide_one, false );
251  break;
252 
253  case fp_herbicide_one:
254  if ( m_ev->m_lock || m_farm->DoIt( (int) (100*herbi_app_prop * m_farm->Prob_multiplier() ))) { //modified probability
255 
256  //new - for decision making
257  TTypesOfVegetation tov = m_field->GetVegType();
258  if(!m_ev->m_lock && !m_farm->Spraying_herbicides(tov)){
259  Field * pf = dynamic_cast<Field*>(m_field);
260  pf->Add_missed_herb_app();
261  if(m_farm->DoIt(95)) pf->Add_missed_herb_app(); //the 2nd missed application
263  } //end of the part for dec. making
264  else{
265  if (!m_farm->HerbicideTreat( m_field, 0.0, g_date->DayInYear( 20,4 ) - g_date->DayInYear())) {
266  SimpleEvent( g_date->Date() + 1, fp_herbicide_one, true );
267  break;
268  }
269  }
270  }
271  {
272  int d1 = g_date->OldDays() + g_date->DayInYear( 25,4 );
273  if ( d1 < g_date->Date() + 7 ) {
274  d1 = g_date->Date() + 7;
275  }
276  SimpleEvent( d1, fp_herbicide_two, false );
277  }
278  break;
279 
280  case fp_herbicide_two:
281  if ( m_ev->m_lock || m_farm->DoIt( (int) (95*herbi_app_prop *FPEAS_DECIDE_TO_HERB * m_farm->Prob_multiplier()))) { //modified probability
282  if (!m_farm->HerbicideTreat( m_field, 0.0,
283  g_date->DayInYear( 10,5 ) -
284  g_date->DayInYear())) {
285  SimpleEvent( g_date->Date() + 1, fp_herbicide_two, true );
286  break;
287  }
288  }
289  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
290  fp_insecticide, false );
291  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
292  fp_fungicide, false );
293 
294  // Water carries the main thread.
295  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
296  fp_water_one, false );
297  break;
298 
299  case fp_fungicide:
300  if ( m_ev->m_lock || m_farm->DoIt( (int)( 10*cfg_fungi_app_prop1.value() ))) {
301 
302  //new - for decision making
303  TTypesOfVegetation tov = m_field->GetVegType();
304  if(!m_ev->m_lock && !m_farm->Spraying_fungins(tov)){
305  Field * pf = dynamic_cast<Field*>(m_field);
306  pf->Add_missed_fi_app();
307  break;
308  } //end of the part for dec. making
309 
310  // Check for proximity of watering.
311  {
312  int d1 = g_date->Date();
313  if ( d1 < FPEAD_WATER_DATE + 2 ) {
314  // Too close, try tomorrow.
315  SimpleEvent( g_date->Date() + 1, fp_fungicide, true );
316  break;
317  }
318  }
319  if (!m_farm->FungicideTreat( m_field, 0.0, g_date->DayInYear( 15,6 ) - g_date->DayInYear())) {
320  SimpleEvent( g_date->Date() + 1, fp_fungicide, true );
321  break;
322  }
323  FPEAD_FUNGI_DATE = g_date->Date();
324  }
325  // End of thread.
326  break;
327 
328  case fp_insecticide:
329  if ( m_ev->m_lock || m_farm->DoIt( (int) (90*ins_app_prop ))) {
330 
331  //new - for decision making
332  TTypesOfVegetation tov = m_field->GetVegType();
333  if(!m_ev->m_lock && !m_farm->Spraying_fungins(tov)){
334  Field * pf = dynamic_cast<Field*>(m_field);
335  pf->Add_missed_fi_app();
336  break;
337  } //end of the part for dec. making
338 
339  {
340  int d1 = g_date->Date();
341  if ( d1 < FPEAD_WATER_DATE + 2 ) {
342  // Too close, try tomorrow.
343  SimpleEvent( g_date->Date() + 1, fp_insecticide, true );
344  break;
345  }
346  }
347  if (!m_farm->InsecticideTreat( m_field, 0.0,
348  g_date->DayInYear( 15,6 ) -
349  g_date->DayInYear())) {
350  SimpleEvent( g_date->Date() + 1, fp_insecticide, true );
351  break;
352  }
353  FPEAD_INSECT_DATE = g_date->Date();
354  }
355  // End of thread.
356  break;
357 
358  case fp_water_one:
359  if ( m_ev->m_lock || m_farm->DoIt( 30 ))
360  {
361  {
362  int d1 = g_date->Date();
363  if ( d1 < FPEAD_INSECT_DATE + 2 ||
364  d1 < FPEAD_FUNGI_DATE + 2 ) {
365  // Too close, try tomorrow.
366  SimpleEvent( g_date->Date() + 1, fp_water_one, true );
367  break;
368  }
369  }
370  if (!m_farm->Water( m_field, 0.0,
371  g_date->DayInYear( 15,6 ) - g_date->DayInYear())) {
372  SimpleEvent( g_date->Date() + 1, fp_water_one, true );
373  break;
374  }
375  FPEAD_WATER_DATE = g_date->Date();
376  // Did first water, so do the second one too.
377  {
378  int d1 = g_date->OldDays() + g_date->DayInYear( 16,6 );
379  if ( d1 < g_date->Date() + 7 ) {
380  d1 = g_date->Date() + 7;
381  }
382  SimpleEvent( d1, fp_water_two, false );
383  }
384  }
385  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,8 ),
386  fp_growth_reg, false );
387  break;
388 
389  case fp_water_two:
390  {
391  int d1 = g_date->Date();
392  if ( d1 < FPEAD_INSECT_DATE + 2 ||
393  d1 < FPEAD_FUNGI_DATE + 2 ) {
394  // Too close, try tomorrow.
395  SimpleEvent( g_date->Date() + 1, fp_water_two, true );
396  break;
397  }
398  }
399  if (!m_farm->Water( m_field, 0.0,
400  g_date->DayInYear( 1,7 ) -
401  g_date->DayInYear())) {
402  SimpleEvent( g_date->Date() + 1, fp_water_two, true );
403  break;
404  }
405  FPEAD_WATER_DATE = g_date->Date();
406  // End of thread.
407  break;
408 
409  case fp_growth_reg:
410  if ( m_ev->m_lock || m_farm->DoIt( (int) (20*cfg_greg_app_prop.value() )))
411  {
412  if (!m_farm->GrowthRegulator( m_field, 0.0,
413  g_date->DayInYear( 20,8 ) -
414  g_date->DayInYear())) {
415  SimpleEvent( g_date->Date() + 1, fp_growth_reg, true );
416  break;
417  }
418  // Did apply growth regulator, so wait seven days before
419  // harvesting.
420 
421  ChooseNextCrop (1);
422  SimpleEvent( g_date->Date()+7, fp_harvest, false );
423  break;
424  }
425  // No growth regulator, try harvesting today.
426  ChooseNextCrop (1);
427  SimpleEvent( g_date->Date(), fp_harvest, false );
428  break;
429 
430  case fp_harvest:
431  if (!m_farm->Harvest( m_field, 0.0,
432  g_date->DayInYear( 30,8 ) -
433  g_date->DayInYear())) {
434  SimpleEvent( g_date->Date() + 1, fp_harvest, true );
435  break;
436  }
437  SimpleEvent( g_date->Date(), fp_straw_chopping, false );
438  break;
439 
440  case fp_straw_chopping:
441  if (m_field->GetMConstants(0)==0) {
442  if (!m_farm->StrawChopping( m_field, 0.0, -1)) { //raise an error
443  g_msg->Warn( WARN_BUG, "FieldPeas::Do(): failure in 'StrawChopping' execution", "" );
444  exit( 1 );
445  }
446  }
447  else {
448  if (!m_farm->StrawChopping( m_field, 0.0, m_field->GetMDates(1,0) - g_date->DayInYear())) {
449  SimpleEvent( g_date->Date()+1, fp_straw_chopping, true );
450  break;
451  }
452  }
453  // End Main Thread
454  done=true;
455  break;
456 
457  default:
458  g_msg->Warn( WARN_BUG, "FieldPeas::Do(): "
459  "Unknown event type! ", "" );
460  exit( 1 );
461  }
462 
463  return done;
464 }

References Farm::AutumnPlough(), cfg_fungi_app_prop1, cfg_greg_app_prop, cfg_herbi_app_prop, cfg_ins_app_prop1, Crop::ChooseNextCrop(), Farm::DoIt(), Farm::FA_Manure(), fp_autumn_plough, fp_fertmanure_plant, fp_fertmanure_stock, fp_fungicide, fp_growth_reg, fp_harvest, fp_herbicide_one, fp_herbicide_two, fp_insecticide, Farm::FP_Manure(), fp_spring_harrow, fp_spring_plough, fp_spring_roll, fp_spring_sow, fp_start, fp_straw_chopping, fp_water_one, fp_water_two, FPEAD_FUNGI_DATE, FPEAD_INSECT_DATE, FPEAD_WATER_DATE, FPEAS_DECIDE_TO_HERB, Farm::FungicideTreat(), Farm::GetType(), Farm::GrowthRegulator(), Farm::Harvest(), 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_next_tov, FarmEvent::m_startday, FarmEvent::m_todo, Farm::Prob_multiplier(), Crop::SimpleEvent(), Farm::Spraying_fungins(), Farm::Spraying_herbicides(), Farm::SpringHarrow(), Farm::SpringPlough(), Farm::SpringRoll(), Farm::SpringSow(), Farm::StrawChopping(), tof_OptimisingFarm, and Farm::Water().


The documentation for this class was generated from the following files:
cfg_ins_app_prop1
CfgFloat cfg_ins_app_prop1
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
fp_straw_chopping
Definition: FieldPeas.h:56
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
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: farm.h:905
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
Farm::DoIt
bool DoIt(double a_probability)
Return chance out of 0 to 100.
Definition: farm.cpp:800
FarmEvent::m_first_year
bool m_first_year
Definition: farm.h:467
tof_OptimisingFarm
Definition: farm.h:273
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:1036
Farm::GetType
TTypesOfFarm GetType(void)
Definition: farm.h:901
fp_autumn_plough
Definition: FieldPeas.h:42
fp_water_two
Definition: FieldPeas.h:54
FPEAD_INSECT_DATE
#define FPEAD_INSECT_DATE
Definition: FieldPeas.h:33
Crop::m_first_date
int m_first_date
Definition: farm.h:540
FarmEvent::m_startday
int m_startday
Definition: farm.h:466
Farm::FungicideTreat
virtual bool FungicideTreat(LE *a_field, double a_user, int a_days)
Apply fungicide to a_field.
Definition: farmfuncs.cpp:1279
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: farm.cpp:307
fp_growth_reg
Definition: FieldPeas.h:55
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:773
Farm::Prob_multiplier
virtual double Prob_multiplier()
Definition: farm.h:786
fp_spring_sow
Definition: FieldPeas.h:47
fp_spring_harrow
Definition: FieldPeas.h:44
fp_fertmanure_plant
Definition: FieldPeas.h:45
TTypesOfVegetation
TTypesOfVegetation
Definition: tov_declaration.h:30
cfg_greg_app_prop
CfgFloat cfg_greg_app_prop
FPEAD_WATER_DATE
#define FPEAD_WATER_DATE
Definition: FieldPeas.h:35
fp_spring_roll
Definition: FieldPeas.h:48
Farm::Spraying_herbicides
virtual bool Spraying_herbicides(TTypesOfVegetation)
Definition: farm.h:784
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
FieldPeasToDo
FieldPeasToDo
Definition: FieldPeas.h:39
cfg_herbi_app_prop
CfgFloat cfg_herbi_app_prop
FPEAS_DECIDE_TO_HERB
#define FPEAS_DECIDE_TO_HERB
Definition: FieldPeas.h:36
fp_fertmanure_stock
Definition: FieldPeas.h:46
fp_insecticide
Definition: FieldPeas.h:51
FarmEvent::m_next_tov
TTypesOfVegetation m_next_tov
Definition: farm.h:471
Crop::m_farm
Farm * m_farm
Definition: farm.h:537
Crop::m_field
LE * m_field
Definition: farm.h:538
fp_herbicide_one
Definition: FieldPeas.h:49
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
FPEAD_FUNGI_DATE
#define FPEAD_FUNGI_DATE
Definition: FieldPeas.h:34
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
fp_harvest
Definition: FieldPeas.h:41
Farm::AutumnPlough
virtual bool AutumnPlough(LE *a_field, double a_user, int a_days)
Carry out a ploughing event in the autumn on a_field.
Definition: farmfuncs.cpp:132
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
Farm::GrowthRegulator
virtual bool GrowthRegulator(LE *a_field, double a_user, int a_days)
Apply growth regulator to a_field.
Definition: farmfuncs.cpp:1250
fp_herbicide_two
Definition: FieldPeas.h:50
cfg_fungi_app_prop1
CfgFloat cfg_fungi_app_prop1
fp_water_one
Definition: FieldPeas.h:53
fp_fungicide
Definition: FieldPeas.h:52
Crop::ChooseNextCrop
void ChooseNextCrop(int a_no_dates)
Chooses the next crop to grow in a field.
Definition: farm.cpp:318
fp_spring_plough
Definition: FieldPeas.h:43
Crop::m_ev
FarmEvent * m_ev
Definition: farm.h:539
fp_start
Definition: FieldPeas.h:40
Farm::Spraying_fungins
virtual bool Spraying_fungins(TTypesOfVegetation)
Definition: farm.h:785
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