ALMaSS Rodenticide Model ODdox  1.0
VegElement Class Reference

#include <elements.h>

Public Member Functions

void Add_missed_fi_app ()
 
void Add_missed_herb_app ()
 
void Add_no_fi_app ()
 
void Add_no_herb_app ()
 
void Clean_CropDataStorage (int index)
 
virtual void DoDevelopment (void)
 
virtual void ForceGrowthDevelopment (void)
 
virtual void ForceGrowthInitialize (void)
 
virtual void ForceGrowthTest (void)
 
CropActualValues Get_CropDataStorage (int index)
 
bool Get_harvested (int index)
 
bool Get_taken (int index)
 
virtual double GetDeadBiomass (void)
 
virtual double GetDigestability (void)
 
virtual double GetGreenBiomass (void)
 
virtual double GetInsectPop (void)
 
virtual double GetLAGreen (void)
 
virtual double GetLATotal (void)
 
virtual bool GetSkScrapes (void)
 
virtual double GetVegBiomass (void)
 
virtual double GetVegCover (void)
 
virtual int GetVegDensity (void)
 
virtual double GetVegHeight (void)
 
virtual bool GetVegPatchy (void)
 
virtual int GetVegPhase ()
 
virtual TTypesOfVegetation GetVegType (void)
 
virtual double GetWeedBiomass (void)
 
virtual void GrazeVegetation (double a_grams, bool a_force)
 
virtual void GrazeVegetationTotal (double a_grams)
 
virtual void Insecticide (double a_fraction)
 
virtual void InsectMortality (double a_fraction)
 
virtual bool IsCereal ()
 
virtual bool IsGooseGrass ()
 
virtual bool IsGrass ()
 
virtual bool IsMaize ()
 
virtual bool IsMatureCereal ()
 
virtual void ReduceVeg (double a_reduc)
 
virtual void ReduceVeg_Extended (double a_reduc)
 
virtual void ReduceWeedBiomass (double a_fraction)
 
virtual void ResetDigestability ()
 sets growth record to zero More...
 
void ResetGeese (void)
 Reset geese numbers to zero in case this was not done by the population manager (the normal situation). More...
 
void Set_area_in_crop_data (double a_area)
 
void Set_biomass_at_harvest (double a_biomass, int index)
 
void Set_CropDataStorage (int index, CropActualValues a_struct)
 
void Set_harvested ()
 
void Set_taken (bool a_taken, int index)
 
void Set_tov_type (TTypesOfVegetation a_tov_type, int index)
 
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 SetGrowthPhase (int a_phase)
 
virtual void SetInsectPop (double insects)
 
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 SetVegPatchy (bool p)
 
virtual void SetVegType (TTypesOfVegetation a_vege_type, TTypesOfVegetation a_weed_type)
 
virtual void StoreLAItotal ()
 
virtual void ToggleCattleGrazing (void)
 
virtual void TogglePigGrazing (void)
 
 VegElement (void)
 
virtual void ZeroVeg (void)
 
virtual ~VegElement (void)
 
- Public Member Functions inherited from LE
void AddArea (double a_area_diff)
 
void BumpRunNum (void)
 
void DoCopy (const LE *a_Le)
 a copy function to be used because a copy constuctor won't work More...
 
int GetALMaSSEleType (void)
 
double GetArea (void)
 
double GetBirdMaize (void)
 
double GetBirdSeed (void)
 
LEGetBorder (void)
 
int GetCattleGrazing (void)
 
virtual APoint GetCentroid ()
 
virtual int GetCentroidX ()
 
virtual int GetCentroidY ()
 
int GetCountryDesignation (void)
 
virtual double GetDayDegrees (void)
 
virtual TTypesOfLandscapeElement GetElementType (void)
 
double GetGooseGrazingForage (GooseSpecies a_goose)
 
int GetGooseNos ()
 For goose model functionality, returns the number of geese yesterday. More...
 
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 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...
 
bool GetHigh (void)
 
TTypesOfVegetation GetLastSownVeg ()
 Returns the last vegetation type to be sown. More...
 
int GetLastTreatment (int *a_index)
 
int GetMapIndex (void)
 
bool GetMapValid (void)
 
int GetMaxX (void)
 
int GetMaxY (void)
 
int GetMConstants (int a)
 
int GetMDates (int a, int b)
 
long GetMgtLoopDetectCount (void)
 
long GetMgtLoopDetectDate (void)
 
int GetMinX (void)
 
int GetMinY (void)
 
long GetOldDays (void)
 
int GetOpenness (void)
 For goose model functionality, openness score for the polygon. More...
 
Farm * GetOwner (void)
 
int GetOwnerFile (void)
 
int GetOwnerIndex (void)
 
int GetPesticideCell ()
 
bool GetPigGrazing (void)
 
bool GetPoison (void)
 
int GetPoly (void)
 Returns the polyref number for this polygon. More...
 
virtual TTypesOfVegetation GetPreviousCrop (int)
 
int GetRotIndex (void)
 
long GetRunNum (void)
 
LE_Signal GetSignal (void)
 
int GetSoilType ()
 
int GetSoilTypeR ()
 
int GetSubType (void)
 
virtual double GetTrafficLoad (void)
 
int GetUnsprayedMarginPolyRef (void)
 
int GetValidX (void)
 
int GetValidY (void)
 
int GetVegAge ()
 
int GetVegStore (void)
 
virtual void GrazeVeg_Extended (double)
 
bool HasTramlines (void)
 
virtual bool IsMaleNewtPresent ()
 Sets a male newt as present/absent in descendent classes - here only to prevent need for dynamic casts. More...
 
bool IsRecentlyMown (void)
 
int IsRecentlySprayed (void)
 
 LE (void)
 
void ResetTrace (void)
 
void SetALMaSSEleType (int a_type)
 
void SetArea (double a_area)
 
void SetBirdMaize (double a_forage)
 
void SetBirdSeed (double a_forage)
 
void SetBorder (LE *a_border)
 
virtual void SetCentroid (int x, int y)
 
void SetCopyTreatment (int a_treatment)
 
void SetCountryDesignation (int a_designation)
 
void SetElementType (int a_type)
 
void SetGooseNos (int a_number, int a_day)
 
void SetGooseNosTimed (int a_number, int a_day)
 
void SetGooseSpNos (int a_number, int a_day, GooseSpecies a_goose)
 
void SetGooseSpNosTimed (int a_number, int a_day, GooseSpecies a_goose)
 
void SetHerbicideDelay (int a_decaytime_days)
 
void SetHigh (bool a_high)
 
void SetLastSownVeg (TTypesOfVegetation a_tov)
 Records the last vegetation type to be sown. More...
 
void SetLastTreatment (int a_treatment)
 
virtual void SetMaleNewtPresent (bool)
 Sets a male newt as present/absent in descendent classes - here only to prevent need for dynamic casts. More...
 
void SetMapIndex (int a_map_index)
 
void SetMapValid (bool a_valid)
 
void SetMaxX (int x)
 
void SetMaxY (int y)
 
void SetMConstants (int a, int c)
 
void SetMDates (int a, int b, int c)
 
void SetMgtLoopDetectCount (long a_num)
 
void SetMgtLoopDetectDate (long a_num)
 
void SetMinX (int x)
 
void SetMinY (int y)
 
void SetMownDecay (int a_decaytime_days)
 
void SetOldDays (long a_days)
 
void SetOpenness (int a_openness)
 Records the openness statistic for this polygon. More...
 
void SetOwner (Farm *a_owner, int a_owner_num, int a_owner_index)
 
void SetPesticideCell (int a_cell)
 
void SetPoison (bool a_poison)
 
void SetPoly (int a_poly)
 
void SetRotIndex (int a_index)
 
void SetSignal (LE_Signal a_signal)
 
void SetSoilType (int a_st)
 
void SetSubType (int a_subtype)
 
void SetTramlinesDecay (int a_decaytime_days)
 
void SetUnsprayedMarginPolyRef (int a_unsprayedmargin)
 
void SetValidXY (int a_valid_x, int a_valid_y)
 
virtual void SetVegBiomass (int)
 
void SetVegStore (int a_veg)
 
void Tick (void)
 
void Trace (int a_value)
 
void ZeroVegAge ()
 
virtual ~LE (void)
 

Protected Member Functions

void ForceGrowthSpringTest (void)
 
void RandomVegStartValues (double *a_LAtotal, double *a_LAgreen, double *a_veg_height, double *a_weed_biomass)
 
void ReadBugPercentageFile (void)
 
virtual void RecalculateBugsNStuff (void)
 

Protected Attributes

int m_crop_index
 
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_curve_num
 
double m_dead_biomass
 
double m_digestability
 
bool m_force_growth
 
double m_force_LAgreen
 
double m_force_LAtotal
 
double m_force_veg_height
 
double m_force_Weed
 
bool m_forced_phase_shift
 
double m_green_biomass
 
FILE * m_ifile
 
double m_insect_pop
 
double m_LAgreen
 
double m_LAtotal
 
double m_newgrowthsum
 
int m_newoldgrowthindex
 
int m_nutrient_status
 
double m_oldLAtotal
 
double m_oldnewgrowth [32]
 
double m_total_biomass
 
double m_total_biomass_old
 
double m_veg_biomass
 
double m_veg_cover
 
int m_veg_density
 
double m_veg_height
 
bool m_veg_patchy
 
int m_veg_phase
 
TTypesOfVegetation m_vege_type
 
double m_weed_biomass
 
int m_weed_curve_num
 
- Protected Attributes inherited from LE
int m_almass_le_type
 This holds the ALMaSS element type reference number. More...
 
double m_area
 
double m_birdmaizeforage
 The maize forage present in KJ/m2. More...
 
double m_birdseedforage
 The grain forage present in KJ/m2. More...
 
LEm_border
 
int m_cattle_grazing
 
int m_centroidx
 
int m_centroidy
 
int m_countrydesignation
 
int m_days_since_insecticide_spray
 
double m_ddegs
 
int m_default_grazing_level
 
int m_farmfunc_tried_to_do
 
double m_goosegrazingforage [gs_foobar]
 The grazing forage present in KJ/min. More...
 
int m_gooseNos [366]
 The number of geese each day. More...
 
int m_gooseNosTimed [366]
 The number of geese at a predefined time per day. More...
 
int m_gooseSpNos [366][gs_foobar]
 The number of geese of each species each day. More...
 
int m_gooseSpNosTimed [366][gs_foobar]
 The number of geese of each species at a predefined time per day. More...
 
int m_herbicidedelay
 
bool m_high
 
bool m_is_in_map
 
unsigned int m_lastindex
 
TTypesOfVegetation m_lastsownvegtype
 Records the last vegegetation type that was sown on the element. More...
 
vector< intm_lasttreat
 
long m_management_loop_detect_count
 
long m_management_loop_detect_date
 
int m_map_index
 
int m_maxx
 
int m_maxy
 
int m_minx
 
int m_miny
 
int m_mowndecay
 
long m_olddays
 
int m_openness
 The openness metric for a field (if any) More...
 
Farm * m_owner
 
int m_owner_file
 
int m_owner_index
 
int m_PesticideGridCell
 
bool m_pig_grazing
 
bool m_poison
 
int m_poly
 The polyref number for this polygon. More...
 
int m_rot_index
 
long m_running
 
LE_Signal m_signal_mask
 
int m_soiltype
 
int m_subtype
 
int m_tramlinesdecay
 
TTypesOfLandscapeElement m_type
 
int m_unsprayedmarginpolyref
 
int m_valid_x
 
int m_valid_y
 
int m_vegage
 
int m_vege_danger_store
 
double m_yddegs
 
int MConsts [10]
 
int MDates [2][25]
 

Additional Inherited Members

- Public Attributes inherited from LE
bool m_repeat_start
 
bool m_skylarkscrapes
 For management testing of skylark scrapes. More...
 
int m_squares_in_map
 
int m_tried_to_do
 
long m_user [EL_MAX_USERSPACE]
 Variable used to record the current grazing pressure by e.g. voles. More...
 
- Static Protected Attributes inherited from LE
static double m_largeroad_load []
 
static double m_monthly_traffic []
 Used for birds that feed on grain on cereal fields 3% spill is expected. More...
 
static double m_smallroad_load []
 

Constructor & Destructor Documentation

VegElement::VegElement ( void  )

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_insect_pop, m_LAgreen, m_LAtotal, m_newgrowthsum, m_newoldgrowthindex, m_nutrient_status, m_oldnewgrowth, m_total_biomass, m_total_biomass_old, m_veg_biomass, m_veg_cover, m_veg_height, m_vege_type, m_weed_biomass, m_weed_curve_num, LE::m_yddegs, SetGrowthPhase(), and SetVegPatchy().

571  : LE() {
572  SetVegPatchy(false);
573  m_nutrient_status = 0; // default
574  m_veg_biomass = 0.0;
575  m_weed_biomass = 0.0;
576  m_veg_height = 0.0;
577  m_veg_cover = 0.0;
578  m_insect_pop = 1.0;
579  m_vege_type = tov_NoGrowth;
580  m_curve_num = g_crops->VegTypeToCurveNum(m_vege_type);
581  m_weed_curve_num = 99; // 99 used as zero growth curve
582  m_yddegs = 0.0;
583  m_ddegs = 0.0;
584  m_LAgreen = 0.0;
585  m_LAtotal = 0.0;
586  m_digestability = 1.0;
587  for (int i = 0; i < 32; i++) m_oldnewgrowth[i] = 0.5;
589  m_newgrowthsum = 8.0;
590  m_forced_phase_shift = false;
591  m_force_growth = false;
592  SetGrowthPhase(janfirst);
593  m_total_biomass = 0.0;
594  m_total_biomass_old = 0.0;
595 
596 
597 
598  g_biomass_scale[tov_Carrots] = 0.7857;
599  g_biomass_scale[tov_CloverGrassGrazed1] = 1.2;
600  g_biomass_scale[tov_CloverGrassGrazed2] = 1.2;
601  g_biomass_scale[tov_FodderGrass] = 1.2;
602  g_biomass_scale[ tov_BroadBeans ] = 0.857;
603  g_biomass_scale[ tov_FieldPeas ] = 0.857;
604  g_biomass_scale[ tov_FieldPeasSilage ] = 0.857;
605  g_biomass_scale[tov_FodderBeet] = 0.857;
606  g_biomass_scale[tov_SugarBeet] = 0.857;
607  g_biomass_scale[tov_OFodderBeet] = 0.857;
608  g_biomass_scale[tov_Maize] = 1.00;
609  g_biomass_scale[tov_MaizeSilage] = 1.00;
610  g_biomass_scale[tov_OMaizeSilage] = 1.00;
611  g_biomass_scale[tov_NaturalGrass] = 0.567; //0.567 is scaled for actual yield
612  g_biomass_scale[tov_Heath] = 0.567; //0.567 is scaled for actual yield
613  g_biomass_scale[tov_NoGrowth] = 0.0;
614  g_biomass_scale[tov_None] = 0.0;
615  g_biomass_scale[tov_OrchardCrop] = 0.7857;
616  g_biomass_scale[tov_Oats] = 0.857;
617  g_biomass_scale[tov_OBarleyPeaCloverGrass] = 0.857;
618  g_biomass_scale[tov_OSBarleySilage] = 0.857 * 0.8;
619  g_biomass_scale[tov_OCarrots] = 0.7857 * 0.8;
620  g_biomass_scale[tov_OCloverGrassGrazed1] = 1.1;
621  g_biomass_scale[tov_OCloverGrassGrazed2] = 1.1;
622  g_biomass_scale[tov_OCloverGrassSilage1] = 1.1;
623  g_biomass_scale[tov_OFieldPeas] = 0.857 * 0.8;
624  g_biomass_scale[tov_OFieldPeasSilage] = 0.857 * 0.8;
625  g_biomass_scale[tov_OFirstYearDanger] = 0.0;
626  g_biomass_scale[tov_OGrazingPigs] = 0.7857 * 0.8;
627  g_biomass_scale[tov_OOats] = 0.857 * 0.8;
628  g_biomass_scale[tov_OPermanentGrassGrazed] = 0.7857;
629  g_biomass_scale[tov_OPotatoes] = 0.857 * 0.8;
630  g_biomass_scale[tov_OSeedGrass1] = 0.7857;
631  g_biomass_scale[tov_OSeedGrass2] = 0.7857;
632  g_biomass_scale[tov_OSetaside] = 0.7857;
633  g_biomass_scale[tov_OSpringBarley] = 0.857 * 0.8;
634  g_biomass_scale[tov_OSpringBarleyExt] = 0.857 * 0.8 * 0.8;
635  g_biomass_scale[tov_OSpringBarleyClover] = 0.857 * 0.8;
636  g_biomass_scale[tov_OSpringBarleyGrass] = 0.857 * 0.8;
637  g_biomass_scale[tov_OSpringBarleyPigs] = 0.857 * 0.8;
638  g_biomass_scale[tov_OTriticale] = 1.00 * 0.8;
639  g_biomass_scale[tov_OWinterBarley] = 0.857 * 0.8;
640  g_biomass_scale[tov_OWinterBarleyExt] = 0.857 * 0.8 * 0.8;
641  g_biomass_scale[tov_OWinterRape] = 1.071 * 0.8;
642  g_biomass_scale[tov_OWinterRye] = 0.857 * 0.8;
643  g_biomass_scale[ tov_OWinterWheat ] = 1.00 * 0.8;
644  g_biomass_scale[ tov_OWinterWheatUndersown ] = 1.00 * 0.8;
645  g_biomass_scale[ tov_OWinterWheatUndersownExt ] = 1.00 * 0.8 * 0.8;
646  g_biomass_scale[tov_PermanentGrassGrazed] = 1.1;
647  g_biomass_scale[tov_PermanentGrassLowYield] = 1.0;
648  g_biomass_scale[tov_PermanentGrassTussocky] = 0.7857;
649  g_biomass_scale[tov_PermanentSetaside] = 0.7857;
650  g_biomass_scale[tov_Potatoes] = 0.857;
651  g_biomass_scale[tov_PotatoesIndustry] = 0.857;
652  g_biomass_scale[tov_SeedGrass1] = 0.7857;
653  g_biomass_scale[tov_SeedGrass2] = 0.7857;
654  g_biomass_scale[tov_OSeedGrass1] = 0.7857;
655  g_biomass_scale[tov_OSeedGrass2] = 0.7857;
656  g_biomass_scale[tov_Setaside] = 0.7857;
657  g_biomass_scale[tov_SpringBarley] = 0.857;
658  g_biomass_scale[tov_SpringBarleySpr] = 0.857;
659  g_biomass_scale[tov_SpringBarleyPTreatment] = 0.857;
660  g_biomass_scale[tov_SpringBarleySKManagement] = 0.857;
661  g_biomass_scale[tov_SpringBarleyCloverGrass] = 0.857;
662  g_biomass_scale[tov_SpringBarleyGrass] = 0.857;
663  g_biomass_scale[tov_SpringBarleySeed] = 0.857;
664  g_biomass_scale[tov_SpringBarleySilage] = 0.857;
665  g_biomass_scale[tov_SpringRape] = 1.071;
666  g_biomass_scale[tov_SpringWheat] = 1.00;
667  g_biomass_scale[tov_Triticale] = 1.00;
668  g_biomass_scale[tov_WinterBarley] = 0.857;
669  g_biomass_scale[tov_WinterRape] = 1.071;
670  g_biomass_scale[tov_WinterRye] = 0.857;
671  g_biomass_scale[tov_WinterWheat] = 1.00; // This gives approx 18 tonnes biomass for WW
672  g_biomass_scale[tov_WinterWheatShort] = 1.00;
673  g_biomass_scale[tov_AgroChemIndustryCereal] = 1.00;
674  g_biomass_scale[tov_WWheatPControl] = 1.00;
675  g_biomass_scale[tov_WWheatPToxicControl] = 1.00;
676  g_biomass_scale[tov_WWheatPTreatment] = 1.00;
677  g_biomass_scale[tov_WinterWheatStrigling] = 1.00;
678  g_biomass_scale[tov_WinterWheatStriglingCulm] = 1.00;
679  g_biomass_scale[tov_WinterWheatStriglingSingle] = 1.00;
680  g_biomass_scale[tov_SpringBarleyCloverGrassStrigling] = 0.857;
681  g_biomass_scale[tov_SpringBarleyStrigling] = 0.857;
682  g_biomass_scale[tov_SpringBarleyStriglingSingle] = 0.857;
683  g_biomass_scale[tov_SpringBarleyStriglingCulm] = 0.857;
684  g_biomass_scale[tov_MaizeStrigling] = 0.857;
685  g_biomass_scale[tov_WinterRapeStrigling] = 1.071;
686  g_biomass_scale[tov_WinterRyeStrigling] = 0.857;
687  g_biomass_scale[tov_WinterBarleyStrigling] = 0.857;
688  g_biomass_scale[tov_FieldPeasStrigling] = 0.857;
689  g_biomass_scale[tov_SpringBarleyPeaCloverGrassStrigling] = 0.857;
690  g_biomass_scale[tov_YoungForest] = 0.7857 * 0.67;
691  g_biomass_scale[tov_Wasteland] = 0.7857 * 0.67;
692 
693  if (l_el_read_bug_percentage_file.value()) {
694  //ReadBugPercentageFile();
695  return;
696  }
697 
698  g_weed_percent[tov_Carrots] = 0.1;
699  g_weed_percent[ tov_BroadBeans ] = 0.1;
700  g_weed_percent[ tov_Maize ] = 0.05;
701  g_weed_percent[tov_MaizeSilage] = 0.05;
702  g_weed_percent[tov_OMaizeSilage] = 0.05;
703  g_weed_percent[tov_OCarrots] = 0.1;
704  g_weed_percent[tov_Potatoes] = 0.1;
705  g_weed_percent[tov_OPotatoes] = 0.1;
706  g_weed_percent[tov_FodderGrass] = 0.1;
707  g_weed_percent[tov_CloverGrassGrazed1] = 0.1;
708  g_weed_percent[tov_CloverGrassGrazed2] = 0.1;
709  g_weed_percent[tov_OCloverGrassGrazed1] = 0.1;
710  g_weed_percent[tov_OCloverGrassGrazed2] = 0.1;
711  g_weed_percent[tov_SpringBarley] = 0.1;
712  g_weed_percent[tov_SpringBarleySpr] = 0.1;
713  g_weed_percent[tov_SpringBarleyPTreatment] = 0.1;
714  g_weed_percent[tov_SpringBarleySKManagement] = 0.1;
715  g_weed_percent[tov_WinterWheat] = 0.1;
716  g_weed_percent[tov_WinterWheatShort] = 0.1;
717  g_weed_percent[tov_SpringBarleySilage] = 0.1;
718  g_weed_percent[tov_SpringBarleySeed] = 0.1;
719  g_weed_percent[tov_OGrazingPigs] = 0.1;
720  g_weed_percent[tov_OCloverGrassSilage1] = 0.1;
721  g_weed_percent[tov_SpringBarleyCloverGrass] = 0.1;
722  g_weed_percent[tov_OSpringBarleyPigs] = 0.1;
723  g_weed_percent[tov_OBarleyPeaCloverGrass] = 0.1;
724  g_weed_percent[tov_OSpringBarley] = 0.1;
725  g_weed_percent[tov_OSpringBarleyExt] = 0.1;
726  g_weed_percent[tov_OSBarleySilage] = 0.1;
727  g_weed_percent[ tov_OWinterWheat ] = 0.1;
728  g_weed_percent[ tov_OWinterWheatUndersown ] = 0.1;
729  g_weed_percent[ tov_OWinterWheatUndersownExt ] = 0.1;
730  g_weed_percent[tov_WinterRape] = 0.05;
731  g_weed_percent[tov_OWinterRape] = 0.05;
732  g_weed_percent[tov_OWinterRye] = 0.1;
733  g_weed_percent[tov_OWinterBarley] = 0.1;
734  g_weed_percent[tov_OWinterBarleyExt] = 0.1;
735  g_weed_percent[tov_WinterBarley] = 0.1;
736  g_weed_percent[tov_WinterRye] = 0.1;
737  g_weed_percent[ tov_OFieldPeas ] = 0.1;
738  g_weed_percent[tov_OFieldPeas] = 0.1;
739  g_weed_percent[ tov_OFieldPeasSilage ] = 0.1;
740  g_weed_percent[tov_OOats] = 0.1;
741  g_weed_percent[tov_Oats] = 0.1;
742  g_weed_percent[tov_Heath] = 0.1;
743  g_weed_percent[tov_OrchardCrop] = 0.1;
744  g_weed_percent[ tov_FieldPeas ] = 0.1;
745  g_weed_percent[ tov_FieldPeasSilage ] = 0.1;
746  g_weed_percent[tov_SeedGrass1] = 0.1;
747  g_weed_percent[tov_SeedGrass2] = 0.1;
748  g_weed_percent[tov_OSeedGrass1] = 0.15;
749  g_weed_percent[tov_OSeedGrass2] = 0.15;
750  g_weed_percent[tov_OPermanentGrassGrazed] = 0.1;
751  g_weed_percent[tov_Setaside] = 0.1;
752  g_weed_percent[tov_OSetaside] = 0.1;
753  g_weed_percent[tov_PermanentSetaside] = 0.1;
754  g_weed_percent[tov_PermanentGrassLowYield] = 0.1;
755  g_weed_percent[tov_PermanentGrassGrazed] = 0.1;
756  g_weed_percent[tov_PermanentGrassTussocky] = 0.1;
757  g_weed_percent[tov_FodderBeet] = 0.1;
758  g_weed_percent[tov_SugarBeet] = 0.1;
759  g_weed_percent[tov_OFodderBeet] = 0.1;
760  g_weed_percent[tov_NaturalGrass] = 0.1;
761  g_weed_percent[tov_None] = 0.1;
762  g_weed_percent[tov_NoGrowth] = 0.1;
763  g_weed_percent[tov_OFirstYearDanger] = 0.1;
764  g_weed_percent[tov_Triticale] = 0.1;
765  g_weed_percent[tov_OTriticale] = 0.1;
766  g_weed_percent[tov_WWheatPControl] = 0.1;
767  g_weed_percent[tov_WWheatPToxicControl] = 0.1;
768  g_weed_percent[tov_WWheatPTreatment] = 0.1;
769  g_weed_percent[tov_AgroChemIndustryCereal] = 0.1;
770  g_weed_percent[tov_WinterWheatStrigling] = 0.1;
771  g_weed_percent[tov_WinterWheatStriglingSingle] = 0.1;
772  g_weed_percent[tov_WinterWheatStriglingCulm] = 0.1;
773  g_weed_percent[tov_SpringBarleyCloverGrassStrigling] = 0.1;
774  g_weed_percent[tov_SpringBarleyStrigling] = 0.1;
775  g_weed_percent[tov_SpringBarleyStriglingSingle] = 0.1;
776  g_weed_percent[tov_SpringBarleyStriglingCulm] = 0.1;
777  g_weed_percent[tov_MaizeStrigling] = 0.1;
778  g_weed_percent[tov_WinterRapeStrigling] = 0.1;
779  g_weed_percent[tov_WinterRyeStrigling] = 0.1;
780  g_weed_percent[tov_WinterBarleyStrigling] = 0.1;
781  g_weed_percent[tov_FieldPeasStrigling] = 0.1;
782  g_weed_percent[tov_SpringBarleyPeaCloverGrassStrigling] = 0.1;
783  g_weed_percent[tov_YoungForest] = 0.1;
784  g_weed_percent[tov_Wasteland] = 0.1;
785 
786  g_bug_percent_a[tov_Carrots] = EL_BUG_PERCENT_A;
787  g_bug_percent_a[tov_MaizeSilage] = EL_BUG_PERCENT_A;
788  g_bug_percent_a[tov_OMaizeSilage] = EL_BUG_PERCENT_A;
789  g_bug_percent_a[tov_Maize] = EL_BUG_PERCENT_A;
790  g_bug_percent_a[tov_OCarrots] = EL_BUG_PERCENT_A;
791  g_bug_percent_a[tov_Potatoes] = EL_BUG_PERCENT_A;
792  g_bug_percent_a[tov_OPotatoes] = EL_BUG_PERCENT_A;
793  g_bug_percent_a[tov_FodderGrass] = EL_BUG_PERCENT_G_A;
794  g_bug_percent_a[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_G_A;
795  g_bug_percent_a[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_G_A;
796  g_bug_percent_a[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_G_A;
797  g_bug_percent_a[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_G_A;
798  g_bug_percent_a[tov_SpringBarley] = EL_BUG_PERCENT_SB_A;
799  g_bug_percent_a[tov_SpringBarleySpr] = EL_BUG_PERCENT_SB_A;
800  g_bug_percent_a[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_SB_A;
801  g_bug_percent_a[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_SB_A;
802  g_bug_percent_a[tov_WinterWheat] = EL_BUG_PERCENT_WW_A;
803  g_bug_percent_a[tov_WinterWheatShort] = EL_BUG_PERCENT_WW_A;
804  g_bug_percent_a[tov_SpringBarleySilage] = EL_BUG_PERCENT_SB_A;
805  g_bug_percent_a[tov_SpringBarleySeed] = EL_BUG_PERCENT_SB_A;
806  g_bug_percent_a[tov_OGrazingPigs] = EL_BUG_PERCENT_G_A;
807  g_bug_percent_a[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_G_A;
808  g_bug_percent_a[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_SB_A;
809  g_bug_percent_a[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_SB_A;
810  g_bug_percent_a[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_SB_A;
811  g_bug_percent_a[tov_OSpringBarley] = EL_BUG_PERCENT_SB_A;
812  g_bug_percent_a[tov_OSpringBarleyExt] = EL_BUG_PERCENT_SB_A;
813  g_bug_percent_a[tov_OSBarleySilage] = EL_BUG_PERCENT_SB_A;
814  g_bug_percent_a[ tov_OWinterWheat ] = EL_BUG_PERCENT_WW_A;
815  g_bug_percent_a[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_WW_A;
816  g_bug_percent_a[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_WW_A;
817  g_bug_percent_a[tov_WinterRape] = EL_BUG_PERCENT_WR_A;
818  g_bug_percent_a[tov_SpringRape] = EL_BUG_PERCENT_WR_A;
819  g_bug_percent_a[tov_OWinterRape] = EL_BUG_PERCENT_WR_A;
820  g_bug_percent_a[tov_OWinterRye] = EL_BUG_PERCENT_WRy_A;
821  g_bug_percent_a[tov_OWinterBarley] = EL_BUG_PERCENT_A;
822  g_bug_percent_a[tov_OWinterBarleyExt] = EL_BUG_PERCENT_A;
823  g_bug_percent_a[tov_WinterBarley] = EL_BUG_PERCENT_A;
824  g_bug_percent_a[tov_WinterRye] = EL_BUG_PERCENT_WRy_A;
825  g_bug_percent_a[tov_OFieldPeas] = EL_BUG_PERCENT_A;
826  g_bug_percent_a[tov_OFieldPeasSilage] = EL_BUG_PERCENT_A;
827  g_bug_percent_a[tov_OrchardCrop] = EL_BUG_PERCENT_G_A;
828  g_bug_percent_a[tov_OOats] = EL_BUG_PERCENT_A;
829  g_bug_percent_a[tov_Oats] = EL_BUG_PERCENT_A;
830  g_bug_percent_a[ tov_BroadBeans ] = EL_BUG_PERCENT_A;
831  g_bug_percent_a[ tov_FieldPeas ] = EL_BUG_PERCENT_A;
832  g_bug_percent_a[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_A;
833  g_bug_percent_a[tov_OSeedGrass1] = EL_BUG_PERCENT_G_A;
834  g_bug_percent_a[tov_OSeedGrass2] = EL_BUG_PERCENT_G_A;
835  g_bug_percent_a[tov_SeedGrass1] = EL_BUG_PERCENT_G_A;
836  g_bug_percent_a[tov_SeedGrass2] = EL_BUG_PERCENT_G_A;
837  g_bug_percent_a[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_G_A;
841  g_bug_percent_d[tov_Heath] = EL_BUG_PERCENT_D;
842  g_bug_percent_a[tov_Setaside] = EL_BUG_PERCENT_Edges_A;
843  g_bug_percent_a[tov_OSetaside] = EL_BUG_PERCENT_Edges_A;
844  g_bug_percent_a[tov_PermanentSetaside] = EL_BUG_PERCENT_Edges_A;
845  g_bug_percent_a[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_G_A;
846  g_bug_percent_a[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_G_A;
847  g_bug_percent_a[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_G_A;
848  g_bug_percent_a[tov_FodderBeet] = EL_BUG_PERCENT_A;
849  g_bug_percent_a[tov_SugarBeet] = EL_BUG_PERCENT_A;
850  g_bug_percent_a[tov_OFodderBeet] = EL_BUG_PERCENT_A;
851  g_bug_percent_a[tov_NaturalGrass] = EL_BUG_PERCENT_Edges_A;
852  g_bug_percent_a[tov_None] = EL_BUG_PERCENT_A;
853  g_bug_percent_a[tov_NoGrowth] = EL_BUG_PERCENT_A;
854  g_bug_percent_a[tov_OFirstYearDanger] = EL_BUG_PERCENT_A;
855  g_bug_percent_a[tov_Triticale] = EL_BUG_PERCENT_A;
856  g_bug_percent_a[tov_OTriticale] = EL_BUG_PERCENT_A;
857  g_bug_percent_a[tov_WWheatPControl] = EL_BUG_PERCENT_WW_A;
858  g_bug_percent_a[tov_WWheatPToxicControl] = EL_BUG_PERCENT_WW_A;
859  g_bug_percent_a[tov_WWheatPTreatment] = EL_BUG_PERCENT_WW_A;
860  g_bug_percent_a[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_WW_A;
861  g_bug_percent_a[tov_WinterWheatStrigling] = EL_BUG_PERCENT_WW_A;
862  g_bug_percent_a[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_WW_A;
863  g_bug_percent_a[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_WW_A;
864  g_bug_percent_a[tov_SpringBarleyCloverGrassStrigling] = EL_BUG_PERCENT_SB_A;
865  g_bug_percent_a[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_SB_A;
866  g_bug_percent_a[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_SB_A;
867  g_bug_percent_a[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_SB_A;
868  g_bug_percent_a[tov_MaizeStrigling] = EL_BUG_PERCENT_A;
869  g_bug_percent_a[tov_WinterRapeStrigling] = EL_BUG_PERCENT_WR_A;
870  g_bug_percent_a[tov_WinterRyeStrigling] = EL_BUG_PERCENT_WRy_A;
871  g_bug_percent_a[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_A;
872  g_bug_percent_a[tov_FieldPeasStrigling] = EL_BUG_PERCENT_A;
873  g_bug_percent_a[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_SB_A;
874  g_bug_percent_a[tov_YoungForest] = EL_BUG_PERCENT_Edges_A;
875  g_bug_percent_a[tov_Wasteland] = EL_BUG_PERCENT_Edges_A;
876 
877  g_bug_percent_b[tov_Carrots] = EL_BUG_PERCENT_B;
878  g_bug_percent_b[tov_MaizeSilage] = EL_BUG_PERCENT_B;
879  g_bug_percent_b[tov_OMaizeSilage] = EL_BUG_PERCENT_B;
880  g_bug_percent_b[tov_Maize] = EL_BUG_PERCENT_B;
881  g_bug_percent_b[tov_OCarrots] = EL_BUG_PERCENT_B;
882  g_bug_percent_b[tov_Potatoes] = EL_BUG_PERCENT_B;
883  g_bug_percent_b[tov_OPotatoes] = EL_BUG_PERCENT_B;
884  g_bug_percent_b[tov_FodderGrass] = EL_BUG_PERCENT_G_B;
885  g_bug_percent_b[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_G_B;
886  g_bug_percent_b[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_G_B;
887  g_bug_percent_b[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_G_B;
888  g_bug_percent_b[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_G_B;
889  g_bug_percent_b[tov_SpringBarley] = EL_BUG_PERCENT_SB_B;
890  g_bug_percent_b[tov_SpringBarleySpr] = EL_BUG_PERCENT_SB_B;
891  g_bug_percent_b[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_SB_B;
892  g_bug_percent_b[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_SB_B;
893  g_bug_percent_b[tov_WinterWheat] = EL_BUG_PERCENT_WW_B;
894  g_bug_percent_b[tov_WinterWheatShort] = EL_BUG_PERCENT_WW_B;
895  g_bug_percent_b[tov_SpringBarleySilage] = EL_BUG_PERCENT_SB_B;
896  g_bug_percent_b[tov_SpringBarleySeed] = EL_BUG_PERCENT_SB_B;
897  g_bug_percent_b[tov_OGrazingPigs] = EL_BUG_PERCENT_G_B;
898  g_bug_percent_b[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_G_B;
899  g_bug_percent_b[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_SB_B;
900  g_bug_percent_b[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_SB_B;
901  g_bug_percent_b[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_SB_B;
902  g_bug_percent_b[tov_OSBarleySilage] = EL_BUG_PERCENT_SB_B;
903  g_bug_percent_b[tov_OSpringBarley] = EL_BUG_PERCENT_SB_B;
904  g_bug_percent_b[tov_OSpringBarleyExt] = EL_BUG_PERCENT_SB_B;
905  g_bug_percent_b[ tov_OWinterWheat ] = EL_BUG_PERCENT_WW_B;
906  g_bug_percent_b[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_WW_B;
907  g_bug_percent_b[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_WW_B;
908  g_bug_percent_b[tov_WinterRape] = EL_BUG_PERCENT_WR_B;
909  g_bug_percent_b[tov_SpringRape] = EL_BUG_PERCENT_WR_B;
910  g_bug_percent_b[tov_OWinterRape] = EL_BUG_PERCENT_WR_B;
911  g_bug_percent_b[tov_OWinterRye] = EL_BUG_PERCENT_WRy_B;
912  g_bug_percent_b[tov_OWinterBarley] = EL_BUG_PERCENT_B;
913  g_bug_percent_b[tov_OWinterBarleyExt] = EL_BUG_PERCENT_B;
914  g_bug_percent_b[tov_WinterBarley] = EL_BUG_PERCENT_B;
915  g_bug_percent_b[tov_WinterRye] = EL_BUG_PERCENT_WRy_B;
916  g_bug_percent_b[tov_OFieldPeas] = EL_BUG_PERCENT_B;
917  g_bug_percent_b[tov_OFieldPeasSilage] = EL_BUG_PERCENT_B;
918  g_bug_percent_b[tov_OrchardCrop] = EL_BUG_PERCENT_G_B;
919  g_bug_percent_b[tov_OOats] = EL_BUG_PERCENT_B;
920  g_bug_percent_b[tov_Oats] = EL_BUG_PERCENT_B;
921  g_bug_percent_b[ tov_BroadBeans ] = EL_BUG_PERCENT_B;
922  g_bug_percent_b[ tov_FieldPeas ] = EL_BUG_PERCENT_B;
923  g_bug_percent_b[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_B;
924  g_bug_percent_b[tov_SeedGrass1] = EL_BUG_PERCENT_G_B;
925  g_bug_percent_b[tov_SeedGrass2] = EL_BUG_PERCENT_G_B;
926  g_bug_percent_b[tov_OSeedGrass1] = EL_BUG_PERCENT_G_B;
927  g_bug_percent_b[tov_OSeedGrass2] = EL_BUG_PERCENT_G_B;
928  g_bug_percent_b[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_G_B;
929  g_bug_percent_b[tov_Setaside] = EL_BUG_PERCENT_Edges_B;
930  g_bug_percent_b[tov_OSetaside] = EL_BUG_PERCENT_Edges_B;
931  g_bug_percent_b[tov_PermanentSetaside] = EL_BUG_PERCENT_Edges_B;
932  g_bug_percent_b[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_G_B;
933  g_bug_percent_b[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_G_B;
934  g_bug_percent_b[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_G_B;
935  g_bug_percent_b[tov_FodderBeet] = EL_BUG_PERCENT_B;
936  g_bug_percent_b[tov_SugarBeet] = EL_BUG_PERCENT_B;
937  g_bug_percent_b[tov_OFodderBeet] = EL_BUG_PERCENT_B;
938  g_bug_percent_b[tov_NaturalGrass] = EL_BUG_PERCENT_Edges_B;
939  g_bug_percent_b[tov_None] = EL_BUG_PERCENT_B;
940  g_bug_percent_b[tov_NoGrowth] = EL_BUG_PERCENT_B;
941  g_bug_percent_b[tov_OFirstYearDanger] = EL_BUG_PERCENT_B;
942  g_bug_percent_b[tov_Triticale] = EL_BUG_PERCENT_B;
943  g_bug_percent_b[tov_OTriticale] = EL_BUG_PERCENT_B;
944  g_bug_percent_b[tov_WWheatPControl] = EL_BUG_PERCENT_WW_B;
945  g_bug_percent_b[tov_WWheatPToxicControl] = EL_BUG_PERCENT_WW_B;
946  g_bug_percent_b[tov_WWheatPTreatment] = EL_BUG_PERCENT_WW_B;
947  g_bug_percent_b[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_WW_B;
948  g_bug_percent_b[tov_WinterWheatStrigling] = EL_BUG_PERCENT_WW_B;
949  g_bug_percent_b[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_WW_B;
950  g_bug_percent_b[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_WW_B;
951  g_bug_percent_b[tov_SpringBarleyCloverGrassStrigling] = EL_BUG_PERCENT_SB_B;
952  g_bug_percent_b[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_SB_B;
953  g_bug_percent_b[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_SB_B;
954  g_bug_percent_b[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_SB_B;
955  g_bug_percent_b[tov_MaizeStrigling] = EL_BUG_PERCENT_B;
956  g_bug_percent_b[tov_WinterRapeStrigling] = EL_BUG_PERCENT_WR_B;
957  g_bug_percent_b[tov_WinterRyeStrigling] = EL_BUG_PERCENT_WRy_B;
958  g_bug_percent_b[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_B;
959  g_bug_percent_b[tov_FieldPeasStrigling] = EL_BUG_PERCENT_B;
960  g_bug_percent_b[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_SB_B;
961  g_bug_percent_b[tov_YoungForest] = EL_BUG_PERCENT_Edges_B;
962  g_bug_percent_b[tov_Wasteland] = EL_BUG_PERCENT_Edges_B;
963 
964  g_bug_percent_c[tov_Carrots] = EL_BUG_PERCENT_C;
965  g_bug_percent_c[tov_MaizeSilage] = EL_BUG_PERCENT_C;
966  g_bug_percent_c[tov_OMaizeSilage] = EL_BUG_PERCENT_C;
967  g_bug_percent_c[tov_Maize] = EL_BUG_PERCENT_C;
968  g_bug_percent_c[tov_OCarrots] = EL_BUG_PERCENT_C;
969  g_bug_percent_c[tov_Potatoes] = EL_BUG_PERCENT_C;
970  g_bug_percent_c[tov_OPotatoes] = EL_BUG_PERCENT_C;
971  g_bug_percent_c[tov_FodderGrass] = EL_BUG_PERCENT_G_C;
972  g_bug_percent_c[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_G_C;
973  g_bug_percent_c[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_G_C;
974  g_bug_percent_c[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_G_C;
975  g_bug_percent_c[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_G_C;
976  g_bug_percent_c[tov_SpringBarley] = EL_BUG_PERCENT_SB_C;
977  g_bug_percent_c[tov_SpringBarleySpr] = EL_BUG_PERCENT_SB_C;
978  g_bug_percent_c[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_SB_C;
979  g_bug_percent_c[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_SB_C;
980  g_bug_percent_c[tov_WinterWheat] = EL_BUG_PERCENT_WW_C;
981  g_bug_percent_c[tov_WinterWheatShort] = EL_BUG_PERCENT_WW_C;
982  g_bug_percent_c[tov_SpringBarleySilage] = EL_BUG_PERCENT_SB_C;
983  g_bug_percent_c[tov_SpringBarleySeed] = EL_BUG_PERCENT_SB_C;
984  g_bug_percent_c[tov_OGrazingPigs] = EL_BUG_PERCENT_G_C;
985  g_bug_percent_c[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_G_C;
986  g_bug_percent_c[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_SB_C;
987  g_bug_percent_c[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_SB_C;
988  g_bug_percent_c[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_SB_C;
989  g_bug_percent_c[tov_OSBarleySilage] = EL_BUG_PERCENT_SB_C;
990  g_bug_percent_c[tov_OSpringBarley] = EL_BUG_PERCENT_SB_C;
991  g_bug_percent_c[tov_OSpringBarleyExt] = EL_BUG_PERCENT_SB_C;
992  g_bug_percent_c[ tov_OWinterWheat ] = EL_BUG_PERCENT_WW_C;
993  g_bug_percent_c[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_WW_C;
994  g_bug_percent_c[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_WW_C;
995  g_bug_percent_c[tov_WinterRape] = EL_BUG_PERCENT_WR_C;
996  g_bug_percent_c[tov_SpringRape] = EL_BUG_PERCENT_WR_C;
997  g_bug_percent_c[tov_OWinterRape] = EL_BUG_PERCENT_WR_C;
998  g_bug_percent_c[tov_OWinterRye] = EL_BUG_PERCENT_WRy_C;
999  g_bug_percent_c[tov_OWinterBarley] = EL_BUG_PERCENT_C;
1000  g_bug_percent_c[tov_OWinterBarleyExt] = EL_BUG_PERCENT_C;
1001  g_bug_percent_c[tov_WinterBarley] = EL_BUG_PERCENT_C;
1002  g_bug_percent_c[tov_WinterRye] = EL_BUG_PERCENT_WRy_C;
1003  g_bug_percent_c[tov_OFieldPeas] = EL_BUG_PERCENT_C;
1004  g_bug_percent_c[tov_OFieldPeasSilage] = EL_BUG_PERCENT_C;
1005  g_bug_percent_c[tov_OrchardCrop] = EL_BUG_PERCENT_G_C;
1006  g_bug_percent_c[tov_OOats] = EL_BUG_PERCENT_C;
1007  g_bug_percent_c[tov_Oats] = EL_BUG_PERCENT_C;
1008  g_bug_percent_c[ tov_FieldPeas ] = EL_BUG_PERCENT_C;
1009  g_bug_percent_c[ tov_BroadBeans ] = EL_BUG_PERCENT_C;
1010  g_bug_percent_c[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_C;
1011  g_bug_percent_c[tov_SeedGrass1] = EL_BUG_PERCENT_G_C;
1012  g_bug_percent_c[tov_SeedGrass2] = EL_BUG_PERCENT_G_C;
1013  g_bug_percent_c[tov_OSeedGrass1] = EL_BUG_PERCENT_G_C;
1014  g_bug_percent_c[tov_OSeedGrass2] = EL_BUG_PERCENT_G_C;
1015  g_bug_percent_c[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_G_C;
1016  g_bug_percent_c[tov_Setaside] = EL_BUG_PERCENT_Edges_C;
1017  g_bug_percent_c[tov_OSetaside] = EL_BUG_PERCENT_Edges_C;
1018  g_bug_percent_c[tov_PermanentSetaside] = EL_BUG_PERCENT_Edges_C;
1019  g_bug_percent_c[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_G_C;
1020  g_bug_percent_c[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_G_C;
1021  g_bug_percent_c[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_G_C;
1022  g_bug_percent_c[tov_FodderBeet] = EL_BUG_PERCENT_C;
1023  g_bug_percent_c[tov_SugarBeet] = EL_BUG_PERCENT_C;
1024  g_bug_percent_c[tov_OFodderBeet] = EL_BUG_PERCENT_C;
1025  g_bug_percent_c[tov_NaturalGrass] = EL_BUG_PERCENT_Edges_C;
1026  g_bug_percent_c[tov_None] = EL_BUG_PERCENT_C;
1027  g_bug_percent_c[tov_NoGrowth] = EL_BUG_PERCENT_C;
1028  g_bug_percent_c[tov_OFirstYearDanger] = EL_BUG_PERCENT_C;
1029  g_bug_percent_c[tov_Triticale] = EL_BUG_PERCENT_C;
1030  g_bug_percent_c[tov_OTriticale] = EL_BUG_PERCENT_C;
1031  g_bug_percent_c[tov_WWheatPControl] = EL_BUG_PERCENT_WW_C;
1032  g_bug_percent_c[tov_WWheatPToxicControl] = EL_BUG_PERCENT_WW_C;
1033  g_bug_percent_c[tov_WWheatPTreatment] = EL_BUG_PERCENT_WW_C;
1034  g_bug_percent_c[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_WW_C;
1035  g_bug_percent_c[tov_WinterWheatStrigling] = EL_BUG_PERCENT_WW_C;
1036  g_bug_percent_c[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_WW_C;
1037  g_bug_percent_c[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_WW_C;
1038  g_bug_percent_c[tov_SpringBarleyCloverGrassStrigling] = EL_BUG_PERCENT_SB_C;
1039  g_bug_percent_c[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_SB_C;
1040  g_bug_percent_c[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_SB_C;
1041  g_bug_percent_c[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_SB_C;
1042  g_bug_percent_c[tov_MaizeStrigling] = EL_BUG_PERCENT_C;
1043  g_bug_percent_c[tov_WinterRapeStrigling] = EL_BUG_PERCENT_WR_C;
1044  g_bug_percent_c[tov_WinterRyeStrigling] = EL_BUG_PERCENT_WW_C;
1045  g_bug_percent_c[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_C;
1046  g_bug_percent_c[tov_FieldPeasStrigling] = EL_BUG_PERCENT_C;
1047  g_bug_percent_c[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_SB_C;
1048  g_bug_percent_c[tov_YoungForest] = EL_BUG_PERCENT_Edges_C;
1049  g_bug_percent_c[tov_Wasteland] = EL_BUG_PERCENT_Edges_C;
1050 
1051  g_bug_percent_d[tov_Carrots] = EL_BUG_PERCENT_D;
1052  g_bug_percent_d[tov_Maize] = EL_BUG_PERCENT_D;
1053  g_bug_percent_d[tov_MaizeSilage] = EL_BUG_PERCENT_D;
1054  g_bug_percent_d[tov_OMaizeSilage] = EL_BUG_PERCENT_D;
1055  g_bug_percent_d[tov_OCarrots] = EL_BUG_PERCENT_D;
1056  g_bug_percent_d[tov_Potatoes] = EL_BUG_PERCENT_D;
1057  g_bug_percent_d[tov_OPotatoes] = EL_BUG_PERCENT_D;
1058  g_bug_percent_d[tov_FodderGrass] = EL_BUG_PERCENT_D;
1059  g_bug_percent_d[tov_CloverGrassGrazed1] = EL_BUG_PERCENT_D;
1060  g_bug_percent_d[tov_CloverGrassGrazed2] = EL_BUG_PERCENT_D;
1061  g_bug_percent_d[tov_OCloverGrassGrazed1] = EL_BUG_PERCENT_D;
1062  g_bug_percent_d[tov_OCloverGrassGrazed2] = EL_BUG_PERCENT_D;
1063  g_bug_percent_d[tov_SpringBarley] = EL_BUG_PERCENT_D;
1064  g_bug_percent_d[tov_SpringBarleySpr] = EL_BUG_PERCENT_D;
1065  g_bug_percent_d[tov_SpringBarleyPTreatment] = EL_BUG_PERCENT_D;
1066  g_bug_percent_d[tov_SpringBarleySKManagement] = EL_BUG_PERCENT_D;
1067  g_bug_percent_d[tov_WinterWheat] = EL_BUG_PERCENT_D;
1068  g_bug_percent_d[tov_WinterWheatShort] = EL_BUG_PERCENT_D;
1069  g_bug_percent_d[tov_SpringBarleySilage] = EL_BUG_PERCENT_D;
1070  g_bug_percent_d[tov_SpringBarleySeed] = EL_BUG_PERCENT_D;
1071  g_bug_percent_d[tov_OGrazingPigs] = EL_BUG_PERCENT_D;
1072  g_bug_percent_d[tov_OCloverGrassSilage1] = EL_BUG_PERCENT_D;
1073  g_bug_percent_d[tov_SpringBarleyCloverGrass] = EL_BUG_PERCENT_D;
1074  g_bug_percent_d[tov_OSpringBarleyPigs] = EL_BUG_PERCENT_D;
1075  g_bug_percent_d[tov_OBarleyPeaCloverGrass] = EL_BUG_PERCENT_D;
1076  g_bug_percent_d[tov_OSBarleySilage] = EL_BUG_PERCENT_D;
1077  g_bug_percent_d[tov_OSpringBarley] = EL_BUG_PERCENT_D;
1078  g_bug_percent_d[tov_OSpringBarleyExt] = EL_BUG_PERCENT_D;
1079  g_bug_percent_d[ tov_OWinterWheat ] = EL_BUG_PERCENT_D;
1080  g_bug_percent_d[ tov_OWinterWheatUndersown ] = EL_BUG_PERCENT_D;
1081  g_bug_percent_d[ tov_OWinterWheatUndersownExt ] = EL_BUG_PERCENT_D;
1082  g_bug_percent_d[tov_WinterRape] = EL_BUG_PERCENT_D;
1083  g_bug_percent_d[tov_OWinterRape] = EL_BUG_PERCENT_D;
1084  g_bug_percent_d[tov_OWinterRye] = EL_BUG_PERCENT_D;
1085  g_bug_percent_d[tov_OWinterBarley] = EL_BUG_PERCENT_D;
1086  g_bug_percent_d[tov_OWinterBarleyExt] = EL_BUG_PERCENT_D;
1087  g_bug_percent_d[tov_WinterBarley] = EL_BUG_PERCENT_D;
1088  g_bug_percent_d[tov_WinterRye] = EL_BUG_PERCENT_D;
1089  g_bug_percent_d[tov_OFieldPeas] = EL_BUG_PERCENT_D;
1090  g_bug_percent_d[tov_OFieldPeasSilage] = EL_BUG_PERCENT_D;
1091  g_bug_percent_d[tov_OrchardCrop] = EL_BUG_PERCENT_D;
1092  g_bug_percent_d[tov_OOats] = EL_BUG_PERCENT_D;
1093  g_bug_percent_d[tov_Oats] = EL_BUG_PERCENT_D;
1094  g_bug_percent_d[ tov_BroadBeans ] = EL_BUG_PERCENT_D;
1095  g_bug_percent_d[ tov_FieldPeas ] = EL_BUG_PERCENT_D;
1096  g_bug_percent_d[ tov_FieldPeasSilage ] = EL_BUG_PERCENT_D;
1097  g_bug_percent_d[tov_SeedGrass1] = EL_BUG_PERCENT_D;
1098  g_bug_percent_d[tov_SeedGrass2] = EL_BUG_PERCENT_D;
1099  g_bug_percent_d[tov_OSeedGrass1] = EL_BUG_PERCENT_D;
1100  g_bug_percent_d[tov_OSeedGrass2] = EL_BUG_PERCENT_D;
1101  g_bug_percent_d[tov_OPermanentGrassGrazed] = EL_BUG_PERCENT_D;
1102  g_bug_percent_d[tov_Setaside] = EL_BUG_PERCENT_D;
1103  g_bug_percent_d[tov_OSetaside] = EL_BUG_PERCENT_D;
1104  g_bug_percent_d[tov_PermanentSetaside] = EL_BUG_PERCENT_D;
1105  g_bug_percent_d[tov_PermanentGrassLowYield] = EL_BUG_PERCENT_D;
1106  g_bug_percent_d[tov_PermanentGrassGrazed] = EL_BUG_PERCENT_D;
1107  g_bug_percent_d[tov_PermanentGrassTussocky] = EL_BUG_PERCENT_D;
1108  g_bug_percent_d[tov_FodderBeet] = EL_BUG_PERCENT_D;
1109  g_bug_percent_d[tov_SugarBeet] = EL_BUG_PERCENT_D;
1110  g_bug_percent_d[tov_OFodderBeet] = EL_BUG_PERCENT_D;
1111  g_bug_percent_d[tov_NaturalGrass] = EL_BUG_PERCENT_D;
1112  g_bug_percent_d[tov_None] = EL_BUG_PERCENT_D;
1113  g_bug_percent_d[tov_NoGrowth] = EL_BUG_PERCENT_D;
1114  g_bug_percent_d[tov_OFirstYearDanger] = EL_BUG_PERCENT_D;
1115  g_bug_percent_d[tov_Triticale] = EL_BUG_PERCENT_D;
1116  g_bug_percent_d[tov_OTriticale] = EL_BUG_PERCENT_D;
1117  g_bug_percent_d[tov_WWheatPControl] = EL_BUG_PERCENT_D;
1118  g_bug_percent_d[tov_WWheatPToxicControl] = EL_BUG_PERCENT_D;
1119  g_bug_percent_d[tov_WWheatPTreatment] = EL_BUG_PERCENT_D;
1120  g_bug_percent_d[tov_AgroChemIndustryCereal] = EL_BUG_PERCENT_D;
1121  g_bug_percent_d[tov_WinterWheatStrigling] = EL_BUG_PERCENT_D;
1122  g_bug_percent_d[tov_WinterWheatStriglingCulm] = EL_BUG_PERCENT_D;
1123  g_bug_percent_d[tov_WinterWheatStriglingSingle] = EL_BUG_PERCENT_D;
1124  g_bug_percent_d[tov_SpringBarleyCloverGrassStrigling] = -EL_BUG_PERCENT_D;
1125  g_bug_percent_d[tov_SpringBarleyStrigling] = EL_BUG_PERCENT_D;
1126  g_bug_percent_d[tov_SpringBarleyStriglingSingle] = EL_BUG_PERCENT_D;
1127  g_bug_percent_d[tov_SpringBarleyStriglingCulm] = EL_BUG_PERCENT_D;
1128  g_bug_percent_d[tov_MaizeStrigling] = EL_BUG_PERCENT_D;
1129  g_bug_percent_d[tov_WinterRapeStrigling] = EL_BUG_PERCENT_D;
1130  g_bug_percent_d[tov_WinterRyeStrigling] = EL_BUG_PERCENT_D;
1131  g_bug_percent_d[tov_WinterBarleyStrigling] = EL_BUG_PERCENT_D;
1132  g_bug_percent_d[tov_FieldPeasStrigling] = EL_BUG_PERCENT_D;
1133  g_bug_percent_d[tov_SpringBarleyPeaCloverGrassStrigling] = EL_BUG_PERCENT_D;
1134  g_bug_percent_d[tov_YoungForest] = EL_BUG_PERCENT_D;
1135  g_bug_percent_d[tov_Wasteland] = EL_BUG_PERCENT_D;
1136 
1137 
1138  //05.03.13 - modifications for farmer decision making, AM
1141  m_crop_index = 0;
1142 }
static CfgBool l_el_read_bug_percentage_file("ELEM_READ_BUG_PERCENTAGE_FILE", CFG_CUSTOM, false)
LE(void)
Definition: elements.cpp:267
#define EL_BUG_PERCENT_WR_A
Definition: elements.cpp:56
static double g_bug_percent_c[tov_Undefined]
Definition: elements.cpp:122
#define EL_BUG_PERCENT_Edges_C
Definition: elements.cpp:70
#define EL_BUG_PERCENT_C
Definition: elements.cpp:34
#define EL_BUG_PERCENT_WR_C
Definition: elements.cpp:58
#define EL_BUG_PERCENT_A
Definition: elements.cpp:32
bool m_force_growth
Definition: elements.h:623
int m_newoldgrowthindex
Definition: elements.h:617
int m_nutrient_status
Definition: elements.h:599
#define EL_BUG_PERCENT_WW_A
Definition: elements.cpp:44
static double g_bug_percent_b[tov_Undefined]
Definition: elements.cpp:121
double m_newgrowthsum
Definition: elements.h:618
virtual void SetVegPatchy(bool p)
Definition: elements.h:497
static double g_bug_percent_a[tov_Undefined]
Definition: elements.cpp:120
static double g_bug_percent_d[tov_Undefined]
Definition: elements.cpp:123
double m_LAtotal
Definition: elements.h:600
#define EL_BUG_PERCENT_G_B
Definition: elements.cpp:63
double m_digestability
Definition: elements.h:615
#define EL_BUG_PERCENT_B
Definition: elements.cpp:33
double m_total_biomass
Definition: elements.h:605
#define EL_BUG_PERCENT_WR_B
Definition: elements.cpp:57
double m_veg_cover
Definition: elements.h:613
#define EL_BUG_PERCENT_G_C
Definition: elements.cpp:64
#define EL_BUG_PERCENT_WW_B
Definition: elements.cpp:45
virtual void SetGrowthPhase(int a_phase)
Definition: elements.cpp:1468
static double g_biomass_scale[tov_Undefined]
Definition: elements.cpp:118
TTypesOfVegetation m_vege_type
Definition: elements.h:595
bool m_forced_phase_shift
Definition: elements.h:614
double m_insect_pop
Definition: elements.h:603
double m_weed_biomass
Definition: elements.h:609
static double g_weed_percent[tov_Undefined]
Definition: elements.cpp:119
double m_ddegs
Definition: elements.h:448
double m_total_biomass_old
Definition: elements.h:606
#define EL_BUG_PERCENT_WRy_A
Definition: elements.cpp:50
#define EL_BUG_PERCENT_SB_C
Definition: elements.cpp:40
double m_oldnewgrowth[32]
Definition: elements.h:616
double m_LAgreen
Definition: elements.h:602
double m_yddegs
Definition: elements.h:447
double m_veg_height
Definition: elements.h:610
#define EL_BUG_PERCENT_SB_A
Definition: elements.cpp:38
int m_weed_curve_num
Definition: elements.h:597
#define EL_BUG_PERCENT_G_A
Definition: elements.cpp:62
double m_veg_biomass
Definition: elements.h:604
#define EL_BUG_PERCENT_Edges_A
Definition: elements.cpp:68
#define EL_BUG_PERCENT_WRy_C
Definition: elements.cpp:52
int m_crop_index
Definition: elements.h:634
#define EL_BUG_PERCENT_Edges_B
Definition: elements.cpp:69
#define EL_BUG_PERCENT_D
Definition: elements.cpp:71
int m_curve_num
Definition: elements.h:596
#define EL_BUG_PERCENT_WW_C
Definition: elements.cpp:46
#define EL_BUG_PERCENT_SB_B
Definition: elements.cpp:39
#define EL_BUG_PERCENT_WRy_B
Definition: elements.cpp:51
void Clean_CropDataStorage(int index)
Definition: elements.cpp:1746
virtual VegElement::~VegElement ( void  )
inlinevirtual
481 { ; };

Member Function Documentation

void VegElement::Add_missed_fi_app ( )
inline
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
int missed_fi_app
Definition: elements.h:474
void VegElement::Add_missed_herb_app ( )
inline
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
int missed_herb_app
Definition: elements.h:472
void VegElement::Add_no_fi_app ( )
inline
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
int no_fi_app
Definition: elements.h:473
void VegElement::Add_no_herb_app ( )
inline
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
int no_herb_app
Definition: elements.h:471
void VegElement::Clean_CropDataStorage ( int  index)

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

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().

1746  {
1747  //05.03.13 AM
1749 
1750  m_CropDataStorage[index].taken = false;
1751  m_CropDataStorage[index].tov_type = tov_Undefined;
1753  m_CropDataStorage[index].harvested = false;
1754  m_CropDataStorage[index].area = 0;
1755  m_CropDataStorage[index].no_herb_app = 0;
1757  m_CropDataStorage[index].no_fi_app = 0;
1758  m_CropDataStorage[index].missed_fi_app = 0;
1759 }
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
int no_herb_app
Definition: elements.h:471
bool taken
Definition: elements.h:466
double biomass_at_harvest
Definition: elements.h:468
int missed_fi_app
Definition: elements.h:474
int no_fi_app
Definition: elements.h:473
double area
Definition: elements.h:470
TTypesOfVegetation tov_type
Definition: elements.h:467
bool harvested
Definition: elements.h:469
int missed_herb_app
Definition: elements.h:472
void VegElement::DoDevelopment ( void  )
virtual

Reimplemented from LE.

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

References cfg_ele_weedscaling(), ForceGrowthDevelopment(), g_landscape_p, m_curve_num, LE::m_ddegs, m_force_growth, LE::m_herbicidedelay, m_LAgreen, m_LAtotal, LE::m_owner_index, LE::m_poly, m_veg_height, m_veg_phase, 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(), GreenElement::DoDevelopment(), Scrub::DoDevelopment(), NaturalGrassDry::DoDevelopment(), NaturalGrassWet::DoDevelopment(), Wasteland::DoDevelopment(), ForestElement::DoDevelopment(), Orchard::DoDevelopment(), OrchardBand::DoDevelopment(), and MownGrass::DoDevelopment().

1618  {
1619  if ( m_force_growth ) {
1622  ResetGeese();
1623  return;
1624  }
1625 
1626  m_yddegs = m_ddegs;
1627  m_ddegs = m_yddegs + g_weather->GetDDDegs( g_date->Date() );
1628 
1629  double dLAG = g_crops->GetLAgreenDiff( m_ddegs, m_yddegs, m_curve_num, m_veg_phase );
1630  double dLAT = g_crops->GetLAtotalDiff( m_ddegs, m_yddegs, m_curve_num, m_veg_phase );
1631  double dHgt = g_crops->GetHeightDiff( m_ddegs, m_yddegs, m_curve_num, m_veg_phase );
1632 
1633  m_LAgreen += dLAG;
1634  if ( m_LAgreen < 0.0 )
1635  m_LAgreen = 0.0;
1636 
1637  m_LAtotal += dLAT;
1638  if ( m_LAtotal < 0.0 )
1639  m_LAtotal = 0.0;
1640  int fintensity = 0;
1641 #ifdef __EXTSHRINKSHEIGHT
1642  if (this->m_owner_index != -1) { // This only works because only crops and similar structures have owners
1643  fintensity = g_landscape_p->SupplyFarmIntensity(m_poly);
1644  if (fintensity==1) {
1645  // 1 means extensive, so reduce vegetation height by 10%
1646  dHgt *=0.9;
1647  }
1648  }
1649 #endif
1650 
1651 
1652  m_veg_height += dHgt;
1653  if ( m_veg_height < 0.0 ) m_veg_height = 0.0;
1654  if ( m_herbicidedelay == 0 ) {
1655  double dWee = g_crops->GetLAtotalDiff( m_ddegs, m_yddegs, m_weed_curve_num, m_veg_phase );
1656  m_weed_biomass += dWee * cfg_ele_weedscaling.value()* (1+fintensity);
1657  }
1658  if ( m_weed_biomass < 0.0 ) m_weed_biomass = 0.0;
1660  // 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)
1661  ResetGeese();
1662 }
bool m_force_growth
Definition: elements.h:623
double m_LAtotal
Definition: elements.h:600
int m_herbicidedelay
Definition: elements.h:418
double m_weed_biomass
Definition: elements.h:609
double m_ddegs
Definition: elements.h:448
double m_LAgreen
Definition: elements.h:602
int m_veg_phase
Definition: elements.h:598
int m_owner_index
Definition: elements.h:406
double m_yddegs
Definition: elements.h:447
double m_veg_height
Definition: elements.h:610
int m_poly
The polyref number for this polygon.
Definition: elements.h:409
int m_weed_curve_num
Definition: elements.h:597
int SupplyFarmIntensity(int a_x, int a_y)
Definition: Landscape.cpp:613
void ResetGeese(void)
Reset geese numbers to zero in case this was not done by the population manager (the normal situation...
Definition: elements.cpp:1664
int m_curve_num
Definition: elements.h:596
virtual void RecalculateBugsNStuff(void)
Definition: elements.cpp:1336
static CfgFloat cfg_ele_weedscaling("ELE_WEEDSCALING", CFG_CUSTOM, 1.0)
virtual void ForceGrowthDevelopment(void)
Definition: elements.cpp:1593
class Landscape * g_landscape_p
Definition: Landscape.cpp:238
void VegElement::ForceGrowthDevelopment ( void  )
virtual

Reimplemented from LE.

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

Referenced by DoDevelopment().

1593  {
1594  //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
1598  // RecalculateBugsNStuff(); REMOVED BY CJT 3/2/2015 If no problems occur then we can delete permanantly
1599 }
double m_LAtotal
Definition: elements.h:600
double m_force_LAtotal
Definition: elements.h:621
double m_force_veg_height
Definition: elements.h:622
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
double m_force_LAgreen
Definition: elements.h:620
void VegElement::ForceGrowthInitialize ( void  )
virtual

Reimplemented from LE.

References 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().

1550  {
1551  double LAgreen_target;
1552  double Weed_target;
1553  double LAtotal_target;
1554  double veg_height_target;
1555  int next_phase, daysleft;
1556 
1557  // Figure out what our target phase is.
1558  if ( g_date->DayInYear() < g_date->DayInYear( 3, 1 ) ) {
1559  daysleft = g_date->DayInYear( 1, 3 ) - g_date->DayInYear();
1560  next_phase = marchfirst;
1561  } else if ( g_date->DayInYear() >= g_date->DayInYear( 1, 11 ) ) {
1562  daysleft = 365 - g_date->DayInYear();
1563  next_phase = janfirst;
1564  } else {
1565  return;
1566  }
1567  if ( daysleft <= 0 )
1568  // Uh! Oh! This really shouldn't happen.
1569  return;
1570 
1571  if ( !g_crops->StartValid( m_curve_num, next_phase ) ) {
1572  // If no valid starting values for next phase, then
1573  // preinitialize the random starting values! Ie. make the
1574  // choice here and then do not choose another set come
1575  // next phase transition, but use the values we already
1576  // got at that point in time.
1577  RandomVegStartValues( & LAtotal_target, & LAgreen_target, & veg_height_target, & Weed_target );
1578  } else {
1579  Weed_target = g_crops->GetStartValue( m_weed_curve_num, next_phase, 0 );
1580  LAgreen_target = g_crops->GetStartValue( m_curve_num, next_phase, 0 );
1581  LAtotal_target = g_crops->GetStartValue( m_curve_num, next_phase, 1 );
1582  veg_height_target = g_crops->GetStartValue( m_curve_num, next_phase, 2 );
1583  }
1584 
1585  m_force_growth = true;
1586  m_force_Weed = ( Weed_target - m_weed_biomass ) / ( double )daysleft;
1587  m_force_LAgreen = ( LAgreen_target - m_LAgreen ) / ( double )daysleft;
1588  m_force_LAtotal = ( LAtotal_target - m_LAtotal ) / ( double )daysleft;
1589  m_force_veg_height = ( veg_height_target - m_veg_height ) / ( double )daysleft;
1590 }
bool m_force_growth
Definition: elements.h:623
double m_LAtotal
Definition: elements.h:600
double m_force_Weed
Definition: elements.h:619
double m_force_LAtotal
Definition: elements.h:621
double m_weed_biomass
Definition: elements.h:609
double m_force_veg_height
Definition: elements.h:622
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
int m_weed_curve_num
Definition: elements.h:597
void RandomVegStartValues(double *a_LAtotal, double *a_LAgreen, double *a_veg_height, double *a_weed_biomass)
Definition: elements.cpp:1460
int m_curve_num
Definition: elements.h:596
double m_force_LAgreen
Definition: elements.h:620
void VegElement::ForceGrowthSpringTest ( void  )
protected

References ForceGrowthInitialize(), and m_curve_num.

Referenced by SetGrowthPhase().

1531  {
1532  // Unless we are on the list of special growth curves where we have worked
1533  // out vegetation declines (grasses), then
1534  // check if there are any positive growth differentials in the curve
1535  // for the first two months of the year. Do nothing if there is.
1536  //if (IsGrass()) return;
1537  // If we have any positive growth then no need to force either
1538  if (g_crops->GetLAgreenDiff(90000.0, 0.0, m_curve_num, janfirst) > 0.001
1539  || g_crops->GetLAtotalDiff(90000.0, 0.0, m_curve_num, janfirst) > 0.001
1540  || g_crops->GetHeightDiff(90000.0, 0.0, m_curve_num, janfirst) > 0.001) {
1541  return;
1542  }
1543 
1544  // No growth, force it.
1546 }
virtual void ForceGrowthInitialize(void)
Definition: elements.cpp:1550
int m_curve_num
Definition: elements.h:596
void VegElement::ForceGrowthTest ( void  )
virtual

Reimplemented from LE.

References ForceGrowthInitialize(), and m_force_growth.

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

1520  {
1521  // Called whenever the farmer does something 'destructive' to a
1522  // field, that reduced the vegetaion.
1523  if ( g_date->DayInYear() >= g_date->DayInYear( 1, 11 )
1524  || ( g_date->DayInYear() < g_date->DayInYear( 1, 3 ) && m_force_growth ) ) {
1526  }
1527 }
bool m_force_growth
Definition: elements.h:623
virtual void ForceGrowthInitialize(void)
Definition: elements.cpp:1550
CropActualValues VegElement::Get_CropDataStorage ( int  index)
inline
583 {return m_CropDataStorage[index];};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
bool VegElement::Get_harvested ( int  index)
inline
565 {return m_CropDataStorage[index].harvested;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
bool harvested
Definition: elements.h:469
bool VegElement::Get_taken ( int  index)
inline
558 {return m_CropDataStorage[index].taken;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
bool taken
Definition: elements.h:466
virtual double VegElement::GetDeadBiomass ( void  )
inlinevirtual

Reimplemented from LE.

491 { return m_dead_biomass; }
double m_dead_biomass
Definition: elements.h:608
virtual double VegElement::GetDigestability ( void  )
inlinevirtual

Reimplemented from LE.

485 { return m_digestability; }
double m_digestability
Definition: elements.h:615
virtual double VegElement::GetGreenBiomass ( void  )
inlinevirtual

Reimplemented from LE.

492 { return m_green_biomass; }
double m_green_biomass
Definition: elements.h:607
virtual double VegElement::GetInsectPop ( void  )
inlinevirtual

Reimplemented from LE.

498 { return m_insect_pop; }
double m_insect_pop
Definition: elements.h:603
virtual double VegElement::GetLAGreen ( void  )
inlinevirtual

Reimplemented from LE.

486 { return m_LAgreen; }
double m_LAgreen
Definition: elements.h:602
virtual double VegElement::GetLATotal ( void  )
inlinevirtual

Reimplemented from LE.

487 { return m_LAtotal; }
double m_LAtotal
Definition: elements.h:600
virtual bool VegElement::GetSkScrapes ( void  )
inlinevirtual

Reimplemented from LE.

495 { return m_skylarkscrapes; }
bool m_skylarkscrapes
For management testing of skylark scrapes.
Definition: elements.h:88
virtual double VegElement::GetVegBiomass ( void  )
inlinevirtual

Reimplemented from LE.

490 { return m_veg_biomass; }
double m_veg_biomass
Definition: elements.h:604
virtual double VegElement::GetVegCover ( void  )
inlinevirtual

Reimplemented from LE.

488 { return m_veg_cover; }
double m_veg_cover
Definition: elements.h:613
virtual int VegElement::GetVegDensity ( void  )
inlinevirtual

Reimplemented from LE.

494 { return m_veg_density; }
int m_veg_density
Definition: elements.h:611
virtual double VegElement::GetVegHeight ( void  )
inlinevirtual

Reimplemented from LE.

489 { return m_veg_height; }
double m_veg_height
Definition: elements.h:610
virtual bool VegElement::GetVegPatchy ( void  )
inlinevirtual

Reimplemented from LE.

496 { return m_veg_patchy; }
bool m_veg_patchy
Definition: elements.h:612
virtual int VegElement::GetVegPhase ( void  )
inlinevirtual

Reimplemented from LE.

593 { return m_veg_phase; }
int m_veg_phase
Definition: elements.h:598
virtual TTypesOfVegetation VegElement::GetVegType ( void  )
inlinevirtual

Reimplemented from LE.

500 { return m_vege_type; }
TTypesOfVegetation m_vege_type
Definition: elements.h:595
virtual double VegElement::GetWeedBiomass ( void  )
inlinevirtual

Reimplemented from LE.

493 { return m_weed_biomass; }
double m_weed_biomass
Definition: elements.h:609
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.

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().

1678 {
1690  if (!a_force) a_reduc *= m_default_grazing_level;
1691  if (a_reduc >= m_veg_biomass) return;
1692  double propreduc = 1.0 - (a_reduc / m_veg_biomass);
1693  m_veg_height *= propreduc;
1694  m_weed_biomass *= propreduc;
1695  m_veg_biomass -= a_reduc;
1696  // Need to do something with the LA too -
1697  m_LAgreen *= propreduc;
1698  m_LAtotal *= propreduc;
1699  m_oldLAtotal = m_LAtotal; // this stops double reduction of biomass later in RecalculateBugsNStuff();
1700 }
double m_oldLAtotal
Definition: elements.h:601
int m_default_grazing_level
Definition: elements.h:445
double m_LAtotal
Definition: elements.h:600
double m_weed_biomass
Definition: elements.h:609
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
double m_veg_biomass
Definition: elements.h:604
void VegElement::GrazeVegetationTotal ( double  a_grams)
virtual

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

Reimplemented from LE.

References GrazeVegetation(), and LE::m_area.

1673 {
1674  GrazeVegetation( a_grams/m_area, true );
1675 }
virtual void GrazeVegetation(double a_grams, bool a_force)
Definition: elements.cpp:1677
double m_area
Definition: elements.h:420
virtual void VegElement::Insecticide ( double  a_fraction)
inlinevirtual

Reimplemented from LE.

502  {
503  m_insect_pop *= a_fraction;
505  }
double m_insect_pop
Definition: elements.h:603
int m_days_since_insecticide_spray
Definition: elements.h:441
void VegElement::InsectMortality ( double  a_fraction)
virtual

Reimplemented from LE.

References m_insect_pop.

1807  {
1808  m_insect_pop *= a_fraction;
1809 }
double m_insect_pop
Definition: elements.h:603
bool VegElement::IsCereal ( void  )
virtual

Reimplemented from LE.

References LE::m_lastsownvegtype.

Referenced by RecalculateBugsNStuff().

1173 {
1174  switch (m_lastsownvegtype)
1175  {
1176  case tov_SpringBarley:
1177  case tov_SpringBarleySpr:
1178  case tov_WinterBarley:
1179  case tov_SpringWheat:
1180  case tov_WinterWheat:
1181  case tov_WinterRye:
1182  case tov_Oats:
1183  case tov_Triticale:
1184  case tov_SpringBarleySeed:
1185  case tov_SpringBarleyStrigling:
1186  case tov_SpringBarleyStriglingSingle:
1187  case tov_SpringBarleyStriglingCulm:
1188  case tov_WinterWheatStrigling:
1189  case tov_WinterWheatStriglingSingle:
1190  case tov_WinterWheatStriglingCulm:
1191  case tov_OWinterBarley:
1192  case tov_OWinterBarleyExt:
1193  case tov_OWinterRye:
1194  case tov_SpringBarleyGrass:
1195  case tov_SpringBarleyCloverGrass:
1196  case tov_OBarleyPeaCloverGrass:
1197  case tov_SpringBarleyPeaCloverGrassStrigling:
1198  case tov_OSpringBarley:
1199  case tov_OSpringBarleyPigs:
1200  case tov_OWinterWheatUndersown:
1201  case tov_OWinterWheat:
1202  case tov_OOats:
1203  case tov_OTriticale:
1204  case tov_WWheatPControl:
1205  case tov_WWheatPToxicControl:
1206  case tov_WWheatPTreatment:
1207  case tov_AgroChemIndustryCereal:
1208  case tov_SpringBarleyPTreatment:
1209  case tov_SpringBarleySKManagement:
1210  case tov_OSpringBarleyExt:
1211  case tov_OSpringBarleyGrass:
1212  case tov_OSBarleySilage:
1213  case tov_OSpringBarleyClover:
1214  return true;
1215  default: // No matching code so is should not be cereal
1216  return false;
1217  }
1218 }
TTypesOfVegetation m_lastsownvegtype
Records the last vegegetation type that was sown on the element.
Definition: elements.h:436
bool VegElement::IsGooseGrass ( )
inlinevirtual

References LE::m_lastsownvegtype, and m_vege_type.

Referenced by RecalculateBugsNStuff().

1308  {
1309  switch (m_vege_type) {
1310  case tov_NaturalGrass:
1311  case tov_PermanentGrassGrazed:
1312  case tov_PermanentGrassLowYield:
1313  case tov_PermanentGrassTussocky:
1314  return true;
1315  default: break;
1316  }
1317  switch (m_lastsownvegtype) {
1318  case tov_SeedGrass1:
1319  case tov_SeedGrass2:
1320  case tov_OSeedGrass1:
1321  case tov_OSeedGrass2:
1322  case tov_CloverGrassGrazed1:
1323  case tov_CloverGrassGrazed2:
1324  case tov_OCloverGrassGrazed1:
1325  case tov_OCloverGrassGrazed2:
1326  case tov_FodderGrass:
1327  return true;
1328  default:
1329  return false;
1330  }
1331 
1332 }
TTypesOfVegetation m_lastsownvegtype
Records the last vegegetation type that was sown on the element.
Definition: elements.h:436
TTypesOfVegetation m_vege_type
Definition: elements.h:595
bool VegElement::IsGrass ( )
inlinevirtual

Reimplemented from LE.

References m_vege_type.

1282 {
1283  switch (m_vege_type)
1284  {
1285  case tov_NaturalGrass:
1286  case tov_PermanentGrassGrazed:
1287  case tov_PermanentGrassLowYield:
1288  case tov_PermanentGrassTussocky:
1289  case tov_PermanentSetaside:
1290  case tov_Setaside:
1291  case tov_SeedGrass1:
1292  case tov_SeedGrass2:
1293  case tov_OSeedGrass1:
1294  case tov_OSeedGrass2:
1295  case tov_CloverGrassGrazed1:
1296  case tov_CloverGrassGrazed2:
1297  case tov_OCloverGrassGrazed1:
1298  case tov_OCloverGrassGrazed2:
1299  case tov_OrchardCrop:
1300  case tov_YoungForest:
1301  case tov_FodderGrass:
1302  case tov_Heath:
1303  return true;
1304  default: return false;
1305  }
1306 }
TTypesOfVegetation m_vege_type
Definition: elements.h:595
bool VegElement::IsMaize ( void  )
virtual

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

References m_vege_type.

1267 {
1269  switch (m_vege_type)
1270  {
1271  case tov_Maize:
1272  case tov_OMaizeSilage:
1273  case tov_MaizeSilage:
1274  return true;
1275  default: // No matching code so is should not be maize
1276  return false;
1277  }
1278 }
TTypesOfVegetation m_vege_type
Definition: elements.h:595
bool VegElement::IsMatureCereal ( void  )
virtual

Reimplemented from LE.

References m_vege_type.

1221 {
1222  switch (m_vege_type)
1223  {
1224  case tov_SpringBarley:
1225  case tov_SpringBarleySpr:
1226  case tov_WinterBarley:
1227  case tov_SpringWheat:
1228  case tov_WinterWheat:
1229  case tov_WinterRye:
1230  case tov_Oats:
1231  case tov_Triticale:
1232  case tov_SpringBarleySeed:
1233  case tov_SpringBarleyStrigling:
1234  case tov_SpringBarleyStriglingSingle:
1235  case tov_SpringBarleyStriglingCulm:
1236  case tov_WinterWheatStrigling:
1237  case tov_WinterWheatStriglingSingle:
1238  case tov_WinterWheatStriglingCulm:
1239  case tov_OWinterBarley:
1240  case tov_OWinterBarleyExt:
1241  case tov_OWinterRye:
1242  case tov_SpringBarleyGrass:
1243  case tov_SpringBarleyCloverGrass:
1244  case tov_SpringBarleyPeaCloverGrassStrigling:
1245  case tov_OSpringBarley:
1246  case tov_OSpringBarleyPigs:
1247  case tov_OWinterWheatUndersown:
1248  case tov_OWinterWheat:
1249  case tov_OOats:
1250  case tov_OTriticale:
1251  case tov_WWheatPControl:
1252  case tov_WWheatPToxicControl:
1253  case tov_WWheatPTreatment:
1254  case tov_AgroChemIndustryCereal:
1255  case tov_SpringBarleyPTreatment:
1256  case tov_SpringBarleySKManagement:
1257  case tov_OSpringBarleyExt:
1258  case tov_OSpringBarleyGrass:
1259  case tov_OSpringBarleyClover:
1260  return true;
1261  default: // No matching code so is should not be mature cereal
1262  return false;
1263  }
1264 }
TTypesOfVegetation m_vege_type
Definition: elements.h:595
void VegElement::RandomVegStartValues ( double *  a_LAtotal,
double *  a_LAgreen,
double *  a_veg_height,
double *  a_weed_biomass 
)
protected

References EL_VEG_HEIGHTSCALE, EL_VEG_START_LAIT, and random().

Referenced by ForceGrowthInitialize().

1460  {
1461  * a_LAtotal = EL_VEG_START_LAIT * ( ( ( ( double )( random( 21 ) - 10 ) ) / 100.0 ) + 1.0 ); // +/- 10%
1462  * a_LAgreen = * a_LAtotal / 4.0;
1463  * a_veg_height = * a_LAgreen * EL_VEG_HEIGHTSCALE;
1464  * a_weed_biomass = * a_LAgreen * 0.1; // 10% weeds by biomass
1465 }
int random(int a_range)
Definition: ALMaSS_CmdLine.cpp:133
#define EL_VEG_HEIGHTSCALE
Definition: elements.cpp:179
#define EL_VEG_START_LAIT
Definition: elements.cpp:175
void VegElement::ReadBugPercentageFile ( void  )
protected

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

1144  {
1145  m_ifile=fopen(l_el_bug_percentage_file.value(), "r" );
1146  if ( !m_ifile ) {
1147  g_msg->Warn( WARN_FILE, "CropData::ReadBugPercentageFile(): Unable to open file", l_el_bug_percentage_file.value() );
1148  exit( 1 );
1149  }
1150  for ( int i = 0; i < tov_Undefined; i++ ) {
1151  int vegnum;
1152  // **cjt** modified 31/01/2004
1153  float weedpercent, bugpercent_a, bugpercent_b, bugpercent_c, bugpercent_d;
1154  if ( 2 != fscanf( m_ifile, "%d %f %f %f %f %f", & vegnum, & weedpercent, & bugpercent_a, & bugpercent_b,
1155  & bugpercent_c, & bugpercent_d ) ) {
1156  char vegnums[ 20 ];
1157  sprintf( vegnums, "%d", tov_Undefined );
1158  g_msg->Warn( WARN_FILE,
1159  "VegElement::ReadBugPercentageFile(): Unable to read"
1160  " sufficient number of int/double pairs from bug percentage file."" Lines expected:", vegnums );
1161  exit( 1 );
1162  }
1163  FloatToDouble( g_weed_percent[ vegnum ], weedpercent);
1164  FloatToDouble( g_bug_percent_a[ vegnum ] , bugpercent_a);
1165  FloatToDouble( g_bug_percent_b[ vegnum ] , bugpercent_b);
1166  FloatToDouble( g_bug_percent_c[ vegnum ] , bugpercent_c);
1167  FloatToDouble( g_bug_percent_d[ vegnum ] , bugpercent_d);
1168  }
1169  fclose( m_ifile );
1170 }
static double g_bug_percent_c[tov_Undefined]
Definition: elements.cpp:122
void FloatToDouble(double &, float)
Definition: ALMaSS_CmdLine.cpp:169
FILE * m_ifile
Definition: elements.h:624
static double g_bug_percent_b[tov_Undefined]
Definition: elements.cpp:121
static double g_bug_percent_a[tov_Undefined]
Definition: elements.cpp:120
static double g_bug_percent_d[tov_Undefined]
Definition: elements.cpp:123
static CfgStr l_el_bug_percentage_file("ELEM_BUG_PERCENTAGE_FILE", CFG_CUSTOM,"bugpercents.txt")
static double g_weed_percent[tov_Undefined]
Definition: elements.cpp:119
void VegElement::RecalculateBugsNStuff ( void  )
protectedvirtual

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

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

Reimplemented from LE.

References c_SolarConversion, cfg_goose_GrainDecayRate, g_biomass_scale, g_bug_percent_a, g_bug_percent_b, g_bug_percent_c, g_landscape_p, IsCereal(), IsGooseGrass(), LE::m_area, LE::m_birdmaizeforage, LE::m_birdseedforage, LE::m_days_since_insecticide_spray, m_dead_biomass, m_digestability, LE::m_goosegrazingforage, 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, Landscape::SupplyFarmIntensity(), Landscape::SupplyGlobalRadiation(), Landscape::SupplyGooseGrazingForageH(), and Landscape::SupplyTemp().

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

1336  {
1337 
1338  double newgrowth=0;
1339  m_veg_cover = 1.0 - ( exp( m_LAtotal * -0.6 ) ); // Beer's Law to give cover
1340  double usefull_veg_cover = 1.0 - ( exp( m_LAgreen * -0.4 ) ); // This is used to calc growth rate
1341  // Need gloabal radiation today
1342  double glrad = g_landscape_p->SupplyGlobalRadiation();
1343  // This is different for maize (a C4 plant)
1344  int ptype;
1345  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;
1346  int index = ( int )floor( 0.5 + g_landscape_p->SupplyTemp() ) + 30; // There are 30 negative temps
1347  double radconv = c_SolarConversion[ ptype ] [ index ];
1348  if ( m_LAtotal >= m_oldLAtotal ) {
1349  // we are in positive growth so grow depending on our equation
1350  newgrowth = usefull_veg_cover * glrad * radconv * g_biomass_scale[ m_vege_type ];
1351  if (m_owner_index != -1) { // This only works because only crops and similar structures have owners
1352  int fintensity = g_landscape_p->SupplyFarmIntensity(m_poly);
1353  if (fintensity==1) {
1354  // 1 means extensive, so reduce vegetation biomass by 20%
1355  // NB this cannot be used with extensive crop types otherwise you get an additional 20% reduction
1356  // This way of doing things provides a quick and dirty general effect.
1357  m_veg_biomass += newgrowth * 0.8;
1358  } else m_veg_biomass += newgrowth;
1359  } else m_veg_biomass += newgrowth;
1360  } else {
1361  // Negative growth - so shrink proportional to the loss in LAI Total
1362  if ( m_oldLAtotal > 0 ) {
1364  }
1365  }
1369  // For geese that eat spilled grain and maize we need to remove some of this daily (loss to other things than geese)
1371  if (m_birdseedforage <0.01) m_birdseedforage = 0.0;
1373  if (m_birdmaizeforage <0.01) m_birdmaizeforage = 0.0;
1374  // Another thing to do is to calculate mean vegetation digestability
1375  // This is a 32-day running average of the amount of new growth per day divided by veg biomass
1376  // With a minimum value of 0.5
1377  ++m_newoldgrowthindex &= 31;
1378  if (m_veg_biomass>0 ) {
1379  switch (m_vege_type) {
1380  case tov_NoGrowth:
1381  case tov_None:
1382  case tov_OFirstYearDanger:
1383  m_digestability=0.0;
1384  break;
1385  case tov_OPotatoes:
1386  case tov_Maize:
1387  case tov_MaizeSilage:
1388  case tov_OMaizeSilage:
1389  case tov_MaizeStrigling:
1390  case tov_Potatoes:
1391  case tov_PotatoesIndustry:
1392  m_digestability=0.5;
1393  break;
1394  default:
1395  //m_oldnewgrowth[m_newoldgrowthindex]=(newgrowth/m_veg_biomass);
1396  m_oldnewgrowth[m_newoldgrowthindex]=(newgrowth);
1397  m_newgrowthsum=0.0;
1398  for (int i=0; i<32; i++) {
1400  }
1402  m_digestability+=0.5;
1403  if (m_digestability>0.8) m_digestability=0.8;
1404  }
1405  }
1406  else {
1408  m_digestability = 0.0;
1409  }
1410  // We also need to calculate non-grain forage for geese
1411  if (IsCereal()) {
1412  if (m_green_biomass > 0.5) //Testing if this could be a suitable fix for the cereals
1413  {
1414  for (unsigned i = 0; i < gs_foobar; i++) {
1415  //m_goosegrazingforage[ i ] = 0.0;
1417  m_goosegrazingforage[ i ] = g_landscape_p->SupplyGooseGrazingForageH( m_veg_height, (GooseSpecies)i ) * 1.0325;
1418  }
1419  }
1420  else for (unsigned i = 0; i < gs_foobar; i++) {
1421  m_goosegrazingforage[i] = 0.0;
1422  }
1423  }
1425  else if (IsGooseGrass()) {
1426  for (unsigned i = 0; i < gs_foobar; i++) {
1427  //m_goosegrazingforage[ i ] = 0.0;
1429  }
1430  }
1431  else for (unsigned i = 0; i < gs_foobar; i++) m_goosegrazingforage[ i ] = 0.0;
1432 
1433  // NB The m_weed_biomass is calculated directly from the curve in Curves.pre
1434  // rather than going through the rigmorole of converting leaf-area index
1435  // The insect calculation part
1436  // Bugmass = a + b(biomass) + c(height)
1437  double temp_bugmass = //g_bug_percent_d[ m_vege_type ] // This was used as a scaler - now not used
1440  // Set a minimum value (regressions will otherwise sometimes give a -ve value
1441  if ( temp_bugmass < 0.05 ) temp_bugmass = 0.05;
1442  // Now need to check for deviations caused by management
1443  // First spot the deviation - this is easy because the only deviation that does
1444  // not affect the vegetation too is insecticide spraying
1445  if ( m_days_since_insecticide_spray > 0 ) {
1446  // Need to change insects still, so grow towards the target, but only when 21 days from zero effect
1449  }
1450  else {
1451  m_insect_pop = temp_bugmass;
1452  }
1453  m_veg_density = (int) (floor( 0.5 + ( m_veg_biomass / ( 1 + m_veg_height ) ) ));
1454  if ( m_veg_density > 100 ) m_veg_density = 100; // to stop array bounds problems
1455  if (m_LAtotal == 0.0) m_green_biomass = 0.0;
1458  }
int m_veg_density
Definition: elements.h:611
static double g_bug_percent_c[tov_Undefined]
Definition: elements.cpp:122
double m_birdmaizeforage
The maize forage present in KJ/m2.
Definition: elements.h:432
double m_oldLAtotal
Definition: elements.h:601
int m_newoldgrowthindex
Definition: elements.h:617
static double g_bug_percent_b[tov_Undefined]
Definition: elements.cpp:121
double m_newgrowthsum
Definition: elements.h:618
static double g_bug_percent_a[tov_Undefined]
Definition: elements.cpp:120
double m_LAtotal
Definition: elements.h:600
virtual bool IsCereal()
Definition: elements.cpp:1172
double m_digestability
Definition: elements.h:615
double m_total_biomass
Definition: elements.h:605
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:503
double m_veg_cover
Definition: elements.h:613
static double g_biomass_scale[tov_Undefined]
Definition: elements.cpp:118
TTypesOfVegetation m_vege_type
Definition: elements.h:595
double m_insect_pop
Definition: elements.h:603
double m_dead_biomass
Definition: elements.h:608
double m_goosegrazingforage[gs_foobar]
The grazing forage present in KJ/min.
Definition: elements.h:434
double SupplyGlobalRadiation()
Definition: landscape.h:1265
double m_weed_biomass
Definition: elements.h:609
double m_total_biomass_old
Definition: elements.h:606
double m_green_biomass
Definition: elements.h:607
double m_oldnewgrowth[32]
Definition: elements.h:616
double m_birdseedforage
The grain forage present in KJ/m2.
Definition: elements.h:430
double m_LAgreen
Definition: elements.h:602
CfgFloat cfg_goose_GrainDecayRate
int m_owner_index
Definition: elements.h:406
double m_veg_height
Definition: elements.h:610
int m_poly
The polyref number for this polygon.
Definition: elements.h:409
double m_veg_biomass
Definition: elements.h:604
const double c_SolarConversion[2][81]
Definition: elements.cpp:93
int SupplyFarmIntensity(int a_x, int a_y)
Definition: Landscape.cpp:613
int m_days_since_insecticide_spray
Definition: elements.h:441
double m_area
Definition: elements.h:420
virtual bool IsGooseGrass()
Definition: elements.cpp:1308
class Landscape * g_landscape_p
Definition: Landscape.cpp:238
double SupplyTemp(void)
Definition: landscape.h:1310
void VegElement::ReduceVeg ( double  a_reduc)
virtual

Reimplemented from LE.

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

Referenced by OrchardBand::DoDevelopment().

1702  {
1703  m_LAgreen *= a_reduc;
1704  m_LAtotal *= a_reduc;
1705  m_veg_height *= a_reduc;
1706  m_veg_biomass *= a_reduc;
1707  m_weed_biomass *= a_reduc;
1708 
1709  ForceGrowthTest();
1710  m_oldLAtotal = m_LAtotal; // this stops double reduction of biomass later in RecalculateBugsNStuff();
1711 }
double m_oldLAtotal
Definition: elements.h:601
double m_LAtotal
Definition: elements.h:600
double m_weed_biomass
Definition: elements.h:609
virtual void ForceGrowthTest(void)
Definition: elements.cpp:1520
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
double m_veg_biomass
Definition: elements.h:604
void VegElement::ReduceVeg_Extended ( double  a_reduc)
virtual

Reimplemented from LE.

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().

1713  {
1714  m_LAgreen *= a_reduc;
1715  m_LAtotal *= a_reduc;
1716  m_veg_height *= a_reduc;
1717  m_veg_biomass *= a_reduc;
1718  m_weed_biomass *= a_reduc;
1719 
1720  if ( a_reduc < EL_GROWTH_PHASE_SHIFT_LEVEL ) {
1721  m_yddegs = 0.0;
1723  }
1724 
1725  if ( g_date->DayInYear() >= EL_GROWTH_DATE_MAGIC && a_reduc < EL_GROWTH_PHASE_SHIFT_LEVEL && !m_forced_phase_shift ) {
1726  SetGrowthPhase( harvest1 );
1727  m_forced_phase_shift = true;
1728  }
1729 
1730  ForceGrowthTest();
1731  m_oldLAtotal = m_LAtotal; // this stops double reduction of biomass later in RecalculateBugsNStuff();
1732 }
double m_oldLAtotal
Definition: elements.h:601
double m_LAtotal
Definition: elements.h:600
virtual void SetGrowthPhase(int a_phase)
Definition: elements.cpp:1468
bool m_forced_phase_shift
Definition: elements.h:614
#define EL_GROWTH_PHASE_SHIFT_LEVEL
Definition: elements.cpp:158
double m_weed_biomass
Definition: elements.h:609
double m_ddegs
Definition: elements.h:448
#define EL_GROWTH_DAYDEG_MAGIC
Definition: elements.cpp:146
virtual void ForceGrowthTest(void)
Definition: elements.cpp:1520
double m_LAgreen
Definition: elements.h:602
#define EL_GROWTH_DATE_MAGIC
Definition: elements.cpp:152
double m_yddegs
Definition: elements.h:447
double m_veg_height
Definition: elements.h:610
double m_veg_biomass
Definition: elements.h:604
virtual void VegElement::ReduceWeedBiomass ( double  a_fraction)
inlinevirtual

Reimplemented from LE.

513  {
514  m_weed_biomass *= a_fraction;
515  }
double m_weed_biomass
Definition: elements.h:609
virtual void VegElement::ResetDigestability ( )
inlinevirtual

sets growth record to zero

Reimplemented from LE.

589  {
590  for (int i = 0; i<32; i++) m_oldnewgrowth[i] = 0.0;
591  }
double m_oldnewgrowth[32]
Definition: elements.h:616
void VegElement::ResetGeese ( void  )

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

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

Referenced by DoDevelopment().

1664  {
1665  m_gooseNos[ g_date->DayInYear() ] = 0;
1666  for (unsigned i = 0; i < gs_foobar; i++) {
1667  m_gooseSpNos[ g_date->DayInYear() ][ (GooseSpecies)i ] = 0;
1668  m_gooseSpNosTimed[ g_date->DayInYear() ][ (GooseSpecies)i ] = 0;
1669  }
1670 }
int m_gooseNos[366]
The number of geese each day.
Definition: elements.h:422
int m_gooseSpNos[366][gs_foobar]
The number of geese of each species each day.
Definition: elements.h:424
int m_gooseSpNosTimed[366][gs_foobar]
The number of geese of each species at a predefined time per day.
Definition: elements.h:428
void VegElement::Set_area_in_crop_data ( double  a_area)
inline
561 {m_CropDataStorage[0].area = a_area;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
double area
Definition: elements.h:470
void VegElement::Set_biomass_at_harvest ( double  a_biomass,
int  index 
)
inline
562 {m_CropDataStorage[index].biomass_at_harvest = a_biomass;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
double biomass_at_harvest
Definition: elements.h:468
void VegElement::Set_CropDataStorage ( int  index,
CropActualValues  a_struct 
)
inline
582 {m_CropDataStorage[index] = a_struct;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
void VegElement::Set_harvested ( )
inline
564 {m_CropDataStorage[0].harvested = true;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
bool harvested
Definition: elements.h:469
void VegElement::Set_taken ( bool  a_taken,
int  index 
)
inline
557 {m_CropDataStorage[index].taken = a_taken;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
bool taken
Definition: elements.h:466
void VegElement::Set_tov_type ( TTypesOfVegetation  a_tov_type,
int  index 
)
inline
559 {m_CropDataStorage[index].tov_type = a_tov_type;};
CropActualValues m_CropDataStorage[2]
Keeps data on pesticide applications, biomass at harvest etc. Data for maximum two crops can be store...
Definition: elements.h:633
TTypesOfVegetation tov_type
Definition: elements.h:467
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.

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

1783  {
1784  m_veg_height = a_veg_height;
1785  m_LAtotal = a_LAtotal;
1786  m_LAgreen = a_LAgreen;
1787  m_vege_type = a_veg;
1788  m_veg_cover = a_cover;
1789  m_cattle_grazing = a_grazed;
1790 }
double m_LAtotal
Definition: elements.h:600
double m_veg_cover
Definition: elements.h:613
TTypesOfVegetation m_vege_type
Definition: elements.h:595
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
int m_cattle_grazing
Definition: elements.h:444
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.

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.

1793  {
1794  m_veg_height = a_veg_height;
1795  m_veg_biomass = a_biomass;
1796  m_LAtotal = a_LAtotal;
1797  m_LAgreen = a_LAgreen;
1798  m_vege_type = a_veg;
1799  m_weed_biomass = a_wb;
1800  m_veg_cover = a_cover;
1801  m_cattle_grazing = a_grazed;
1802  m_insect_pop = a_ins;
1803  m_veg_density = (int) a_dens;
1804  m_veg_patchy = a_patchy;
1805 }
int m_veg_density
Definition: elements.h:611
double m_LAtotal
Definition: elements.h:600
double m_veg_cover
Definition: elements.h:613
TTypesOfVegetation m_vege_type
Definition: elements.h:595
double m_insect_pop
Definition: elements.h:603
double m_weed_biomass
Definition: elements.h:609
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
double m_veg_biomass
Definition: elements.h:604
int m_cattle_grazing
Definition: elements.h:444
bool m_veg_patchy
Definition: elements.h:612
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.

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, and LE::m_yddegs.

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

1468  {
1469 
1470  /*
1471  if ( m_vege_type == tov_PermanentSetaside && a_phase != janfirst )
1472  return;
1473  */
1474 
1475  if (a_phase == janfirst) {
1476  m_forced_phase_shift = false;
1481  if (g_crops->StartValid(m_curve_num, a_phase)) {
1482  double temp_veg_height = g_crops->GetStartValue(m_curve_num, a_phase, 2);
1483  if (temp_veg_height < m_veg_height) { // Otherwise we are better off with the numbers we have to start with
1484  m_LAgreen = g_crops->GetStartValue(m_curve_num, a_phase, 0);
1485  m_LAtotal = g_crops->GetStartValue(m_curve_num, a_phase, 1);
1486  m_veg_height = g_crops->GetStartValue(m_curve_num, a_phase, 2);
1487  }
1488  }
1489 
1490  }
1491  else if ( g_crops->StartValid( m_curve_num, a_phase ) ) {
1492  m_LAgreen = g_crops->GetStartValue( m_curve_num, a_phase, 0 );
1493  m_LAtotal = g_crops->GetStartValue( m_curve_num, a_phase, 1 );
1494  m_veg_height = g_crops->GetStartValue( m_curve_num, a_phase, 2 );
1495  } else if ( !m_force_growth ) {
1496  // If we are in forced growth mode (which is very likely),
1497  // then do not choose a new set of starting values, as we have
1498  // already calculated our way to a reasonable set of values.
1499  //RandomVegStartValues( & m_LAtotal, & m_LAgreen, & m_veg_height, & m_weed_biomass ); // **CJT** Testing removal 17/02/2015
1500  }
1501  m_veg_phase = a_phase;
1502  m_yddegs = 0.0;
1503  m_ddegs = g_weather->GetDDDegs( g_date->Date() );
1504  m_force_growth = false;
1505 
1506  if ( m_veg_phase == janfirst ) {
1507  // For some growth curves there is no growth in the first
1508  // two months of the year. This will more likely than
1509  // not cause a discontinuous jump in the growth curves
1510  // come March first. ForceGrowthSpringTest() tries
1511  // to avoid that by checking for positive growth values
1512  // for the January growth phase. If none are found, then
1513  // it initializes a forced growth/transition to the March
1514  // 1st starting values.
1515  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).
1516  }
1517 }
bool m_force_growth
Definition: elements.h:623
double m_LAtotal
Definition: elements.h:600
bool m_forced_phase_shift
Definition: elements.h:614
double m_ddegs
Definition: elements.h:448
double m_LAgreen
Definition: elements.h:602
int m_veg_phase
Definition: elements.h:598
double m_yddegs
Definition: elements.h:447
double m_veg_height
Definition: elements.h:610
void ForceGrowthSpringTest(void)
Definition: elements.cpp:1531
int m_curve_num
Definition: elements.h:596
virtual void VegElement::SetInsectPop ( double  insects)
inlinevirtual

Reimplemented from LE.

499 { m_insect_pop=insects; }
double m_insect_pop
Definition: elements.h:603
virtual void VegElement::SetVegHeight ( double  a_veg_height)
inlinevirtual

Reimplemented from LE.

537 { m_veg_height = a_veg_height; }
double m_veg_height
Definition: elements.h:610
virtual void VegElement::SetVegParameters ( double  a_veg_height,
double  a_LAtotal,
double  a_LAgreen,
double  a_WeedBiomass 
)
inlinevirtual

Reimplemented from LE.

539  {
540  m_veg_height = a_veg_height;
541  m_LAtotal = a_LAtotal;
542  m_LAgreen = a_LAgreen;
543  m_weed_biomass = a_WeedBiomass;
544  //RecalculateBugsNStuff();
545  }
double m_LAtotal
Definition: elements.h:600
double m_weed_biomass
Definition: elements.h:609
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
virtual void VegElement::SetVegPatchy ( bool  p)
inlinevirtual

Reimplemented from LE.

Referenced by VegElement().

497 { m_veg_patchy=p; }
bool m_veg_patchy
Definition: elements.h:612
virtual void VegElement::SetVegType ( TTypesOfVegetation  a_vege_type,
TTypesOfVegetation  a_weed_type 
)
inlinevirtual

Reimplemented from LE.

528  {
529  m_vege_type = a_vege_type;
530  m_curve_num = g_crops->VegTypeToCurveNum( a_vege_type );
531  // -1 is used as a signal not to change the weed type
532  // this is because it may be specific to that field
533  if (a_weed_type!=tov_Undefined) m_weed_curve_num = a_weed_type;
534  }
TTypesOfVegetation m_vege_type
Definition: elements.h:595
int m_weed_curve_num
Definition: elements.h:597
int m_curve_num
Definition: elements.h:596
virtual void VegElement::StoreLAItotal ( )
inlinevirtual

Reimplemented from LE.

547 { m_oldLAtotal = m_LAtotal; }
double m_oldLAtotal
Definition: elements.h:601
double m_LAtotal
Definition: elements.h:600
virtual void VegElement::ToggleCattleGrazing ( void  )
inlinevirtual

Reimplemented from LE.

int m_default_grazing_level
Definition: elements.h:445
int m_cattle_grazing
Definition: elements.h:444
virtual void VegElement::TogglePigGrazing ( void  )
inlinevirtual

Reimplemented from LE.

bool m_pig_grazing
Definition: elements.h:446
void VegElement::ZeroVeg ( void  )
virtual

Reimplemented from LE.

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

1603  {
1604  m_LAgreen = 0.0;
1605  m_LAtotal = 0.0;
1606  m_veg_height = 0.0;
1607  m_veg_cover = 0.0;
1608  m_veg_biomass = 0.0;
1609  m_weed_biomass = 0.0;
1610  m_birdseedforage = 0.0;
1611  m_birdmaizeforage = 0.0;
1612 
1613  ForceGrowthTest();
1615 }
double m_birdmaizeforage
The maize forage present in KJ/m2.
Definition: elements.h:432
double m_LAtotal
Definition: elements.h:600
double m_veg_cover
Definition: elements.h:613
double m_weed_biomass
Definition: elements.h:609
virtual void ForceGrowthTest(void)
Definition: elements.cpp:1520
double m_birdseedforage
The grain forage present in KJ/m2.
Definition: elements.h:430
double m_LAgreen
Definition: elements.h:602
double m_veg_height
Definition: elements.h:610
double m_veg_biomass
Definition: elements.h:604
virtual void RecalculateBugsNStuff(void)
Definition: elements.cpp:1336

Member Data Documentation

int VegElement::m_crop_index
protected

Referenced by VegElement().

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 Clean_CropDataStorage().

double VegElement::m_dead_biomass
protected

Referenced by RecalculateBugsNStuff().

bool VegElement::m_force_growth
protected
double VegElement::m_force_LAgreen
protected
double VegElement::m_force_LAtotal
protected
double VegElement::m_force_veg_height
protected
double VegElement::m_force_Weed
protected

Referenced by ForceGrowthInitialize().

bool VegElement::m_forced_phase_shift
protected
double VegElement::m_green_biomass
protected

Referenced by RecalculateBugsNStuff().

FILE* VegElement::m_ifile
protected

Referenced by ReadBugPercentageFile().

double VegElement::m_newgrowthsum
protected
int VegElement::m_newoldgrowthindex
protected
int VegElement::m_nutrient_status
protected

Referenced by VegElement().

double VegElement::m_oldLAtotal
protected
double VegElement::m_oldnewgrowth[32]
protected
double VegElement::m_total_biomass
protected
double VegElement::m_total_biomass_old
protected
double VegElement::m_veg_cover
protected
int VegElement::m_veg_phase
protected
int VegElement::m_weed_curve_num
protected

The documentation for this class was generated from the following files: