43 #include "../../Landscape/ls.h"
44 #include "../../Landscape/cropprogs/PLWinterWheat.h"
92 a_field->SetMDates(0, 0, g_date->DayInYear(5, 8));
93 a_field->SetMDates(1, 0, g_date->DayInYear(10, 8));
94 a_field->SetMDates(0, 1, 0);
95 a_field->SetMDates(1, 1, g_date->DayInYear(15, 8));
96 a_field->SetMDates(0, 2, 0);
97 a_field->SetMDates(1, 2, g_date->DayInYear(25, 8));
98 a_field->SetMDates(0, 3, 0);
99 a_field->SetMDates(1, 3, g_date->DayInYear(25, 8));
103 a_field->SetMConstants(0, 1);
113 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
114 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
116 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): ",
"Harvest too late for the next crop to start!!!");
118 g_msg->Warn(
"Next Crop ", (
double)almassnum);
121 for (
int i = 0; i < noDates; i++) {
122 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
123 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
125 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
126 a_field->SetMConstants(i, 0);
127 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
135 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
136 if (g_date->Date() < d1) {
138 printf(
"Poly: %d\n", a_field->GetPoly());
139 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
141 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
143 g_msg->Warn(
"Next Crop ", (
double)almassnum);
147 if (g_date->Date() > d1) {
149 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): ",
"Crop start attempt after last possible start date");
150 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
151 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
153 g_msg->Warn(
"Next Crop ", (
double)almassnum);
172 d1 = g_date->OldDays() + g_date->DayInYear(20, 7);
189 if (!a_farm->
FP_Slurry(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
206 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
208 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
225 if (!a_farm->StubblePlough(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
241 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->DayInYear(20, 9) - g_date->DayInYear())) {
248 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
250 if (!a_farm->AutumnHarrow(a_field, 0.0, g_date->Date() + 7 - g_date->DayInYear())) {
255 d1 = g_date->Date() + 1;
256 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 8)) {
257 d1 = g_date->OldDays() + g_date->DayInYear(20, 8);
259 if (a_farm->IsStockFarmer())
269 if (!a_farm->StubbleHarrowing(a_field, 0.0, g_date->DayInYear(25, 9) - g_date->DayInYear())) {
274 d1 = g_date->Date() + 1;
275 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 8)) {
276 d1 = g_date->OldDays() + g_date->DayInYear(20, 8);
278 if (a_farm->IsStockFarmer())
289 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
301 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
312 if (!a_farm->AutumnPlough(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
319 d1 = g_date->OldDays() + g_date->DayInYear(15, 9);
320 if (g_date->Date() > d1)
327 if (a_farm->IsStockFarmer())
339 if (!a_farm->AutumnRoll(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
343 if (a_farm->IsStockFarmer())
354 if (!a_farm->StubbleCultivatorHeavy(a_field, 0.0, g_date->DayInYear(30, 9) - g_date->DayInYear())) {
359 if (a_farm->IsStockFarmer())
366 if (a_ev->
m_lock || a_farm->DoIt_prob(0.45))
368 if (!a_farm->FP_NPKS(a_field, 0.0, g_date->DayInYear(3, 10) - g_date->DayInYear())) {
376 if (a_ev->
m_lock || a_farm->DoIt_prob(0.45))
378 if (!a_farm->FA_NPKS(a_field, 0.0, g_date->DayInYear(3, 10) - g_date->DayInYear())) {
387 if (a_ev->
m_lock || a_farm->DoIt_prob(0.30))
389 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(4, 10) - g_date->DayInYear())) {
399 if (!a_farm->AutumnSow(a_field, 0.0, g_date->DayInYear(5, 10) - g_date->DayInYear())) {
408 if (a_farm->IsStockFarmer())
413 if (a_farm->IsStockFarmer())
418 if (a_farm->IsStockFarmer())
426 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(5, 10) - g_date->DayInYear())) {
435 if (a_farm->IsStockFarmer())
440 if (a_farm->IsStockFarmer())
445 if (a_farm->IsStockFarmer())
453 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
455 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
463 if (a_ev->
m_lock || a_farm->DoIt_prob(0.73))
465 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
474 if (a_ev->
m_lock || a_farm->DoIt_prob(0.05))
476 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
484 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
486 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
491 d1 = g_date->Date() + 14;
492 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 5)) {
493 d1 = g_date->OldDays() + g_date->DayInYear(10, 5);
498 if (a_ev->
m_lock || a_farm->DoIt_prob(0.68))
500 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 6) - g_date->DayInYear())) {
508 if (a_ev->
m_lock || a_farm->DoIt_prob(0.15))
510 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
521 if (a_field->GetGreenBiomass() <= 0) {
530 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 11) - g_date->DayInYear())) {
551 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
569 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(25, 6) - g_date->DayInYear())) {
582 if (a_ev->
m_lock || a_farm->DoIt_prob(0.68))
584 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
599 if (!a_farm->GrowthRegulator(a_field, 0.0, g_date->Date() + 21 - g_date->DayInYear())) {
608 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
610 if (!a_farm->FP_PK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
619 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
621 if (!a_farm->FA_PK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
630 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
634 d1 = g_date->Date() + 10;
635 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
636 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
641 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
645 d1 = g_date->Date() + 10;
646 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
647 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
652 if (a_ev->
m_lock || a_farm->DoIt_prob(0.95))
654 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
662 if (a_ev->
m_lock || a_farm->DoIt_prob(0.95))
664 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
672 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
674 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
682 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
684 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
693 if (a_ev->
m_lock || a_farm->DoIt_prob(0.63))
695 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
703 if (a_ev->
m_lock || a_farm->DoIt_prob(0.63))
705 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
713 if (a_ev->
m_lock || a_farm->DoIt_prob(0.08))
715 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
723 if (a_ev->
m_lock || a_farm->DoIt_prob(0.08))
725 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
735 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
744 if (a_farm->IsStockFarmer())
747 if (a_ev->
m_lock || a_farm->DoIt_prob(0.10))
749 if (a_field->GetMConstants(0) == 0) {
750 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
751 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'StrawChopping' execution",
"");
756 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
775 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
777 if (a_field->GetMConstants(0) == 0) {
778 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
779 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'StrawChopping' execution",
"");
784 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
801 if (a_field->GetMConstants(1) == 0) {
802 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
803 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'HayBailing' execution",
"");
808 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1,1) - g_date->DayInYear())) {
813 if (a_farm->IsStockFarmer())
820 if (a_ev->
m_lock || a_farm->DoIt_prob(0.18))
822 if (a_field->GetMConstants(2) == 0) {
823 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
824 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'FP_RSM' execution",
"");
829 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1,2) - g_date->DayInYear())) {
835 if (a_farm->IsStockFarmer())
842 if (a_ev->
m_lock || a_farm->DoIt_prob(0.18))
844 if (a_field->GetMConstants(2) == 0) {
845 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
846 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'FA_RSM' execution",
"");
851 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
857 if (a_farm->IsStockFarmer())
864 if (a_ev->
m_lock || a_farm->DoIt_prob(0.23))
866 if (a_field->GetMConstants(3) == 0) {
867 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
868 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'FP_Calcium' execution",
"");
873 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1,3) - g_date->DayInYear())) {
884 if (a_ev->
m_lock || a_farm->DoIt_prob(0.23))
886 if (a_field->GetMConstants(3) == 0) {
887 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
888 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): failure in 'FA_Calcium' execution",
"");
893 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
904 g_msg->Warn(WARN_BUG,
"PLWinterWheat::Do(): "
905 "Unknown event type! ",
"");