Loading [MathJax]/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_OEnergyCrop_Perm Class Reference

DK_OEnergyCrop_Perm class
. More...

#include <DK_OEnergyCrop_Perm.h>

Inheritance diagram for DK_OEnergyCrop_Perm:
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_OEnergyCrop_Perm (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_OEnergyCrop_Perm class
.

See DK_OEnergyCrop.h::DK_OEnergyCropToDo 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_OEnergyCrop_Perm()

DK_OEnergyCrop_Perm::DK_OEnergyCrop_Perm ( TTypesOfVegetation  a_tov,
TTypesOfCrops  a_toc,
Landscape a_L 
)
inline
74  : Crop(a_tov, a_toc, a_L)
75  {
76  // When we start it off, the first possible date for a farm operation is ...
77  // This information is used by other crops when they decide how much post processing of
78  // the management is allowed after harvest before the next crop starts.
79  m_first_date=g_date->DayInYear( 25,2 );
81  }

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

Member Function Documentation

◆ Do()

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

61 {
62  m_farm = a_farm;
63  m_field = a_field;
64  m_ev = a_ev;
65  bool done = false; // The boolean value done indicates when we are totally finished with this plan (i.e. it is set to true).
66  int d1 = 0;
68  // Depending what event has occured jump to the correct bit of code
69  switch (m_ev->m_todo)
70  {
71  case dk_oec_start:
72  {
73  DK_OEC_YEARS_AFTER_EST = false;
74 
75  a_field->ClearManagementActionSum();
76  m_last_date = g_date->DayInYear(15, 10); // Should match the last flexdate below
77  //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
78  std::vector<std::vector<int>> flexdates(2 + 1, std::vector<int>(2, 0));
79  // Set up the date management stuff
80  // Start and stop dates for all events after harvest
81  flexdates[0][1] = g_date->DayInYear(30, 9); // last possible day of harvest
82  // Now these are done in pairs, start & end for each operation. If its not used then -1
83  flexdates[1][0] = -1; // This date will be moved back as far as necessary and potentially to flexdates 1 (start op 1)
84  flexdates[1][1] = g_date->DayInYear(15, 10); // This date will be moved back as far as necessary and potentially to flexdates 1 (end op 1) herbi
85  flexdates[2][0] = -1; // This date will be moved back as far as necessary and potentially to flexdates 2 (start op 2)
86  flexdates[2][1] = g_date->DayInYear(15, 10); // This date will be moved back as far as necessary and potentially to flexdates 2 (end op 2) ferti
87 
88  // 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
89  if (StartUpCrop(365, flexdates, int(dk_oec_deep_plough_sand))) break;
90 
91  // Here we queue up the first event
92  if ((DK_OEC_YEARS_AFTER_EST + g_date->GetYearNumber()) % 1 == 1)
93  {
94  d1 = g_date->OldDays() + g_date->DayInYear(25, 2);
95  if (g_date->Date() >= d1) d1 += 365;
97  }
98  else if ((DK_OEC_YEARS_AFTER_EST + g_date->GetYearNumber()) % 1 == 0)
99  {
100  d1 = g_date->OldDays() + g_date->DayInYear(1, 3);
101  if (g_date->Date() >= d1) d1 += 365;
102  SimpleEvent(d1, dk_oec_cut_trees, false);
103  }
104  break;
105  }
106  break;
107 
108  // LKM: This is the first real farm operation - done if much seed weed or setaside field
110  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)
111  {
112  if (a_field->GetVegBiomass() > 0)
113  {
114  if (m_ev->m_lock || m_farm->DoIt_prob(1.0)) {
115  if (!m_farm->DeepPlough(m_field, 0.0, g_date->DayInYear(10, 3) - g_date->DayInYear())) {
117  break;
118  }
119  }
120  }
122  break;
123  }
125  break;
126 
127  case dk_oec_roll1_sand:
128  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
129  {
130  if (!a_farm->SpringRoll(m_field, 0.0, g_date->DayInYear(12, 3) - g_date->DayInYear())) {
131  SimpleEvent(g_date->Date() + 1, dk_oec_roll1_sand, true);
132  break;
133  }
134  }
136  break;
137 
139  if (m_farm->IsStockFarmer()) { //Stock Farmer
140  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
141  {
142  if (!a_farm->FA_Slurry(m_field, 0.0, g_date->DayInYear(14, 3) - g_date->DayInYear())) {
144  break;
145  }
146  }
148  break;
149  }
150  else
152  break;
153 
154  case dk_oec_npk1_p_sand:
155  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
156  {
157  if (!a_farm->FP_NPK(m_field, 0.0, g_date->DayInYear(14, 3) - g_date->DayInYear())) {
158  SimpleEvent(g_date->Date() + 1, dk_oec_npk1_p_sand, true);
159  break;
160  }
161  }
163  break;
164 
166  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
167  {
168  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(15, 3) - g_date->DayInYear())) {
170  break;
171  }
172  }
173  SimpleEvent(g_date->Date() + 1, dk_oec_roll2, false);
174  break;
175 
177  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
178  {
179  if (!a_farm->DeepPlough(m_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
181  break;
182  }
183  }
185  break;
186 
187  case dk_oec_roll1_clay:
188  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
189  {
190  if (!a_farm->SpringRoll(m_field, 0.0, g_date->DayInYear(27, 4) - g_date->DayInYear())) {
191  SimpleEvent(g_date->Date() + 1, dk_oec_roll1_clay, true);
192  break;
193  }
194  }
196  break;
197 
199  if (m_farm->IsStockFarmer()) { //Stock Farmer
200  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
201  {
202  if (!a_farm->FA_Slurry(m_field, 0.0, g_date->DayInYear(29, 4) - g_date->DayInYear())) {
204  break;
205  }
206  }
208  break;
209  }
210  else
212  break;
213 
214  case dk_oec_npk1_p_clay:
215  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
216  {
217  if (!a_farm->FP_NPK(m_field, 0.0, g_date->DayInYear(29, 4) - g_date->DayInYear())) {
218  SimpleEvent(g_date->Date() + 1, dk_oec_npk1_p_clay, true);
219  break;
220  }
221  }
223  break;
224 
226  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
227  {
228  if (!a_farm->SpringSow(m_field, 0.0, g_date->DayInYear(31, 4) - g_date->DayInYear())) {
230  break;
231  }
232  }
233  SimpleEvent(g_date->Date() + 1, dk_oec_roll2, false);
234  break;
235 
236  case dk_oec_roll2:
237  if (!a_farm->SpringRoll(m_field, 0.0, g_date->DayInYear(1, 5) - g_date->DayInYear())) {
238  SimpleEvent(g_date->Date() + 1, dk_oec_roll2, true);
239  break;
240  }
242  break;
243 
244  case dk_oec_shallowharrow1:
245  if (!a_farm->ShallowHarrow(m_field, 0.0, g_date->DayInYear(1, 8) - g_date->DayInYear())) {
247  break;
248  }
250  break;
251 
252  case dk_oec_shallowharrow2:
253  if (!a_farm->ShallowHarrow(m_field, 0.0, g_date->DayInYear(2, 8) - g_date->DayInYear())) {
255  break;
256  }
257 
258  // After first growth season
259  SimpleEvent(g_date->OldDays() + g_date->DayInYear(1, 3)+365, dk_oec_cut_trees, false);
260  break;
261 
262  case dk_oec_cut_trees:
263  if (!a_farm->Pruning(m_field, 0.0, g_date->DayInYear(15, 3) - g_date->DayInYear())) {
264  SimpleEvent(g_date->Date() + 1, dk_oec_cut_trees, true);
265  break;
266  }
267 
268  // here comes a fork of parallel events:
269  SimpleEvent(g_date->Date() + 1, dk_oec_slurry2_s, false); // fertilizer thread
270  SimpleEvent(g_date->Date() + 1, dk_oec_shallowharrow3, false); // cultivation thread - main thread
271  break;
272 
273  case dk_oec_slurry2_s:
274  if (m_farm->IsStockFarmer()) { //Stock Farmer
275  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
276  {
277  if (!a_farm->FA_Slurry(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
278  SimpleEvent(g_date->Date() + 1, dk_oec_slurry2_s, true);
279  break;
280  }
281  }
282  break; //end of thread
283  }
284  else
285  SimpleEvent(g_date->Date(), dk_oec_npk2_p, false);
286  break;
287 
288  case dk_oec_npk2_p:
289  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
290  {
291  if (!a_farm->FP_NPK(m_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
292  SimpleEvent(g_date->Date() + 1, dk_oec_npk2_p, true);
293  break;
294  }
295  }
296  break; //end of thread
297 
299  if (!a_farm->ShallowHarrow(m_field, 0.0, g_date->DayInYear(1, 8) - g_date->DayInYear())) {
301  break;
302  }
304  break;
305 
307  if (!a_farm->ShallowHarrow(m_field, 0.0, g_date->DayInYear(2, 8) - g_date->DayInYear())) {
309  break;
310  }
312  break;
313 
314  case dk_oec_harvest:
315  if (!a_farm->Harvest(m_field, 0.0, m_field->GetMDates(1, 0) - g_date->DayInYear())) {
316  SimpleEvent(g_date->Date() + 1, dk_oec_harvest, true);
317  break;
318  }
319  SimpleEvent(g_date->Date() + 1, dk_oec_slurry3_s, false); // fertilizer thread - main thread
320  break;
321 
322  case dk_oec_slurry3_s:
323  if (m_farm->IsStockFarmer()) { //Stock Farmer
324  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
325  {
326  if (!a_farm->FA_Slurry(m_field, 0.0, m_field->GetMDates(1, 1) - g_date->DayInYear())) {
327  SimpleEvent(g_date->Date() + 1, dk_oec_slurry3_s, true);
328  break;
329  }
330  }
331  done = true;
332  break;
333  }
334  else
335  SimpleEvent(g_date->Date(), dk_oec_npk3_p, false);
336  break;
337 
338  case dk_oec_npk3_p:
339  if (m_ev->m_lock || m_farm->DoIt_prob(1.00))
340  {
341  if (!a_farm->FP_NPK(m_field, 0.0, m_field->GetMDates(1, 2) - g_date->DayInYear())) {
342  SimpleEvent(g_date->Date() + 1, dk_oec_npk3_p, true);
343  break;
344  }
345  }
346  done = true;
347  break;
348  // So we are done, and somewhere else the farmer will queue up the start event of the next crop
349  // END of MAIN THREAD
350  break;
351  default:
352  g_msg->Warn(WARN_BUG, "DK_OEnergyCrop_Perm::Do(): "
353  "Unknown event type! ", "");
354  exit(1);
355  }
356  return done;
357 }

References LE::ClearManagementActionSum(), Calendar::Date(), Calendar::DayInYear(), Farm::DeepPlough(), dk_oec_cut_trees, dk_oec_deep_plough_clay, dk_oec_deep_plough_sand, dk_oec_harvest, dk_oec_npk1_p_clay, dk_oec_npk1_p_sand, dk_oec_npk2_p, dk_oec_npk3_p, dk_oec_planting_clay, dk_oec_planting_sand, dk_oec_roll1_clay, dk_oec_roll1_sand, dk_oec_roll2, dk_oec_shallowharrow1, dk_oec_shallowharrow2, dk_oec_shallowharrow3, dk_oec_shallowharrow4, dk_oec_slurry1_s_clay, dk_oec_slurry1_s_sand, dk_oec_slurry2_s, dk_oec_slurry3_s, dk_oec_start, DK_OEC_YEARS_AFTER_EST, Farm::DoIt_prob(), Farm::FA_Slurry(), Farm::FP_NPK(), g_date, g_msg, LE::GetMDates(), LE::GetSoilType(), LE::GetVegBiomass(), Calendar::GetYearNumber(), Farm::Harvest(), Farm::IsStockFarmer(), Crop::m_ev, Crop::m_farm, Crop::m_field, Crop::m_last_date, FarmEvent::m_lock, FarmEvent::m_todo, Calendar::OldDays(), Farm::Pruning(), Farm::ShallowHarrow(), Crop::SimpleEvent(), Farm::SpringRoll(), Farm::SpringSow(), Crop::StartUpCrop(), tos_LoamySand, tos_Sand, tos_SandyClayLoam, tos_SandyLoam, tov_DKOEnergyCrop_Perm, MapErrorMsg::Warn(), and WARN_BUG.

◆ SetUpFarmCategoryInformation()

void DK_OEnergyCrop_Perm::SetUpFarmCategoryInformation ( )
inline
82  {
83  const int elements = 2 + (dk_oec_foobar - DK_OEC_BASE);
85 
86  FarmManagementCategory catlist[elements] =
87  {
88  fmc_Others, // zero element unused but must be here
89  fmc_Others, // dk_oec_start = 1, // Compulsory, must always be 1 (one).
90  fmc_Others, // dk_oec_sleep_all_day = // DK_EC_BASE,
91  fmc_Cultivation, // dk_oec_deep_plough_sand,
92  fmc_Cultivation, //dk_oec_roll1_sand,
93  fmc_Fertilizer, // dk_oec_slurry1_s_sand,
94  fmc_Fertilizer, // dk_oec_npk1_p_sand,
95  fmc_Cultivation, // dk_oec_deep_plough_clay,
96  fmc_Cultivation, //dk_oec_roll1_clay,
97  fmc_Fertilizer, // dk_oec_slurry1_s_clay,
98  fmc_Fertilizer, // dk_oec_npk1_p_clay,
99  fmc_Others, //dk_oec_planting_sand,
100  fmc_Others, //dk_oec_planting_clay,
101  fmc_Cultivation, //dk_oec_roll2,
102  fmc_Cultivation, // dk_oec_shallow_harrow1,
103  fmc_Cultivation, // dk_oec_shallow_harrow2,
104  fmc_Cutting, // dk_oec_cut_trees,
105  fmc_Fertilizer, // dk_oec_slurry2_s,
106  fmc_Fertilizer, // dk_oec_npk2_p,
107  fmc_Cultivation, // dk_oec_shallow_harrow3,
108  fmc_Cultivation, // dk_oec_shallow_harrow4,
109  fmc_Harvest, // dk_oec_harvest,
110  fmc_Fertilizer, // dk_oec_slurry3_s,
111  fmc_Fertilizer, // dk_oec_npk3_p,
112  // no foobar entry
113 
114  };
115  // Iterate over the catlist elements and copy them to vector
116  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
117  }

References DK_OEC_BASE, dk_oec_foobar, fmc_Cultivation, fmc_Cutting, fmc_Fertilizer, fmc_Harvest, fmc_Others, Crop::m_base_elements_no, and Crop::m_ManagementCategories.

Referenced by DK_OEnergyCrop_Perm().


The documentation for this class was generated from the following files:
LE::GetMDates
int GetMDates(int a, int b)
Definition: Elements.h:405
dk_oec_harvest
Definition: DK_OEnergyCrop_Perm.h:56
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:487
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
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: Farm.h:961
Farm::Harvest
virtual bool Harvest(LE *a_field, double a_user, int a_days)
Carry out a harvest on a_field.
Definition: FarmFuncs.cpp:1364
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
dk_oec_shallowharrow4
Definition: DK_OEnergyCrop_Perm.h:55
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
Calendar::GetYearNumber
int GetYearNumber(void)
Definition: Calendar.h:72
dk_oec_slurry1_s_clay
Definition: DK_OEnergyCrop_Perm.h:44
tos_SandyClayLoam
Definition: LandscapeFarmingEnums.h:722
tov_DKOEnergyCrop_Perm
Definition: LandscapeFarmingEnums.h:449
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
tos_SandyLoam
Definition: LandscapeFarmingEnums.h:721
dk_oec_foobar
Definition: DK_OEnergyCrop_Perm.h:59
dk_oec_roll1_clay
Definition: DK_OEnergyCrop_Perm.h:43
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_oec_planting_clay
Definition: DK_OEnergyCrop_Perm.h:47
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
LE::GetVegBiomass
virtual double GetVegBiomass(void)
Definition: Elements.h:164
dk_oec_npk2_p
Definition: DK_OEnergyCrop_Perm.h:53
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_oec_planting_sand
Definition: DK_OEnergyCrop_Perm.h:46
dk_oec_npk1_p_sand
Definition: DK_OEnergyCrop_Perm.h:41
dk_oec_roll1_sand
Definition: DK_OEnergyCrop_Perm.h:39
fmc_Cutting
Definition: LandscapeFarmingEnums.h:1009
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
dk_oec_npk3_p
Definition: DK_OEnergyCrop_Perm.h:58
Calendar::Date
long Date(void)
Definition: Calendar.h:57
dk_oec_slurry1_s_sand
Definition: DK_OEnergyCrop_Perm.h:40
fmc_Cultivation
Definition: LandscapeFarmingEnums.h:1008
LE::GetSoilType
int GetSoilType()
Definition: Elements.h:302
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
dk_oec_shallowharrow2
Definition: DK_OEnergyCrop_Perm.h:50
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
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
Crop::m_farm
Farm * m_farm
Definition: Farm.h:498
Crop::m_field
LE * m_field
Definition: Farm.h:499
dk_oec_shallowharrow1
Definition: DK_OEnergyCrop_Perm.h:49
Crop::m_ManagementCategories
vector< FarmManagementCategory > m_ManagementCategories
Holds the translation between the farm operation enum for each crop and the farm management category ...
Definition: Farm.h:530
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
tos_Sand
Definition: LandscapeFarmingEnums.h:719
Farm::ShallowHarrow
virtual bool ShallowHarrow(LE *a_field, double a_user, int a_days)
Carry out a shallow harrow event on a_field, e.g., after grass cutting event.
Definition: FarmFuncs.cpp:473
dk_oec_roll2
Definition: DK_OEnergyCrop_Perm.h:48
dk_oec_cut_trees
Definition: DK_OEnergyCrop_Perm.h:51
Crop::m_last_date
int m_last_date
Definition: Farm.h:503
dk_oec_slurry2_s
Definition: DK_OEnergyCrop_Perm.h:52
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_OEnergyCrop_Perm::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: DK_OEnergyCrop_Perm.h:82
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
DK_OEC_YEARS_AFTER_EST
#define DK_OEC_YEARS_AFTER_EST
Definition: DK_OEnergyCrop_Perm.h:23
fmc_Harvest
Definition: LandscapeFarmingEnums.h:1012
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_OEC_BASE
#define DK_OEC_BASE
Definition: DK_OEnergyCrop_Perm.h:25
dk_oec_shallowharrow3
Definition: DK_OEnergyCrop_Perm.h:54
dk_oec_start
Definition: DK_OEnergyCrop_Perm.h:36
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
dk_oec_npk1_p_clay
Definition: DK_OEnergyCrop_Perm.h:45
Crop::Crop
Crop(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: Farm.cpp:733
dk_oec_slurry3_s
Definition: DK_OEnergyCrop_Perm.h:57
dk_oec_deep_plough_clay
Definition: DK_OEnergyCrop_Perm.h:42
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
tos_LoamySand
Definition: LandscapeFarmingEnums.h:720
WARN_BUG
Definition: MapErrorMsg.h:34
dk_oec_deep_plough_sand
Definition: DK_OEnergyCrop_Perm.h:38
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001