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 rape.
85 a_field->SetMDates(0, 0, g_date->DayInYear(10, 8));
86 a_field->SetMDates(1, 0, g_date->DayInYear(15, 8));
87 a_field->SetMDates(0, 1, 0);
88 a_field->SetMDates(1, 1, g_date->DayInYear(20, 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,
"PLWinterRape::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,
"PLWinterRape::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,
"PLWinterRape::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(5, 7);
182 if (!a_farm->
FP_Slurry(a_field, 0.0, g_date->DayInYear(20, 8) - g_date->DayInYear())) {
198 if (a_ev->
m_lock || a_farm->DoIt(40))
200 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(20, 8) - g_date->DayInYear())) {
215 if (a_ev->
m_lock || a_farm->DoIt(50))
217 if (!a_farm->StubblePlough(a_field, 0.0, g_date->DayInYear(20, 8) - g_date->DayInYear())) {
233 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(20, 8) - g_date->DayInYear())) {
240 if (a_ev->
m_lock || a_farm->DoIt(40))
242 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->Date() + 7 - g_date->DayInYear())) {
247 d1 = g_date->Date() + 1;
248 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 7)) {
249 d1 = g_date->OldDays() + g_date->DayInYear(10, 7);
251 if (a_farm->IsStockFarmer())
258 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(25, 8) - g_date->DayInYear())) {
262 d1 = g_date->Date() + 1;
263 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 7)) {
264 d1 = g_date->OldDays() + g_date->DayInYear(10, 7);
266 if (a_farm->IsStockFarmer())
277 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
287 if ((a_ev->
m_lock || a_farm->DoIt(static_cast<int>((40.0/60.0)*100))) && (
PL_WR_FERTI_S1==
false))
289 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
297 if (a_ev->
m_lock || a_farm->DoIt(80))
299 if (!a_farm->AutumnPlough(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
306 d1 = g_date->OldDays() + g_date->DayInYear(15, 8);
307 if (g_date->Date() > d1)
314 if (a_farm->IsStockFarmer())
326 if (!a_farm->AutumnRoll(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
330 if (a_farm->IsStockFarmer())
338 if (!a_farm->StubbleCultivatorHeavy(a_field, 0.0, g_date->DayInYear(31,8) - g_date->DayInYear())) {
342 if (a_farm->IsStockFarmer())
349 if (a_ev->
m_lock || a_farm->DoIt(90))
351 if (!a_farm->FP_NPKS(a_field, 0.0, g_date->DayInYear(3, 9) - g_date->DayInYear())) {
359 if (a_ev->
m_lock || a_farm->DoIt(90))
361 if (!a_farm->FA_NPKS(a_field, 0.0, g_date->DayInYear(3, 9) - g_date->DayInYear())) {
370 if (a_ev->
m_lock || a_farm->DoIt(89))
372 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(4, 9) - g_date->DayInYear())) {
383 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(4, 9) - g_date->DayInYear())) {
390 if (!a_farm->AutumnSow(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
399 if (a_farm->IsStockFarmer())
404 if (a_farm->IsStockFarmer())
411 if (a_ev->
m_lock || a_farm->DoIt(50))
413 if (a_field->GetGreenBiomass() <= 0) {
418 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
429 if (a_ev->
m_lock || a_farm->DoIt(50))
431 if (a_field->GetGreenBiomass() <= 0) {
436 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(15, 9) - g_date->DayInYear())) {
447 if (a_ev->
m_lock || a_farm->DoIt(93))
449 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
454 d1 = g_date->Date() + 10;
455 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 3)) {
456 d1 = g_date->OldDays() + g_date->DayInYear(20, 3);
461 if (a_ev->
m_lock || a_farm->DoIt(93))
463 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
468 d1 = g_date->Date() + 10;
469 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 3)) {
470 d1 = g_date->OldDays() + g_date->DayInYear(20, 3);
475 if (a_ev->
m_lock || a_farm->DoIt(91))
477 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(15, 4) - g_date->DayInYear())) {
485 if (a_ev->
m_lock || a_farm->DoIt(91))
487 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(15, 4) - g_date->DayInYear())) {
496 if (a_ev->
m_lock || a_farm->DoIt(55))
498 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(15, 10) - g_date->DayInYear())) {
506 if (a_ev->
m_lock || a_farm->DoIt(55))
508 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(15, 10) - g_date->DayInYear())) {
516 if (a_ev->
m_lock || a_farm->DoIt(58))
518 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
526 if (a_ev->
m_lock || a_farm->DoIt(58))
528 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
537 if (a_ev->
m_lock || a_farm->DoIt(85))
539 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->Date() + 3 - g_date->DayInYear())) {
547 if (a_ev->
m_lock || a_farm->DoIt(63))
549 if (a_field->GetGreenBiomass() <= 0) {
555 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
564 if (a_ev->
m_lock || a_farm->DoIt(36))
566 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
575 if (a_ev->
m_lock || a_farm->DoIt(56))
577 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(10, 10) - g_date->DayInYear())) {
585 if (a_ev->
m_lock || a_farm->DoIt(63))
587 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
595 if (a_ev->
m_lock || a_farm->DoIt(64))
597 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
602 d1 = g_date->Date() + 14;
603 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 6)) {
604 d1 = g_date->OldDays() + g_date->DayInYear(1, 6);
609 if (a_ev->
m_lock || a_farm->DoIt(15))
611 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
620 if (a_ev->
m_lock || a_farm->DoIt(38))
622 if (a_field->GetGreenBiomass() <= 0) {
631 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
639 d1 = g_date->Date() + 14;
640 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 9)) {
641 d1 = g_date->OldDays() + g_date->DayInYear(20, 9);
647 d1 = g_date->Date() + 14;
648 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 9)) {
649 d1 = g_date->OldDays() + g_date->DayInYear(20, 9);
654 if (a_ev->
m_lock || a_farm->DoIt(28))
660 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(10, 10) - g_date->DayInYear())) {
669 d1 = g_date->Date() + 14;
670 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 10)) {
671 d1 = g_date->OldDays() + g_date->DayInYear(10, 10);
676 if (a_ev->
m_lock || a_farm->DoIt(20))
682 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
694 if (a_ev->
m_lock || a_farm->DoIt(80))
700 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
709 d1 = g_date->Date() + 14;
710 if (d1 < g_date->OldDays() + g_date->DayInYear(5, 4)) {
711 d1 = g_date->OldDays() + g_date->DayInYear(5, 4);
716 if (a_ev->
m_lock || a_farm->DoIt(89))
722 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
731 d1 = g_date->Date() + 14;
732 if (d1 < g_date->OldDays() + g_date->DayInYear(5, 5)) {
733 d1 = g_date->OldDays() + g_date->DayInYear(5, 5);
738 if (a_ev->
m_lock || a_farm->DoIt(56))
744 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
756 if (a_ev->
m_lock || a_farm->DoIt(30))
758 if (a_field->GetGreenBiomass() <= 0) {
764 if (!a_farm->Molluscicide(a_field, 0.0, g_date->DayInYear(25, 9) - g_date->DayInYear())) {
775 if (a_ev->
m_lock || a_farm->DoIt(58))
777 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(30, 7) - g_date->DayInYear())) {
786 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
795 if (a_farm->IsStockFarmer())
798 if (a_ev->
m_lock || a_farm->DoIt(10))
800 if (a_field->GetMConstants(0) == 0) {
801 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
802 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'StrawChopping' execution",
"");
807 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
826 if (a_ev->
m_lock || a_farm->DoIt(90))
828 if (a_field->GetMConstants(0) == 0) {
829 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
830 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'StrawChopping' execution",
"");
835 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
852 if (a_field->GetMConstants(1) == 0) {
853 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
854 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'HayBailing' execution",
"");
859 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1,1) - g_date->DayInYear())) {
864 if (a_farm->IsStockFarmer())
871 if (a_ev->
m_lock || a_farm->DoIt(20))
873 if (a_field->GetMConstants(2) == 0) {
874 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
875 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'FP_RSM' execution",
"");
880 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1,2) - g_date->DayInYear())) {
886 if (a_farm->IsStockFarmer())
893 if (a_ev->
m_lock || a_farm->DoIt(20))
895 if (a_field->GetMConstants(2) == 0) {
896 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
897 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'FA_RSM' execution",
"");
902 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
908 if (a_farm->IsStockFarmer())
915 if (a_ev->
m_lock || a_farm->DoIt(23))
917 if (a_field->GetMConstants(3) == 0) {
918 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
919 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'FP_Calcium' execution",
"");
924 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1,3) - g_date->DayInYear())) {
935 if (a_ev->
m_lock || a_farm->DoIt(23))
937 if (a_field->GetMConstants(3) == 0) {
938 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
939 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): failure in 'FA_Calcium' execution",
"");
944 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
955 g_msg->Warn(WARN_BUG,
"PLWinterRape::Do(): "
956 "Unknown event type! ",
"");