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 cabbage.
83 a_field->SetMDates(0, 0, g_date->DayInYear(30, 10));
84 a_field->SetMDates(1, 0, g_date->DayInYear(30, 10));
86 a_field->SetMConstants(0, 1);
96 if (a_ev->
m_startday > g_date->DayInYear(1, 7)) {
97 if (a_field->GetMDates(0, 0) >= a_ev->
m_startday)
99 g_msg->Warn(WARN_BUG,
"NLCabbage::Do(): ",
"Harvest too late for the next crop to start!!!");
101 g_msg->Warn(
"Next Crop ", (
double)almassnum);
104 for (
int i = 0; i < noDates; i++) {
105 if (a_field->GetMDates(0, i) >= a_ev->
m_startday) {
106 a_field->SetMDates(0, i, a_ev->
m_startday - 1);
108 if (a_field->GetMDates(1, i) >= a_ev->
m_startday) {
109 a_field->SetMConstants(i, 0);
110 a_field->SetMDates(1, i, a_ev->
m_startday - 1);
118 d1 = g_date->OldDays() + g_date->DayInYear(1, 7);
119 if (g_date->Date() < d1) {
121 printf(
"Poly: %d\n", a_field->GetPoly());
122 g_msg->Warn(WARN_BUG,
"NLCabbage::Do(): ",
"Crop start attempt between 1st Jan & 1st July");
124 g_msg->Warn(WARN_BUG,
"Previous Crop ", prev);
126 g_msg->Warn(
"Next Crop ", (
double)almassnum);
130 if (g_date->Date() > d1) {
132 g_msg->Warn(WARN_BUG,
"NLCabbage::Do(): ",
"Crop start attempt after last possible start date");
133 g_msg->Warn(WARN_BUG,
"Previous Crop ",
"");
134 a_field->GetOwner()->GetPreviousCrop(a_field->GetRotIndex());
136 g_msg->Warn(
"Next Crop ", (
double)almassnum);
151 d1 = g_date->OldDays() + g_date->DayInYear(1, 10);
160 if (a_field->GetSoilType() != 2 && a_field->GetSoilType() != 6)
164 if (!a_farm->
WinterPlough(a_field, 0.0, g_date->DayInYear(1, 12) - g_date->DayInYear())) {
183 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
185 if (!a_farm->FA_Slurry(a_field, 0.0, g_date->DayInYear(14, 4) - g_date->DayInYear())) {
193 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
195 if (!a_farm->FP_Slurry(a_field, 0.0, g_date->DayInYear(14, 4) - g_date->DayInYear())) {
203 if (a_field->GetSoilType() == 2 || a_field->GetSoilType() == 6)
205 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
207 if (!a_farm->SpringPlough(a_field, 0.0, g_date->DayInYear(15, 4) - g_date->DayInYear())) {
212 d1 = g_date->Date() + 7;
213 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 4)) {
214 d1 = g_date->OldDays() + g_date->DayInYear(10, 4);
216 if (a_farm->IsStockFarmer())
223 d1 = g_date->Date() + 7;
224 if (d1 < g_date->OldDays() + g_date->DayInYear(10, 4)) {
225 d1 = g_date->OldDays() + g_date->DayInYear(10, 4);
227 if (a_farm->IsStockFarmer())
234 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
236 if (!a_farm->FA_NPK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
241 d1 = g_date->Date() + 1;
242 if (d1 < g_date->OldDays() + g_date->DayInYear(25, 4)) {
243 d1 = g_date->OldDays() + g_date->DayInYear(25, 4);
248 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
250 if (!a_farm->FP_NPK(a_field, 0.0, g_date->DayInYear(30, 4) - g_date->DayInYear())) {
255 d1 = g_date->Date() + 1;
256 if (d1 < g_date->OldDays() + g_date->DayInYear(25, 4)) {
257 d1 = g_date->OldDays() + g_date->DayInYear(25, 4);
262 if (!a_farm->PreseedingCultivator(a_field, 0.0, g_date->DayInYear(14, 5) - g_date->DayInYear())) {
270 if (!a_farm->SpringSow(a_field, 0.0, g_date->DayInYear(15, 5) - g_date->DayInYear())) {
279 if (a_farm->IsStockFarmer())
284 if (a_farm->IsStockFarmer())
291 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
295 if (a_farm->IsStockFarmer())
302 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
306 if (a_farm->IsStockFarmer())
313 if (a_ev->
m_lock || a_farm->DoIt_prob(0.60))
315 if (!a_farm->FA_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
323 if (a_ev->
m_lock || a_farm->DoIt_prob(0.60))
325 if (!a_farm->FP_AmmoniumSulphate(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
333 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
335 if (!a_farm->FA_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
343 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
345 if (!a_farm->FP_ManganeseSulphate(a_field, 0.0, g_date->DayInYear(30, 6) - g_date->DayInYear())) {
353 if (a_ev->
m_lock || a_farm->DoIt_prob(0.50))
355 if (!a_farm->Water(a_field, 0.0, g_date->DayInYear(15, 8) - g_date->DayInYear())) {
363 if (a_field->GetGreenBiomass() <= 0) {
368 if (a_ev->
m_lock || a_farm->DoIt_prob(0.20))
370 if (!a_farm->ShallowHarrow(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
382 if (a_field->GetGreenBiomass() <= 0) {
387 if (!a_farm->HerbicideTreat(a_field, 0.0, g_date->DayInYear(25, 5) - g_date->DayInYear())) {
396 if (!a_farm->ShallowHarrow(a_field, 0.0, g_date->DayInYear(15, 6) - g_date->DayInYear())) {
404 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(25, 7) - g_date->DayInYear())) {
411 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(20, 8) - g_date->DayInYear())) {
418 if (a_ev->
m_lock || a_farm->DoIt_prob(0.80))
420 if (!a_farm->FungicideTreat(a_field, 0.0, g_date->DayInYear(5, 9) - g_date->DayInYear())) {
433 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(10, 9) - g_date->DayInYear())) {
448 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(25, 9) - g_date->DayInYear())) {
463 if (!a_farm->InsecticideTreat(a_field, 0.0, g_date->DayInYear(5, 10) - g_date->DayInYear())) {
476 if (!a_farm->Harvest(a_field, 0.0, a_field->GetMDates(0, 0) - g_date->DayInYear())) {
485 g_msg->Warn(WARN_BUG,
"NLCabbage::Do(): "
486 "Unknown event type! ",
"");