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 - in this case conventional spring barley.
82 a_field->SetMDates(0, 0, g_date->DayInYear(15, 8));
83 a_field->SetMDates(1, 0, g_date->DayInYear(20, 8));
84 a_field->SetMDates(0, 1, 0);
85 a_field->SetMDates(1, 1, g_date->DayInYear(25, 8));
89 a_field->SetMConstants(0, 1);
99 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
100 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
102 g_msg->Warn(WARN_BUG,
"NLSpringBarley::Do(): ",
"Harvest too late for the next crop to start!!!");
104 g_msg->Warn(
"Next Crop ", (
double)almassnum);
107 for (
int i = 0; i < noDates; i++) {
108 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
109 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
111 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
112 a_field->SetMConstants(i, 0);
113 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
121 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
122 if (g_date->Date() < d1) {
124 printf(
"Poly: %d\n", a_field->GetPoly());
125 g_msg->Warn(WARN_BUG,
"NLSpringBarley::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
127 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
129 g_msg->Warn(
"Next Crop ", (
double)almassnum);
134 if (g_date->Date() > d1) {
136 g_msg->Warn(WARN_BUG,
"NLSpringBarley::Do(): ",
"Crop start attempt after last possible start date");
138 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
140 g_msg->Warn(
"Next Crop ", (
double)almassnum);
155 d1 = g_date->OldDays() + g_date->DayInYear(1, 9);
158 if (a_field->GetSoilType() == 2 || a_field->GetSoilType() == 6) {
167 if (!a_farm->
StubbleHarrowing(a_field, 0.0, g_date->DayInYear(31,10) - g_date->DayInYear())) {
178 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
180 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
188 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
190 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
198 if (a_ev->
m_lock || a_farm->DoIt_prob(0.20))
200 if (!a_farm->SpringPlough(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
205 if (a_farm->IsStockFarmer())
212 if (a_ev->
m_lock || a_farm->DoIt_prob(0.70))
214 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
219 d1 = g_date->Date() + 1;
220 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
221 d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
223 if (a_farm->IsStockFarmer())
230 if (a_ev->
m_lock || a_farm->DoIt_prob(0.70))
232 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
237 d1 = g_date->Date() + 1;
238 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
239 d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
241 if (a_farm->IsStockFarmer())
248 if (a_ev->
m_lock || a_farm->DoIt_prob(0.20))
250 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
255 d1 = g_date->Date() + 10;
256 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 10)) {
257 d1 = g_date->OldDays() + g_date->DayInYear(15, 10);
262 if (!a_farm->WinterPlough(a_field, 0.0, g_date->DayInYear(1, 12) - g_date->DayInYear())) {
266 if (a_farm->IsStockFarmer())
273 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
277 d1 = g_date->Date() + 1;
278 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
279 d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
281 if (a_farm->IsStockFarmer())
288 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
292 d1 = g_date->Date() + 1;
293 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
294 d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
296 if (a_farm->IsStockFarmer())
303 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
305 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
313 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
315 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
323 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
325 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
338 if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
348 if (a_farm->IsStockFarmer())
355 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
365 if (a_farm->IsStockFarmer())
372 if (a_field->GetGreenBiomass() <= 0)
374 if (a_ev->
m_lock || a_farm->DoIt_prob(0.20))
376 if (!a_farm->ShallowHarrow(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
385 if (a_ev->
m_lock || (a_farm->DoIt_prob(0.50) && (a_field->GetSoilType() != 2 && a_field->GetSoilType() != 6)))
387 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
395 if (a_ev->
m_lock || (a_farm->DoIt_prob(0.50) && (a_field->GetSoilType() != 2 && a_field->GetSoilType() != 6)))
397 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
406 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
408 if (a_field->GetGreenBiomass() <= 0) {
413 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
423 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
425 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
436 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
445 if (a_ev->
m_lock || a_farm->DoIt_prob(0.30))
451 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
464 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
466 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
476 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
483 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
485 if (a_field->GetMConstants(0) == 0) {
486 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
487 g_msg->Warn(WARN_BUG,
"NLSpringBarley::Do(): failure in 'StrawChopping' execution",
"");
492 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
503 if (a_field->GetMConstants(1) == 0) {
504 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
505 g_msg->Warn(WARN_BUG,
"NLWinterWheat::Do(): failure in 'HayBailing' execution",
"");
510 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1, 1) - g_date->DayInYear())) {
518 g_msg->Warn(WARN_BUG,
"PLSpringBarley::Do(): "
519 "Unknown event type! ",
"");