ALMaSS Rodenticide ODdox  1.1
The rodenticide model description following ODdox protocol
VegElement Class Reference

#include <elements.h>

Public Member Functions

 VegElement (void)
 
virtual ~VegElement (void)
 
virtual void DoDevelopment (void)
 
virtual double GetDigestability (void)
 
virtual double GetLAGreen (void)
 
virtual double GetLATotal (void)
 
virtual double GetVegCover (void)
 
virtual double GetVegHeight (void)
 
virtual double GetVegBiomass (void)
 
virtual double GetDeadBiomass (void)
 
virtual double GetGreenBiomass (void)
 
virtual double GetWeedBiomass (void)
 
virtual int GetVegDensity (void)
 
virtual bool GetSkScrapes (void)
 
virtual bool GetVegPatchy (void)
 
virtual void SetVegPatchy (bool p)
 
virtual double GetInsectPop (void)
 
virtual void SetInsectPop (double insects)
 
virtual TTypesOfVegetation GetVegType (void)
 
virtual void Insecticide (double a_fraction)
 
virtual bool IsCereal ()
 
virtual bool IsMatureCereal ()
 
virtual bool IsMaize ()
 
virtual bool IsGrass ()
 
virtual bool IsGooseGrass ()
 
virtual void InsectMortality (double a_fraction)
 
virtual void ReduceWeedBiomass (double a_fraction)
 
virtual void ToggleCattleGrazing (void)
 
virtual void TogglePigGrazing (void)
 
virtual void GrazeVegetation (double a_grams, bool a_force)
 
virtual void GrazeVegetationTotal (double a_grams)
 
virtual void SetVegType (TTypesOfVegetation a_vege_type, TTypesOfVegetation a_weed_type)
 
virtual void SetCropData (double, double, double, TTypesOfVegetation, double, int)
 
virtual void SetCropDataAll (double, double, double, double, TTypesOfVegetation, double, double, int, double, bool, double)
 
virtual void SetVegHeight (double a_veg_height)
 
virtual void SetVegParameters (double a_veg_height, double a_LAtotal, double a_LAgreen, double a_WeedBiomass)
 
virtual void SetGrowthPhase (int a_phase)
 
virtual void StoreLAItotal ()
 
virtual void ForceGrowthInitialize (void)
 
virtual void ForceGrowthTest (void)
 
virtual void ForceGrowthDevelopment (void)
 
virtual void ZeroVeg (void)
 
virtual void ReduceVeg (double a_reduc)
 
virtual void ReduceVeg_Extended (double a_reduc)
 
void Set_taken (bool a_taken, int index)
 
bool Get_taken (int index)
 
void Set_tov_type (TTypesOfVegetation a_tov_type, int index)
 
void Set_area_in_crop_data (double a_area)
 
void Set_biomass_at_harvest (double a_biomass, int index)
 
void Set_harvested ()
 
bool Get_harvested (int index)
 
void Add_no_herb_app ()
 
void Add_no_fi_app ()
 
void Add_missed_herb_app ()
 
void Add_missed_fi_app ()
 
void Set_CropDataStorage (int index, CropActualValues a_struct)
 
CropActualValues Get_CropDataStorage (int index)
 
void Clean_CropDataStorage (int index)
 
virtual void ResetDigestability ()
 sets growth record to zero More...
 
virtual int GetVegPhase ()
 
- Public Member Functions inherited from LE
 LE (void)
 
virtual ~LE (void)
 
virtual double GetDayDegrees (void)
 Variable used to record the current grazing pressure by e.g. voles *‍/ double m_volegrazing; /**. More...
 
virtual void SetVegBiomass (int)
 
virtual void GrazeVeg_Extended (double)
 
virtual double GetTrafficLoad (void)
 
virtual TTypesOfVegetation GetPreviousCrop (int)
 
bool GetPoison (void)
 
void SetPoison (bool a_poison)
 
bool GetHigh (void)
 
int GetCattleGrazing (void)
 
bool GetPigGrazing (void)
 
bool HasTramlines (void)
 
bool IsRecentlyMown (void)
 
int IsRecentlySprayed (void)
 
int GetPoly (void)
 Returns the polyref number for this polygon. More...
 
int GetMapIndex (void)
 
void SetMapIndex (int a_map_index)
 
int GetOwnerFile (void)
 
int GetOwnerIndex (void)
 
int GetLastTreatment (int *a_index)
 
Farm * GetOwner (void)
 
double GetArea (void)
 
double GetGooseGrazingForage (GooseSpecies a_goose)
 
double GetBirdSeed (void)
 
void SetBirdSeed (double a_forage)
 
double GetBirdMaize (void)
 
void SetBirdMaize (double a_forage)
 
int GetCountryDesignation (void)
 
void SetCountryDesignation (int a_designation)
 
long GetOldDays (void)
 
void SetOwner (Farm *a_owner, int a_owner_num, int a_owner_index)
 
void SetHigh (bool a_high)
 
void SetPoly (int a_poly)
 
void SetMapValid (bool a_valid)
 
bool GetMapValid (void)
 
void SetArea (double a_area)
 
int GetSoilType ()
 
int GetSoilTypeR ()
 
void SetSoilType (int a_st)
 
void SetLastSownVeg (TTypesOfVegetation a_tov)
 Records the last vegetation type to be sown. More...
 
TTypesOfVegetation GetLastSownVeg ()
 Returns the last vegetation type to be sown. More...
 
void SetLastTreatment (int a_treatment)
 
void SetSprayedToday (bool a_didit)
 
bool GetSprayedToday ()
 
void SetCopyTreatment (int a_treatment)
 
void SetOldDays (long a_days)
 
void SetRotIndex (int a_index)
 
int GetRotIndex (void)
 
void SetTramlinesDecay (int a_decaytime_days)
 
void SetHerbicideDelay (int a_decaytime_days)
 
void SetMownDecay (int a_decaytime_days)
 
void AddArea (double a_area_diff)
 
LEGetBorder (void)
 
int GetUnsprayedMarginPolyRef (void)
 
void SetBorder (LE *a_border)
 
void SetUnsprayedMarginPolyRef (int a_unsprayedmargin)
 
void SetPesticideCell (int a_cell)
 
int GetPesticideCell ()
 
void SetValidXY (int a_valid_x, int a_valid_y)
 
int GetValidX (void)
 
int GetValidY (void)
 
int GetMaxX (void)
 
int GetMaxY (void)
 
int GetMinX (void)
 
int GetMinY (void)
 
void SetMaxX (int x)
 
void SetMaxY (int y)
 
void SetMinX (int x)
 
void SetMinY (int y)
 
int GetMDates (int a, int b)
 
void SetMDates (int a, int b, int c)
 
int GetMConstants (int a)
 
void SetMConstants (int a, int c)
 
double GetVegDDegs ()
 Get the total of day degrees for the crop/veg on this element. More...
 
int GetOpenness (void)
 For goose model functionality, openness score for the polygon. More...
 
void SetGooseNos (int a_number, int a_day)
 
void SetGooseSpNos (int a_number, int a_day, GooseSpecies a_goose)
 
void SetGooseNosTimed (int a_number, int a_day)
 
void SetGooseSpNosTimed (int a_number, int a_day, GooseSpecies a_goose)
 
void SetGooseRoostDist (int a_dist, GooseSpecies a_goose)
 
int GetGooseNosToday ()
 For goose model functionality, returns the number of geese today. More...
 
int GetGooseNosTodayTimed ()
 For goose model functionality, returns the number of geese today at a predefined time. More...
 
int GetGooseNos ()
 For goose model functionality, returns the number of geese yesterday. More...
 
int GetQuarryNos ()
 For goose model functionality, returns the number of geese yesterday which can be hunted as legal quarry. More...
 
int GetGooseSpNosToday (GooseSpecies a_goose)
 For goose model functionality, returns the number of geese per species yesterday. More...
 
int GetGooseSpNosTodayTimed (GooseSpecies a_goose)
 For goose model functionality, returns the number of geese per species yesterday at a predefined time. More...
 
int GetGooseRoostDist (GooseSpecies a_goose)
 For goose model functionality, returns the distance to closest roost. More...
 
void SetOpenness (int a_openness)
 Records the openness statistic for this polygon. More...
 
void DoCopy (const LE *a_Le)
 a copy function to be used because a copy constuctor won't work More...
 
virtual void SetMaleNewtPresent (bool)
 Sets a male newt as present/absent in descendent classes - here only to prevent need for dynamic casts. More...
 
virtual bool IsMaleNewtPresent ()
 Sets a male newt as present/absent in descendent classes - here only to prevent need for dynamic casts. More...
 
void SetStubble (bool a_flag)
 Sets the in stubble flag. More...
 
bool GetStubble ()
 Return the in stubble flag. More...
 
bool GetOsmiaNest ()
 Test to see if a nest is found. More...
 
void ReleaseOsmiaNest ()
 Test to see if a nest is found. More...
 
void UpdateOsmiaNesting ()
 Recalculate the nest finding probability. More...
 
void IncOsmiaNesting ()
 Add an occupied nest. More...
 
void SetMaxOsmiaNests (double a_noNests)
 Add an occupied nest. More...
 
void SetPollenNectarData (int a_almasstype)
 sets the pollen and nectar information More...
 
virtual PollenNectarQuality GetPollen ()
 
virtual PollenNectarQuality GetNectar ()
 
virtual double GetTotalPollen ()
 
virtual double GetTotalNectar ()
 
void SetPollenNectarCurves (PollenNectarDevelopmentCurve *a_pollencurnve, PollenNectarDevelopmentCurve *a_nectarcurve)
 Set method for pollen and nectar curves. More...
 

Protected Member Functions

void ReadBugPercentageFile (void)
 
virtual void RecalculateBugsNStuff (void)
 This method is responsible for. More...
 
void CalcGooseForageResources ()
 Calculates spilled grain and grazing forage resources for geese. More...
 
void RandomVegStartValues (double *a_LAtotal, double *a_LAgreen, double *a_veg_height, double *a_weed_biomass)
 
void ForceGrowthSpringTest (void)
 
void PollenNectarPhenologyCalculation ()
 This methods calculates the daily availability of pollen and nectar per square meter and in total. More...
 
void ResetGeese (void)
 Reset geese numbers to zero in case this was not done by the population manager (the normal situation). More...
 

Protected Attributes

TTypesOfVegetation m_vege_type
 
int m_curve_num
 
int m_weed_curve_num
 
int m_veg_phase
 
double m_growth_scaler
 
int m_nutrient_status
 
double m_LAtotal
 
double m_oldLAtotal
 
double m_LAgreen
 
double m_insect_pop
 
double m_veg_biomass
 
double m_total_biomass
 
double m_total_biomass_old
 
double m_green_biomass
 
double m_dead_biomass
 
double m_weed_biomass
 
double m_veg_height
 
int m_veg_density
 
bool m_veg_patchy
 
double m_veg_cover
 
bool m_forced_phase_shift
 
double m_digestability
 
double m_oldnewgrowth [32]
 
int m_newoldgrowthindex
 
double m_newgrowthsum
 
double m_force_Weed
 
double m_force_LAgreen
 
double m_force_LAtotal
 
double m_force_veg_height
 
bool m_force_growth
 
ifstream m_ifile
 
CropActualValues m_CropDataStorage [2]
 Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be stored (hence size - 2). Used by a farmer to make a yearly accounting (#OptimisingFarm::ActualProfit()). More...
 
int m_crop_index
 
- Protected Attributes inherited from LE
int m_ptrace [256]
 
int m_pdates [256]
 
int m_pindex
 
long m_running
 
LEm_border
 
int m_unsprayedmarginpolyref
 
int m_valid_x
 
int m_valid_y
 
int m_centroidx
 
int m_centroidy
 
int m_vege_danger_store
 
int m_PesticideGridCell
 
bool m_is_in_map
 
int m_subtype
 
int m_maxx
 
int m_minx
 
int m_maxy
 
int m_miny
 
long m_olddays
 
long m_management_loop_detect_date
 
long m_management_loop_detect_count
 
Farm * m_owner
 
int m_countrydesignation
 
int m_owner_file
 
int m_owner_index
 
int m_rot_index
 
bool m_sprayedtoday
 flag to indicate an overspray situation More...
 
int m_poly
 The polyref number for this polygon. More...
 
int m_map_index
 
int m_almass_le_type
 This holds the ALMaSS element type reference number. More...
 
int m_farmfunc_tried_to_do
 
int m_tramlinesdecay
 
int m_mowndecay
 
int m_herbicidedelay
 
TTypesOfLandscapeElement m_type
 
double m_area
 The element area in m2. More...
 
int m_gooseNos [366]
 The number of geese each day. More...
 
int m_gooseSpNos [366][gs_foobar]
 The number of geese of each species each day. More...
 
int m_gooseNosTimed [366]
 The number of geese at a predefined time per day. More...
 
int m_gooseSpNosTimed [366][gs_foobar]
 The number of geese of each species at a predefined time per day. More...
 
bool m_instubble
 A flag describing the state of the field from a visual perspective - will be in stubble following a cereal crop until either soil cultivation or March 1st. More...
 
double m_birdseedforage
 The grain forage present in KJ/m2. More...
 
double m_birdmaizeforage
 The maize forage present in KJ/m2. More...
 
double m_goosegrazingforage [gs_foobar]
 The grazing forage present in KJ/min. The last value indicates cereal 1 or not -1. More...
 
TTypesOfVegetation m_lastsownvegtype
 Records the last vegegetation type that was sown on the element. More...
 
int m_openness
 The openness metric for a field (if any) More...
 
double m_dist_to_closest_roost [gs_foobar]
 An array holding the distance to the nearest goose roost. More...
 
int m_vegage
 
int m_soiltype
 
int m_days_since_insecticide_spray
 
bool m_high
 
bool m_poison
 
int m_cattle_grazing
 
int m_default_grazing_level
 
bool m_pig_grazing
 
double m_vegddegs
 
double m_yddegs
 
double m_ddegs
 
vector< intm_lasttreat
 
unsigned int m_lastindex
 
int MDates [2][25]
 
int MConsts [10]
 
LE_Signal m_signal_mask
 
double m_OsmiaNestProb
 to record the chance of osmia nesting More...
 
int m_maxOsmiaNests
 to record the number of possible osmia nests More...
 
int m_currentOsmiaNests
 to record the number of actual osmia nests More...
 
PollenNectarQuality m_pollenquality
 
PollenNectarQuality m_nectarquality
 
double m_totalPollen
 
double m_totalNectar
 
double m_PollenM2
 
double m_NectarM2
 
PollenNectarDevelopmentCurve * m_pollencurve
 pointer to the correct pollen curve set More...
 
PollenNectarDevelopmentCurve * m_nectarcurve
 pointer to the correct nectar curve set More...
 

Additional Inherited Members

- Public Attributes inherited from LE
int m_tried_to_do
 
int m_squares_in_map
 
bool m_skylarkscrapes
 For management testing of skylark scrapes. More...
 
- Static Protected Attributes inherited from LE
static double m_monthly_traffic []
 Used for birds that feed on grain on cereal fields 3% spill is expected. More...
 
static double m_largeroad_load []
 
static double m_smallroad_load []
 

Constructor & Destructor Documentation

◆ VegElement()

VegElement::VegElement ( void  )
615  : LE() {
616  SetVegPatchy(false);
617  m_growth_scaler = 1.0; // default
618  m_veg_biomass = 0.0;
619  m_weed_biomass = 0.0;
620  m_veg_height = 0.0;
621  m_veg_cover = 0.0;
622  m_insect_pop = 1.0;
623  m_vege_type = tov_NoGrowth;
624  m_curve_num = g_crops->VegTypeToCurveNum(m_vege_type);
625  m_weed_curve_num = 99; // 99 used as zero growth curve
626  m_yddegs = 0.0;
627  m_vegddegs = -1.0;
628  m_ddegs = 0.0;
629  m_LAgreen = 0.0;
630  m_LAtotal = 0.0;
631  m_digestability = 1.0;
632  for (int i = 0; i < 32; i++) m_oldnewgrowth[i] = 0.5;
634  m_newgrowthsum = 8.0;
635  m_forced_phase_shift = false;
636  m_force_growth = false;
637  SetGrowthPhase(janfirst);
638  m_total_biomass = 0.0;
639  m_total_biomass_old = 0.0;
640 
641 
642 
643  g_biomass_scale[tov_Carrots] = 0.7857;
644  g_biomass_scale[tov_CloverGrassGrazed1] = 1.2;
645  g_biomass_scale[tov_CloverGrassGrazed2] = 1.2;
646  g_biomass_scale[tov_FodderGrass] = 1.2;
647  g_biomass_scale[ tov_BroadBeans ] = 0.857;
648  g_biomass_scale[ tov_FieldPeas ] = 0.857;
649  g_biomass_scale[ tov_FieldPeasSilage ] = 0.857;
650  g_biomass_scale[tov_FodderBeet] = 0.857;
651  g_biomass_scale[tov_SugarBeet] = 0.857;
652  g_biomass_scale[tov_OFodderBeet] = 0.857;
653  g_biomass_scale[tov_Maize] = 1.00;
654  g_biomass_scale[tov_MaizeSilage] = 1.00;
655  g_biomass_scale[tov_OMaizeSilage] = 1.00;
656  g_biomass_scale[tov_NaturalGrass] = 0.567; //0.567 is scaled for actual yield
657  g_biomass_scale[tov_Heath] = 0.567; //0.567 is scaled for actual yield
658  g_biomass_scale[tov_NoGrowth] = 0.0;
659  g_biomass_scale[tov_None] = 0.0;
660  g_biomass_scale[tov_OrchardCrop] = 0.7857;
661  g_biomass_scale[tov_Oats] = 0.857;
662  g_biomass_scale[tov_OBarleyPeaCloverGrass] = 0.857;
663  g_biomass_scale[tov_OSBarleySilage] = 0.857 * 0.8;
664  g_biomass_scale[tov_OCarrots] = 0.7857 * 0.8;
665  g_biomass_scale[tov_OCloverGrassGrazed1] = 1.1;
666  g_biomass_scale[tov_OCloverGrassGrazed2] = 1.1;
667  g_biomass_scale[tov_OCloverGrassSilage1] = 1.1;
668  g_biomass_scale[tov_OFieldPeas] = 0.857 * 0.8;
669  g_biomass_scale[tov_OFieldPeasSilage] = 0.857 * 0.8;
670  g_biomass_scale[tov_OFirstYearDanger] = 0.0;
671  g_biomass_scale[tov_OGrazingPigs] = 0.7857 * 0.8;
672  g_biomass_scale[tov_OOats] = 0.857 * 0.8;
673  g_biomass_scale[tov_OPermanentGrassGrazed] = 0.7857;
674  g_biomass_scale[tov_OPotatoes] = 0.857 * 0.8;
675  g_biomass_scale[tov_OSeedGrass1] = 0.7857;
676  g_biomass_scale[tov_OSeedGrass2] = 0.7857;
677  g_biomass_scale[tov_OSetaside] = 0.7857;
678  g_biomass_scale[tov_OSpringBarley] = 0.857 * 0.8;
679  g_biomass_scale[tov_OSpringBarleyExt] = 0.857 * 0.8 * 0.8;
680  g_biomass_scale[tov_OSpringBarleyClover] = 0.857 * 0.8;
681  g_biomass_scale[tov_OSpringBarleyGrass] = 0.857 * 0.8;
682  g_biomass_scale[tov_OSpringBarleyPigs] = 0.857 * 0.8;
683  g_biomass_scale[tov_OTriticale] = 1.00 * 0.8;
684  g_biomass_scale[tov_OWinterBarley] = 0.857 * 0.8;
685  g_biomass_scale[tov_OWinterBarleyExt] = 0.857 * 0.8 * 0.8;
686  g_biomass_scale[tov_OWinterRape] = 1.071 * 0.8;
687  g_biomass_scale[tov_OWinterRye] = 0.857 * 0.8;
688  g_biomass_scale[ tov_OWinterWheat ] = 1.00 * 0.8;
689  g_biomass_scale[ tov_OWinterWheatUndersown ] = 1.00 * 0.8;
690  g_biomass_scale[ tov_OWinterWheatUndersownExt ] = 1.00 * 0.8 * 0.8;
691  g_biomass_scale[tov_PermanentGrassGrazed] = 1.1;
692  g_biomass_scale[tov_PermanentGrassLowYield] = 1.0;
693  g_biomass_scale[tov_PermanentGrassTussocky] = 0.7857;
694  g_biomass_scale[tov_PermanentSetaside] = 0.7857;
695  g_biomass_scale[tov_Potatoes] = 0.857;
696  g_biomass_scale[tov_PotatoesIndustry] = 0.857;
697  g_biomass_scale[tov_SeedGrass1] = 0.7857;
698  g_biomass_scale[tov_SeedGrass2] = 0.7857;
699  g_biomass_scale[tov_OSeedGrass1] = 0.7857;
700  g_biomass_scale[tov_OSeedGrass2] = 0.7857;
701  g_biomass_scale[tov_Setaside] = 0.7857;
702  g_biomass_scale[tov_SpringBarley] = 0.857;
703  g_biomass_scale[tov_SpringBarleySpr] = 0.857;
704  g_biomass_scale[tov_SpringBarleyPTreatment] = 0.857;
705  g_biomass_scale[tov_SpringBarleySKManagement] = 0.857;
706  g_biomass_scale[tov_SpringBarleyCloverGrass] = 0.857;
707  g_biomass_scale[tov_SpringBarleyGrass] = 0.857;
708  g_biomass_scale[tov_SpringBarleySeed] = 0.857;
709  g_biomass_scale[tov_SpringBarleySilage] = 0.857;
710  g_biomass_scale[tov_SpringRape] = 1.071;
711  g_biomass_scale[tov_SpringWheat] = 1.00;
712  g_biomass_scale[tov_Triticale] = 1.00;
713  g_biomass_scale[tov_WinterBarley] = 0.857;
714  g_biomass_scale[tov_WinterRape] = 1.071;
715  g_biomass_scale[tov_WinterRye] = 0.857;
716  g_biomass_scale[tov_WinterWheat] = 1.00; // This gives approx 18 tonnes biomass for WW
717  g_biomass_scale[tov_WinterWheatShort] = 1.00;
718  g_biomass_scale[tov_AgroChemIndustryCereal] = 1.00;
719  g_biomass_scale[tov_WWheatPControl] = 1.00;
720  g_biomass_scale[tov_WWheatPToxicControl] = 1.00;
721  g_biomass_scale[tov_WWheatPTreatment] = 1.00;
722  g_biomass_scale[tov_WinterWheatStrigling] = 1.00;
723  g_biomass_scale[tov_WinterWheatStriglingCulm] = 1.00;
724  g_biomass_scale[tov_WinterWheatStriglingSingle] = 1.00;
725  g_biomass_scale[tov_SpringBarleyCloverGrassStrigling] = 0.857;
726  g_biomass_scale[tov_SpringBarleyStrigling] = 0.857;
727  g_biomass_scale[tov_SpringBarleyStriglingSingle] = 0.857;
728  g_biomass_scale[tov_SpringBarleyStriglingCulm] = 0.857;
729  g_biomass_scale[tov_MaizeStrigling] = 0.857;
730  g_biomass_scale[tov_WinterRapeStrigling] = 1.071;
731  g_biomass_scale[tov_WinterRyeStrigling] = 0.857;
732  g_biomass_scale[tov_WinterBarleyStrigling] = 0.857;
733  g_biomass_scale[tov_FieldPeasStrigling] = 0.857;
734  g_biomass_scale[tov_SpringBarleyPeaCloverGrassStrigling] = 0.857;
735  g_biomass_scale[tov_YoungForest] = 0.7857 * 0.67;
736  g_biomass_scale[tov_Wasteland] = 0.7857 * 0.67;
737  g_biomass_scale[tov_WaterBufferZone] = 0.567;
738 
739  g_biomass_scale[tov_PLWinterWheat] = 1.00;
740  g_biomass_scale[tov_PLWinterRape] = 1.071;
741  g_biomass_scale[tov_PLWinterBarley] = 0.857;
742  g_biomass_scale[tov_PLWinterTriticale] = 1.00;
743  g_biomass_scale[tov_PLWinterRye] = 0.857;
744  g_biomass_scale[tov_PLSpringWheat] = 1.00;
745  g_biomass_scale[tov_PLSpringBarley] = 0.857;
746  g_biomass_scale[tov_PLMaize] = 1.00;
747  g_biomass_scale[tov_PLMaizeSilage] = 1.00;
748  g_biomass_scale[tov_PLPotatoes] = 0.857;
749  g_biomass_scale[tov_PLBeet] = 0.857;
750  g_biomass_scale[tov_PLFodderLucerne1] = 1.2;
751  g_biomass_scale[tov_PLFodderLucerne2] = 1.2;
752  g_biomass_scale[tov_PLCarrots] = 0.7857;
753  g_biomass_scale[tov_PLSpringBarleySpr] = 0.857;
754  g_biomass_scale[tov_PLWinterWheatLate] = 1.00;
755  g_biomass_scale[tov_PLBeetSpr] = 0.857;
756  g_biomass_scale[tov_PLBeans] = 0.857;
757 
758  g_biomass_scale[tov_NLWinterWheat] = 1.00;
759  g_biomass_scale[tov_NLSpringBarley] = 0.857;
760  g_biomass_scale[tov_NLMaize] = 1.00;
761  g_biomass_scale[tov_NLPotatoes] = 0.857;
762  g_biomass_scale[tov_NLBeet] = 0.857;
763  g_biomass_scale[tov_NLCarrots] = 0.7857;
764  g_biomass_scale[tov_NLCabbage] = 0.7857;
765  g_biomass_scale[tov_NLTulips] = 0.7857;
766  g_biomass_scale[tov_NLGrassGrazed1] = 1.2;
767  g_biomass_scale[tov_NLGrassGrazed1Spring] = 1.2;
768  g_biomass_scale[tov_NLGrassGrazed2] = 1.2;
769  g_biomass_scale[tov_NLGrassGrazedLast] = 1.2;
770  g_biomass_scale[tov_NLPermanentGrassGrazed] = 1.2;
771  g_biomass_scale[tov_NLSpringBarleySpring] = 0.857;
772  g_biomass_scale[tov_NLMaizeSpring] = 1.00;
773  g_biomass_scale[tov_NLPotatoesSpring] = 0.857;
774  g_biomass_scale[tov_NLBeetSpring] = 0.857;
775  g_biomass_scale[tov_NLCarrotsSpring] = 0.7857;
776  g_biomass_scale[tov_NLCabbageSpring] = 0.7857;
777  g_biomass_scale[tov_NLCatchPeaCrop] = 0.857;
778 
779 
780  g_biomass_scale[tov_DummyCropPestTesting] = 1.00; // just for testing of pesticide spraying distribution
781 
782  if (l_el_read_bug_percentage_file.value()) {
783  //ReadBugPercentageFile();
784  return;
785  }
786 
787  g_weed_percent[tov_Carrots] = 0.1;
788  g_weed_percent[ tov_BroadBeans ] = 0.1;
789  g_weed_percent[ tov_Maize ] = 0.05;
790  g_weed_percent[tov_MaizeSilage] = 0.05;
791  g_weed_percent[tov_OMaizeSilage] = 0.05;
792  g_weed_percent[tov_OCarrots] = 0.1;
793  g_weed_percent[tov_Potatoes] = 0.1;
794  g_weed_percent[tov_OPotatoes] = 0.1;
795  g_weed_percent[tov_FodderGrass] = 0.1;
796  g_weed_percent[tov_CloverGrassGrazed1] = 0.1;
797  g_weed_percent[tov_CloverGrassGrazed2] = 0.1;
798  g_weed_percent[tov_OCloverGrassGrazed1] = 0.1;
799  g_weed_percent[tov_OCloverGrassGrazed2] = 0.1;
800  g_weed_percent[tov_SpringBarley] = 0.1;
801  g_weed_percent[tov_SpringBarleySpr] = 0.1;
802  g_weed_percent[tov_SpringBarleyPTreatment] = 0.1;
803  g_weed_percent[tov_SpringBarleySKManagement] = 0.1;
804  g_weed_percent[tov_WinterWheat] = 0.1;
805  g_weed_percent[tov_WinterWheatShort] = 0.1;
806  g_weed_percent[tov_SpringBarleySilage] = 0.1;
807  g_weed_percent[tov_SpringBarleySeed] = 0.1;
808  g_weed_percent[tov_OGrazingPigs] = 0.1;
809  g_weed_percent[tov_OCloverGrassSilage1] = 0.1;
810  g_weed_percent[tov_SpringBarleyCloverGrass] = 0.1;
811  g_weed_percent[tov_OSpringBarleyPigs] = 0.1;
812  g_weed_percent[tov_OBarleyPeaCloverGrass] = 0.1;
813  g_weed_percent[tov_OSpringBarley] = 0.1;
814  g_weed_percent[tov_OSpringBarleyExt] = 0.1;
815  g_weed_percent[tov_OSBarleySilage] = 0.1;
816  g_weed_percent[ tov_OWinterWheat ] = 0.1;
817  g_weed_percent[ tov_OWinterWheatUndersown ] = 0.1;
818  g_weed_percent[ tov_OWinterWheatUndersownExt ] = 0.1;
819  g_weed_percent[tov_WinterRape] = 0.05;
820  g_weed_percent[tov_OWinterRape] = 0.05;
821  g_weed_percent[tov_OWinterRye] = 0.1;
822  g_weed_percent[tov_OWinterBarley] = 0.1;
823  g_weed_percent[tov_OWinterBarleyExt] = 0.1;
824  g_weed_percent[tov_WinterBarley] = 0.1;
825  g_weed_percent[tov_WinterRye] = 0.1;
826  g_weed_percent[ tov_OFieldPeas ] = 0.1;
827  g_weed_percent[tov_OFieldPeas] = 0.1;
828  g_weed_percent[ tov_OFieldPeasSilage ] = 0.1;
829  g_weed_percent[tov_OOats] = 0.1;
830  g_weed_percent[tov_Oats] = 0.1;
831  g_weed_percent[tov_Heath] = 0.1;
832  g_weed_percent[tov_OrchardCrop] = 0.1;
833  g_weed_percent[ tov_FieldPeas ] = 0.1;
834  g_weed_percent[ tov_FieldPeasSilage ] = 0.1;
835  g_weed_percent[tov_SeedGrass1] = 0.1;
836  g_weed_percent[tov_SeedGrass2] = 0.1;
837  g_weed_percent[tov_OSeedGrass1] = 0.15;
838  g_weed_percent[tov_OSeedGrass2] = 0.15;
839  g_weed_percent[tov_OPermanentGrassGrazed] = 0.1;
840  g_weed_percent[tov_Setaside] = 0.1;
841  g_weed_percent[tov_OSetaside] = 0.1;
842  g_weed_percent[tov_PermanentSetaside] = 0.1;
843  g_weed_percent[tov_PermanentGrassLowYield] = 0.1;
844  g_weed_percent[tov_PermanentGrassGrazed] = 0.1;
845  g_weed_percent[tov_PermanentGrassTussocky] = 0.1;
846  g_weed_percent[tov_FodderBeet] = 0.1;
847  g_weed_percent[tov_SugarBeet] = 0.1;
848  g_weed_percent[tov_OFodderBeet] = 0.1;
849  g_weed_percent[tov_NaturalGrass] = 0.1;
850  g_weed_percent[tov_None] = 0.1;
851  g_weed_percent[tov_NoGrowth] = 0.1;
852  g_weed_percent[tov_OFirstYearDanger] = 0.1;
853  g_weed_percent[tov_Triticale] = 0.1;
854  g_weed_percent[tov_OTriticale] = 0.1;
855  g_weed_percent[tov_WWheatPControl] = 0.1;
856  g_weed_percent[tov_WWheatPToxicControl] = 0.1;
857  g_weed_percent[tov_WWheatPTreatment] = 0.1;
858  g_weed_percent[tov_AgroChemIndustryCereal] = 0.1;
859  g_weed_percent[tov_WinterWheatStrigling] = 0.1;
860  g_weed_percent[tov_WinterWheatStriglingSingle] = 0.1;
861  g_weed_percent[tov_WinterWheatStriglingCulm] = 0.1;
862  g_weed_percent[tov_SpringBarleyCloverGrassStrigling] = 0.1;
863  g_weed_percent[tov_SpringBarleyStrigling] = 0.1;
864  g_weed_percent[tov_SpringBarleyStriglingSingle] = 0.1;
865  g_weed_percent[tov_SpringBarleyStriglingCulm] = 0.1;
866  g_weed_percent[tov_MaizeStrigling] = 0.1;
867  g_weed_percent[tov_WinterRapeStrigling] = 0.1;
868  g_weed_percent[tov_WinterRyeStrigling] = 0.1;
869  g_weed_percent[tov_WinterBarleyStrigling] = 0.1;
870  g_weed_percent[tov_FieldPeasStrigling] = 0.1;
871  g_weed_percent[tov_SpringBarleyPeaCloverGrassStrigling] = 0.1;
872  g_weed_percent[tov_YoungForest] = 0.1;
873  g_weed_percent[tov_Wasteland] = 0.1;
874  g_weed_percent[tov_WaterBufferZone] = 0.1;
875 
876  g_weed_percent[tov_PLWinterWheat] = 0.1;
877  g_weed_percent[tov_PLWinterRape] = 0.05;
878  g_weed_percent[tov_PLWinterBarley] = 0.1;
879  g_weed_percent[tov_PLWinterTriticale] = 0.1;
880  g_weed_percent[tov_PLWinterRye] = 0.1;
881  g_weed_percent[tov_PLSpringWheat] = 0.1;
882  g_weed_percent[tov_PLSpringBarley] = 0.1;
883  g_weed_percent[tov_PLMaize] = 0.1;
884  g_weed_percent[tov_PLMaizeSilage] = 0.1;
885  g_weed_percent[tov_PLPotatoes] = 0.1;
886  g_weed_percent[tov_PLBeet] = 0.1;
887  g_weed_percent[tov_PLFodderLucerne1] = 0.1;
888  g_weed_percent[tov_PLFodderLucerne2] = 0.1;
889  g_weed_percent[tov_PLCarrots] = 0.1;
890  g_weed_percent[tov_PLSpringBarleySpr] = 0.1;
891  g_weed_percent[tov_PLWinterWheatLate] = 0.1;
892  g_weed_percent[tov_PLBeetSpr] = 0.1;
893  g_weed_percent[tov_PLBeans] = 0.1;
894 
895  g_weed_percent[tov_NLWinterWheat] = 0.1;
896  g_weed_percent[tov_NLSpringBarley] = 0.1;
897  g_weed_percent[tov_NLMaize] = 0.1;
898  g_weed_percent[tov_NLPotatoes] = 0.1;
899  g_weed_percent[tov_NLBeet] = 0.1;
900  g_weed_percent[tov_NLCarrots] = 0.1;
901  g_weed_percent[tov_NLCabbage] = 0.1;
902  g_weed_percent[tov_NLTulips] = 0.1;
903  g_weed_percent[tov_NLGrassGrazed1] = 0.1;
904  g_weed_percent[tov_NLGrassGrazed1Spring] = 0.1;
905  g_weed_percent[tov_NLGrassGrazed2] = 0.1;
906  g_weed_percent[tov_NLGrassGrazedLast] = 0.1;
907  g_weed_percent[tov_NLPermanentGrassGrazed] = 0.1;
908  g_weed_percent[tov_NLSpringBarleySpring] = 0.1;
909  g_weed_percent[tov_NLMaizeSpring] = 0.1;
910  g_weed_percent[tov_NLPotatoesSpring] = 0.1;
911  g_weed_percent[tov_NLBeetSpring] = 0.1;
912  g_weed_percent[tov_NLCarrotsSpring] = 0.1;
913  g_weed_percent[tov_NLCabbageSpring] = 0.1;
914  g_weed_percent[tov_NLCatchPeaCrop] = 0.1;
915 
916  g_bug_percent_a[tov_Carrots] = EL_BUG_PERCENT_A;
917  g_bug_percent_a[tov_MaizeSilage] = EL_BUG_PERCENT_A;
918  g_bug_percent_a[tov_OMaizeSilage] = EL_BUG_PERCENT_A;
919  g_bug_percent_a[tov_Maize] = EL_BUG_PERCENT_A;
920  g_bug_percent_a[tov_OCarrots] = EL_BUG_PERCENT_A;
921  g_bug_percent_a[tov_Potatoes] = EL_BUG_PERCENT_A;
922  g_bug_percent_a[tov_OPotatoes] = EL_BUG_PERCENT_A;
923  g_bug_percent_a[tov_FodderGrass] = EL_BUG_PERCENT_G_A;
924  g_bug_percent_a[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_G_A;
925  g_bug_percent_a[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_G_A;
926  g_bug_percent_a[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_G_A;
927  g_bug_percent_a[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_G_A;
928  g_bug_percent_a[tov_SpringBarley] = EL_BUG_PERCENT_SB_A;
929  g_bug_percent_a[tov_SpringBarleySpr] = EL_BUG_PERCENT_SB_A;
930  g_bug_percent_a[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_SB_A;
931  g_bug_percent_a[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_SB_A;
932  g_bug_percent_a[tov_WinterWheat] = EL_BUG_PERCENT_WW_A;
933  g_bug_percent_a[tov_WinterWheatShort] = EL_BUG_PERCENT_WW_A;
934  g_bug_percent_a[tov_SpringBarleySilage] = EL_BUG_PERCENT_SB_A;
935  g_bug_percent_a[tov_SpringBarleySeed] = EL_BUG_PERCENT_SB_A;
936  g_bug_percent_a[tov_OGrazingPigs] = EL_BUG_PERCENT_G_A;
937  g_bug_percent_a[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_G_A;
938  g_bug_percent_a[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_SB_A;
939  g_bug_percent_a[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_SB_A;
940  g_bug_percent_a[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_SB_A;
941  g_bug_percent_a[tov_OSpringBarley] = EL_BUG_PERCENT_SB_A;
942  g_bug_percent_a[tov_OSpringBarleyExt] = EL_BUG_PERCENT_SB_A;
943  g_bug_percent_a[tov_OSBarleySilage] = EL_BUG_PERCENT_SB_A;
944  g_bug_percent_a[ tov_OWinterWheat ] = EL_BUG_PERCENT_WW_A;
945  g_bug_percent_a[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_WW_A;
946  g_bug_percent_a[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_WW_A;
947  g_bug_percent_a[tov_WinterRape] = EL_BUG_PERCENT_WR_A;
948  g_bug_percent_a[tov_SpringRape] = EL_BUG_PERCENT_WR_A;
949  g_bug_percent_a[tov_OWinterRape] = EL_BUG_PERCENT_WR_A;
950  g_bug_percent_a[tov_OWinterRye] = EL_BUG_PERCENT_WRy_A;
951  g_bug_percent_a[tov_OWinterBarley] = EL_BUG_PERCENT_A;
952  g_bug_percent_a[tov_OWinterBarleyExt] = EL_BUG_PERCENT_A;
953  g_bug_percent_a[tov_WinterBarley] = EL_BUG_PERCENT_A;
954  g_bug_percent_a[tov_WinterRye] = EL_BUG_PERCENT_WRy_A;
955  g_bug_percent_a[tov_OFieldPeas] = EL_BUG_PERCENT_A;
956  g_bug_percent_a[tov_OFieldPeasSilage] = EL_BUG_PERCENT_A;
957  g_bug_percent_a[tov_OrchardCrop] = EL_BUG_PERCENT_G_A;
958  g_bug_percent_a[tov_OOats] = EL_BUG_PERCENT_A;
959  g_bug_percent_a[tov_Oats] = EL_BUG_PERCENT_A;
960  g_bug_percent_a[ tov_BroadBeans ] = EL_BUG_PERCENT_A;
961  g_bug_percent_a[ tov_FieldPeas ] = EL_BUG_PERCENT_A;
962  g_bug_percent_a[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_A;
963  g_bug_percent_a[tov_OSeedGrass1] = EL_BUG_PERCENT_G_A;
964  g_bug_percent_a[tov_OSeedGrass2] = EL_BUG_PERCENT_G_A;
965  g_bug_percent_a[tov_SeedGrass1] = EL_BUG_PERCENT_G_A;
966  g_bug_percent_a[tov_SeedGrass2] = EL_BUG_PERCENT_G_A;
967  g_bug_percent_a[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_G_A;
971  g_bug_percent_d[tov_Heath] = EL_BUG_PERCENT_D;
972  g_bug_percent_a[tov_Setaside] = EL_BUG_PERCENT_Edges_A;
973  g_bug_percent_a[tov_OSetaside] = EL_BUG_PERCENT_Edges_A;
974  g_bug_percent_a[tov_PermanentSetaside] = EL_BUG_PERCENT_Edges_A;
975  g_bug_percent_a[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_G_A;
976  g_bug_percent_a[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_G_A;
977  g_bug_percent_a[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_G_A;
978  g_bug_percent_a[tov_FodderBeet] = EL_BUG_PERCENT_A;
979  g_bug_percent_a[tov_SugarBeet] = EL_BUG_PERCENT_A;
980  g_bug_percent_a[tov_OFodderBeet] = EL_BUG_PERCENT_A;
981  g_bug_percent_a[tov_NaturalGrass] = EL_BUG_PERCENT_Edges_A;
982  g_bug_percent_a[tov_None] = EL_BUG_PERCENT_A;
983  g_bug_percent_a[tov_NoGrowth] = EL_BUG_PERCENT_A;
984  g_bug_percent_a[tov_OFirstYearDanger] = EL_BUG_PERCENT_A;
985  g_bug_percent_a[tov_Triticale] = EL_BUG_PERCENT_A;
986  g_bug_percent_a[tov_OTriticale] = EL_BUG_PERCENT_A;
987  g_bug_percent_a[tov_WWheatPControl] = EL_BUG_PERCENT_WW_A;
988  g_bug_percent_a[tov_WWheatPToxicControl] = EL_BUG_PERCENT_WW_A;
989  g_bug_percent_a[tov_WWheatPTreatment] = EL_BUG_PERCENT_WW_A;
990  g_bug_percent_a[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_WW_A;
991  g_bug_percent_a[tov_WinterWheatStrigling] = EL_BUG_PERCENT_WW_A;
992  g_bug_percent_a[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_WW_A;
993  g_bug_percent_a[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_WW_A;
994  g_bug_percent_a[tov_SpringBarleyCloverGrassStrigling] = EL_BUG_PERCENT_SB_A;
995  g_bug_percent_a[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_SB_A;
996  g_bug_percent_a[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_SB_A;
997  g_bug_percent_a[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_SB_A;
998  g_bug_percent_a[tov_MaizeStrigling] = EL_BUG_PERCENT_A;
999  g_bug_percent_a[tov_WinterRapeStrigling] = EL_BUG_PERCENT_WR_A;
1000  g_bug_percent_a[tov_WinterRyeStrigling] = EL_BUG_PERCENT_WRy_A;
1001  g_bug_percent_a[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_A;
1002  g_bug_percent_a[tov_FieldPeasStrigling] = EL_BUG_PERCENT_A;
1003  g_bug_percent_a[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_SB_A;
1004  g_bug_percent_a[tov_YoungForest] = EL_BUG_PERCENT_Edges_A;
1005  g_bug_percent_a[tov_Wasteland] = EL_BUG_PERCENT_Edges_A;
1006  g_bug_percent_a[tov_WaterBufferZone] = EL_BUG_PERCENT_Edges_A;
1007 
1008  g_bug_percent_a[tov_PLWinterWheat] = EL_BUG_PERCENT_WW_A;
1009  g_bug_percent_a[tov_PLWinterRape] = EL_BUG_PERCENT_WR_A;
1010  g_bug_percent_a[tov_PLWinterTriticale] = EL_BUG_PERCENT_A;
1011  g_bug_percent_a[tov_PLSpringBarley] = EL_BUG_PERCENT_SB_A;
1012  g_bug_percent_a[tov_PLWinterBarley] = EL_BUG_PERCENT_A;
1013  g_bug_percent_a[tov_PLWinterRye] = EL_BUG_PERCENT_WRy_A;
1014  g_bug_percent_a[tov_PLSpringWheat] = EL_BUG_PERCENT_A;
1015  g_bug_percent_a[tov_PLMaize] = EL_BUG_PERCENT_A;
1016  g_bug_percent_a[tov_PLMaizeSilage] = EL_BUG_PERCENT_A;
1017  g_bug_percent_a[tov_PLPotatoes] = EL_BUG_PERCENT_A;
1018  g_bug_percent_a[tov_PLBeet] = EL_BUG_PERCENT_A;
1019  g_bug_percent_a[tov_PLFodderLucerne1] = EL_BUG_PERCENT_G_A;
1020  g_bug_percent_a[tov_PLFodderLucerne2] = EL_BUG_PERCENT_G_A;
1021  g_bug_percent_a[tov_PLCarrots] = EL_BUG_PERCENT_A;
1022  g_bug_percent_a[tov_PLSpringBarleySpr] = EL_BUG_PERCENT_SB_A;
1023  g_bug_percent_a[tov_PLWinterWheatLate] = EL_BUG_PERCENT_WW_A;
1024  g_bug_percent_a[tov_PLBeetSpr] = EL_BUG_PERCENT_A;
1025  g_bug_percent_a[tov_PLBeans] = EL_BUG_PERCENT_A;
1026 
1027  g_bug_percent_a[tov_NLWinterWheat] = EL_BUG_PERCENT_WW_A;
1028  g_bug_percent_a[tov_NLSpringBarley] = EL_BUG_PERCENT_SB_A;
1029  g_bug_percent_a[tov_NLMaize] = EL_BUG_PERCENT_A;
1030  g_bug_percent_a[tov_NLPotatoes] = EL_BUG_PERCENT_A;
1031  g_bug_percent_a[tov_NLBeet] = EL_BUG_PERCENT_A;
1032  g_bug_percent_a[tov_NLCarrots] = EL_BUG_PERCENT_A;
1033  g_bug_percent_a[tov_NLCabbage] = EL_BUG_PERCENT_A;
1034  g_bug_percent_a[tov_NLTulips] = EL_BUG_PERCENT_A;
1035  g_bug_percent_a[tov_NLGrassGrazed1] = EL_BUG_PERCENT_G_A;
1036  g_bug_percent_a[tov_NLGrassGrazed1Spring] = EL_BUG_PERCENT_G_A;
1037  g_bug_percent_a[tov_NLGrassGrazed2] = EL_BUG_PERCENT_G_A;
1038  g_bug_percent_a[tov_NLGrassGrazedLast] = EL_BUG_PERCENT_G_A;
1039  g_bug_percent_a[tov_NLPermanentGrassGrazed] = EL_BUG_PERCENT_G_A;
1040  g_bug_percent_a[tov_NLSpringBarleySpring] = EL_BUG_PERCENT_SB_A;
1041  g_bug_percent_a[tov_NLMaizeSpring] = EL_BUG_PERCENT_A;
1042  g_bug_percent_a[tov_NLPotatoesSpring] = EL_BUG_PERCENT_A;
1043  g_bug_percent_a[tov_NLBeetSpring] = EL_BUG_PERCENT_A;
1044  g_bug_percent_a[tov_NLCarrotsSpring] = EL_BUG_PERCENT_A;
1045  g_bug_percent_a[tov_NLCabbageSpring] = EL_BUG_PERCENT_A;
1046  g_bug_percent_a[tov_NLCatchPeaCrop] = EL_BUG_PERCENT_A;
1047 
1048 
1049  g_bug_percent_b[tov_Carrots] = EL_BUG_PERCENT_B;
1050  g_bug_percent_b[tov_MaizeSilage] = EL_BUG_PERCENT_B;
1051  g_bug_percent_b[tov_OMaizeSilage] = EL_BUG_PERCENT_B;
1052  g_bug_percent_b[tov_Maize] = EL_BUG_PERCENT_B;
1053  g_bug_percent_b[tov_OCarrots] = EL_BUG_PERCENT_B;
1054  g_bug_percent_b[tov_Potatoes] = EL_BUG_PERCENT_B;
1055  g_bug_percent_b[tov_OPotatoes] = EL_BUG_PERCENT_B;
1056  g_bug_percent_b[tov_FodderGrass] = EL_BUG_PERCENT_G_B;
1057  g_bug_percent_b[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_G_B;
1058  g_bug_percent_b[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_G_B;
1059  g_bug_percent_b[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_G_B;
1060  g_bug_percent_b[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_G_B;
1061  g_bug_percent_b[tov_SpringBarley] = EL_BUG_PERCENT_SB_B;
1062  g_bug_percent_b[tov_SpringBarleySpr] = EL_BUG_PERCENT_SB_B;
1063  g_bug_percent_b[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_SB_B;
1064  g_bug_percent_b[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_SB_B;
1065  g_bug_percent_b[tov_WinterWheat] = EL_BUG_PERCENT_WW_B;
1066  g_bug_percent_b[tov_WinterWheatShort] = EL_BUG_PERCENT_WW_B;
1067  g_bug_percent_b[tov_SpringBarleySilage] = EL_BUG_PERCENT_SB_B;
1068  g_bug_percent_b[tov_SpringBarleySeed] = EL_BUG_PERCENT_SB_B;
1069  g_bug_percent_b[tov_OGrazingPigs] = EL_BUG_PERCENT_G_B;
1070  g_bug_percent_b[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_G_B;
1071  g_bug_percent_b[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_SB_B;
1072  g_bug_percent_b[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_SB_B;
1073  g_bug_percent_b[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_SB_B;
1074  g_bug_percent_b[tov_OSBarleySilage] = EL_BUG_PERCENT_SB_B;
1075  g_bug_percent_b[tov_OSpringBarley] = EL_BUG_PERCENT_SB_B;
1076  g_bug_percent_b[tov_OSpringBarleyExt] = EL_BUG_PERCENT_SB_B;
1077  g_bug_percent_b[ tov_OWinterWheat ] = EL_BUG_PERCENT_WW_B;
1078  g_bug_percent_b[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_WW_B;
1079  g_bug_percent_b[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_WW_B;
1080  g_bug_percent_b[tov_WinterRape] = EL_BUG_PERCENT_WR_B;
1081  g_bug_percent_b[tov_SpringRape] = EL_BUG_PERCENT_WR_B;
1082  g_bug_percent_b[tov_OWinterRape] = EL_BUG_PERCENT_WR_B;
1083  g_bug_percent_b[tov_OWinterRye] = EL_BUG_PERCENT_WRy_B;
1084  g_bug_percent_b[tov_OWinterBarley] = EL_BUG_PERCENT_B;
1085  g_bug_percent_b[tov_OWinterBarleyExt] = EL_BUG_PERCENT_B;
1086  g_bug_percent_b[tov_WinterBarley] = EL_BUG_PERCENT_B;
1087  g_bug_percent_b[tov_WinterRye] = EL_BUG_PERCENT_WRy_B;
1088  g_bug_percent_b[tov_OFieldPeas] = EL_BUG_PERCENT_B;
1089  g_bug_percent_b[tov_OFieldPeasSilage] = EL_BUG_PERCENT_B;
1090  g_bug_percent_b[tov_OrchardCrop] = EL_BUG_PERCENT_G_B;
1091  g_bug_percent_b[tov_OOats] = EL_BUG_PERCENT_B;
1092  g_bug_percent_b[tov_Oats] = EL_BUG_PERCENT_B;
1093  g_bug_percent_b[ tov_BroadBeans ] = EL_BUG_PERCENT_B;
1094  g_bug_percent_b[ tov_FieldPeas ] = EL_BUG_PERCENT_B;
1095  g_bug_percent_b[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_B;
1096  g_bug_percent_b[tov_SeedGrass1] = EL_BUG_PERCENT_G_B;
1097  g_bug_percent_b[tov_SeedGrass2] = EL_BUG_PERCENT_G_B;
1098  g_bug_percent_b[tov_OSeedGrass1] = EL_BUG_PERCENT_G_B;
1099  g_bug_percent_b[tov_OSeedGrass2] = EL_BUG_PERCENT_G_B;
1100  g_bug_percent_b[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_G_B;
1101  g_bug_percent_b[tov_Setaside] = EL_BUG_PERCENT_Edges_B;
1102  g_bug_percent_b[tov_OSetaside] = EL_BUG_PERCENT_Edges_B;
1103  g_bug_percent_b[tov_PermanentSetaside] = EL_BUG_PERCENT_Edges_B;
1104  g_bug_percent_b[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_G_B;
1105  g_bug_percent_b[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_G_B;
1106  g_bug_percent_b[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_G_B;
1107  g_bug_percent_b[tov_FodderBeet] = EL_BUG_PERCENT_B;
1108  g_bug_percent_b[tov_SugarBeet] = EL_BUG_PERCENT_B;
1109  g_bug_percent_b[tov_OFodderBeet] = EL_BUG_PERCENT_B;
1110  g_bug_percent_b[tov_NaturalGrass] = EL_BUG_PERCENT_Edges_B;
1111  g_bug_percent_b[tov_None] = EL_BUG_PERCENT_B;
1112  g_bug_percent_b[tov_NoGrowth] = EL_BUG_PERCENT_B;
1113  g_bug_percent_b[tov_OFirstYearDanger] = EL_BUG_PERCENT_B;
1114  g_bug_percent_b[tov_Triticale] = EL_BUG_PERCENT_B;
1115  g_bug_percent_b[tov_OTriticale] = EL_BUG_PERCENT_B;
1116  g_bug_percent_b[tov_WWheatPControl] = EL_BUG_PERCENT_WW_B;
1117  g_bug_percent_b[tov_WWheatPToxicControl] = EL_BUG_PERCENT_WW_B;
1118  g_bug_percent_b[tov_WWheatPTreatment] = EL_BUG_PERCENT_WW_B;
1119  g_bug_percent_b[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_WW_B;
1120  g_bug_percent_b[tov_WinterWheatStrigling] = EL_BUG_PERCENT_WW_B;
1121  g_bug_percent_b[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_WW_B;
1122  g_bug_percent_b[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_WW_B;
1123  g_bug_percent_b[tov_SpringBarleyCloverGrassStrigling] = EL_BUG_PERCENT_SB_B;
1124  g_bug_percent_b[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_SB_B;
1125  g_bug_percent_b[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_SB_B;
1126  g_bug_percent_b[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_SB_B;
1127  g_bug_percent_b[tov_MaizeStrigling] = EL_BUG_PERCENT_B;
1128  g_bug_percent_b[tov_WinterRapeStrigling] = EL_BUG_PERCENT_WR_B;
1129  g_bug_percent_b[tov_WinterRyeStrigling] = EL_BUG_PERCENT_WRy_B;
1130  g_bug_percent_b[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_B;
1131  g_bug_percent_b[tov_FieldPeasStrigling] = EL_BUG_PERCENT_B;
1132  g_bug_percent_b[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_SB_B;
1133  g_bug_percent_b[tov_YoungForest] = EL_BUG_PERCENT_Edges_B;
1134  g_bug_percent_b[tov_Wasteland] = EL_BUG_PERCENT_Edges_B;
1135  g_bug_percent_a[tov_WaterBufferZone] = EL_BUG_PERCENT_Edges_B;
1136 
1137  g_bug_percent_b[tov_PLWinterWheat] = EL_BUG_PERCENT_WW_B;
1138  g_bug_percent_b[tov_PLWinterRape] = EL_BUG_PERCENT_WR_B;
1139  g_bug_percent_b[tov_PLWinterTriticale] = EL_BUG_PERCENT_B;
1140  g_bug_percent_b[tov_PLSpringBarley] = EL_BUG_PERCENT_SB_B;
1141  g_bug_percent_b[tov_PLWinterBarley] = EL_BUG_PERCENT_B;
1142  g_bug_percent_b[tov_PLWinterRye] = EL_BUG_PERCENT_WRy_B;
1143  g_bug_percent_b[tov_PLSpringWheat] = EL_BUG_PERCENT_B;
1144  g_bug_percent_b[tov_PLMaize] = EL_BUG_PERCENT_B;
1145  g_bug_percent_b[tov_PLMaizeSilage] = EL_BUG_PERCENT_B;
1146  g_bug_percent_b[tov_PLPotatoes] = EL_BUG_PERCENT_B;
1147  g_bug_percent_b[tov_PLBeet] = EL_BUG_PERCENT_B;
1148  g_bug_percent_b[tov_PLFodderLucerne1] = EL_BUG_PERCENT_G_B;
1149  g_bug_percent_b[tov_PLFodderLucerne2] = EL_BUG_PERCENT_G_B;
1150  g_bug_percent_b[tov_PLCarrots] = EL_BUG_PERCENT_B;
1151  g_bug_percent_b[tov_PLSpringBarleySpr] = EL_BUG_PERCENT_SB_B;
1152  g_bug_percent_b[tov_PLWinterWheatLate] = EL_BUG_PERCENT_WW_B;
1153  g_bug_percent_b[tov_PLBeetSpr] = EL_BUG_PERCENT_B;
1154  g_bug_percent_b[tov_PLBeans] = EL_BUG_PERCENT_B;
1155 
1156  g_bug_percent_b[tov_NLWinterWheat] = EL_BUG_PERCENT_WW_B;
1157  g_bug_percent_b[tov_NLSpringBarley] = EL_BUG_PERCENT_SB_B;
1158  g_bug_percent_b[tov_NLMaize] = EL_BUG_PERCENT_B;
1159  g_bug_percent_b[tov_NLPotatoes] = EL_BUG_PERCENT_B;
1160  g_bug_percent_b[tov_NLBeet] = EL_BUG_PERCENT_B;
1161  g_bug_percent_b[tov_NLCarrots] = EL_BUG_PERCENT_B;
1162  g_bug_percent_b[tov_NLCabbage] = EL_BUG_PERCENT_B;
1163  g_bug_percent_b[tov_NLTulips] = EL_BUG_PERCENT_B;
1164  g_bug_percent_b[tov_NLGrassGrazed1] = EL_BUG_PERCENT_G_B;
1165  g_bug_percent_b[tov_NLGrassGrazed1Spring] = EL_BUG_PERCENT_G_B;
1166  g_bug_percent_b[tov_NLGrassGrazed2] = EL_BUG_PERCENT_G_B;
1167  g_bug_percent_b[tov_NLGrassGrazedLast] = EL_BUG_PERCENT_G_B;
1168  g_bug_percent_b[tov_NLPermanentGrassGrazed] = EL_BUG_PERCENT_G_B;
1169  g_bug_percent_b[tov_NLSpringBarleySpring] = EL_BUG_PERCENT_SB_B;
1170  g_bug_percent_b[tov_NLMaizeSpring] = EL_BUG_PERCENT_B;
1171  g_bug_percent_b[tov_NLPotatoesSpring] = EL_BUG_PERCENT_B;
1172  g_bug_percent_b[tov_NLBeetSpring] = EL_BUG_PERCENT_B;
1173  g_bug_percent_b[tov_NLCarrotsSpring] = EL_BUG_PERCENT_B;
1174  g_bug_percent_b[tov_NLCabbageSpring] = EL_BUG_PERCENT_B;
1175  g_bug_percent_b[tov_NLCatchPeaCrop] = EL_BUG_PERCENT_B;
1176 
1177  g_bug_percent_c[tov_Carrots] = EL_BUG_PERCENT_C;
1178  g_bug_percent_c[tov_MaizeSilage] = EL_BUG_PERCENT_C;
1179  g_bug_percent_c[tov_OMaizeSilage] = EL_BUG_PERCENT_C;
1180  g_bug_percent_c[tov_Maize] = EL_BUG_PERCENT_C;
1181  g_bug_percent_c[tov_OCarrots] = EL_BUG_PERCENT_C;
1182  g_bug_percent_c[tov_Potatoes] = EL_BUG_PERCENT_C;
1183  g_bug_percent_c[tov_OPotatoes] = EL_BUG_PERCENT_C;
1184  g_bug_percent_c[tov_FodderGrass] = EL_BUG_PERCENT_G_C;
1185  g_bug_percent_c[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_G_C;
1186  g_bug_percent_c[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_G_C;
1187  g_bug_percent_c[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_G_C;
1188  g_bug_percent_c[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_G_C;
1189  g_bug_percent_c[tov_SpringBarley] = EL_BUG_PERCENT_SB_C;
1190  g_bug_percent_c[tov_SpringBarleySpr] = EL_BUG_PERCENT_SB_C;
1191  g_bug_percent_c[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_SB_C;
1192  g_bug_percent_c[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_SB_C;
1193  g_bug_percent_c[tov_WinterWheat] = EL_BUG_PERCENT_WW_C;
1194  g_bug_percent_c[tov_WinterWheatShort] = EL_BUG_PERCENT_WW_C;
1195  g_bug_percent_c[tov_SpringBarleySilage] = EL_BUG_PERCENT_SB_C;
1196  g_bug_percent_c[tov_SpringBarleySeed] = EL_BUG_PERCENT_SB_C;
1197  g_bug_percent_c[tov_OGrazingPigs] = EL_BUG_PERCENT_G_C;
1198  g_bug_percent_c[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_G_C;
1199  g_bug_percent_c[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_SB_C;
1200  g_bug_percent_c[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_SB_C;
1201  g_bug_percent_c[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_SB_C;
1202  g_bug_percent_c[tov_OSBarleySilage] = EL_BUG_PERCENT_SB_C;
1203  g_bug_percent_c[tov_OSpringBarley] = EL_BUG_PERCENT_SB_C;
1204  g_bug_percent_c[tov_OSpringBarleyExt] = EL_BUG_PERCENT_SB_C;
1205  g_bug_percent_c[ tov_OWinterWheat ] = EL_BUG_PERCENT_WW_C;
1206  g_bug_percent_c[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_WW_C;
1207  g_bug_percent_c[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_WW_C;
1208  g_bug_percent_c[tov_WinterRape] = EL_BUG_PERCENT_WR_C;
1209  g_bug_percent_c[tov_SpringRape] = EL_BUG_PERCENT_WR_C;
1210  g_bug_percent_c[tov_OWinterRape] = EL_BUG_PERCENT_WR_C;
1211  g_bug_percent_c[tov_OWinterRye] = EL_BUG_PERCENT_WRy_C;
1212  g_bug_percent_c[tov_OWinterBarley] = EL_BUG_PERCENT_C;
1213  g_bug_percent_c[tov_OWinterBarleyExt] = EL_BUG_PERCENT_C;
1214  g_bug_percent_c[tov_WinterBarley] = EL_BUG_PERCENT_C;
1215  g_bug_percent_c[tov_WinterRye] = EL_BUG_PERCENT_WRy_C;
1216  g_bug_percent_c[tov_OFieldPeas] = EL_BUG_PERCENT_C;
1217  g_bug_percent_c[tov_OFieldPeasSilage] = EL_BUG_PERCENT_C;
1218  g_bug_percent_c[tov_OrchardCrop] = EL_BUG_PERCENT_G_C;
1219  g_bug_percent_c[tov_OOats] = EL_BUG_PERCENT_C;
1220  g_bug_percent_c[tov_Oats] = EL_BUG_PERCENT_C;
1221  g_bug_percent_c[ tov_FieldPeas ] = EL_BUG_PERCENT_C;
1222  g_bug_percent_c[ tov_BroadBeans ] = EL_BUG_PERCENT_C;
1223  g_bug_percent_c[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_C;
1224  g_bug_percent_c[tov_SeedGrass1] = EL_BUG_PERCENT_G_C;
1225  g_bug_percent_c[tov_SeedGrass2] = EL_BUG_PERCENT_G_C;
1226  g_bug_percent_c[tov_OSeedGrass1] = EL_BUG_PERCENT_G_C;
1227  g_bug_percent_c[tov_OSeedGrass2] = EL_BUG_PERCENT_G_C;
1228  g_bug_percent_c[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_G_C;
1229  g_bug_percent_c[tov_Setaside] = EL_BUG_PERCENT_Edges_C;
1230  g_bug_percent_c[tov_OSetaside] = EL_BUG_PERCENT_Edges_C;
1231  g_bug_percent_c[tov_PermanentSetaside] = EL_BUG_PERCENT_Edges_C;
1232  g_bug_percent_c[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_G_C;
1233  g_bug_percent_c[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_G_C;
1234  g_bug_percent_c[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_G_C;
1235  g_bug_percent_c[tov_FodderBeet] = EL_BUG_PERCENT_C;
1236  g_bug_percent_c[tov_SugarBeet] = EL_BUG_PERCENT_C;
1237  g_bug_percent_c[tov_OFodderBeet] = EL_BUG_PERCENT_C;
1238  g_bug_percent_c[tov_NaturalGrass] = EL_BUG_PERCENT_Edges_C;
1239  g_bug_percent_c[tov_None] = EL_BUG_PERCENT_C;
1240  g_bug_percent_c[tov_NoGrowth] = EL_BUG_PERCENT_C;
1241  g_bug_percent_c[tov_OFirstYearDanger] = EL_BUG_PERCENT_C;
1242  g_bug_percent_c[tov_Triticale] = EL_BUG_PERCENT_C;
1243  g_bug_percent_c[tov_OTriticale] = EL_BUG_PERCENT_C;
1244  g_bug_percent_c[tov_WWheatPControl] = EL_BUG_PERCENT_WW_C;
1245  g_bug_percent_c[tov_WWheatPToxicControl] = EL_BUG_PERCENT_WW_C;
1246  g_bug_percent_c[tov_WWheatPTreatment] = EL_BUG_PERCENT_WW_C;
1247  g_bug_percent_c[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_WW_C;
1248  g_bug_percent_c[tov_WinterWheatStrigling] = EL_BUG_PERCENT_WW_C;
1249  g_bug_percent_c[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_WW_C;
1250  g_bug_percent_c[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_WW_C;
1251  g_bug_percent_c[tov_SpringBarleyCloverGrassStrigling] = EL_BUG_PERCENT_SB_C;
1252  g_bug_percent_c[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_SB_C;
1253  g_bug_percent_c[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_SB_C;
1254  g_bug_percent_c[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_SB_C;
1255  g_bug_percent_c[tov_MaizeStrigling] = EL_BUG_PERCENT_C;
1256  g_bug_percent_c[tov_WinterRapeStrigling] = EL_BUG_PERCENT_WR_C;
1257  g_bug_percent_c[tov_WinterRyeStrigling] = EL_BUG_PERCENT_WW_C;
1258  g_bug_percent_c[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_C;
1259  g_bug_percent_c[tov_FieldPeasStrigling] = EL_BUG_PERCENT_C;
1260  g_bug_percent_c[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_SB_C;
1261  g_bug_percent_c[tov_YoungForest] = EL_BUG_PERCENT_Edges_C;
1262  g_bug_percent_c[tov_Wasteland] = EL_BUG_PERCENT_Edges_C;
1263  g_bug_percent_a[tov_WaterBufferZone] = EL_BUG_PERCENT_Edges_C;
1264 
1265  g_bug_percent_c[tov_PLWinterWheat] = EL_BUG_PERCENT_WW_C;
1266  g_bug_percent_c[tov_PLWinterRape] = EL_BUG_PERCENT_WR_C;
1267  g_bug_percent_c[tov_PLWinterTriticale] = EL_BUG_PERCENT_C;
1268  g_bug_percent_c[tov_PLSpringBarley] = EL_BUG_PERCENT_SB_C;
1269  g_bug_percent_c[tov_PLWinterBarley] = EL_BUG_PERCENT_C;
1270  g_bug_percent_c[tov_PLWinterRye] = EL_BUG_PERCENT_WRy_C;
1271  g_bug_percent_c[tov_PLSpringWheat] = EL_BUG_PERCENT_C;
1272  g_bug_percent_c[tov_PLMaize] = EL_BUG_PERCENT_C;
1273  g_bug_percent_c[tov_PLMaizeSilage] = EL_BUG_PERCENT_C;
1274  g_bug_percent_c[tov_PLPotatoes] = EL_BUG_PERCENT_C;
1275  g_bug_percent_c[tov_PLBeet] = EL_BUG_PERCENT_C;
1276  g_bug_percent_c[tov_PLFodderLucerne1] = EL_BUG_PERCENT_G_C;
1277  g_bug_percent_c[tov_PLFodderLucerne2] = EL_BUG_PERCENT_G_C;
1278  g_bug_percent_c[tov_PLCarrots] = EL_BUG_PERCENT_C;
1279  g_bug_percent_c[tov_PLSpringBarleySpr] = EL_BUG_PERCENT_SB_C;
1280  g_bug_percent_c[tov_PLWinterWheatLate] = EL_BUG_PERCENT_WW_C;
1281  g_bug_percent_c[tov_PLBeetSpr] = EL_BUG_PERCENT_C;
1282  g_bug_percent_c[tov_PLBeans] = EL_BUG_PERCENT_C;
1283 
1284  g_bug_percent_c[tov_NLWinterWheat] = EL_BUG_PERCENT_WW_C;
1285  g_bug_percent_c[tov_NLSpringBarley] = EL_BUG_PERCENT_SB_C;
1286  g_bug_percent_c[tov_NLMaize] = EL_BUG_PERCENT_C;
1287  g_bug_percent_c[tov_NLPotatoes] = EL_BUG_PERCENT_C;
1288  g_bug_percent_c[tov_NLBeet] = EL_BUG_PERCENT_C;
1289  g_bug_percent_c[tov_NLCarrots] = EL_BUG_PERCENT_C;
1290  g_bug_percent_c[tov_NLCabbage] = EL_BUG_PERCENT_C;
1291  g_bug_percent_c[tov_NLTulips] = EL_BUG_PERCENT_C;
1292  g_bug_percent_c[tov_NLGrassGrazed1] = EL_BUG_PERCENT_G_C;
1293  g_bug_percent_c[tov_NLGrassGrazed1Spring] = EL_BUG_PERCENT_G_C;
1294  g_bug_percent_c[tov_NLGrassGrazed2] = EL_BUG_PERCENT_G_C;
1295  g_bug_percent_c[tov_NLGrassGrazedLast] = EL_BUG_PERCENT_G_C;
1296  g_bug_percent_c[tov_NLPermanentGrassGrazed] = EL_BUG_PERCENT_G_C;
1297  g_bug_percent_c[tov_NLSpringBarleySpring] = EL_BUG_PERCENT_SB_C;
1298  g_bug_percent_c[tov_NLMaizeSpring] = EL_BUG_PERCENT_C;
1299  g_bug_percent_c[tov_NLPotatoesSpring] = EL_BUG_PERCENT_C;
1300  g_bug_percent_c[tov_NLBeetSpring] = EL_BUG_PERCENT_C;
1301  g_bug_percent_c[tov_NLCarrotsSpring] = EL_BUG_PERCENT_C;
1302  g_bug_percent_c[tov_NLCabbageSpring] = EL_BUG_PERCENT_C;
1303  g_bug_percent_c[tov_NLCatchPeaCrop] = EL_BUG_PERCENT_C;
1304 
1305  g_bug_percent_d[tov_Carrots] = EL_BUG_PERCENT_D;
1306  g_bug_percent_d[tov_Maize] = EL_BUG_PERCENT_D;
1307  g_bug_percent_d[tov_MaizeSilage] = EL_BUG_PERCENT_D;
1308  g_bug_percent_d[tov_OMaizeSilage] = EL_BUG_PERCENT_D;
1309  g_bug_percent_d[tov_OCarrots] = EL_BUG_PERCENT_D;
1310  g_bug_percent_d[tov_Potatoes] = EL_BUG_PERCENT_D;
1311  g_bug_percent_d[tov_OPotatoes] = EL_BUG_PERCENT_D;
1312  g_bug_percent_d[tov_FodderGrass] = EL_BUG_PERCENT_D;
1313  g_bug_percent_d[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_D;
1314  g_bug_percent_d[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_D;
1315  g_bug_percent_d[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_D;
1316  g_bug_percent_d[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_D;
1317  g_bug_percent_d[tov_SpringBarley] = EL_BUG_PERCENT_D;
1318  g_bug_percent_d[tov_SpringBarleySpr] = EL_BUG_PERCENT_D;
1319  g_bug_percent_d[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_D;
1320  g_bug_percent_d[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_D;
1321  g_bug_percent_d[tov_WinterWheat] = EL_BUG_PERCENT_D;
1322  g_bug_percent_d[tov_WinterWheatShort] = EL_BUG_PERCENT_D;
1323  g_bug_percent_d[tov_SpringBarleySilage] = EL_BUG_PERCENT_D;
1324  g_bug_percent_d[tov_SpringBarleySeed] = EL_BUG_PERCENT_D;
1325  g_bug_percent_d[tov_OGrazingPigs] = EL_BUG_PERCENT_D;
1326  g_bug_percent_d[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_D;
1327  g_bug_percent_d[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_D;
1328  g_bug_percent_d[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_D;
1329  g_bug_percent_d[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_D;
1330  g_bug_percent_d[tov_OSBarleySilage] = EL_BUG_PERCENT_D;
1331  g_bug_percent_d[tov_OSpringBarley] = EL_BUG_PERCENT_D;
1332  g_bug_percent_d[tov_OSpringBarleyExt] = EL_BUG_PERCENT_D;
1333  g_bug_percent_d[ tov_OWinterWheat ] = EL_BUG_PERCENT_D;
1334  g_bug_percent_d[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_D;
1335  g_bug_percent_d[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_D;
1336  g_bug_percent_d[tov_WinterRape] = EL_BUG_PERCENT_D;
1337  g_bug_percent_d[tov_OWinterRape] = EL_BUG_PERCENT_D;
1338  g_bug_percent_d[tov_OWinterRye] = EL_BUG_PERCENT_D;
1339  g_bug_percent_d[tov_OWinterBarley] = EL_BUG_PERCENT_D;
1340  g_bug_percent_d[tov_OWinterBarleyExt] = EL_BUG_PERCENT_D;
1341  g_bug_percent_d[tov_WinterBarley] = EL_BUG_PERCENT_D;
1342  g_bug_percent_d[tov_WinterRye] = EL_BUG_PERCENT_D;
1343  g_bug_percent_d[tov_OFieldPeas] = EL_BUG_PERCENT_D;
1344  g_bug_percent_d[tov_OFieldPeasSilage] = EL_BUG_PERCENT_D;
1345  g_bug_percent_d[tov_OrchardCrop] = EL_BUG_PERCENT_D;
1346  g_bug_percent_d[tov_OOats] = EL_BUG_PERCENT_D;
1347  g_bug_percent_d[tov_Oats] = EL_BUG_PERCENT_D;
1348  g_bug_percent_d[ tov_BroadBeans ] = EL_BUG_PERCENT_D;
1349  g_bug_percent_d[ tov_FieldPeas ] = EL_BUG_PERCENT_D;
1350  g_bug_percent_d[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_D;
1351  g_bug_percent_d[tov_SeedGrass1] = EL_BUG_PERCENT_D;
1352  g_bug_percent_d[tov_SeedGrass2] = EL_BUG_PERCENT_D;
1353  g_bug_percent_d[tov_OSeedGrass1] = EL_BUG_PERCENT_D;
1354  g_bug_percent_d[tov_OSeedGrass2] = EL_BUG_PERCENT_D;
1355  g_bug_percent_d[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_D;
1356  g_bug_percent_d[tov_Setaside] = EL_BUG_PERCENT_D;
1357  g_bug_percent_d[tov_OSetaside] = EL_BUG_PERCENT_D;
1358  g_bug_percent_d[tov_PermanentSetaside] = EL_BUG_PERCENT_D;
1359  g_bug_percent_d[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_D;
1360  g_bug_percent_d[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_D;
1361  g_bug_percent_d[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_D;
1362  g_bug_percent_d[tov_FodderBeet] = EL_BUG_PERCENT_D;
1363  g_bug_percent_d[tov_SugarBeet] = EL_BUG_PERCENT_D;
1364  g_bug_percent_d[tov_OFodderBeet] = EL_BUG_PERCENT_D;
1365  g_bug_percent_d[tov_NaturalGrass] = EL_BUG_PERCENT_D;
1366  g_bug_percent_d[tov_None] = EL_BUG_PERCENT_D;
1367  g_bug_percent_d[tov_NoGrowth] = EL_BUG_PERCENT_D;
1368  g_bug_percent_d[tov_OFirstYearDanger] = EL_BUG_PERCENT_D;
1369  g_bug_percent_d[tov_Triticale] = EL_BUG_PERCENT_D;
1370  g_bug_percent_d[tov_OTriticale] = EL_BUG_PERCENT_D;
1371  g_bug_percent_d[tov_WWheatPControl] = EL_BUG_PERCENT_D;
1372  g_bug_percent_d[tov_WWheatPToxicControl] = EL_BUG_PERCENT_D;
1373  g_bug_percent_d[tov_WWheatPTreatment] = EL_BUG_PERCENT_D;
1374  g_bug_percent_d[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_D;
1375  g_bug_percent_d[tov_WinterWheatStrigling] = EL_BUG_PERCENT_D;
1376  g_bug_percent_d[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_D;
1377  g_bug_percent_d[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_D;
1378  g_bug_percent_d[tov_SpringBarleyCloverGrassStrigling] = -EL_BUG_PERCENT_D;
1379  g_bug_percent_d[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_D;
1380  g_bug_percent_d[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_D;
1381  g_bug_percent_d[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_D;
1382  g_bug_percent_d[tov_MaizeStrigling] = EL_BUG_PERCENT_D;
1383  g_bug_percent_d[tov_WinterRapeStrigling] = EL_BUG_PERCENT_D;
1384  g_bug_percent_d[tov_WinterRyeStrigling] = EL_BUG_PERCENT_D;
1385  g_bug_percent_d[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_D;
1386  g_bug_percent_d[tov_FieldPeasStrigling] = EL_BUG_PERCENT_D;
1387  g_bug_percent_d[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_D;
1388  g_bug_percent_d[tov_YoungForest] = EL_BUG_PERCENT_D;
1389  g_bug_percent_d[tov_Wasteland] = EL_BUG_PERCENT_D;
1390  g_bug_percent_a[tov_WaterBufferZone] = EL_BUG_PERCENT_D;
1391 
1392  g_bug_percent_d[tov_PLWinterWheat] = EL_BUG_PERCENT_D;
1393  g_bug_percent_d[tov_PLWinterRape] = EL_BUG_PERCENT_D;
1394  g_bug_percent_d[tov_PLWinterTriticale] = EL_BUG_PERCENT_D;
1395  g_bug_percent_d[tov_PLSpringBarley] = EL_BUG_PERCENT_D;
1396  g_bug_percent_d[tov_PLWinterBarley] = EL_BUG_PERCENT_D;
1397  g_bug_percent_d[tov_PLWinterRye] = EL_BUG_PERCENT_D;
1398  g_bug_percent_d[tov_PLSpringWheat] = EL_BUG_PERCENT_D;
1399  g_bug_percent_d[tov_PLMaize] = EL_BUG_PERCENT_D;
1400  g_bug_percent_d[tov_PLMaizeSilage] = EL_BUG_PERCENT_D;
1401  g_bug_percent_d[tov_PLPotatoes] = EL_BUG_PERCENT_D;
1402  g_bug_percent_d[tov_PLBeet] = EL_BUG_PERCENT_D;
1403  g_bug_percent_d[tov_PLFodderLucerne1] = EL_BUG_PERCENT_D;
1404  g_bug_percent_d[tov_PLFodderLucerne2] = EL_BUG_PERCENT_D;
1405  g_bug_percent_d[tov_PLCarrots] = EL_BUG_PERCENT_D;
1406  g_bug_percent_d[tov_PLSpringBarleySpr] = EL_BUG_PERCENT_D;
1407  g_bug_percent_d[tov_PLWinterWheatLate] = EL_BUG_PERCENT_D;
1408  g_bug_percent_d[tov_PLBeetSpr] = EL_BUG_PERCENT_D;
1409  g_bug_percent_d[tov_PLBeans] = EL_BUG_PERCENT_D;
1410 
1411  g_bug_percent_d[tov_NLWinterWheat] = EL_BUG_PERCENT_D;
1412  g_bug_percent_d[tov_NLSpringBarley] = EL_BUG_PERCENT_D;
1413  g_bug_percent_d[tov_NLMaize] = EL_BUG_PERCENT_D;
1414  g_bug_percent_d[tov_NLPotatoes] = EL_BUG_PERCENT_D;
1415  g_bug_percent_d[tov_NLBeet] = EL_BUG_PERCENT_D;
1416  g_bug_percent_d[tov_NLCarrots] = EL_BUG_PERCENT_D;
1417  g_bug_percent_d[tov_NLCabbage] = EL_BUG_PERCENT_D;
1418  g_bug_percent_d[tov_NLTulips] = EL_BUG_PERCENT_D;
1419  g_bug_percent_d[tov_NLGrassGrazed1] = EL_BUG_PERCENT_D;
1420  g_bug_percent_d[tov_NLGrassGrazed1Spring] = EL_BUG_PERCENT_D;
1421  g_bug_percent_d[tov_NLGrassGrazed2] = EL_BUG_PERCENT_D;
1422  g_bug_percent_d[tov_NLGrassGrazedLast] = EL_BUG_PERCENT_D;
1423  g_bug_percent_d[tov_NLPermanentGrassGrazed] = EL_BUG_PERCENT_D;
1424  g_bug_percent_d[tov_NLSpringBarleySpring] = EL_BUG_PERCENT_D;
1425  g_bug_percent_d[tov_NLMaizeSpring] = EL_BUG_PERCENT_D;
1426  g_bug_percent_d[tov_NLPotatoesSpring] = EL_BUG_PERCENT_D;
1427  g_bug_percent_d[tov_NLBeetSpring] = EL_BUG_PERCENT_D;
1428  g_bug_percent_d[tov_NLCarrotsSpring] = EL_BUG_PERCENT_D;
1429  g_bug_percent_d[tov_NLCabbageSpring] = EL_BUG_PERCENT_D;
1430  g_bug_percent_d[tov_NLCatchPeaCrop] = EL_BUG_PERCENT_D;
1431 
1432 
1433  //05.03.13 - modifications for farmer decision making, AM
1436  m_crop_index = 0;
1437 }

References Clean_CropDataStorage(), EL_BUG_PERCENT_A, EL_BUG_PERCENT_B, EL_BUG_PERCENT_C, EL_BUG_PERCENT_D, EL_BUG_PERCENT_Edges_A, EL_BUG_PERCENT_Edges_B, EL_BUG_PERCENT_Edges_C, EL_BUG_PERCENT_G_A, EL_BUG_PERCENT_G_B, EL_BUG_PERCENT_G_C, EL_BUG_PERCENT_SB_A, EL_BUG_PERCENT_SB_B, EL_BUG_PERCENT_SB_C, EL_BUG_PERCENT_WR_A, EL_BUG_PERCENT_WR_B, EL_BUG_PERCENT_WR_C, EL_BUG_PERCENT_WRy_A, EL_BUG_PERCENT_WRy_B, EL_BUG_PERCENT_WRy_C, EL_BUG_PERCENT_WW_A, EL_BUG_PERCENT_WW_B, EL_BUG_PERCENT_WW_C, g_biomass_scale, g_bug_percent_a, g_bug_percent_b, g_bug_percent_c, g_bug_percent_d, g_weed_percent, l_el_read_bug_percentage_file(), m_crop_index, m_curve_num, LE::m_ddegs, m_digestability, m_force_growth, m_forced_phase_shift, m_growth_scaler, m_insect_pop, m_LAgreen, m_LAtotal, m_newgrowthsum, m_newoldgrowthindex, m_oldnewgrowth, m_total_biomass, m_total_biomass_old, m_veg_biomass, m_veg_cover, m_veg_height, LE::m_vegddegs, m_vege_type, m_weed_biomass, m_weed_curve_num, LE::m_yddegs, SetGrowthPhase(), and SetVegPatchy().

◆ ~VegElement()

virtual VegElement::~VegElement ( void  )
inlinevirtual
571 { ; };

Member Function Documentation

◆ Add_missed_fi_app()

void VegElement::Add_missed_fi_app ( )
inline

◆ Add_missed_herb_app()

void VegElement::Add_missed_herb_app ( )
inline

◆ Add_no_fi_app()

void VegElement::Add_no_fi_app ( )
inline

◆ Add_no_herb_app()

void VegElement::Add_no_herb_app ( )
inline

◆ CalcGooseForageResources()

void VegElement::CalcGooseForageResources ( )
protected

Calculates spilled grain and grazing forage resources for geese.

The 1.0325 is a quick fix to account for higher energy intake on winter cereal - Based on Therkildsen & Madsen 2000 Energetics of feeding...

or potentially it is a grazable grass

1806 {
1807  // For geese that eat spilled grain and maize we need to remove some of this daily (loss to other things than geese)
1808  // Get the Julian day
1809  int day = g_date->DayInYear();
1810  double rate;
1811  if ((day > March) && (day < July)) rate = cfg_goose_GrainDecayRateSpring.value();
1812  else rate = cfg_goose_GrainDecayRateWinter.value();
1813  m_birdseedforage *= rate;
1814  if (m_birdseedforage < 0.01) m_birdseedforage = 0.0;
1815  m_birdmaizeforage *= rate;
1816  if (m_birdmaizeforage < 0.01) m_birdmaizeforage = 0.0;
1817  // We also need to calculate non-grain forage for geese
1818  if (IsCereal()) {
1819  //if (m_green_biomass > 0.5) //Testing if this could be a suitable fix for the cereals
1820  //{
1821  for (unsigned i = 0; i < gs_foobar; i++) {
1824  }
1825  //}
1826  //else for (unsigned i = 0; i < gs_foobar; i++) {
1827  // m_goosegrazingforage[i] = 0.0;
1828  //}
1829  //m_goosegrazingforage[gs_foobar] = 1; // Is cereal
1830  }
1832  else {
1833  if (IsGooseGrass()) {
1834  for (unsigned i = 0; i < gs_foobar; i++) {
1835  //m_goosegrazingforage[ i ] = 0.0;
1837  }
1838  }
1839  else for (unsigned i = 0; i < gs_foobar; i++) m_goosegrazingforage[i] = 0.0;
1840  }
1841 }

References cfg_goose_GrainDecayRateSpring, cfg_goose_GrainDecayRateWinter, cfg_goose_grass_to_winter_cereal_scaler, g_landscape_p, IsCereal(), IsGooseGrass(), July, LE::m_birdmaizeforage, LE::m_birdseedforage, LE::m_goosegrazingforage, m_veg_height, March, and Landscape::SupplyGooseGrazingForageH().

Referenced by RecalculateBugsNStuff().

◆ Clean_CropDataStorage()

void VegElement::Clean_CropDataStorage ( int  index)

Sets the values of a struct in an array m_CropDataStorage (at a given index) to default values.

2129  {
2130  //05.03.13 AM
2132 
2133  m_CropDataStorage[index].taken = false;
2134  m_CropDataStorage[index].tov_type = tov_Undefined;
2136  m_CropDataStorage[index].harvested = false;
2137  m_CropDataStorage[index].area = 0;
2138  m_CropDataStorage[index].no_herb_app = 0;
2140  m_CropDataStorage[index].no_fi_app = 0;
2141  m_CropDataStorage[index].missed_fi_app = 0;
2142 }

References CropActualValues::area, CropActualValues::biomass_at_harvest, CropActualValues::harvested, m_CropDataStorage, CropActualValues::missed_fi_app, CropActualValues::missed_herb_app, CropActualValues::no_fi_app, CropActualValues::no_herb_app, CropActualValues::taken, and CropActualValues::tov_type.

Referenced by VegElement().

◆ DoDevelopment()

void VegElement::DoDevelopment ( void  )
virtual

Nest grows weeds proportionally to day degrees and using the weed curve if no herbicide effect before calling RecalculateBugsNStuff to caculate insect biomass, cover, digestability etc..

Here we need to set today's goose numbers to zero in case they are not written by the goose population manager (the normal situation)

Reimplemented in MownGrass, OrchardBand, Orchard, ForestElement, UnsprayedFieldMargin, Scrub, GreenElement, RoadsideSlope, WaterBufferZone, RoadsideVerge, BeetleBank, HedgeBank, Hedges, Field, Wasteland, NaturalGrassWet, and NaturalGrassDry.

2004  {
2005  if (!m_force_growth) {
2006  //** First does the day degree calculations */
2007  m_yddegs = m_ddegs;
2008  m_ddegs = g_weather->GetDDDegs(g_date->Date());
2009  if (m_vegddegs != -1.0) m_vegddegs += m_ddegs; // Sum up the vegetation day degrees since sowing
2010  m_ddegs += m_yddegs; // and sum up the phase ddegs
2011 
2012  double dLAG = g_crops->GetLAgreenDiffScaled(m_ddegs, m_yddegs, m_curve_num, m_veg_phase, m_growth_scaler);
2013  double dLAT = g_crops->GetLAtotalDiffScaled(m_ddegs, m_yddegs, m_curve_num, m_veg_phase, m_growth_scaler);
2014  double dHgt = g_crops->GetHeightDiffScaled(m_ddegs, m_yddegs, m_curve_num, m_veg_phase, m_growth_scaler);
2015 
2016  m_LAgreen += dLAG;
2017  if (m_LAgreen < 0.0)
2018  m_LAgreen = 0.0;
2019  m_LAtotal += dLAT;
2020  if (m_LAtotal < 0.0)
2021  m_LAtotal = 0.0;
2022  int fintensity = 0;
2023 #ifdef __EXTSHRINKSHEIGHT
2024  if (this->m_owner_index != -1) { // This only works because only crops and similar structures have owners
2025  fintensity = g_landscape_p->SupplyFarmIntensity(m_poly);
2026  if (fintensity == 1) {
2027  // 1 means extensive, so reduce vegetation height change by 10%
2028  dHgt *= 0.9;
2029  }
2030  }
2031 #endif
2032  m_veg_height += dHgt;
2033  if (m_veg_height < 0.0) m_veg_height = 0.0;
2035  if (m_herbicidedelay == 0) {
2036  double dWee = g_crops->GetLAtotalDiff(m_ddegs, m_yddegs, m_weed_curve_num, m_veg_phase);
2037  m_weed_biomass += dWee * cfg_ele_weedscaling.value()* (1 + fintensity);
2038  }
2039  if (m_weed_biomass < 0.0) m_weed_biomass = 0.0;
2040  }
2041  else {
2043  }
2046  ResetGeese();
2047 }

References cfg_ele_weedscaling(), ForceGrowthDevelopment(), g_landscape_p, m_curve_num, LE::m_ddegs, m_force_growth, m_growth_scaler, LE::m_herbicidedelay, m_LAgreen, m_LAtotal, LE::m_owner_index, LE::m_poly, m_veg_height, m_veg_phase, LE::m_vegddegs, m_weed_biomass, m_weed_curve_num, LE::m_yddegs, RecalculateBugsNStuff(), ResetGeese(), and Landscape::SupplyFarmIntensity().

Referenced by Field::DoDevelopment(), Hedges::DoDevelopment(), HedgeBank::DoDevelopment(), BeetleBank::DoDevelopment(), RoadsideVerge::DoDevelopment(), WaterBufferZone::DoDevelopment(), GreenElement::DoDevelopment(), Scrub::DoDevelopment(), NaturalGrassDry::DoDevelopment(), NaturalGrassWet::DoDevelopment(), Wasteland::DoDevelopment(), ForestElement::DoDevelopment(), Orchard::DoDevelopment(), OrchardBand::DoDevelopment(), and MownGrass::DoDevelopment().

◆ ForceGrowthDevelopment()

void VegElement::ForceGrowthDevelopment ( void  )
virtual

Reimplemented from LE.

1976  {
1977  //if ( m_herbicidedelay == 0 ) m_weed_biomass += m_force_Weed; // ***CJT*** 12th Sept 2008 - rather than force growth, weeds might be allowed to grow on their own
1981 
1982  if (m_LAgreen < 0) m_LAgreen = 0;
1983  if (m_LAtotal < 0) m_LAtotal = 0;
1984  if (m_veg_height < 0) m_veg_height = 0;
1985 }

References m_force_LAgreen, m_force_LAtotal, m_force_veg_height, m_LAgreen, m_LAtotal, and m_veg_height.

Referenced by DoDevelopment().

◆ ForceGrowthInitialize()

void VegElement::ForceGrowthInitialize ( void  )
virtual

Reimplemented from LE.

1930  {
1931  double LAgreen_target;
1932  double Weed_target;
1933  double LAtotal_target;
1934  double veg_height_target;
1935  int next_phase, daysleft;
1936 
1937  // Figure out what our target phase is.
1938  if ( g_date->DayInYear() < g_date->DayInYear( 3, 1 ) ) {
1939  daysleft = g_date->DayInYear( 1, 3 ) - g_date->DayInYear();
1940  next_phase = marchfirst;
1941  } else if ( g_date->DayInYear() >= g_date->DayInYear( 1, 11 ) ) {
1942  daysleft = 366 - g_date->DayInYear(); // Adjusted from 365 to prevent occaisional negative values
1943  next_phase = janfirst;
1944  } else {
1945  return;
1946  }
1947  if ( daysleft <= 0 )
1948  // Uh! Oh! This really shouldn't happen.
1949  return;
1950 
1951  if ( !g_crops->StartValid( m_curve_num, next_phase ) ) {
1952  // If no valid starting values for next phase, then
1953  // preinitialize the random starting values! Ie. make the
1954  // choice here and then do not choose another set come
1955  // next phase transition, but use the values we already
1956  // got at that point in time.
1957  RandomVegStartValues( & LAtotal_target, & LAgreen_target, & veg_height_target, & Weed_target );
1958  }
1959  else {
1960  //add +/- 20% variation
1961  double vari = (g_rand_uni() * 0.4) + 0.8;
1962  Weed_target = g_crops->GetStartValue(m_weed_curve_num, next_phase, 0) * vari;
1963  LAgreen_target = g_crops->GetStartValue(m_curve_num, next_phase, 0) * vari;
1964  LAtotal_target = g_crops->GetStartValue(m_curve_num, next_phase, 1) * vari;
1965  veg_height_target = g_crops->GetStartValue(m_curve_num, next_phase, 2) * vari;
1966  }
1967 
1968  m_force_growth = true;
1969  m_force_Weed = ( Weed_target - m_weed_biomass ) / ( double )daysleft;
1970  m_force_LAgreen = ( LAgreen_target - m_LAgreen ) / ( double )daysleft;
1971  m_force_LAtotal = ( LAtotal_target - m_LAtotal ) / ( double )daysleft;
1972  m_force_veg_height = ( veg_height_target - m_veg_height ) / ( double )daysleft;
1973 }

References g_rand_uni, m_curve_num, m_force_growth, m_force_LAgreen, m_force_LAtotal, m_force_veg_height, m_force_Weed, m_LAgreen, m_LAtotal, m_veg_height, m_weed_biomass, m_weed_curve_num, and RandomVegStartValues().

Referenced by ForceGrowthSpringTest(), and ForceGrowthTest().

◆ ForceGrowthSpringTest()

void VegElement::ForceGrowthSpringTest ( void  )
protected
1915  {
1916  // Check if there are any positive growth differentials in the curve
1917  // for the first two months of the year. Do nothing if there is.
1918  // If we have any positive growth then no need to force either
1919  if (g_crops->GetLAgreenDiff(90000.0, 0.0, m_curve_num, janfirst) > 0.001
1920  || g_crops->GetLAtotalDiff(90000.0, 0.0, m_curve_num, janfirst) > 0.001
1921  || g_crops->GetHeightDiff(90000.0, 0.0, m_curve_num, janfirst) > 0.001) {
1922  return;
1923  }
1924  // No growth, force it.
1926 }

References ForceGrowthInitialize(), and m_curve_num.

Referenced by SetGrowthPhase().

◆ ForceGrowthTest()

void VegElement::ForceGrowthTest ( void  )
virtual

Reimplemented from LE.

1904  {
1905  // Called whenever the farmer does something 'destructive' to a
1906  // field, that reduced the vegetaion.
1907  if ( g_date->DayInYear() >= g_date->DayInYear( 1, 11 )
1908  || ( g_date->DayInYear() < g_date->DayInYear( 1, 3 ) && m_force_growth ) ) {
1910  }
1911 }

References ForceGrowthInitialize(), and m_force_growth.

Referenced by ReduceVeg(), ReduceVeg_Extended(), and ZeroVeg().

◆ Get_CropDataStorage()

CropActualValues VegElement::Get_CropDataStorage ( int  index)
inline
663 {return m_CropDataStorage[index];};

References m_CropDataStorage.

◆ Get_harvested()

bool VegElement::Get_harvested ( int  index)
inline

◆ Get_taken()

bool VegElement::Get_taken ( int  index)
inline
638 {return m_CropDataStorage[index].taken;};

References m_CropDataStorage, and CropActualValues::taken.

◆ GetDeadBiomass()

virtual double VegElement::GetDeadBiomass ( void  )
inlinevirtual

Reimplemented from LE.

579 { return m_dead_biomass; }

References m_dead_biomass.

◆ GetDigestability()

virtual double VegElement::GetDigestability ( void  )
inlinevirtual
573 { return m_digestability; }

References m_digestability.

◆ GetGreenBiomass()

virtual double VegElement::GetGreenBiomass ( void  )
inlinevirtual

Reimplemented from LE.

580 { return m_green_biomass; }

References m_green_biomass.

◆ GetInsectPop()

virtual double VegElement::GetInsectPop ( void  )
inlinevirtual

Reimplemented from LE.

586 { return m_insect_pop; }

References m_insect_pop.

◆ GetLAGreen()

virtual double VegElement::GetLAGreen ( void  )
inlinevirtual

Reimplemented from LE.

574 { return m_LAgreen; }

References m_LAgreen.

◆ GetLATotal()

virtual double VegElement::GetLATotal ( void  )
inlinevirtual

Reimplemented from LE.

575 { return m_LAtotal; }

References m_LAtotal.

◆ GetSkScrapes()

virtual bool VegElement::GetSkScrapes ( void  )
inlinevirtual
583 { return m_skylarkscrapes; }

References LE::m_skylarkscrapes.

◆ GetVegBiomass()

virtual double VegElement::GetVegBiomass ( void  )
inlinevirtual

Reimplemented from LE.

578 { return m_veg_biomass; }

References m_veg_biomass.

◆ GetVegCover()

virtual double VegElement::GetVegCover ( void  )
inlinevirtual
576 { return m_veg_cover; }

References m_veg_cover.

◆ GetVegDensity()

virtual int VegElement::GetVegDensity ( void  )
inlinevirtual
582 { return m_veg_density; }

References m_veg_density.

◆ GetVegHeight()

virtual double VegElement::GetVegHeight ( void  )
inlinevirtual
577 { return m_veg_height; }

References m_veg_height.

◆ GetVegPatchy()

virtual bool VegElement::GetVegPatchy ( void  )
inlinevirtual
584 { return m_veg_patchy; }

References m_veg_patchy.

◆ GetVegPhase()

virtual int VegElement::GetVegPhase ( void  )
inlinevirtual
673 { return m_veg_phase; }

References m_veg_phase.

◆ GetVegType()

virtual TTypesOfVegetation VegElement::GetVegType ( void  )
inlinevirtual
588 { return m_vege_type; }

References m_vege_type.

◆ GetWeedBiomass()

virtual double VegElement::GetWeedBiomass ( void  )
inlinevirtual

Reimplemented from LE.

581 { return m_weed_biomass; }

References m_weed_biomass.

◆ GrazeVegetation()

void VegElement::GrazeVegetation ( double  a_grams,
bool  a_force 
)
virtual

/brief Reduce the total vegetation biomass as a result of grazing per m2

Used to calculate the change in vegetation height and biomass as a result of grazing. Input parameter is the change in wet biomass/m2. The problem is to convert this into changes in LAtotal, LAgreen and height. We have an area, biomass, total biomass, height and density. If biomass is missing we need to change height and biomass before continuing and and do something with LA_total and LA_Green. Some assumptions: 1 - The grazing takes all LA equally 2 - That biomass is evenly distributed 3 - That LA is proportional to biomass in some way, so LA is also evenly distributed 4 - That we can use the current grazing pressure to alter a_reduc

Reimplemented from LE.

2062 {
2074  if (!a_force) a_reduc *= m_default_grazing_level;
2075  if (a_reduc >= m_veg_biomass) return;
2076  double propreduc = 1.0 - (a_reduc / m_veg_biomass);
2077  m_veg_height *= propreduc;
2078  m_weed_biomass *= propreduc;
2079  m_veg_biomass -= a_reduc;
2080  // Need to do something with the LA too -
2081  m_LAgreen *= propreduc;
2082  m_LAtotal *= propreduc;
2083  m_oldLAtotal = m_LAtotal; // this stops double reduction of biomass later in RecalculateBugsNStuff();
2084 }

References LE::m_default_grazing_level, m_LAgreen, m_LAtotal, m_oldLAtotal, m_veg_biomass, m_veg_height, and m_weed_biomass.

Referenced by GrazeVegetationTotal().

◆ GrazeVegetationTotal()

void VegElement::GrazeVegetationTotal ( double  a_grams)
virtual

/brief Reduce the total vegetation biomass as a result of grazing per polygon

Reimplemented from LE.

2057 {
2058  GrazeVegetation( a_grams/m_area, true );
2059 }

References GrazeVegetation(), and LE::m_area.

◆ Insecticide()

virtual void VegElement::Insecticide ( double  a_fraction)
inlinevirtual

Reimplemented from LE.

590  {
591  m_insect_pop *= a_fraction;
593  }

References LE::m_days_since_insecticide_spray, and m_insect_pop.

◆ InsectMortality()

void VegElement::InsectMortality ( double  a_fraction)
virtual

Reimplemented from LE.

2206  {
2207  m_insect_pop *= a_fraction;
2208 }

References m_insect_pop.

◆ IsCereal()

bool VegElement::IsCereal ( void  )
virtual
1468 {
1469  // NB Maize here is classed as cereal
1470  switch (m_lastsownvegtype)
1471  {
1472  case tov_SpringBarley:
1473  case tov_SpringBarleySpr:
1474  case tov_WinterBarley:
1475  case tov_SpringWheat:
1476  case tov_WinterWheat:
1477  case tov_WinterRye:
1478  case tov_Oats:
1479  case tov_Triticale:
1480  case tov_SpringBarleySeed:
1481  case tov_SpringBarleyStrigling:
1482  case tov_SpringBarleyStriglingSingle:
1483  case tov_SpringBarleyStriglingCulm:
1484  case tov_WinterWheatStrigling:
1485  case tov_WinterWheatStriglingSingle:
1486  case tov_WinterWheatStriglingCulm:
1487  case tov_OWinterBarley:
1488  case tov_OWinterBarleyExt:
1489  case tov_OWinterRye:
1490  case tov_SpringBarleyGrass:
1491  case tov_SpringBarleyCloverGrass:
1492  case tov_OBarleyPeaCloverGrass:
1493  case tov_SpringBarleyPeaCloverGrassStrigling:
1494  case tov_OSpringBarley:
1495  case tov_OSpringBarleyPigs:
1496  case tov_OWinterWheatUndersown:
1497  case tov_OWinterWheat:
1498  case tov_OOats:
1499  case tov_OTriticale:
1500  case tov_WWheatPControl:
1501  case tov_WWheatPToxicControl:
1502  case tov_WWheatPTreatment:
1503  case tov_AgroChemIndustryCereal:
1504  case tov_SpringBarleyPTreatment:
1505  case tov_SpringBarleySKManagement:
1506  case tov_OSpringBarleyExt:
1507  case tov_OSpringBarleyGrass:
1508  case tov_OSBarleySilage:
1509  case tov_OSpringBarleyClover:
1510  case tov_PLWinterWheat:
1511  case tov_PLWinterBarley:
1512  case tov_PLWinterRye:
1513  case tov_PLWinterTriticale:
1514  case tov_PLSpringWheat:
1515  case tov_PLSpringBarley:
1516  case tov_PLSpringBarleySpr:
1517  case tov_PLWinterWheatLate:
1518  case tov_PLMaize:
1519  case tov_PLMaizeSilage:
1520  case tov_Maize:
1521  case tov_MaizeSilage:
1522  case tov_MaizeStrigling:
1523  case tov_NLSpringBarley:
1524  case tov_NLWinterWheat:
1525  case tov_NLMaize:
1526  case tov_NLSpringBarleySpring:
1527  case tov_NLMaizeSpring:
1528  return true;
1529  default: // No matching code so is should not be cereal
1530  return false;
1531  }
1532 }

References LE::m_lastsownvegtype.

Referenced by CalcGooseForageResources().

◆ IsGooseGrass()

bool VegElement::IsGooseGrass ( )
inlinevirtual
1644  {
1645  switch (m_vege_type) {
1646  case tov_NaturalGrass:
1647  case tov_PermanentGrassGrazed:
1648  case tov_PermanentGrassLowYield:
1649  case tov_PermanentGrassTussocky:
1650  return true;
1651  default: break;
1652  }
1653  switch (m_lastsownvegtype) {
1654  case tov_SeedGrass1:
1655  case tov_SeedGrass2:
1656  case tov_OSeedGrass1:
1657  case tov_OSeedGrass2:
1658  case tov_CloverGrassGrazed1:
1659  case tov_CloverGrassGrazed2:
1660  case tov_OCloverGrassGrazed1:
1661  case tov_OCloverGrassGrazed2:
1662  case tov_FodderGrass:
1663  case tov_PLFodderLucerne1:
1664  case tov_PLFodderLucerne2:
1665  case tov_NLGrassGrazed1:
1666  case tov_NLGrassGrazed1Spring:
1667  case tov_NLGrassGrazed2:
1668  case tov_NLPermanentGrassGrazed:
1669  return true;
1670  default:
1671  return false;
1672  }
1673 
1674 }

References LE::m_lastsownvegtype, and m_vege_type.

Referenced by CalcGooseForageResources().

◆ IsGrass()

bool VegElement::IsGrass ( )
inlinevirtual
1611 {
1612  switch (m_vege_type)
1613  {
1614  case tov_NaturalGrass:
1615  case tov_PermanentGrassGrazed:
1616  case tov_PermanentGrassLowYield:
1617  case tov_PermanentGrassTussocky:
1618  case tov_PermanentSetaside:
1619  case tov_Setaside:
1620  case tov_SeedGrass1:
1621  case tov_SeedGrass2:
1622  case tov_OSeedGrass1:
1623  case tov_OSeedGrass2:
1624  case tov_CloverGrassGrazed1:
1625  case tov_CloverGrassGrazed2:
1626  case tov_OCloverGrassGrazed1:
1627  case tov_OCloverGrassGrazed2:
1628  case tov_OrchardCrop:
1629  case tov_YoungForest:
1630  case tov_FodderGrass:
1631  case tov_Heath:
1632  case tov_PLFodderLucerne1:
1633  case tov_PLFodderLucerne2:
1634  case tov_NLGrassGrazed1:
1635  case tov_NLGrassGrazed1Spring:
1636  case tov_NLGrassGrazed2:
1637  case tov_NLPermanentGrassGrazed:
1638  case tov_WaterBufferZone:
1639  return true;
1640  default: return false;
1641  }
1642 }

References m_vege_type.

◆ IsMaize()

bool VegElement::IsMaize ( void  )
virtual

Currently (18/03/2015) only used for goose foraging, so silage maize does not produce grain

1592 {
1594  switch (m_vege_type)
1595  {
1596  case tov_Maize:
1597  case tov_OMaizeSilage:
1598  case tov_MaizeSilage:
1599  case tov_PLMaize:
1600  case tov_PLMaizeSilage:
1601  case tov_NLMaize:
1602  case tov_NLMaizeSpring:
1603  return true;
1604  default: // No matching code so is should not be maize
1605  return false;
1606  }
1607 }

References m_vege_type.

◆ IsMatureCereal()

bool VegElement::IsMatureCereal ( void  )
virtual
1535 {
1536  switch (m_vege_type)
1537  {
1538  case tov_SpringBarley:
1539  case tov_SpringBarleySpr:
1540  case tov_WinterBarley:
1541  case tov_SpringWheat:
1542  case tov_WinterWheat:
1543  case tov_WinterRye:
1544  case tov_Oats:
1545  case tov_Triticale:
1546  case tov_SpringBarleySeed:
1547  case tov_SpringBarleyStrigling:
1548  case tov_SpringBarleyStriglingSingle:
1549  case tov_SpringBarleyStriglingCulm:
1550  case tov_WinterWheatStrigling:
1551  case tov_WinterWheatStriglingSingle:
1552  case tov_WinterWheatStriglingCulm:
1553  case tov_OWinterBarley:
1554  case tov_OWinterBarleyExt:
1555  case tov_OWinterRye:
1556  case tov_SpringBarleyGrass:
1557  case tov_SpringBarleyCloverGrass:
1558  case tov_SpringBarleyPeaCloverGrassStrigling:
1559  case tov_OSpringBarley:
1560  case tov_OSpringBarleyPigs:
1561  case tov_OWinterWheatUndersown:
1562  case tov_OWinterWheat:
1563  case tov_OOats:
1564  case tov_OTriticale:
1565  case tov_WWheatPControl:
1566  case tov_WWheatPToxicControl:
1567  case tov_WWheatPTreatment:
1568  case tov_AgroChemIndustryCereal:
1569  case tov_SpringBarleyPTreatment:
1570  case tov_SpringBarleySKManagement:
1571  case tov_OSpringBarleyExt:
1572  case tov_OSpringBarleyGrass:
1573  case tov_OSpringBarleyClover:
1574  case tov_PLWinterWheat:
1575  case tov_PLWinterBarley:
1576  case tov_PLWinterRye:
1577  case tov_PLWinterTriticale:
1578  case tov_PLSpringWheat:
1579  case tov_PLSpringBarley:
1580  case tov_PLSpringBarleySpr:
1581  case tov_PLWinterWheatLate:
1582  case tov_NLSpringBarley:
1583  case tov_NLWinterWheat:
1584  case tov_NLSpringBarleySpring:
1585  return true;
1586  default: // No matching code so is should not be mature cereal
1587  return false;
1588  }
1589 }

References m_vege_type.

◆ PollenNectarPhenologyCalculation()

void VegElement::PollenNectarPhenologyCalculation ( )
protected

This methods calculates the daily availability of pollen and nectar per square meter and in total.

Here we need to first recalculate the daily m2 value in case some has been foraged, then supply the day number to each curve and get the slope per m2 for both pollen and nectar, then add this to the m2. If the total value is negative set it to zero, then recalculate the polygon total forage.

1791 {
1797  int today = g_date->DayInYear();
1798  //need to store the correct pollen curve for fast look-up - this can be a pointer directly to the correct curve - avoiding the problem of tov vs tole
1799  m_pollenquality.m_quantity = m_pollencurve->GetData(today);
1800  m_NectarM2 = m_pollencurve->GetData(today);
1801  m_totalPollen = double(m_area) * m_PollenM2;
1802  m_totalNectar = double(m_area) * m_NectarM2;
1803 }

References LE::m_area, LE::m_NectarM2, LE::m_pollencurve, LE::m_PollenM2, LE::m_pollenquality, LE::m_totalNectar, and LE::m_totalPollen.

Referenced by RecalculateBugsNStuff().

◆ RandomVegStartValues()

void VegElement::RandomVegStartValues ( double *  a_LAtotal,
double *  a_LAgreen,
double *  a_veg_height,
double *  a_weed_biomass 
)
protected
1843  {
1844  * a_LAtotal = EL_VEG_START_LAIT * ( ( ( ( double )( random( 21 ) - 10 ) ) / 100.0 ) + 1.0 ); // +/- 10%
1845  * a_LAgreen = * a_LAtotal / 4.0;
1846  * a_veg_height = * a_LAgreen * EL_VEG_HEIGHTSCALE;
1847  * a_weed_biomass = * a_LAgreen * 0.1; // 10% weeds by biomass
1848 }

References EL_VEG_HEIGHTSCALE, EL_VEG_START_LAIT, and random().

Referenced by ForceGrowthInitialize().

◆ ReadBugPercentageFile()

void VegElement::ReadBugPercentageFile ( void  )
protected
1439  {
1440  FILE* lm_ifile=fopen(l_el_bug_percentage_file.value(), "r" );
1441  if ( !lm_ifile ) {
1442  g_msg->Warn( WARN_FILE, "PlantGrowthData::ReadBugPercentageFile(): Unable to open file", l_el_bug_percentage_file.value() );
1443  exit( 1 );
1444  }
1445  for ( int i = 0; i < tov_Undefined; i++ ) {
1446  int vegnum;
1447  // **cjt** modified 31/01/2004
1448  float weedpercent, bugpercent_a, bugpercent_b, bugpercent_c, bugpercent_d;
1449  if ( 2 != fscanf( lm_ifile, "%d %f %f %f %f %f", & vegnum, & weedpercent, & bugpercent_a, & bugpercent_b,
1450  & bugpercent_c, & bugpercent_d ) ) {
1451  char vegnums[ 20 ];
1452  sprintf( vegnums, "%d", tov_Undefined );
1453  g_msg->Warn( WARN_FILE,
1454  "VegElement::ReadBugPercentageFile(): Unable to read"
1455  " sufficient number of int/double pairs from bug percentage file."" Lines expected:", vegnums );
1456  exit( 1 );
1457  }
1458  FloatToDouble( g_weed_percent[ vegnum ], weedpercent);
1459  FloatToDouble( g_bug_percent_a[ vegnum ] , bugpercent_a);
1460  FloatToDouble( g_bug_percent_b[ vegnum ] , bugpercent_b);
1461  FloatToDouble( g_bug_percent_c[ vegnum ] , bugpercent_c);
1462  FloatToDouble( g_bug_percent_d[ vegnum ] , bugpercent_d);
1463  }
1464  fclose( lm_ifile );
1465 }

References FloatToDouble(), g_bug_percent_a, g_bug_percent_b, g_bug_percent_c, g_bug_percent_d, g_weed_percent, and l_el_bug_percentage_file().

◆ RecalculateBugsNStuff()

void VegElement::RecalculateBugsNStuff ( void  )
protectedvirtual

This method is responsible for.

This is the heart of the dynamics of vegetation elements. It calculates vegetation cover and uses this to determine vegetation biomass. It also calculates spilled grain and goose forage, as well a calculating insect biomass, vegetation density and dead biomass

Here we also want to know how much biomass we have on the field in total. So we multiply the current biomass by area

Once bugs, cover etc are calculated the pollen and nectar level calculations are done

Finally calculate the goose forage resource availability

1678  {
1681  double newgrowth = 0;
1682  m_veg_cover = 1.0 - (exp(m_LAtotal * -0.6)); // Beer's Law to give cover
1683  double usefull_veg_cover = 1.0 - (exp(m_LAgreen * -0.4)); // This is used to calc growth rate
1684  // Need gloabal radiation today
1685  double glrad = g_landscape_p->SupplyGlobalRadiation();
1686  // This is different for maize (a C4 plant)
1687  int ptype;
1688  if ((m_vege_type == tov_Maize) || (m_vege_type == tov_OMaizeSilage) || (m_vege_type == tov_MaizeSilage) || (m_vege_type == tov_MaizeStrigling)) ptype = 1; else ptype = 0;
1689  int index = (int)floor(0.5 + g_landscape_p->SupplyTemp()) + 30; // There are 30 negative temps
1690  double radconv = c_SolarConversion[ptype][index];
1691  if (m_LAtotal >= m_oldLAtotal) {
1692  // we are in positive growth so grow depending on our equation
1693  newgrowth = usefull_veg_cover * glrad * radconv * g_biomass_scale[m_vege_type];
1694  if (m_owner_index != -1) { // This only works because only crops and similar structures have owners
1695  int fintensity = g_landscape_p->SupplyFarmIntensity(m_poly);
1696  if (fintensity == 1) {
1697  // 1 means extensive, so reduce vegetation biomass by 20%
1698  // NB this cannot be used with extensive crop types otherwise you get an additional 20% reduction
1699  // This way of doing things provides a quick and dirty general effect.
1700  m_veg_biomass += newgrowth * 0.8;
1701  }
1702  else m_veg_biomass += newgrowth;
1703  }
1704  else m_veg_biomass += newgrowth;
1705  }
1706  else {
1707  // Negative growth - so shrink proportional to the loss in LAI Total
1708  if (m_oldLAtotal > 0) {
1710  }
1711  }
1715  // NB The m_weed_biomass is calculated directly from the curve in Curves.pre
1716  // rather than going through the rigmorole of converting leaf-area index
1717 
1718  // Another thing to do is to calculate mean vegetation digestability
1719  // This is a 32-day running average of the amount of new growth per day divided by veg biomass
1720  // With a minimum value of 0.5
1721  ++m_newoldgrowthindex &= 31;
1722  if (m_veg_biomass > 0) {
1723  switch (m_vege_type) {
1724  case tov_NoGrowth:
1725  case tov_None:
1726  case tov_OFirstYearDanger:
1727  m_digestability = 0.0;
1728  break;
1729  case tov_OPotatoes:
1730  case tov_Maize:
1731  case tov_MaizeSilage:
1732  case tov_OMaizeSilage:
1733  case tov_MaizeStrigling:
1734  case tov_Potatoes:
1735  case tov_PotatoesIndustry:
1736  case tov_PLMaize:
1737  case tov_PLMaizeSilage:
1738  case tov_PLPotatoes:
1739  case tov_NLMaize:
1740  case tov_NLPotatoes:
1741  case tov_NLMaizeSpring:
1742  case tov_NLPotatoesSpring:
1743  m_digestability = 0.5;
1744  break;
1745  default:
1746  //m_oldnewgrowth[m_newoldgrowthindex]=(newgrowth/m_veg_biomass);
1747  m_oldnewgrowth[m_newoldgrowthindex] = (newgrowth);
1748  m_newgrowthsum = 0.0;
1749  for (int i = 0; i < 32; i++) {
1751  }
1753  m_digestability += 0.5;
1754  if (m_digestability > 0.8) m_digestability = 0.8;
1755  }
1756  }
1757  else {
1759  m_digestability = 0.0;
1760  }
1761  // The insect calculation part
1762  // Bugmass = a + b(biomass) + c(height)
1763  double temp_bugmass = //g_bug_percent_d[ m_vege_type ] // This was used as a scaler - now not used
1766  // Set a minimum value (regressions will otherwise sometimes give a -ve value
1767  if (temp_bugmass < 0.05) temp_bugmass = 0.05;
1768  // Now need to check for deviations caused by management
1769  // First spot the deviation - this is easy because the only deviation that does
1770  // not affect the vegetation too is insecticide spraying
1772  // Need to change insects still, so grow towards the target, but only when 21 days from zero effect
1775  }
1776  else {
1777  m_insect_pop = temp_bugmass;
1778  }
1779  m_veg_density = (int)(floor(0.5 + (m_veg_biomass / (1 + m_veg_height))));
1780  if (m_veg_density > 100) m_veg_density = 100; // to stop array bounds problems
1781  if (m_LAtotal == 0.0) m_green_biomass = 0.0;
1788 }

References c_SolarConversion, CalcGooseForageResources(), g_biomass_scale, g_bug_percent_a, g_bug_percent_b, g_bug_percent_c, g_landscape_p, LE::m_area, LE::m_days_since_insecticide_spray, m_dead_biomass, m_digestability, m_green_biomass, m_insect_pop, m_LAgreen, m_LAtotal, m_newgrowthsum, m_newoldgrowthindex, m_oldLAtotal, m_oldnewgrowth, LE::m_owner_index, LE::m_poly, m_total_biomass, m_total_biomass_old, m_veg_biomass, m_veg_cover, m_veg_density, m_veg_height, m_vege_type, m_weed_biomass, PollenNectarPhenologyCalculation(), Landscape::SupplyFarmIntensity(), Landscape::SupplyGlobalRadiation(), and Landscape::SupplyTemp().

Referenced by RoadsideVerge::Cutting(), DoDevelopment(), and ZeroVeg().

◆ ReduceVeg()

void VegElement::ReduceVeg ( double  a_reduc)
virtual

Reimplemented from LE.

2086  {
2087  m_LAgreen *= a_reduc;
2088  m_LAtotal *= a_reduc;
2089  m_veg_height *= a_reduc;
2090  m_veg_biomass *= a_reduc;
2091  m_weed_biomass *= a_reduc;
2092 
2093  ForceGrowthTest();
2094  m_oldLAtotal = m_LAtotal; // this stops double reduction of biomass later in RecalculateBugsNStuff();
2095 }

References ForceGrowthTest(), m_LAgreen, m_LAtotal, m_oldLAtotal, m_veg_biomass, m_veg_height, and m_weed_biomass.

Referenced by OrchardBand::DoDevelopment().

◆ ReduceVeg_Extended()

void VegElement::ReduceVeg_Extended ( double  a_reduc)
virtual

Reimplemented from LE.

2097  {
2098  m_LAgreen *= a_reduc;
2099  m_LAtotal *= a_reduc;
2100  m_veg_height *= a_reduc;
2101  m_veg_biomass *= a_reduc;
2102  m_weed_biomass *= a_reduc;
2103 
2104  if ( a_reduc < EL_GROWTH_PHASE_SHIFT_LEVEL ) {
2105  m_yddegs = 0.0;
2107  }
2108 
2109  if ( g_date->DayInYear() >= EL_GROWTH_DATE_MAGIC && a_reduc < EL_GROWTH_PHASE_SHIFT_LEVEL && !m_forced_phase_shift ) {
2110  SetGrowthPhase( harvest1 );
2111  m_forced_phase_shift = true;
2112  }
2113 
2114  ForceGrowthTest();
2115  m_oldLAtotal = m_LAtotal; // this stops double reduction of biomass later in RecalculateBugsNStuff();
2116 }

References EL_GROWTH_DATE_MAGIC, EL_GROWTH_DAYDEG_MAGIC, EL_GROWTH_PHASE_SHIFT_LEVEL, ForceGrowthTest(), LE::m_ddegs, m_forced_phase_shift, m_LAgreen, m_LAtotal, m_oldLAtotal, m_veg_biomass, m_veg_height, m_weed_biomass, LE::m_yddegs, and SetGrowthPhase().

◆ ReduceWeedBiomass()

virtual void VegElement::ReduceWeedBiomass ( double  a_fraction)
inlinevirtual

Reimplemented from LE.

601  {
602  m_weed_biomass *= a_fraction;
603  }

References m_weed_biomass.

◆ ResetDigestability()

virtual void VegElement::ResetDigestability ( )
inlinevirtual

sets growth record to zero

Reimplemented from LE.

669  {
670  for (int i = 0; i<32; i++) m_oldnewgrowth[i] = 0.0;
671  }

References m_oldnewgrowth.

◆ ResetGeese()

void VegElement::ResetGeese ( void  )
protected

Reset geese numbers to zero in case this was not done by the population manager (the normal situation).

2048  {
2049  m_gooseNos[ g_date->DayInYear() ] = 0;
2050  for (unsigned i = 0; i < gs_foobar; i++) {
2051  m_gooseSpNos[ g_date->DayInYear() ][ (GooseSpecies)i ] = 0;
2052  m_gooseSpNosTimed[ g_date->DayInYear() ][ (GooseSpecies)i ] = 0;
2053  }
2054 }

References LE::m_gooseNos, LE::m_gooseSpNos, and LE::m_gooseSpNosTimed.

Referenced by DoDevelopment().

◆ Set_area_in_crop_data()

void VegElement::Set_area_in_crop_data ( double  a_area)
inline
641 {m_CropDataStorage[0].area = a_area;};

References CropActualValues::area, and m_CropDataStorage.

◆ Set_biomass_at_harvest()

void VegElement::Set_biomass_at_harvest ( double  a_biomass,
int  index 
)
inline

◆ Set_CropDataStorage()

void VegElement::Set_CropDataStorage ( int  index,
CropActualValues  a_struct 
)
inline
662 {m_CropDataStorage[index] = a_struct;};

References m_CropDataStorage.

◆ Set_harvested()

void VegElement::Set_harvested ( )
inline

◆ Set_taken()

void VegElement::Set_taken ( bool  a_taken,
int  index 
)
inline
637 {m_CropDataStorage[index].taken = a_taken;};

References m_CropDataStorage, and CropActualValues::taken.

◆ Set_tov_type()

void VegElement::Set_tov_type ( TTypesOfVegetation  a_tov_type,
int  index 
)
inline
639 {m_CropDataStorage[index].tov_type = a_tov_type;};

References m_CropDataStorage, and CropActualValues::tov_type.

◆ SetCropData()

void VegElement::SetCropData ( double  a_veg_height,
double  a_LAtotal,
double  a_LAgreen,
TTypesOfVegetation  a_veg,
double  a_cover,
int  a_grazed 
)
virtual

Reimplemented from LE.

2182  {
2183  m_veg_height = a_veg_height;
2184  m_LAtotal = a_LAtotal;
2185  m_LAgreen = a_LAgreen;
2186  m_vege_type = a_veg;
2187  m_veg_cover = a_cover;
2188  m_cattle_grazing = a_grazed;
2189 }

References LE::m_cattle_grazing, m_LAgreen, m_LAtotal, m_veg_cover, m_veg_height, and m_vege_type.

◆ SetCropDataAll()

void VegElement::SetCropDataAll ( double  a_veg_height,
double  a_biomass,
double  a_LAtotal,
double  a_LAgreen,
TTypesOfVegetation  a_veg,
double  a_wb,
double  a_cover,
int  a_grazed,
double  a_ins,
bool  a_patchy,
double  a_dens 
)
virtual

Reimplemented from LE.

2192  {
2193  m_veg_height = a_veg_height;
2194  m_veg_biomass = a_biomass;
2195  m_LAtotal = a_LAtotal;
2196  m_LAgreen = a_LAgreen;
2197  m_vege_type = a_veg;
2198  m_weed_biomass = a_wb;
2199  m_veg_cover = a_cover;
2200  m_cattle_grazing = a_grazed;
2201  m_insect_pop = a_ins;
2202  m_veg_density = (int) a_dens;
2203  m_veg_patchy = a_patchy;
2204 }

References LE::m_cattle_grazing, m_insect_pop, m_LAgreen, m_LAtotal, m_veg_biomass, m_veg_cover, m_veg_density, m_veg_height, m_veg_patchy, m_vege_type, and m_weed_biomass.

◆ SetGrowthPhase()

void VegElement::SetGrowthPhase ( int  a_phase)
virtual

If it is the first growth phase of the year then we might cause some unnecessary hops if e.g. our biomass is 0 and we suddenly jump up to 20 cm To stop this happening we check here and if our settings are lower than the targets we do nothing.

Reimplemented from LE.

1851  {
1852 
1853  if (a_phase == sow) {
1854  m_vegddegs = 0.0;
1855  }
1856  else if (a_phase == harvest) m_vegddegs = -1;
1857  if (a_phase == janfirst) {
1858  m_forced_phase_shift = false;
1863  if (g_crops->StartValid(m_curve_num, a_phase)) {
1864  double temp_veg_height = g_crops->GetStartValue(m_curve_num, a_phase, 2);
1865  if (temp_veg_height < m_veg_height) { // Otherwise we are better off with the numbers we have to start with
1866  // Now with added variability
1867  m_LAgreen = g_crops->GetStartValue(m_curve_num, a_phase, 0);
1868  m_LAtotal = g_crops->GetStartValue(m_curve_num, a_phase, 1);
1869  m_veg_height = g_crops->GetStartValue(m_curve_num, a_phase, 2);
1870  }
1871  }
1872 
1873  }
1874  else if (g_crops->StartValid(m_curve_num, a_phase)) {
1875  m_LAgreen = g_crops->GetStartValue(m_curve_num, a_phase, 0);
1876  m_LAtotal = g_crops->GetStartValue(m_curve_num, a_phase, 1);
1877  m_veg_height = g_crops->GetStartValue(m_curve_num, a_phase, 2);
1878  }
1879  else if (!m_force_growth) {
1880  // If we are in forced growth mode (which is very likely),
1881  // then do not choose a new set of starting values, as we have
1882  // already calculated our way to a reasonable set of values.
1883  //RandomVegStartValues( & m_LAtotal, & m_LAgreen, & m_veg_height, & m_weed_biomass ); // **CJT** Testing removal 17/02/2015
1884  }
1885  m_veg_phase = a_phase;
1886  m_yddegs = 0.0;
1887  m_ddegs = g_weather->GetDDDegs(g_date->Date());
1888  m_force_growth = false;
1889 
1890  if (m_veg_phase == janfirst) {
1891  // For some growth curves there is no growth in the first
1892  // two months of the year. This will more likely than
1893  // not cause a discontinuous jump in the growth curves
1894  // come March first. ForceGrowthSpringTest() tries
1895  // to avoid that by checking for positive growth values
1896  // for the January growth phase. If none are found, then
1897  // it initializes a forced growth/transition to the March
1898  // 1st starting values.
1899  ForceGrowthSpringTest(); // Removal of this causes continuous increase in vegetation growth year on year for any curve that does not have a hard reset (e.g. harvest).
1900  }
1901 }

References ForceGrowthSpringTest(), m_curve_num, LE::m_ddegs, m_force_growth, m_forced_phase_shift, m_LAgreen, m_LAtotal, m_veg_height, m_veg_phase, LE::m_vegddegs, and LE::m_yddegs.

Referenced by Orchard::Cutting(), MownGrass::Cutting(), ReduceVeg_Extended(), and VegElement().

◆ SetInsectPop()

virtual void VegElement::SetInsectPop ( double  insects)
inlinevirtual

Reimplemented from LE.

587 { m_insect_pop=insects; }

References m_insect_pop.

◆ SetVegHeight()

virtual void VegElement::SetVegHeight ( double  a_veg_height)
inlinevirtual

Reimplemented from LE.

618 { m_veg_height = a_veg_height; }

References m_veg_height.

◆ SetVegParameters()

virtual void VegElement::SetVegParameters ( double  a_veg_height,
double  a_LAtotal,
double  a_LAgreen,
double  a_WeedBiomass 
)
inlinevirtual

Reimplemented from LE.

619  {
620  m_veg_height = a_veg_height;
621  m_LAtotal = a_LAtotal;
622  m_LAgreen = a_LAgreen;
623  m_weed_biomass = a_WeedBiomass;
624  //RecalculateBugsNStuff();
625  }

References m_LAgreen, m_LAtotal, m_veg_height, and m_weed_biomass.

◆ SetVegPatchy()

virtual void VegElement::SetVegPatchy ( bool  p)
inlinevirtual
585 { m_veg_patchy=p; }

References m_veg_patchy.

Referenced by Landscape::BeetleBankAdd(), and VegElement().

◆ SetVegType()

void VegElement::SetVegType ( TTypesOfVegetation  a_vege_type,
TTypesOfVegetation  a_weed_type 
)
virtual

Reimplemented from LE.

2145 {
2146  m_vege_type = a_vege_type;
2147  m_curve_num = g_crops->VegTypeToCurveNum(a_vege_type);
2148  // -1 is used as a signal not to change the weed type
2149  // this is because it may be specific to that field
2150  if (a_weed_type != tov_Undefined) m_weed_curve_num = a_weed_type;
2151  SetPollenNectarCurves(g_nectarpollen->tovGetPollenNectarCurvePtr(a_vege_type).m_pollencurveptr,g_nectarpollen->tovGetPollenNectarCurvePtr(a_vege_type).m_nectarcurveptr);
2152  if (m_unsprayedmarginpolyref != -1) {
2153  // Must have an unsprayed margin so need to pass the information on to it
2155  dynamic_cast<VegElement*>(um)->SetPollenNectarCurves(m_pollencurve, m_nectarcurve);
2156  }
2157 }

References g_landscape_p, g_nectarpollen, m_curve_num, LE::m_nectarcurve, LE::m_pollencurve, LE::m_unsprayedmarginpolyref, m_vege_type, m_weed_curve_num, LE::SetPollenNectarCurves(), and Landscape::SupplyLEPointer().

◆ StoreLAItotal()

virtual void VegElement::StoreLAItotal ( )
inlinevirtual

Reimplemented from LE.

627 { m_oldLAtotal = m_LAtotal; }

References m_LAtotal, and m_oldLAtotal.

◆ ToggleCattleGrazing()

virtual void VegElement::ToggleCattleGrazing ( void  )
inlinevirtual

◆ TogglePigGrazing()

virtual void VegElement::TogglePigGrazing ( void  )
inlinevirtual

Reimplemented from LE.

References LE::m_pig_grazing.

◆ ZeroVeg()

void VegElement::ZeroVeg ( void  )
virtual

Reimplemented from LE.

1989  {
1990  m_LAgreen = 0.0;
1991  m_LAtotal = 0.0;
1992  m_veg_height = 0.0;
1993  m_veg_cover = 0.0;
1994  m_veg_biomass = 0.0;
1995  m_weed_biomass = 0.0;
1996  m_birdseedforage = 0.0;
1997  m_birdmaizeforage = 0.0;
1998  SetStubble(false);
1999  ForceGrowthTest();
2001 }

References ForceGrowthTest(), LE::m_birdmaizeforage, LE::m_birdseedforage, m_LAgreen, m_LAtotal, m_veg_biomass, m_veg_cover, m_veg_height, m_weed_biomass, RecalculateBugsNStuff(), and LE::SetStubble().

Referenced by WaterBufferZone::ResetingVeg().

Member Data Documentation

◆ m_crop_index

int VegElement::m_crop_index
protected

Referenced by VegElement().

◆ m_CropDataStorage

CropActualValues VegElement::m_CropDataStorage[2]
protected

Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be stored (hence size - 2). Used by a farmer to make a yearly accounting (#OptimisingFarm::ActualProfit()).

Referenced by Add_missed_fi_app(), Add_missed_herb_app(), Add_no_fi_app(), Add_no_herb_app(), Clean_CropDataStorage(), Get_CropDataStorage(), Get_harvested(), Get_taken(), Set_area_in_crop_data(), Set_biomass_at_harvest(), Set_CropDataStorage(), Set_harvested(), Set_taken(), and Set_tov_type().

◆ m_curve_num

◆ m_dead_biomass

double VegElement::m_dead_biomass
protected

◆ m_digestability

◆ m_force_growth

bool VegElement::m_force_growth
protected

◆ m_force_LAgreen

double VegElement::m_force_LAgreen
protected

◆ m_force_LAtotal

double VegElement::m_force_LAtotal
protected

◆ m_force_veg_height

double VegElement::m_force_veg_height
protected

◆ m_force_Weed

double VegElement::m_force_Weed
protected

Referenced by ForceGrowthInitialize().

◆ m_forced_phase_shift

bool VegElement::m_forced_phase_shift
protected

◆ m_green_biomass

double VegElement::m_green_biomass
protected

◆ m_growth_scaler

◆ m_ifile

ifstream VegElement::m_ifile
protected

◆ m_insect_pop

◆ m_LAgreen

◆ m_LAtotal

◆ m_newgrowthsum

double VegElement::m_newgrowthsum
protected

◆ m_newoldgrowthindex

int VegElement::m_newoldgrowthindex
protected

◆ m_nutrient_status

int VegElement::m_nutrient_status
protected

◆ m_oldLAtotal

double VegElement::m_oldLAtotal
protected

◆ m_oldnewgrowth

double VegElement::m_oldnewgrowth[32]
protected

◆ m_total_biomass

double VegElement::m_total_biomass
protected

◆ m_total_biomass_old

double VegElement::m_total_biomass_old
protected

◆ m_veg_biomass

◆ m_veg_cover

double VegElement::m_veg_cover
protected

◆ m_veg_density

◆ m_veg_height

◆ m_veg_patchy

◆ m_veg_phase

int VegElement::m_veg_phase
protected

◆ m_vege_type

◆ m_weed_biomass

◆ m_weed_curve_num

int VegElement::m_weed_curve_num
protected

The documentation for this class was generated from the following files:
EL_BUG_PERCENT_SB_A
#define EL_BUG_PERCENT_SB_A
Definition: elements.cpp:38
cfg_ele_weedscaling
static CfgFloat cfg_ele_weedscaling("ELE_WEEDSCALING", CFG_CUSTOM, 1.0)
Landscape::SupplyLEPointer
LE * SupplyLEPointer(int a_polyref)
Definition: landscape.h:1099
LE::m_area
double m_area
The element area in m2.
Definition: elements.h:489
Landscape::SupplyTemp
double SupplyTemp(void)
Definition: landscape.h:1386
VegElement::IsCereal
virtual bool IsCereal()
Definition: elements.cpp:1467
VegElement::m_newgrowthsum
double m_newgrowthsum
Definition: elements.h:700
LE::m_pollenquality
PollenNectarQuality m_pollenquality
Definition: elements.h:539
EL_GROWTH_PHASE_SHIFT_LEVEL
#define EL_GROWTH_PHASE_SHIFT_LEVEL
Definition: elements.cpp:170
CropActualValues::taken
bool taken
Definition: elements.h:556
EL_BUG_PERCENT_WW_B
#define EL_BUG_PERCENT_WW_B
Definition: elements.cpp:45
EL_BUG_PERCENT_WW_A
#define EL_BUG_PERCENT_WW_A
Definition: elements.cpp:44
EL_BUG_PERCENT_WRy_A
#define EL_BUG_PERCENT_WRy_A
Definition: elements.cpp:50
VegElement::m_force_LAtotal
double m_force_LAtotal
Definition: elements.h:703
LE::m_gooseNos
int m_gooseNos[366]
The number of geese each day.
Definition: elements.h:491
VegElement::m_LAgreen
double m_LAgreen
Definition: elements.h:684
July
const int July
Definition: landscape.h:42
VegElement::m_total_biomass_old
double m_total_biomass_old
Definition: elements.h:688
EL_BUG_PERCENT_SB_C
#define EL_BUG_PERCENT_SB_C
Definition: elements.cpp:40
VegElement::m_force_veg_height
double m_force_veg_height
Definition: elements.h:704
CropActualValues::missed_fi_app
int missed_fi_app
Definition: elements.h:564
VegElement::m_green_biomass
double m_green_biomass
Definition: elements.h:689
VegElement::ForceGrowthTest
virtual void ForceGrowthTest(void)
Definition: elements.cpp:1904
LE::m_pollencurve
PollenNectarDevelopmentCurve * m_pollencurve
pointer to the correct pollen curve set
Definition: elements.h:546
VegElement::m_force_LAgreen
double m_force_LAgreen
Definition: elements.h:702
VegElement::m_veg_cover
double m_veg_cover
Definition: elements.h:695
VegElement::SetGrowthPhase
virtual void SetGrowthPhase(int a_phase)
Definition: elements.cpp:1851
LE::m_totalNectar
double m_totalNectar
Definition: elements.h:542
VegElement::m_forced_phase_shift
bool m_forced_phase_shift
Definition: elements.h:696
VegElement::RandomVegStartValues
void RandomVegStartValues(double *a_LAtotal, double *a_LAgreen, double *a_veg_height, double *a_weed_biomass)
Definition: elements.cpp:1843
VegElement::m_insect_pop
double m_insect_pop
Definition: elements.h:685
VegElement::m_vege_type
TTypesOfVegetation m_vege_type
Definition: elements.h:676
FloatToDouble
void FloatToDouble(double &, float)
Definition: ALMaSS_CmdLine.cpp:174
VegElement::m_veg_phase
int m_veg_phase
Definition: elements.h:679
VegElement::ResetGeese
void ResetGeese(void)
Reset geese numbers to zero in case this was not done by the population manager (the normal situation...
Definition: elements.cpp:2048
EL_BUG_PERCENT_Edges_A
#define EL_BUG_PERCENT_Edges_A
Definition: elements.cpp:68
LE::m_herbicidedelay
int m_herbicidedelay
Definition: elements.h:486
VegElement::m_weed_curve_num
int m_weed_curve_num
Definition: elements.h:678
EL_BUG_PERCENT_SB_B
#define EL_BUG_PERCENT_SB_B
Definition: elements.cpp:39
VegElement::ForceGrowthSpringTest
void ForceGrowthSpringTest(void)
Definition: elements.cpp:1915
g_rand_uni
boost::variate_generator< base_generator_type &, boost::uniform_real<> > g_rand_uni
LE::m_birdmaizeforage
double m_birdmaizeforage
The maize forage present in KJ/m2.
Definition: elements.h:503
g_bug_percent_c
static double g_bug_percent_c[tov_Undefined]
Definition: elements.cpp:134
EL_BUG_PERCENT_A
#define EL_BUG_PERCENT_A
Definition: elements.cpp:32
VegElement::m_veg_patchy
bool m_veg_patchy
Definition: elements.h:694
VegElement::PollenNectarPhenologyCalculation
void PollenNectarPhenologyCalculation()
This methods calculates the daily availability of pollen and nectar per square meter and in total.
Definition: elements.cpp:1790
VegElement::IsGooseGrass
virtual bool IsGooseGrass()
Definition: elements.cpp:1644
VegElement::m_weed_biomass
double m_weed_biomass
Definition: elements.h:691
LE::m_birdseedforage
double m_birdseedforage
The grain forage present in KJ/m2.
Definition: elements.h:501
EL_BUG_PERCENT_D
#define EL_BUG_PERCENT_D
Definition: elements.cpp:71
LE::m_default_grazing_level
int m_default_grazing_level
Definition: elements.h:518
LE::m_pig_grazing
bool m_pig_grazing
Definition: elements.h:519
EL_BUG_PERCENT_WRy_B
#define EL_BUG_PERCENT_WRy_B
Definition: elements.cpp:51
EL_GROWTH_DAYDEG_MAGIC
#define EL_GROWTH_DAYDEG_MAGIC
Definition: elements.cpp:158
g_weed_percent
static double g_weed_percent[tov_Undefined]
Definition: elements.cpp:131
LE::m_skylarkscrapes
bool m_skylarkscrapes
For management testing of skylark scrapes.
Definition: elements.h:88
CropActualValues::no_herb_app
int no_herb_app
Definition: elements.h:561
VegElement::Clean_CropDataStorage
void Clean_CropDataStorage(int index)
Definition: elements.cpp:2129
LE::m_goosegrazingforage
double m_goosegrazingforage[gs_foobar]
The grazing forage present in KJ/min. The last value indicates cereal 1 or not -1.
Definition: elements.h:505
g_landscape_p
class Landscape * g_landscape_p
Definition: Landscape.cpp:258
Landscape::SupplyGooseGrazingForageH
double SupplyGooseGrazingForageH(double a_height, GooseSpecies a_goose)
Returns the leaf forage resource as seen from a goose standpoint at a polygon based on the height onl...
Definition: landscape.h:541
LE::m_NectarM2
double m_NectarM2
Definition: elements.h:544
VegElement::ForceGrowthDevelopment
virtual void ForceGrowthDevelopment(void)
Definition: elements.cpp:1976
VegElement::m_CropDataStorage
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:722
c_SolarConversion
const double c_SolarConversion[2][81]
Definition: elements.cpp:103
cfg_goose_GrainDecayRateWinter
CfgFloat cfg_goose_GrainDecayRateWinter
LE::m_lastsownvegtype
TTypesOfVegetation m_lastsownvegtype
Records the last vegegetation type that was sown on the element.
Definition: elements.h:507
VegElement::m_newoldgrowthindex
int m_newoldgrowthindex
Definition: elements.h:699
VegElement::m_veg_biomass
double m_veg_biomass
Definition: elements.h:686
EL_VEG_START_LAIT
#define EL_VEG_START_LAIT
Definition: elements.cpp:187
LE::m_yddegs
double m_yddegs
Definition: elements.h:521
EL_BUG_PERCENT_Edges_B
#define EL_BUG_PERCENT_Edges_B
Definition: elements.cpp:69
l_el_read_bug_percentage_file
static CfgBool l_el_read_bug_percentage_file("ELEM_READ_BUG_PERCENTAGE_FILE", CFG_CUSTOM, false)
CropActualValues::tov_type
TTypesOfVegetation tov_type
Definition: elements.h:557
EL_BUG_PERCENT_C
#define EL_BUG_PERCENT_C
Definition: elements.cpp:34
VegElement::m_crop_index
int m_crop_index
Definition: elements.h:723
LE::m_gooseSpNos
int m_gooseSpNos[366][gs_foobar]
The number of geese of each species each day.
Definition: elements.h:493
EL_BUG_PERCENT_WRy_C
#define EL_BUG_PERCENT_WRy_C
Definition: elements.cpp:52
LE::m_days_since_insecticide_spray
int m_days_since_insecticide_spray
Definition: elements.h:514
g_biomass_scale
static double g_biomass_scale[tov_Undefined]
Definition: elements.cpp:130
CropActualValues::biomass_at_harvest
double biomass_at_harvest
Definition: elements.h:558
CropActualValues::area
double area
Definition: elements.h:560
EL_BUG_PERCENT_WR_C
#define EL_BUG_PERCENT_WR_C
Definition: elements.cpp:58
VegElement::m_dead_biomass
double m_dead_biomass
Definition: elements.h:690
LE::m_owner_index
int m_owner_index
Definition: elements.h:472
VegElement::m_oldLAtotal
double m_oldLAtotal
Definition: elements.h:683
LE::m_totalPollen
double m_totalPollen
Definition: elements.h:541
g_bug_percent_d
static double g_bug_percent_d[tov_Undefined]
Definition: elements.cpp:135
LE::SetStubble
void SetStubble(bool a_flag)
Sets the in stubble flag.
Definition: elements.h:390
VegElement::m_LAtotal
double m_LAtotal
Definition: elements.h:682
Landscape::SupplyGlobalRadiation
double SupplyGlobalRadiation()
Definition: landscape.h:1341
LE
Definition: elements.h:81
cfg_goose_grass_to_winter_cereal_scaler
CfgFloat cfg_goose_grass_to_winter_cereal_scaler
VegElement::m_force_Weed
double m_force_Weed
Definition: elements.h:701
LE::m_cattle_grazing
int m_cattle_grazing
Definition: elements.h:517
g_bug_percent_a
static double g_bug_percent_a[tov_Undefined]
Definition: elements.cpp:132
LE::SetPollenNectarCurves
void SetPollenNectarCurves(PollenNectarDevelopmentCurve *a_pollencurnve, PollenNectarDevelopmentCurve *a_nectarcurve)
Set method for pollen and nectar curves.
Definition: elements.h:435
EL_BUG_PERCENT_G_B
#define EL_BUG_PERCENT_G_B
Definition: elements.cpp:63
EL_BUG_PERCENT_WR_A
#define EL_BUG_PERCENT_WR_A
Definition: elements.cpp:56
random
int random(int a_range)
Definition: ALMaSS_CmdLine.cpp:142
LE::m_ddegs
double m_ddegs
Definition: elements.h:522
EL_BUG_PERCENT_G_A
#define EL_BUG_PERCENT_G_A
Definition: elements.cpp:62
VegElement::SetVegPatchy
virtual void SetVegPatchy(bool p)
Definition: elements.h:585
VegElement::m_curve_num
int m_curve_num
Definition: elements.h:677
VegElement::RecalculateBugsNStuff
virtual void RecalculateBugsNStuff(void)
This method is responsible for.
Definition: elements.cpp:1678
VegElement::m_digestability
double m_digestability
Definition: elements.h:697
LE::m_vegddegs
double m_vegddegs
Definition: elements.h:520
l_el_bug_percentage_file
static CfgStr l_el_bug_percentage_file("ELEM_BUG_PERCENTAGE_FILE", CFG_CUSTOM,"bugpercents.txt")
CropActualValues::harvested
bool harvested
Definition: elements.h:559
VegElement::m_veg_density
int m_veg_density
Definition: elements.h:693
LE::m_gooseSpNosTimed
int m_gooseSpNosTimed[366][gs_foobar]
The number of geese of each species at a predefined time per day.
Definition: elements.h:497
EL_BUG_PERCENT_Edges_C
#define EL_BUG_PERCENT_Edges_C
Definition: elements.cpp:70
CropActualValues::no_fi_app
int no_fi_app
Definition: elements.h:563
VegElement::m_total_biomass
double m_total_biomass
Definition: elements.h:687
LE::m_nectarcurve
PollenNectarDevelopmentCurve * m_nectarcurve
pointer to the correct nectar curve set
Definition: elements.h:548
g_nectarpollen
class PollenNectarDevelopmentData * g_nectarpollen
Definition: Landscape.cpp:241
VegElement::m_growth_scaler
double m_growth_scaler
Definition: elements.h:680
LE::m_PollenM2
double m_PollenM2
Definition: elements.h:543
EL_GROWTH_DATE_MAGIC
#define EL_GROWTH_DATE_MAGIC
Definition: elements.cpp:164
VegElement::m_oldnewgrowth
double m_oldnewgrowth[32]
Definition: elements.h:698
VegElement::GrazeVegetation
virtual void GrazeVegetation(double a_grams, bool a_force)
Definition: elements.cpp:2061
CropActualValues::missed_herb_app
int missed_herb_app
Definition: elements.h:562
EL_BUG_PERCENT_B
#define EL_BUG_PERCENT_B
Definition: elements.cpp:33
March
const int March
Definition: landscape.h:38
LE::m_poly
int m_poly
The polyref number for this polygon.
Definition: elements.h:477
EL_BUG_PERCENT_WW_C
#define EL_BUG_PERCENT_WW_C
Definition: elements.cpp:46
VegElement::m_force_growth
bool m_force_growth
Definition: elements.h:705
cfg_goose_GrainDecayRateSpring
CfgFloat cfg_goose_GrainDecayRateSpring
EL_BUG_PERCENT_WR_B
#define EL_BUG_PERCENT_WR_B
Definition: elements.cpp:57
Landscape::SupplyFarmIntensity
int SupplyFarmIntensity(int a_x, int a_y)
Definition: Landscape.cpp:756
VegElement::CalcGooseForageResources
void CalcGooseForageResources()
Calculates spilled grain and grazing forage resources for geese.
Definition: elements.cpp:1805
EL_BUG_PERCENT_G_C
#define EL_BUG_PERCENT_G_C
Definition: elements.cpp:64
VegElement::ForceGrowthInitialize
virtual void ForceGrowthInitialize(void)
Definition: elements.cpp:1930
VegElement::m_veg_height
double m_veg_height
Definition: elements.h:692
LE::LE
LE(void)
Definition: elements.cpp:279
LE::m_unsprayedmarginpolyref
int m_unsprayedmarginpolyref
Definition: elements.h:448
g_bug_percent_b
static double g_bug_percent_b[tov_Undefined]
Definition: elements.cpp:133
int
EL_VEG_HEIGHTSCALE
#define EL_VEG_HEIGHTSCALE
Definition: elements.cpp:191