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

#include <FieldPeasSilage.h>

Public Member Functions

bool Do (Farm *a_farm, LE *a_field, FarmEvent *a_ev)
 
 FieldPeasSilage ()
 
- 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 FieldPeasSilage.h.

Constructor & Destructor Documentation

◆ FieldPeasSilage()

FieldPeasSilage::FieldPeasSilage ( )
inline

Definition at line 65 of file FieldPeasSilage.h.

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

References Crop::m_first_date.

Member Function Documentation

◆ Do()

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

Reimplemented from Crop.

Definition at line 37 of file FieldPeasSilage.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 fpsi_start:
50  {
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, "FieldPeasSilage::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, "FieldPeasSilage::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  fpsi_spring_plough, false );
128  break;
129  }
130  }//if
131 
132  // End single block date checking code. Please see next line
133  // comment as well.
134  // Reinit d1 to first possible starting date.
135  d1 = g_date->OldDays() + g_date->DayInYear( 1,10 );
136  if ( g_date->Date() > d1 ) {
137  d1 = g_date->Date();
138  }
139  // OK, let's go.
140  SimpleEvent( d1, fpsi_autumn_plough, false );
141  }
142  break;
143 
144  case fpsi_autumn_plough:
145  if ( m_ev->m_lock || m_farm->DoIt( 90 )) {
146  if (!m_farm->AutumnPlough( m_field, 0.0,
147  g_date->DayInYear( 1, 12 ) -
148  g_date->DayInYear())) {
149  SimpleEvent( g_date->Date() + 1, fpsi_autumn_plough, true );
150  break;
151  }
152  }
153  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,3 ) + 365,
154  fpsi_spring_plough, false );
155  break;
156 
157  case fpsi_spring_plough:
158  if ( m_ev->m_lock || m_farm->DoIt( 100 )) {
159  if (!m_farm->SpringPlough( m_field, 0.0,
160  g_date->DayInYear( 1,4 ) -
161  g_date->DayInYear())) {
162  SimpleEvent( g_date->Date() + 1, fpsi_spring_plough, true );
163  break;
164  }
165  }
166  {
167  int d1 = g_date->Date()+1;
168  int d2 = g_date->OldDays() + g_date->DayInYear( 5,3 );
169  if ( d1 < d2 ) {
170  d1 = d2;
171  }
172  SimpleEvent( d1, fpsi_spring_harrow, false );
173  }
174  break;
175 
176  case fpsi_spring_harrow:
177  if (!m_farm->SpringHarrow( m_field, 0.0,
178  g_date->DayInYear( 5,4 ) - g_date->DayInYear())) {
179  SimpleEvent( g_date->Date() + 1, fpsi_spring_harrow, true );
180  break;
181  }
182  {
184  if ( m_farm->IsStockFarmer()) {
185  dothis = fpsi_fertmanure_stock;
186  }
187 
188  int d1 = g_date->Date();
189  int d2 = g_date->OldDays() + g_date->DayInYear( 20,3 );
190  if ( d1 < d2 ) {
191  d1 = d2;
192  }
193  SimpleEvent( d1, dothis, false );
194  }
195  break;
196 
198  if (!m_farm->FP_Manure( m_field, 0.0,
199  g_date->DayInYear( 15,4 ) -
200  g_date->DayInYear())) {
201  SimpleEvent( g_date->Date() + 1, fpsi_fertmanure_plant, true );
202  break;
203  }
204  {
205  int d1 = g_date->Date();
206  int d2 = g_date->OldDays() + g_date->DayInYear( 25,3 );
207  if ( d1 < d2 ) {
208  d1 = d2;
209  }
210  SimpleEvent( d1, fpsi_spring_sow, false );
211  }
212  break;
213 
215  if ( m_ev->m_lock || m_farm->DoIt( 75 )) {
216  if (!m_farm->FA_Manure( m_field, 0.0,
217  g_date->DayInYear( 15,4 ) -
218  g_date->DayInYear())) {
219  SimpleEvent( g_date->Date() + 1, fpsi_fertmanure_stock, true );
220  break;
221  }
222  }
223  {
224  int d1 = g_date->Date();
225  int d2 = g_date->OldDays() + g_date->DayInYear( 25,3 );
226  if ( d1 < d2 ) {
227  d1 = d2;
228  }
229  SimpleEvent( d1, fpsi_spring_sow, false );
230  }
231  break;
232 
233  case fpsi_spring_sow:
234  if (!m_farm->SpringSow( m_field, 0.0,
235  g_date->DayInYear( 15,4 ) -
236  g_date->DayInYear())) {
237  SimpleEvent( g_date->Date() + 1, fpsi_spring_sow, true );
238  break;
239  }
240  SimpleEvent( g_date->Date(), fpsi_spring_roll, false );
241  break;
242 
243  case fpsi_spring_roll:
244  if (!m_farm->SpringRoll( m_field, 0.0,
245  g_date->DayInYear( 15,4 ) -
246  g_date->DayInYear())) {
247  SimpleEvent( g_date->Date() + 1, fpsi_spring_roll, true );
248  break;
249  }
250  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 15,4 ),
251  fpsi_herbicide_one, false );
252  break;
253 
254  case fpsi_herbicide_one:
255  if ( m_ev->m_lock || m_farm->DoIt( (int) (100*herbi_app_prop * m_farm->Prob_multiplier()))) { //modified probability
256 
257  //new - for decision making
258  TTypesOfVegetation tov = m_field->GetVegType();
259  if(!m_ev->m_lock && !m_farm->Spraying_herbicides(tov)){
260  Field * pf = dynamic_cast<Field*>(m_field);
261  pf->Add_missed_herb_app();
262  if(m_farm->DoIt(95)) pf->Add_missed_herb_app(); //the 2nd missed application
264  } //end of the part for dec. making
265  else{
266  if (!m_farm->HerbicideTreat( m_field, 0.0, g_date->DayInYear( 20,4 ) - g_date->DayInYear())) {
267  SimpleEvent( g_date->Date() + 1, fpsi_herbicide_one, true );
268  break;
269  }
270  }
271  }
272  {
273  int d1 = g_date->OldDays() + g_date->DayInYear( 25,4 );
274  if ( d1 < g_date->Date() + 7 ) {
275  d1 = g_date->Date() + 7;
276  }
277  SimpleEvent( d1, fpsi_herbicide_two, false );
278  }
279  break;
280 
281  case fpsi_herbicide_two:
282  if ( m_ev->m_lock || m_farm->DoIt( (int) (95*herbi_app_prop *FPEASSI_DECIDE_TO_HERB * m_farm->Prob_multiplier()))) { //modified probability
283  if (!m_farm->HerbicideTreat( m_field, 0.0,
284  g_date->DayInYear( 10,5 ) -
285  g_date->DayInYear())) {
286  SimpleEvent( g_date->Date() + 1, fpsi_herbicide_two, true );
287  break;
288  }
289  }
290  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
291  fpsi_insecticide, false );
292  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
293  fpsi_fungicide, false );
294 
295  // Water carries the main thread.
296  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 1,6 ),
297  fpsi_water_one, false );
298  break;
299 
300  case fpsi_fungicide:
301  if ( m_ev->m_lock || m_farm->DoIt( (int)( 10*cfg_fungi_app_prop1.value() ))) {
302 
303  //new - for decision making
304  TTypesOfVegetation tov = m_field->GetVegType();
305  if(!m_ev->m_lock && !m_farm->Spraying_fungins(tov)){
306  Field * pf = dynamic_cast<Field*>(m_field);
307  pf->Add_missed_fi_app();
308  break;
309  } //end of the part for dec. making
310 
311  // Check for proximity of watering.
312  {
313  int d1 = g_date->Date();
314  if ( d1 < FPEADSI_WATER_DATE + 2 ) {
315  // Too close, try tomorrow.
316  SimpleEvent( g_date->Date() + 1, fpsi_fungicide, true );
317  break;
318  }
319  }
320  if (!m_farm->FungicideTreat( m_field, 0.0, g_date->DayInYear( 15,6 ) - g_date->DayInYear())) {
321  SimpleEvent( g_date->Date() + 1, fpsi_fungicide, true );
322  break;
323  }
324  FPEADSI_FUNGI_DATE = g_date->Date();
325  }
326  // End of thread.
327  break;
328 
329  case fpsi_insecticide:
330  if ( m_ev->m_lock || m_farm->DoIt( (int) (90*ins_app_prop ))) {
331 
332  //new - for decision making
333  TTypesOfVegetation tov = m_field->GetVegType();
334  if(!m_ev->m_lock && !m_farm->Spraying_fungins(tov)){
335  Field * pf = dynamic_cast<Field*>(m_field);
336  pf->Add_missed_fi_app();
337  break;
338  } //end of the part for dec. making
339 
340  {
341  int d1 = g_date->Date();
342  if ( d1 < FPEADSI_WATER_DATE + 2 ) {
343  // Too close, try tomorrow.
344  SimpleEvent( g_date->Date() + 1, fpsi_insecticide, true );
345  break;
346  }
347  }
348  if (!m_farm->InsecticideTreat( m_field, 0.0,
349  g_date->DayInYear( 15,6 ) -
350  g_date->DayInYear())) {
351  SimpleEvent( g_date->Date() + 1, fpsi_insecticide, true );
352  break;
353  }
354  FPEADSI_INSECT_DATE = g_date->Date();
355  }
356  // End of thread.
357  break;
358 
359  case fpsi_water_one:
360  if ( m_ev->m_lock || m_farm->DoIt( 30 ))
361  {
362  {
363  int d1 = g_date->Date();
364  if ( d1 < FPEADSI_INSECT_DATE + 2 ||
365  d1 < FPEADSI_FUNGI_DATE + 2 ) {
366  // Too close, try tomorrow.
367  SimpleEvent( g_date->Date() + 1, fpsi_water_one, true );
368  break;
369  }
370  }
371  if (!m_farm->Water( m_field, 0.0,
372  g_date->DayInYear( 15,6 ) - g_date->DayInYear())) {
373  SimpleEvent( g_date->Date() + 1, fpsi_water_one, true );
374  break;
375  }
376  FPEADSI_WATER_DATE = g_date->Date();
377  // Did first water, so do the second one too.
378  {
379  int d1 = g_date->OldDays() + g_date->DayInYear( 16,6 );
380  if ( d1 < g_date->Date() + 7 ) {
381  d1 = g_date->Date() + 7;
382  }
383  SimpleEvent( d1, fpsi_water_two, false );
384  }
385  }
386  SimpleEvent( g_date->OldDays() + g_date->DayInYear( 10,8 ),
387  fpsi_growth_reg, false );
388  break;
389 
390  case fpsi_water_two:
391  {
392  int d1 = g_date->Date();
393  if ( d1 < FPEADSI_INSECT_DATE + 2 ||
394  d1 < FPEADSI_FUNGI_DATE + 2 ) {
395  // Too close, try tomorrow.
396  SimpleEvent( g_date->Date() + 1, fpsi_water_two, true );
397  break;
398  }
399  }
400  if (!m_farm->Water( m_field, 0.0,
401  g_date->DayInYear( 1,7 ) -
402  g_date->DayInYear())) {
403  SimpleEvent( g_date->Date() + 1, fpsi_water_two, true );
404  break;
405  }
406  FPEADSI_WATER_DATE = g_date->Date();
407  // End of thread.
408  break;
409 
410  case fpsi_growth_reg:
411  if ( m_ev->m_lock || m_farm->DoIt( (int) (20*cfg_greg_app_prop.value() )))
412  {
413  if (!m_farm->GrowthRegulator( m_field, 0.0,
414  g_date->DayInYear( 20,8 ) -
415  g_date->DayInYear())) {
416  SimpleEvent( g_date->Date() + 1, fpsi_growth_reg, true );
417  break;
418  }
419  // Did apply growth regulator, so wait seven days before
420  // harvesting.
421 
422  ChooseNextCrop (1);
423  SimpleEvent( g_date->Date()+7, fpsi_harvest, false );
424  break;
425  }
426  // No growth regulator, try harvesting today.
427 
428  ChooseNextCrop (1);
429  SimpleEvent( g_date->Date(), fpsi_harvest, false );
430  break;
431 
432  case fpsi_harvest:
433  if (!m_farm->Harvest( m_field, 0.0,
434  g_date->DayInYear( 30,8 ) -
435  g_date->DayInYear())) {
436  SimpleEvent( g_date->Date() + 1, fpsi_harvest, true );
437  break;
438  }
439  SimpleEvent( g_date->Date(), fpsi_straw_chopping, false );
440  break;
441 
442  case fpsi_straw_chopping:
443  if (m_field->GetMConstants(0)==0) {
444  if (!m_farm->StrawChopping( m_field, 0.0, -1)) { //raise an error
445  g_msg->Warn( WARN_BUG, "FieldPeas::Do(): failure in 'StrawChopping' execution", "" );
446  exit( 1 );
447  }
448  }
449  else {
450  if (!m_farm->StrawChopping( m_field, 0.0, m_field->GetMDates(1,0) - g_date->DayInYear())) {
451  SimpleEvent( g_date->Date()+1, fpsi_straw_chopping, true );
452  break;
453  }
454  }
455  // End Main Thread
456  done=true;
457  break;
458 
459  default:
460  g_msg->Warn( WARN_BUG, "FieldPeas::Do(): "
461  "Unknown event type! ", "" );
462  exit( 1 );
463  }
464 
465  return done;
466 }

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(), Farm::FP_Manure(), FPEADSI_FUNGI_DATE, FPEADSI_INSECT_DATE, FPEADSI_WATER_DATE, FPEASSI_DECIDE_TO_HERB, fpsi_autumn_plough, fpsi_fertmanure_plant, fpsi_fertmanure_stock, fpsi_fungicide, fpsi_growth_reg, fpsi_harvest, fpsi_herbicide_one, fpsi_herbicide_two, fpsi_insecticide, fpsi_spring_harrow, fpsi_spring_plough, fpsi_spring_roll, fpsi_spring_sow, fpsi_start, fpsi_straw_chopping, fpsi_water_one, fpsi_water_two, 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:
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
fpsi_autumn_plough
Definition: FieldPeasSilage.h:42
cfg_greg_app_prop
CfgFloat cfg_greg_app_prop
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
fpsi_insecticide
Definition: FieldPeasSilage.h:51
fpsi_spring_harrow
Definition: FieldPeasSilage.h:44
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: farm.h:905
fpsi_spring_plough
Definition: FieldPeasSilage.h:43
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
fpsi_herbicide_two
Definition: FieldPeasSilage.h:50
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
cfg_herbi_app_prop
CfgFloat cfg_herbi_app_prop
Farm::GetType
TTypesOfFarm GetType(void)
Definition: farm.h:901
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
fpsi_growth_reg
Definition: FieldPeasSilage.h:55
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: farm.cpp:307
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
fpsi_herbicide_one
Definition: FieldPeasSilage.h:49
Farm::Prob_multiplier
virtual double Prob_multiplier()
Definition: farm.h:786
fpsi_harvest
Definition: FieldPeasSilage.h:41
TTypesOfVegetation
TTypesOfVegetation
Definition: tov_declaration.h:30
Farm::Spraying_herbicides
virtual bool Spraying_herbicides(TTypesOfVegetation)
Definition: farm.h:784
fpsi_fungicide
Definition: FieldPeasSilage.h:52
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
fpsi_water_two
Definition: FieldPeasSilage.h:54
fpsi_spring_sow
Definition: FieldPeasSilage.h:47
cfg_fungi_app_prop1
CfgFloat cfg_fungi_app_prop1
FPEADSI_FUNGI_DATE
#define FPEADSI_FUNGI_DATE
Definition: FieldPeasSilage.h:34
FarmEvent::m_next_tov
TTypesOfVegetation m_next_tov
Definition: farm.h:471
fpsi_spring_roll
Definition: FieldPeasSilage.h:48
fpsi_fertmanure_stock
Definition: FieldPeasSilage.h:46
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
fpsi_start
Definition: FieldPeasSilage.h:40
fpsi_straw_chopping
Definition: FieldPeasSilage.h:56
FPEADSI_WATER_DATE
#define FPEADSI_WATER_DATE
Definition: FieldPeasSilage.h:35
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
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
fpsi_fertmanure_plant
Definition: FieldPeasSilage.h:45
FPEASSI_DECIDE_TO_HERB
#define FPEASSI_DECIDE_TO_HERB
Definition: FieldPeasSilage.h:36
FieldPeasSilageToDo
FieldPeasSilageToDo
Definition: FieldPeasSilage.h:39
fpsi_water_one
Definition: FieldPeasSilage.h:53
FPEADSI_INSECT_DATE
#define FPEADSI_INSECT_DATE
Definition: FieldPeasSilage.h:33
Farm::GrowthRegulator
virtual bool GrowthRegulator(LE *a_field, double a_user, int a_days)
Apply growth regulator to a_field.
Definition: farmfuncs.cpp:1250
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_ins_app_prop1
CfgFloat cfg_ins_app_prop1
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