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 spring barley spring.
83 a_field->SetMDates(0, 0, g_date->DayInYear(15, 8));
84 a_field->SetMDates(1, 0, g_date->DayInYear(20, 8));
85 a_field->SetMDates(0, 1, 0);
86 a_field->SetMDates(1, 1, g_date->DayInYear(25, 8));
87 a_field->SetMDates(0, 2, 0);
88 a_field->SetMDates(1, 2, g_date->DayInYear(25, 8));
89 a_field->SetMDates(0, 3, 0);
90 a_field->SetMDates(1, 3, g_date->DayInYear(25, 8));
94 a_field->SetMConstants(0, 1);
104 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
105 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
107 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): ",
"Harvest too late for the next crop to start!!!");
109 g_msg->Warn(
"Next Crop ", (
double)almassnum);
112 for (
int i = 0; i < noDates; i++) {
113 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
114 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
116 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
117 a_field->SetMConstants(i, 0);
118 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
125 int today = g_date->Date();
129 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): " "Crop start attempt after last possible start date",
"");
142 d1 = g_date->OldDays() + 365 + g_date->DayInYear(1, 3);
151 if (!a_farm->
SpringPlough(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
158 if (!a_farm->SpringHarrow(a_field, 0.0, g_date->DayInYear(25, 3) - g_date->DayInYear())) {
162 d1 = g_date->Date() + 1;
163 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 3)) {
164 d1 = g_date->OldDays() + g_date->DayInYear(10, 3);
166 if (a_farm->IsStockFarmer())
173 if (a_ev->
m_lock || a_farm->DoIt(88))
175 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
184 if (a_ev->
m_lock || a_farm->DoIt(88))
186 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
197 if (!a_farm->HeavyCultivatorAggregate(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
202 d1 = g_date->Date() + 1;
203 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 3)) {
204 d1 = g_date->OldDays() + g_date->DayInYear(20, 3);
210 if (a_ev->
m_lock || a_farm->DoIt(20))
212 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(9, 4) - g_date->DayInYear())) {
222 if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
230 if (a_farm->IsStockFarmer())
235 if (a_farm->IsStockFarmer())
243 if (!a_farm->PreseedingCultivatorSow(a_field, 0.0, g_date->DayInYear(10, 4) - g_date->DayInYear())) {
251 if (a_farm->IsStockFarmer())
256 if (a_farm->IsStockFarmer())
264 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
271 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
279 if (a_ev->
m_lock || a_farm->DoIt(43))
281 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
286 d1 = g_date->Date() + 14;
287 if (d1 < g_date->OldDays() + g_date->DayInYear(25, 5)) {
288 d1 = g_date->OldDays() + g_date->DayInYear(25, 5);
293 if (a_ev->
m_lock || a_farm->DoIt(43))
295 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(30, 5) - g_date->DayInYear())) {
300 d1 = g_date->Date() + 14;
301 if (d1 < g_date->OldDays() + g_date->DayInYear(25, 5)) {
302 d1 = g_date->OldDays() + g_date->DayInYear(25, 5);
307 if (a_ev->
m_lock || a_farm->DoIt(3))
309 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
317 if (a_ev->
m_lock || a_farm->DoIt(3))
319 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(10, 6) - g_date->DayInYear())) {
328 if (a_ev->
m_lock || a_farm->DoIt(97))
330 if (a_field->GetGreenBiomass() <= 0) {
335 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
345 if (a_ev->
m_lock || a_farm->DoIt(83))
347 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
355 if (a_ev->
m_lock || a_farm->DoIt(23))
357 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
362 d1 = g_date->Date() + 14;
363 if (d1 < g_date->OldDays() + g_date->DayInYear(20, 5)) {
364 d1 = g_date->OldDays() + g_date->DayInYear(20, 5);
369 if (a_ev->
m_lock || a_farm->DoIt(4))
371 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 6) - g_date->DayInYear())) {
380 if (a_ev->
m_lock || a_farm->DoIt(65))
386 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
398 if (a_ev->
m_lock || a_farm->DoIt(46))
404 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
418 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
425 if (a_farm->IsStockFarmer())
428 if (a_ev->
m_lock || a_farm->DoIt(10))
430 if (a_field->GetMConstants(0) == 0) {
431 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
432 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'StrawChopping' execution",
"");
437 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
456 if (a_ev->
m_lock || a_farm->DoIt(90))
458 if (a_field->GetMConstants(0) == 0) {
459 if (!a_farm->StrawChopping(a_field, 0.0, -1)) {
460 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'StrawChopping' execution",
"");
465 if (!a_farm->StrawChopping(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
482 if (a_field->GetMConstants(1) == 0) {
483 if (!a_farm->HayBailing(a_field, 0.0, -1)) {
484 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'HayBailing' execution",
"");
489 if (!a_farm->HayBailing(a_field, 0.0, a_field->GetMDates(1, 1) - g_date->DayInYear())) {
494 if (a_farm->IsStockFarmer())
501 if (a_ev->
m_lock || a_farm->DoIt(18))
503 if (a_field->GetMConstants(2) == 0) {
504 if (!a_farm->FP_RSM(a_field, 0.0, -1)) {
505 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'FP_RSM' execution",
"");
510 if (!a_farm->FP_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
516 if (a_farm->IsStockFarmer())
523 if (a_ev->
m_lock || a_farm->DoIt(18))
525 if (a_field->GetMConstants(2) == 0) {
526 if (!a_farm->FA_RSM(a_field, 0.0, -1)) {
527 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'FA_RSM' execution",
"");
532 if (!a_farm->FA_RSM(a_field, 0.0, a_field->GetMDates(1, 2) - g_date->DayInYear())) {
538 if (a_farm->IsStockFarmer())
545 if (a_ev->
m_lock || a_farm->DoIt(23))
547 if (a_field->GetMConstants(3) == 0) {
548 if (!a_farm->FP_Calcium(a_field, 0.0, -1)) {
549 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'FP_Calcium' execution",
"");
554 if (!a_farm->FP_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
565 if (a_ev->
m_lock || a_farm->DoIt(23))
567 if (a_field->GetMConstants(3) == 0) {
568 if (!a_farm->FA_Calcium(a_field, 0.0, -1)) {
569 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): failure in 'FA_Calcium' execution",
"");
574 if (!a_farm->FA_Calcium(a_field, 0.0, a_field->GetMDates(1, 3) - g_date->DayInYear())) {
585 g_msg->Warn(WARN_BUG,
"PLSpringBarleySpr::Do(): "
586 "Unknown event type! ",
"");