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 winter wheat.
85 a_field->SetMDates(0, 0, g_date->DayInYear(5, 8));
86 a_field->SetMDates(1, 0, g_date->DayInYear(10, 8));
87 a_field->SetMDates(0, 1, 0);
88 a_field->SetMDates(1, 1, g_date->DayInYear(15, 8));
89 a_field->SetMDates(0, 2, 0);
90 a_field->SetMDates(1, 2, g_date->DayInYear(25, 8));
91 a_field->SetMDates(0, 3, 0);
92 a_field->SetMDates(1, 3, g_date->DayInYear(25, 8));
96 a_field->SetMConstants(0, 1);
106 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
107 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
109 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): ",
"Harvest too late for the next crop to start!!!");
111 g_msg->Warn(
"Next Crop ", (
double)almassnum);
114 for (
int i = 0; i < noDates; i++) {
115 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
116 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
118 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
119 a_field->SetMConstants(i, 0);
120 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
128 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
129 if (g_date->Date() < d1) {
131 printf(
"Poly: %d\n", a_field->GetPoly());
132 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
134 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
136 g_msg->Warn(
"Next Crop ", (
double)almassnum);
140 if (g_date->Date() > d1) {
142 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): ",
"Crop start attempt after last possible start date");
143 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
144 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
146 g_msg->Warn(
"Next Crop ", (
double)almassnum);
165 d1 = g_date->OldDays() + g_date->DayInYear(20, 7);
182 if (!a_farm->
FP_Slurry(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
199 if (a_ev->
m_lock || a_farm->DoIt(40))
201 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
216 if (a_ev->
m_lock || a_farm->DoIt(50))
218 if (!a_farm->StubblePlough(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
234 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
241 if (a_ev->
m_lock || a_farm->DoIt(40))
243 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->Date() + 7 - g_date->DayInYear())) {
248 d1 = g_date->Date() + 1;
249 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 8)) {
250 d1 = g_date->OldDays() + g_date->DayInYear(20, 8);
252 if (a_farm->IsStockFarmer())
259 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
263 d1 = g_date->Date() + 1;
264 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 8)) {
265 d1 = g_date->OldDays() + g_date->DayInYear(20, 8);
267 if (a_farm->IsStockFarmer())
278 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
290 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
298 if (a_ev->
m_lock || a_farm->DoIt(80))
300 if (!a_farm->AutumnPlough(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
307 d1 = g_date->OldDays() + g_date->DayInYear(15, 9);
308 if (g_date->Date() > d1)
315 if (a_farm->IsStockFarmer())
327 if (!a_farm->AutumnRoll(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
331 if (a_farm->IsStockFarmer())
339 if (!a_farm->StubbleCultivatorHeavy(a_field, 0.0, g_date->DayInYear(31,10) - g_date->DayInYear())) {
343 if (a_farm->IsStockFarmer())
350 if (a_ev->
m_lock || a_farm->DoIt(45))
352 if (!a_farm->FP_NPKS(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
360 if (a_ev->
m_lock || a_farm->DoIt(45))
362 if (!a_farm->FA_NPKS(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
371 if (a_ev->
m_lock || a_farm->DoIt(30))
373 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
383 if (!a_farm->AutumnSow(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
392 if (a_farm->IsStockFarmer())
397 if (a_farm->IsStockFarmer())
402 if (a_farm->IsStockFarmer())
410 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(31, 10) - g_date->DayInYear())) {
419 if (a_farm->IsStockFarmer())
424 if (a_farm->IsStockFarmer())
429 if (a_farm->IsStockFarmer())
437 if (a_ev->
m_lock || a_farm->DoIt(80))
439 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
447 if (a_ev->
m_lock || a_farm->DoIt(73))
449 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
458 if (a_ev->
m_lock || a_farm->DoIt(5))
460 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
468 if (a_ev->
m_lock || a_farm->DoIt(80))
470 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
475 d1 = g_date->Date() + 14;
476 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 5)) {
477 d1 = g_date->OldDays() + g_date->DayInYear(10, 5);
482 if (a_ev->
m_lock || a_farm->DoIt(68))
484 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 6) - g_date->DayInYear())) {
492 if (a_ev->
m_lock || a_farm->DoIt(15))
494 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
503 if (a_ev->
m_lock || a_farm->DoIt(5))
505 if (a_field->GetGreenBiomass() <= 0) {
514 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
529 if (a_ev->
m_lock || a_farm->DoIt(74))
535 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
547 if (a_ev->
m_lock || a_farm->DoIt(38))
553 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(25, 6) - g_date->DayInYear())) {
566 if (a_ev->
m_lock || a_farm->DoIt(68))
568 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
583 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->Date() + 21 - g_date->DayInYear())) {
592 if (a_ev->
m_lock || a_farm->DoIt(50))
594 if (!a_farm->FP_PK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
603 if (a_ev->
m_lock || a_farm->DoIt(50))
605 if (!a_farm->FA_PK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
614 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
618 d1 = g_date->Date() + 10;
619 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
620 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
625 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
629 d1 = g_date->Date() + 10;
630 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
631 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
636 if (a_ev->
m_lock || a_farm->DoIt(95))
638 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
646 if (a_ev->
m_lock || a_farm->DoIt(95))
648 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
656 if (a_ev->
m_lock || a_farm->DoIt(40))
658 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
666 if (a_ev->
m_lock || a_farm->DoIt(40))
668 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
677 if (a_ev->
m_lock || a_farm->DoIt(63))
679 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
687 if (a_ev->
m_lock || a_farm->DoIt(63))
689 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
697 if (a_ev->
m_lock || a_farm->DoIt(8))
699 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
707 if (a_ev->
m_lock || a_farm->DoIt(8))
709 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
719 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
728 if (a_farm->IsStockFarmer())
731 if (a_ev->
m_lock || a_farm->DoIt(10))
733 if (a_field->GetMConstants(0) == 0) {
734 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
735 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'StrawChopping' execution",
"");
740 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
759 if (a_ev->
m_lock || a_farm->DoIt(90))
761 if (a_field->GetMConstants(0) == 0) {
762 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
763 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'StrawChopping' execution",
"");
768 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
785 if (a_field->GetMConstants(1) == 0) {
786 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
787 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'HayBailing' execution",
"");
792 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1,1) - g_date->DayInYear())) {
797 if (a_farm->IsStockFarmer())
804 if (a_ev->
m_lock || a_farm->DoIt(18))
806 if (a_field->GetMConstants(2) == 0) {
807 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
808 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'FP_RSM' execution",
"");
813 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1,2) - g_date->DayInYear())) {
819 if (a_farm->IsStockFarmer())
826 if (a_ev->
m_lock || a_farm->DoIt(18))
828 if (a_field->GetMConstants(2) == 0) {
829 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
830 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'FA_RSM' execution",
"");
835 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
841 if (a_farm->IsStockFarmer())
848 if (a_ev->
m_lock || a_farm->DoIt(23))
850 if (a_field->GetMConstants(3) == 0) {
851 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
852 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'FP_Calcium' execution",
"");
857 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1,3) - g_date->DayInYear())) {
868 if (a_ev->
m_lock || a_farm->DoIt(23))
870 if (a_field->GetMConstants(3) == 0) {
871 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
872 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): failure in 'FA_Calcium' execution",
"");
877 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
888 g_msg->Warn(WARN_BUG,
"PLWinterWheatLate::Do(): "
889 "Unknown event type! ",
"");