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 TemporalGrassGrazed1.
74 a_field->SetMDates(0, 0, g_date->DayInYear(10, 10));
75 a_field->SetMDates(1, 0, g_date->DayInYear(31, 10));
77 a_field->SetMConstants(0, 1);
87 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
88 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
90 g_msg->Warn(WARN_BUG,
"NLGrassGrazed1::Do(): ",
"Harvest too late for the next crop to start!!!");
92 g_msg->Warn(
"Next Crop ", (
double)almassnum);
95 for (
int i = 0; i < noDates; i++) {
96 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
97 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
99 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
100 a_field->SetMConstants(i, 0);
101 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
109 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
110 if (g_date->Date() < d1) {
112 printf(
"Poly: %d\n", a_field->GetPoly());
113 g_msg->Warn(WARN_BUG,
"NLGrassGrazed1::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
115 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
117 g_msg->Warn(
"Next Crop ", (
double)almassnum);
122 if (g_date->Date() > d1) {
124 g_msg->Warn(WARN_BUG,
"NLGrassGrazed1::Do(): ",
"Crop start attempt after last possible start date");
126 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
128 g_msg->Warn(
"Next Crop ", (
double)almassnum);
144 d1 = g_date->OldDays() + g_date->DayInYear(1, 10);
154 if (!a_farm->
WinterPlough(a_field, 0.0, g_date->DayInYear(1, 12) - g_date->DayInYear())) {
161 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(25, 12) - g_date->DayInYear())) {
165 if (a_farm->IsStockFarmer())
172 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(20, 3) - g_date->DayInYear())) {
179 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(20, 3) - g_date->DayInYear())) {
186 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(20, 3) - g_date->DayInYear())) {
193 if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(20, 3) - g_date->DayInYear())) {
197 d1 = g_date->Date() + 7;
198 if (d1 < g_date->OldDays() + g_date->DayInYear(1, 3)) {
199 d1 = g_date->OldDays() + g_date->DayInYear(1, 3);
201 if (a_farm->IsStockFarmer())
208 if (a_farm->DoIt_prob(0.90)) {
209 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
214 if (a_farm->DoIt_prob(0.50)) {
220 if (a_farm->DoIt_prob(0.90)) {
221 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(30, 3) - g_date->DayInYear())) {
226 if (a_farm->DoIt_prob(0.50)) {
239 if (!a_farm->CutToSilage(a_field, 0.0, g_date->DayInYear(10, 5) - g_date->DayInYear())) {
244 if (a_farm->IsStockFarmer())
256 if (!a_farm->FA_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
263 if (!a_farm->FP_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
270 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
272 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
280 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
282 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(20, 5) - g_date->DayInYear())) {
297 if (!a_farm->CutToSilage(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
302 if (a_farm->IsStockFarmer())
311 if (!a_farm->FA_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
318 if (!a_farm->FP_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
325 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
327 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(25, 6) - g_date->DayInYear())) {
335 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
337 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(25, 6) - g_date->DayInYear())) {
352 if (!a_farm->CutToSilage(a_field, 0.0, g_date->DayInYear(25, 7) - g_date->DayInYear())) {
357 if (a_farm->IsStockFarmer())
367 if (!a_farm->FA_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
374 if (!a_farm->FP_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
381 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
383 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(5, 8) - g_date->DayInYear())) {
391 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
393 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(5, 8) - g_date->DayInYear())) {
408 if (!a_farm->CutToSilage(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
413 if (a_farm->IsStockFarmer())
422 if (!a_farm->FA_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
429 if (!a_farm->FP_Slurry(a_field, 0.0, (
NL_GG1_CUT_DATE + 4) - g_date->DayInYear())) {
436 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
438 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
446 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
448 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
463 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
465 if (!a_farm->CutToSilage(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
471 if (a_farm->IsStockFarmer())
480 if (a_field->GetMConstants(0) == 0) {
481 if (!a_farm->FA_NPK(a_field, 0.0, -1)) {
482 g_msg->Warn(WARN_BUG,
"NLGrassGrazed1::Do(): failure in 'NPK application' execution",
"");
487 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
489 if (!a_farm->FA_NPK(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
498 if (a_field->GetMConstants(0) == 0) {
499 if (!a_farm->FP_NPK(a_field, 0.0, -1)) {
500 g_msg->Warn(WARN_BUG,
"NLGrassGrazed1::Do(): failure in 'NPK application' execution",
"");
505 if (a_ev->
m_lock || a_farm->DoIt_prob(0.90))
507 if (!a_farm->FP_NPK(a_field, 0.0, a_field->GetMDates(1, 0) - g_date->DayInYear())) {
516 if (!a_farm->CattleOut(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
526 if (!a_farm->CattleIsOut(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear(), g_date->DayInYear(31, 8))) {
530 if (a_farm->IsStockFarmer())
538 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
545 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
552 if (!a_farm->CutToSilage(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
556 if (a_farm->IsStockFarmer())
563 if (a_ev->
m_lock || a_farm->DoIt_prob(0.40))
571 if (!a_farm->Water(a_field, 0.0, g_date->DayInYear(31, 8) - g_date->DayInYear())) {
581 g_msg->Warn(WARN_BUG,
"NLGrassGrazed1::Do(): "
582 "Unknown event type! ",
"");