Loading [MathJax]/extensions/ams.js
ALMaSS  1.2 (after EcoStack, March 2024)
The Animal, Landscape and Man Simulation System
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ITOrchard.h
Go to the documentation of this file.
1 
15 //
16 // ITOrchard.h
17 //
18 /*
19 
20 Copyright (c) 2021, Christopher John Topping, Aarhus University
21 All rights reserved.
22 
23 
24 Redistribution and use in source and binary forms, with or without
25 modification, are permitted provided that the following conditions are met:
26 
27 *) Redistributions of source code must retain the above copyright notice, this
28 list of conditions and the following disclaimer.
29 *) Redistributions in binary form must reproduce the above copyright notice,
30 this list of conditions and the following disclaimer in the documentation
31 and/or other materials provided with the distribution.
32 *) Neither the name of the NERI nor the names of its contributors
33 may be used to endorse or promote products derived from this software without
34 specific prior written permission.
35 
36 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
37 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
39 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
40 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
41 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
42 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
43 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
44 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
46 POSSIBILITY OF SUCH DAMAGE.
47 
48 */
49 
50 #ifndef ITORCHARD_H
51 #define ITORCHARD_H
52 
53 #define IT_O_EARLY a_field->m_user[1]
54 #define IT_O_MID a_field->m_user[2]
55 #define IT_O_LATE a_field->m_user[3]
56 
57 #define IT_O_BASE 50100
58 
67 typedef enum {
68  it_o_start = 1, // Compulsory, must always be 1 (one).
150 } ITOrchardToDo;
151 
152 
161 class ITOrchard : public Crop
162 {
163 public:
164  virtual bool Do(Farm* a_farm, LE* a_field, FarmEvent* a_ev);
165  ITOrchard(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape* a_L) : Crop(a_tov, a_toc, a_L)
166  {
167  // When we start it off, the first possible date for a farm operation
168  // This information is used by other crops when they decide how much post processing of
169  // the management is allowed after harvest before the next crop starts.
170  m_first_date = g_date->DayInYear(1, 1);
172  }
174  const int elements = 2 + (it_o_foobar - IT_O_BASE);
176 
177  FarmManagementCategory catlist[elements] =
178  {
179  fmc_Others, // zero element unused but must be here it_o_start = 1, // Compulsory, must always be 1 (one).
180  fmc_Others, // it_o_sleep_all_day = IT_O_BASE,
181  fmc_Cutting, // it_o_winter_pruning,
182  fmc_Fertilizer, // it_o_ferti_s1,
183  fmc_Fertilizer, // it_o_ferti_p1,
184  fmc_Watering, // it_o_irrigation,
185  fmc_Watering, // it_o_irrigation,
186  fmc_Watering, // it_o_irrigation,
187  fmc_Fungicide, // it_o_fungi_1,
188  fmc_Fungicide, // it_o_fungi_2,
189  fmc_Fungicide, // it_o_fungi_3,
190  fmc_Fungicide, // it_o_fungi_4,
191  fmc_Fungicide, // it_o_fungi_5,
192  fmc_Fungicide, // it_o_fungi_6,
193  fmc_Fungicide, // it_o_fungi_7,
194  fmc_Fungicide, // it_o_fungi_8,
195  fmc_Fungicide, // it_o_fungi_9,
196  fmc_Fungicide, // it_o_fungi_10,
197  fmc_Fungicide, // it_o_fungi_11,
198  fmc_Fungicide, // it_o_fungi_12,
199  fmc_Fungicide, // it_o_fungi_13,
200  fmc_Fungicide, // it_o_fungi_14,
201  fmc_Fungicide, // it_o_fungi_15,
202  fmc_Fungicide, // it_o_fungi_16,
203  fmc_Fungicide, // it_o_fungi_17,
204  fmc_Fungicide, // it_o_fungi_18,
205  fmc_Fungicide, // it_o_fungi_19,
206  fmc_Fungicide, // it_o_fungi_20,
207  fmc_Fungicide, // it_o_fungi_21,
208  fmc_Fungicide, // it_o_fungi_22,
209  fmc_Fungicide, // it_o_fungi_23,
210  fmc_Fungicide, // it_o_fungi_24,
211  fmc_Fungicide, // it_o_fungi_25,
212  fmc_Insecticide, // it_o_insecti_1,
213  fmc_Insecticide, // it_o_insecti_2,
214  fmc_Insecticide, // it_o_insecti_3,
215  fmc_Insecticide, // it_o_insecti_4,
216  fmc_Insecticide, // it_o_insecti_5,
217  fmc_Insecticide, // it_o_insecti_6,
218  fmc_Fertilizer, // it_o_foliar_feed_s1,
219  fmc_Fertilizer, // it_o_foliar_feed_s2,
220  fmc_Fertilizer, // it_o_foliar_feed_s3,
221  fmc_Fertilizer, // it_o_foliar_feed_s4,
222  fmc_Fertilizer, // it_o_foliar_feed_s5,
223  fmc_Fertilizer, // it_o_foliar_feed_s6,
224  fmc_Fertilizer, // it_o_foliar_feed_s7,
225  fmc_Fertilizer, // it_o_foliar_feed_s8,
226  fmc_Fertilizer, // it_o_foliar_feed_s9,
227  fmc_Fertilizer, // it_o_foliar_feed_s10,
228  fmc_Fertilizer, // it_o_foliar_feed_p1,
229  fmc_Fertilizer, // it_o_foliar_feed_p2,
230  fmc_Fertilizer, // it_o_foliar_feed_p3,
231  fmc_Fertilizer, // it_o_foliar_feed_p4,
232  fmc_Fertilizer, // it_o_foliar_feed_p5,
233  fmc_Fertilizer, // it_o_foliar_feed_p6,
234  fmc_Fertilizer, // it_o_foliar_feed_p7,
235  fmc_Fertilizer, // it_o_foliar_feed_p8,
236  fmc_Fertilizer, // it_o_foliar_feed_p9,
237  fmc_Fertilizer, // it_o_foliar_feed_p10,
238  fmc_Others, // it_o_GR_russet_1,
239  fmc_Others, // it_o_GR_russet_2,
240  fmc_Cutting, // it_o_mechanical_thin,
241  fmc_Others, // it_o_GR_fruit_setting,
242  fmc_Others, // it_o_GR_growth_inhib,
243  fmc_Others, // it_o_GR_thinning_1,
244  fmc_Others, // it_o_GR_thinning_2,
245  fmc_Others, // it_o_GR_thinning_3,
246  fmc_Herbicide, // it_o_herbi_1,
247  fmc_Herbicide, // it_o_herbi_2,
248  fmc_Watering, // it_o_DI_continued_early,
249  fmc_Watering, // it_o_DI_continued_mid,
250  fmc_Watering, // it_o_DI_continued_late,
251  fmc_Cutting, // it_o_manual_thin,
252  fmc_Harvest, // it_o_harvest_early1,
253  fmc_Harvest, // it_o_harvest_early2,
254  fmc_Harvest, // it_o_harvest_mid1,
255  fmc_Harvest, // it_o_harvest_mid2,
256  fmc_Harvest, // it_o_harvest_late1,
257  fmc_Harvest, // it_o_harvest_late2,
258  fmc_Cutting, // it_o_summer_pruning,
259  fmc_Others, // it_o_GR_antidrop,
260 
261  // no foobar entry
262 
263  };
264  // Iterate over the catlist elements and copy them to vector
265  copy(begin(catlist), end(catlist), back_inserter(m_ManagementCategories));
266 
267  }
268 };
269 
270 #endif // ITOrchard_H
it_o_irrigation_early
Definition: ITOrchard.h:73
it_o_fungi_7
Definition: ITOrchard.h:82
it_o_foliar_feed_p2
Definition: ITOrchard.h:118
it_o_herbi_1
Definition: ITOrchard.h:135
fmc_Insecticide
Definition: LandscapeFarmingEnums.h:1005
it_o_fungi_8
Definition: ITOrchard.h:83
it_o_fungi_15
Definition: ITOrchard.h:90
Farm::HerbicideTreat
virtual bool HerbicideTreat(LE *a_field, double a_user, int a_days)
Apply herbicide to a_field.
Definition: FarmFuncs.cpp:2025
Farm::IsStockFarmer
bool IsStockFarmer(void)
Definition: Farm.h:961
it_o_foliar_feed_s3
Definition: ITOrchard.h:109
it_o_fungi_19
Definition: ITOrchard.h:94
it_o_fungi_1
Definition: ITOrchard.h:76
FarmEvent::m_lock
bool m_lock
Definition: Farm.h:384
it_o_fungi_4
Definition: ITOrchard.h:79
it_o_GR_antidrop
Definition: ITOrchard.h:148
it_o_GR_russet_1
Definition: ITOrchard.h:127
it_o_fungi_11
Definition: ITOrchard.h:86
FarmEvent
A struct to hold the information required to trigger a farm event.
Definition: Farm.h:372
Farm::Irrigation
virtual bool Irrigation(LE *a_field, double a_user, int a_days, int a_max)
Generate an 'irrigation' event with a frequency defined by a_freq in the irrigation period on a_field...
Definition: FarmFuncs.cpp:1856
LE::ClearManagementActionSum
void ClearManagementActionSum()
clears the management action counters
Definition: Elements.h:247
Farm::FP_NPK
virtual bool FP_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer, on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:645
Calendar::GetYearNumber
int GetYearNumber(void)
Definition: Calendar.h:72
it_o_fungi_5
Definition: ITOrchard.h:80
FarmEvent::m_first_year
bool m_first_year
Definition: Farm.h:386
it_o_harvest_early2
Definition: ITOrchard.h:142
it_o_insecti_3
Definition: ITOrchard.h:103
it_o_foobar
Definition: ITOrchard.h:149
LE::GetPoly
int GetPoly(void)
Returns the polyref number for this polygon.
Definition: Elements.h:238
it_o_start
Definition: ITOrchard.h:68
Farm::DoIt_prob
bool DoIt_prob(double a_probability)
Return chance out of 0 to 1.
Definition: Farm.cpp:864
it_o_foliar_feed_s8
Definition: ITOrchard.h:114
g_date
class Calendar * g_date
Definition: Calendar.cpp:37
it_o_foliar_feed_p3
Definition: ITOrchard.h:119
fmc_Herbicide
Definition: LandscapeFarmingEnums.h:1006
it_o_foliar_feed_s5
Definition: ITOrchard.h:111
Farm::GetPreviousTov
TTypesOfVegetation GetPreviousTov(int a_index)
Definition: Farm.h:966
it_o_insecti_2
Definition: ITOrchard.h:102
it_o_GR_growth_inhib
Definition: ITOrchard.h:131
Farm::FA_NPKS
virtual bool FA_NPKS(LE *a_field, double a_user, int a_days)
Apply NPKS fertilizer, on a_field owned by a stock farmer.
Definition: FarmFuncs.cpp:968
Farm::GetType
TTypesOfFarm GetType(void)
Definition: Farm.h:956
Crop::m_base_elements_no
int m_base_elements_no
Definition: Farm.h:505
it_o_foliar_feed_p6
Definition: ITOrchard.h:122
it_o_manual_thin
Definition: ITOrchard.h:140
it_o_fungi_6
Definition: ITOrchard.h:81
it_o_foliar_feed_s4
Definition: ITOrchard.h:110
it_o_summer_pruning
Definition: ITOrchard.h:147
it_o_GR_thinning_3
Definition: ITOrchard.h:134
it_o_fungi_21
Definition: ITOrchard.h:96
Crop::m_first_date
int m_first_date
Definition: Farm.h:501
FarmEvent::m_startday
int m_startday
Definition: Farm.h:385
Farm::FA_NPK
virtual bool FA_NPK(LE *a_field, double a_user, int a_days)
Apply NPK fertilizer to a_field owned by an stock farmer.
Definition: FarmFuncs.cpp:982
ITOrchard::Do
virtual bool Do(Farm *a_farm, LE *a_field, FarmEvent *a_ev)
The one and only method for a crop management plan. All farm actions go through here.
Definition: ITOrchard.cpp:82
Farm::FungicideTreat
virtual bool FungicideTreat(LE *a_field, double a_user, int a_days)
Apply fungicide to a_field.
Definition: FarmFuncs.cpp:2101
Crop
The base class for all crops.
Definition: Farm.h:495
Crop::SimpleEvent
void SimpleEvent(long a_date, int a_todo, bool a_lock)
Adds an event to this crop management.
Definition: Farm.cpp:747
it_o_GR_thinning_1
Definition: ITOrchard.h:132
IT_O_LATE
#define IT_O_LATE
Definition: ITOrchard.h:55
it_o_foliar_feed_p1
Definition: ITOrchard.h:117
it_o_fungi_16
Definition: ITOrchard.h:91
it_o_fungi_17
Definition: ITOrchard.h:92
fmc_Cutting
Definition: LandscapeFarmingEnums.h:1009
it_o_DI_continued_late
Definition: ITOrchard.h:139
it_o_winter_pruning
Definition: ITOrchard.h:70
it_o_mechanical_thin
Definition: ITOrchard.h:129
IT_O_BASE
#define IT_O_BASE
Definition: ITOrchard.h:57
it_o_irrigation_late
Definition: ITOrchard.h:75
Landscape
The landscape class containing all environmental and topographical data.
Definition: Landscape.h:142
fmc_Fertilizer
Definition: LandscapeFarmingEnums.h:1004
it_o_foliar_feed_s2
Definition: ITOrchard.h:108
IT_O_MID
#define IT_O_MID
Definition: ITOrchard.h:54
it_o_fungi_13
Definition: ITOrchard.h:88
Calendar::Date
long Date(void)
Definition: Calendar.h:57
it_o_insecti_1
Definition: ITOrchard.h:101
it_o_fungi_2
Definition: ITOrchard.h:77
it_o_GR_russet_2
Definition: ITOrchard.h:128
it_o_harvest_early1
Definition: ITOrchard.h:141
it_o_harvest_late1
Definition: ITOrchard.h:145
fmc_Others
Definition: LandscapeFarmingEnums.h:1003
fmc_Watering
Definition: LandscapeFarmingEnums.h:1011
it_o_fungi_10
Definition: ITOrchard.h:85
Calendar::OldDays
long OldDays(void)
Definition: Calendar.h:60
it_o_fungi_20
Definition: ITOrchard.h:95
MapErrorMsg::Warn
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: MapErrorMsg.cpp:69
it_o_fungi_3
Definition: ITOrchard.h:78
LE::GetRotIndex
int GetRotIndex(void)
Definition: Elements.h:373
it_o_foliar_feed_p7
Definition: ITOrchard.h:123
ITOrchard::ITOrchard
ITOrchard(TTypesOfVegetation a_tov, TTypesOfCrops a_toc, Landscape *a_L)
Definition: ITOrchard.h:165
it_o_harvest_mid1
Definition: ITOrchard.h:143
it_o_GR_fruit_setting
Definition: ITOrchard.h:130
it_o_foliar_feed_p8
Definition: ITOrchard.h:124
FarmEvent::m_next_tov
TTypesOfVegetation m_next_tov
Definition: Farm.h:390
Crop::m_farm
Farm * m_farm
Definition: Farm.h:498
Crop::m_field
LE * m_field
Definition: Farm.h:499
it_o_foliar_feed_s1
Definition: ITOrchard.h:107
Crop::m_ManagementCategories
vector< FarmManagementCategory > m_ManagementCategories
Holds the translation between the farm operation enum for each crop and the farm management category ...
Definition: Farm.h:530
ITOrchard::SetUpFarmCategoryInformation
void SetUpFarmCategoryInformation()
Definition: ITOrchard.h:173
it_o_fungi_12
Definition: ITOrchard.h:87
FarmEvent::m_todo
int m_todo
Definition: Farm.h:388
Farm::InsecticideTreat
virtual bool InsecticideTreat(LE *a_field, double a_user, int a_days)
Apply insecticide to a_field.
Definition: FarmFuncs.cpp:2135
it_o_sleep_all_day
Definition: ITOrchard.h:69
ITOrchard
ITOrchardd class .
Definition: ITOrchard.h:161
Farm::SleepAllDay
virtual bool SleepAllDay(LE *a_field, double a_user, int a_days)
Nothing to to today on a_field.
Definition: FarmFuncs.cpp:272
TTypesOfCrops
TTypesOfCrops
Definition: LandscapeFarmingEnums.h:781
it_o_herbi_2
Definition: ITOrchard.h:136
IT_O_EARLY
#define IT_O_EARLY
Definition: ITOrchard.h:53
tof_OptimisingFarm
Definition: LandscapeFarmingEnums.h:696
it_o_foliar_feed_s10
Definition: ITOrchard.h:116
LE
Definition: Elements.h:86
Farm::Water
virtual bool Water(LE *a_field, double a_user, int a_days)
Carry out a watering on a_field.
Definition: FarmFuncs.cpp:1330
it_o_fungi_14
Definition: ITOrchard.h:89
g_msg
MapErrorMsg * g_msg
Definition: MapErrorMsg.cpp:41
Farm::LeafThinning
virtual bool LeafThinning(LE *a_field, double a_user, int a_days)
LeafThinning (leaf removal to increase areation and sun exposure of fruits, e.g., grapes) applied on ...
Definition: FarmFuncs.cpp:1927
it_o_fungi_23
Definition: ITOrchard.h:98
it_o_irrigation_mid
Definition: ITOrchard.h:74
it_o_insecti_5
Definition: ITOrchard.h:105
TTypesOfVegetation
TTypesOfVegetation
Values that represent the types of vegetation that are represented in ALMaSS.
Definition: LandscapeFarmingEnums.h:192
it_o_foliar_feed_p9
Definition: ITOrchard.h:125
it_o_fungi_25
Definition: ITOrchard.h:100
Farm
The base class for all farm types.
Definition: Farm.h:755
it_o_GR_thinning_2
Definition: ITOrchard.h:133
it_o_harvest_mid2
Definition: ITOrchard.h:144
it_o_foliar_feed_p4
Definition: ITOrchard.h:120
fmc_Harvest
Definition: LandscapeFarmingEnums.h:1012
Farm::FruitHarvest
virtual bool FruitHarvest(LE *a_field, double a_user, int a_days)
FruitHarvest (harvest of the mature fruits, e.g., grapes) applied on a_field.
Definition: FarmFuncs.cpp:1959
Farm::Pruning
virtual bool Pruning(LE *a_field, double a_user, int a_days)
Pruning applied on a_field - details needs to be added (e.g., impact on biomass, influence/impacts in...
Definition: FarmFuncs.cpp:1897
it_o_DI_continued_early
Definition: ITOrchard.h:137
Farm::GrowthRegulator
virtual bool GrowthRegulator(LE *a_field, double a_user, int a_days)
Apply growth regulator to a_field.
Definition: FarmFuncs.cpp:2070
it_o_fungi_18
Definition: ITOrchard.h:93
LE::GetOwner
Farm * GetOwner(void)
Definition: Elements.h:256
Calendar::DayInYear
int DayInYear(void)
Definition: Calendar.h:58
it_o_foliar_feed_p5
Definition: ITOrchard.h:121
it_o_fungi_24
Definition: ITOrchard.h:99
it_o_harvest_late2
Definition: ITOrchard.h:146
it_o_foliar_feed_s7
Definition: ITOrchard.h:113
it_o_insecti_4
Definition: ITOrchard.h:104
Crop::m_ev
FarmEvent * m_ev
Definition: Farm.h:500
it_o_fungi_22
Definition: ITOrchard.h:97
it_o_DI_continued_mid
Definition: ITOrchard.h:138
it_o_foliar_feed_s6
Definition: ITOrchard.h:112
ITOrchardToDo
ITOrchardToDo
Definition: ITOrchard.h:67
it_o_foliar_feed_s9
Definition: ITOrchard.h:115
it_o_insecti_6
Definition: ITOrchard.h:106
it_o_ferti_p1
Definition: ITOrchard.h:72
WARN_BUG
Definition: MapErrorMsg.h:34
it_o_foliar_feed_p10
Definition: ITOrchard.h:126
fmc_Fungicide
Definition: LandscapeFarmingEnums.h:1007
it_o_ferti_s1
Definition: ITOrchard.h:71
FarmManagementCategory
FarmManagementCategory
Definition: LandscapeFarmingEnums.h:1001
Farm::FP_NPKS
virtual bool FP_NPKS(LE *a_field, double a_user, int a_days)
Apply NPKS fertilizer, on a_field owned by an arable farmer.
Definition: FarmFuncs.cpp:630
it_o_fungi_9
Definition: ITOrchard.h:84