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 tulips.
86 a_field->SetMDates(0, 0, g_date->DayInYear(20, 7));
87 a_field->SetMDates(1, 0, g_date->DayInYear(20, 7));
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,
"NLTulips::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,
"NLTulips::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,
"NLTulips::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);
156 d1 = g_date->OldDays() + g_date->DayInYear(1, 9);
171 if (!a_farm->
FP_Manure(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
176 d1 = g_date->Date() + 1;
177 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 9)) {
178 d1 = g_date->OldDays() + g_date->DayInYear(15, 9);
185 if (!a_farm->
FA_Manure(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
190 d1 = g_date->Date() + 1;
191 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 9)) {
192 d1 = g_date->OldDays() + g_date->DayInYear(15, 9);
199 if (!a_farm->
AutumnPlough(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
209 if (!a_farm->StubbleCultivatorHeavy(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
216 if (!a_farm->BedForming(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
223 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
230 if (!a_farm->AutumnSow(a_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
240 if (a_farm->IsStockFarmer())
247 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
249 if (!a_farm->FP_PK(a_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
258 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
260 if (!a_farm->FA_PK(a_field, 0.0, g_date->DayInYear(30, 11) - g_date->DayInYear())) {
269 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 2) - g_date->DayInYear())) {
276 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 2) - g_date->DayInYear())) {
283 if (a_ev->
m_lock || a_farm->DoIt_prob(0.60))
285 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
293 if (a_ev->
m_lock || a_farm->DoIt_prob(0.60))
295 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
308 if (!a_farm->StrawCovering(a_field, 0.0, g_date->DayInYear(20, 12) - g_date->DayInYear())) {
317 if (!a_farm->StrawRemoval(a_field, 0.0, g_date->DayInYear(20, 2) - g_date->DayInYear())) {
325 if (!a_farm->FlowerCutting(a_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
338 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(20, 2) - g_date->DayInYear())) {
347 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(30, 2) - g_date->DayInYear())) {
355 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
367 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
378 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
390 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
401 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
413 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
421 d1 = g_date->Date() + 3;
422 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
423 d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
428 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
440 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
451 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
463 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
474 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
486 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
494 d1 = g_date->Date() + 3;
495 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 4)) {
496 d1 = g_date->OldDays() + g_date->DayInYear(20, 4);
501 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
513 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
524 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
536 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
547 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
559 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
570 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
582 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
590 d1 = g_date->Date() + 7;
591 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 6)) {
592 d1 = g_date->OldDays() + g_date->DayInYear(10, 6);
602 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
608 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
617 d1 = g_date->Date() + 7;
618 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 4)) {
619 d1 = g_date->OldDays() + g_date->DayInYear(20, 4);
635 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
647 if (a_ev->
m_lock || a_farm->DoIt_prob(0.25))
649 if (!a_farm->Water(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
659 if (!a_farm->BulbHarvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
664 if (d1 <= g_date->OldDays() + g_date->DayInYear(1, 7)) {
674 if (!a_farm->SleepAllDay(a_field, 0.0, g_date->DayInYear(5, 7) - g_date->DayInYear())) {
681 g_msg->Warn(WARN_BUG,
"NLTulips::Do(): "
682 "Unknown event type! ",
"");