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 beet.
86 a_field->SetMDates(0, 0, g_date->DayInYear(30, 12));
87 a_field->SetMDates(1, 0, g_date->DayInYear(30, 12));
88 a_field->SetMDates(0, 1, 0);
89 a_field->SetMDates(1, 1, g_date->DayInYear(30, 12));
91 a_field->SetMConstants(0, 1);
101 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
102 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
104 g_msg->Warn(WARN_BUG,
"PLBeetSpr::Do(): ",
"Harvest too late for the next crop to start!!!");
106 g_msg->Warn(
"Next Crop ", (
double)almassnum);
109 for (
int i = 0; i < noDates; i++) {
110 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
111 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
113 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
114 a_field->SetMConstants(i, 0);
115 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
123 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
124 if (g_date->Date() < d1) {
126 printf(
"Poly: %d\n", a_field->GetPoly());
127 g_msg->Warn(WARN_BUG,
"PLBeetSpr::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
129 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
131 g_msg->Warn(
"Next Crop ", (
double)almassnum);
135 if (g_date->Date() > d1) {
137 g_msg->Warn(WARN_BUG,
"PLBeetSpr::Do(): ",
"Crop start attempt after last possible start date");
138 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
139 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
141 g_msg->Warn(
"Next Crop ", (
double)almassnum);
155 d1 = g_date->OldDays() + g_date->DayInYear(1, 3);
156 if (g_date->Date() >= d1) d1 += 365;
164 if (!a_farm->
SpringPlough(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
172 if (!a_farm->SpringHarrow(a_field, 0.0, g_date->DayInYear(31, 3) - g_date->DayInYear())) {
176 d1 = g_date->Date() + 1;
177 if (d1 < g_date->OldDays() + g_date->DayInYear(15, 3)) {
178 d1 = g_date->OldDays() + g_date->DayInYear(15, 3);
180 if (a_farm->IsStockFarmer())
187 if (a_ev->
m_lock || a_farm->DoIt(98))
189 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
198 if (a_ev->
m_lock || a_farm->DoIt(98))
200 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
209 if (a_ev->
m_lock || a_farm->DoIt(25))
211 if (!a_farm->FP_PK(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
220 if (a_ev->
m_lock || a_farm->DoIt(25))
222 if (!a_farm->FA_PK(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
233 if (!a_farm->HeavyCultivatorAggregate(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
238 d1 = g_date->Date() + 1;
239 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 4)) {
240 d1 = g_date->OldDays() + g_date->DayInYear(1, 4);
246 if (a_ev->
m_lock || a_farm->DoIt(90))
248 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(19, 4) - g_date->DayInYear())) {
258 if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
268 if (a_farm->IsStockFarmer())
276 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(20, 4) - g_date->DayInYear())) {
286 if (a_farm->IsStockFarmer())
293 if (a_field->GetGreenBiomass() <= 0)
295 if (a_ev->
m_lock || a_farm->DoIt(3))
297 if (!a_farm->SpringHarrow(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
310 if (a_ev->
m_lock || a_farm->DoIt(5))
312 if (a_field->GetGreenBiomass() <= 0) {
317 if (!a_farm->RowCultivation(a_field, 0.0, g_date->DayInYear(5, 5) - g_date->DayInYear())) {
326 if (a_ev->
m_lock || a_farm->DoIt(3))
328 if (a_field->GetGreenBiomass() <= 0) {
333 if (!a_farm->Water(a_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
339 d1 = g_date->Date() + 7;
340 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 6)) {
341 d1 = g_date->OldDays() + g_date->DayInYear(1, 6);
349 if (!a_farm->Water(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
354 d1 = g_date->Date() + 7;
355 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 7)) {
356 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
361 if (!a_farm->Water(a_field, 0.0, g_date->DayInYear(31, 7) - g_date->DayInYear())) {
370 if (a_field->GetGreenBiomass() <= 0) {
375 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
379 d1 = g_date->Date() + 1;
380 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 5)) {
381 d1 = g_date->OldDays() + g_date->DayInYear(20, 5);
388 if (a_field->GetGreenBiomass() <= 0) {
393 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
397 d1 = g_date->Date() + 1;
398 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 5)) {
399 d1 = g_date->OldDays() + g_date->DayInYear(20, 5);
406 if (a_ev->
m_lock || a_farm->DoIt(89))
408 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
416 if (a_ev->
m_lock || a_farm->DoIt(89))
418 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
428 if (a_field->GetGreenBiomass() <= 0)
430 if (a_ev->
m_lock || a_farm->DoIt(43))
432 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(25, 4) - g_date->DayInYear())) {
445 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(31, 5) - g_date->DayInYear())) {
453 if (a_ev->
m_lock || a_farm->DoIt(93))
455 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
467 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
477 if (a_ev->
m_lock || a_farm->DoIt(83))
479 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 8) - g_date->DayInYear())) {
487 if (a_ev->
m_lock || a_farm->DoIt(63))
489 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(25, 8) - g_date->DayInYear())) {
504 if (a_ev->
m_lock || a_farm->DoIt(58))
510 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(25, 7) - g_date->DayInYear())) {
525 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
529 if (a_farm->IsStockFarmer())
537 if (a_ev->
m_lock || a_farm->DoIt(28))
539 if (a_field->GetMConstants(3) == 0) {
540 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
541 g_msg->Warn(WARN_BUG,
"PLBeetSpr::Do(): failure in 'FP_Calcium' execution",
"");
546 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
557 if (a_ev->
m_lock || a_farm->DoIt(28))
559 if (a_field->GetMConstants(3) == 0) {
560 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
561 g_msg->Warn(WARN_BUG,
"PLBeetSpr::Do(): failure in 'FA_Calcium' execution",
"");
566 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
577 g_msg->Warn(WARN_BUG,
"PLBeetSpr::Do(): "
578 "Unknown event type! ",
"");