This document provides computational equations and variables used in a computer model for calculating nutrient requirements of dairy cattle. It includes submodels for calculating requirements for minerals, reserves, young calves, growth, maintenance, lactation, and pregnancy. It also includes submodels for calculating nutrient supply from diet evaluation and intake. The model is programmed in Visual Basic 6.0 and contains definitions for public and private variables used in computations and output.
Effect of Cassava Bioethanol By-Product and Crude Palm Oil in Brahman X Thai Native Yearling Heifer Cattle Diets (II. Carcass Characteristics and Meat Quality)
This document provides computational equations and variables used in a computer model for calculating nutrient requirements of dairy cattle. It includes submodels for calculating requirements for minerals, reserves, young calves, growth, maintenance, lactation, and pregnancy. It also includes submodels for calculating nutrient supply from diet evaluation and intake. The model is programmed in Visual Basic 6.0 and contains definitions for public and private variables used in computations and output.
This document provides computational equations and variables used in a computer model for calculating nutrient requirements of dairy cattle. It includes submodels for calculating requirements for minerals, reserves, young calves, growth, maintenance, lactation, and pregnancy. It also includes submodels for calculating nutrient supply from diet evaluation and intake. The model is programmed in Visual Basic 6.0 and contains definitions for public and private variables used in computations and output.
This document provides computational equations and variables used in a computer model for calculating nutrient requirements of dairy cattle. It includes submodels for calculating requirements for minerals, reserves, young calves, growth, maintenance, lactation, and pregnancy. It also includes submodels for calculating nutrient supply from diet evaluation and intake. The model is programmed in Visual Basic 6.0 and contains definitions for public and private variables used in computations and output.
2 Nutrient Requirements of Dairy Cattle, Seventh Revised Edition
3 Model Computational Code 4 5Below are the computational equations in the computer model accompanying Nutrient 6Requirements of Dairy Cattle (2001). The program was written in Visual Basic, version 6.0 and 7was programmed by Vajesh Durbal. Information on variables can be found in the Glossary in the 8accompanying report as can the rationale used by the subcommittee to develop the model. 9 10The model is divided into submodels to compute requirements for minerals (line 689), reserves 11(line 1901), young calves (line 2151), growth (line 2564), maintenance (line 2659), target weight 12(line 3653), lactation (line 3723) and pregnancy (line 3761). The submodels for calculation of 13nutrient supply are DietEvalOne (line 1663), DietEvalTwo (line 1970), Intake (line 2873), 14Amino Acids (line 3005), Energy and Protein Supply (line 3466), and Energy Values (line 3801). 15Lines 1- 594 include definition of both public and private (those used in computations but not 16shown as output) variables. These line values are approximate because they are affected by the 17margin width and page layout of your word processor. 18 19 20' Program parameters 21Public NumFeeds As Byte ' keeps track of the total number of 22 ' feeds loaded by the user 23 24Public FeedNum As Byte ' keeps track of the current feed 25 ' selected (e.g. for Edit Feed Comp) 26 27 28' Program Settings variables 29Public Metric As Boolean ' True = Metric units, False = English units 30Public DryMatterBasis As Boolean ' True = Dry Matter Basis 31Public Comments As String 32Public Header(1 To 3) As String ' Header(1) = Left, Header(2) = Center, Header(3) = Right 33Public Footer(1 To 3) As String ' Footer(1) = Left, Footer(2) = Center, Footer(3) = Right 34Public SumRes(0 To 9) As String ' Summary Results 35Public DefaultZoom As String 36 37 38' Animal Description variables 39Public AnimalType As String ' Options : "Lactating Cow", "Dry Cow" 40 ' "Replacement Heifer", "Young Calf" 41Public Age As Single ' age (months) 42Public BW As Single ' body weight 43Public DaysPreg As Integer ' days pregnant 44Public CS As Single ' condition score (1 - 5) 45Public DaysInMilk As Integer ' days in milk 46Public LactNum As Byte ' lactation number 47Public FirstCalf As Single ' age at first calving (months) 48Public CalfInt As Single ' calving interval (months) 49Public DesiredADG As Integer ' desired ADG (g/day) 50Public UseTargetADG As Boolean ' if True, indicates that program should 51 ' use Target ADG, instead of Desired ADG to 52 ' determine growth requirements 53 54Public CalfBW As Single ' Calf Body Weight (kg) 55Public CalfTemp As Single ' Calf Temperature (deg C) 56 57 58 59' Animal Production variables 60Public MW As Single ' mature weight 61Public MWFromBreed As Boolean ' indicates if the animal's MW should 62 ' be set as a function of the breed 63Public Breed As String ' Choices : "Ayrshire", "Brown Swiss" 64 ' "Guernsey", "Holstein", "Jersey" 65Public CBW As Single ' calf birth weight 66Public CBWFromMW As Boolean ' to compute CBW from MW 67Public MilkProd As Single ' milk production 68Public MilkFat As Single ' milk fat (%) 69Public ShowMilkTrue As Boolean ' indicates if milk protein should be shown 70 ' on a true or crude basis 71Public MilkTrueProtein As Single ' milk true protein (%) 72Public Lactose As Single ' milk lactose (%) 73 74 75 76' Management and Environment variables 77Public Temp As Single ' current temperature 78Public PrevTemp As Single ' previous temperature 79Public WindSpeed As Single 80Public Grazing As Boolean 81Public Distance As Single ' Distance between Pasture and Milking Center 82Public Topography As String ' "Flat", "Hilly" 83Public Trips As Integer ' Number of one-way trips 84Public CoatCond As String ' Choices : "Clean/Dry", "Some Mud" 85 ' "Wet/Matted", "Covered with Snow/Mud" 86Public HeatStress As String ' "None", "Rapid/Shallow", "Open Mouth" 87Public HairDepth As Single ' depth of hair on coat 88Public NightCooling As Boolean ' True = Night Cooling, False = None 89 90 91 92 93' Feed Components 94Type FeedType 95 96 DMFed As Single ' Quantity of this feed fed to the animal (dry matter basis) 97 Name As String ' name of the feed (e.g. "Corn Silage, mature") 98 ReadOnly As Boolean ' is "True" if the feed is part of the original library 99 Category As String ' feed category (e.g. Forage, Grass, Animal Product,...) 100 IFN As String ' International Reference Number 101 TDN As Single ' total digestible nutrients (%DM) at 1X Maintenance 102 EnergyEqClass As String ' "Forage", "Concentrate" or "Animal" 103 ForageDescrp As String ' "Wet" vs. "Dry" 104 PAF As Single ' processing adjustment factor 105 DE As Single ' digestible energy (Mcal) 106 DM As Single ' dry matter (%AF) 107 NDF As Single ' neutral detergent fiber (%DM) 108 ADF As Single ' acid detergent fiber (%DM) 109 Lignin As Single ' (% DM) 110 CP As Single ' crude protein (%DM) 111 NDFIP As Single ' (%DM) 112 ADFIP As Single ' (%DM) 113 PrtA As Single ' (%CP) 114 PrtB As Single ' (%CP) 115 PrtC As Single ' (%CP) 116 Kd As Single ' Protein Digestion rate (%/hr) 117 RUPDigest As Single ' (%) 118 Fat As Single ' (%DM) 119 Ash As Single ' (%DM) 120 Ca As Single ' (%DM) 121 CaBio As Single ' Bioavailablity of Ca in the feed (%) 122 P As Single ' (%DM) 123 PBio As Single ' Bioavailablity of P in the feed (%) 124 Mg As Single ' (%DM) 125 MgBio As Single ' Bioavailablity of Mg in the feed (%) 126 Cl As Single ' (%DM) 127 ClBio As Single ' Bioavailability of Cl in the feed (%) 128 K As Single ' (%DM) 129 KBio As Single ' Bioavailability of K in the feed (%) 130 Na As Single ' (%DM) 131 NaBio As Single ' Bioavailability of Na in the feed (%) 132 s As Single ' (%DM) 133 SBio As Single ' Bioavailability of S in the feed (%) 134 Co As Single ' (mg/kg) 135 CoBio As Single ' Bioavailability of Co in the feed (%) 136 Cu As Single ' (mg/kg) 137 CuBio As Single ' Bioavailability of Cu in the feed (%) 138 I As Single ' (mg/kg) 139 IBio As Single ' Bioavailability of I in the feed (%) 140 Fe As Single ' (mg/kg) 141 FeBio As Single ' Bioavailability of Fe in the feed (%) 142 Mn As Single ' (mg/kg) 143 MnBio As Single ' Bioavailability of Mn in the feed (%) 144 Se As Single ' (mg/kg) 145 SeBio As Single ' Bioavailability of Se in the feed (%) 146 Zn As Single ' (mg/kg) 147 ZnBio As Single ' Bioavailability of Zn in the feed (%) 148 Met As Single 149 Lys As Single 150 Arg As Single 151 His As Single 152 Ile As Single 153 Leu As Single 154 Cys As Single 155 Phe As Single 156 Thr As Single 157 Trp As Single 158 Val As Single 159 VitA As Single ' (1000 IU/kg) 160 VitD As Single ' (1000 IU/kg) 161 VitE As Single ' (IU/kg) 162 NFCDigest As Single ' NFC Digestibility Coefficient 163 CPDigest As Single ' CP Digestibility Coefficient 164 NDFDigest As Single ' NDF Digestibility Coefficient 165 FatDigest As Single ' Fat Digestibility Coefficient 166 167 168 169 ' The following characteristics apply to Calf Feeds only 170 ' the "c" prefix is given to any characteristics that have 171 ' non-calf counterparts (e.g. "cMEng") 172 cDM As Single ' (%AF) 173 cGE As Single ' (Mcal/kg DM) 174 cDE As Single ' (Mcal/kg DM) 175 cMEng As Single ' (Mcal/kg DM) 176 cNEm As Single ' (Mcal/kg DM) 177 cNEg As Single ' (Mcal/kg DM) 178 cCP As Single ' (%DM) 179 cDCP As Single ' (%DM) 180 cEE As Single ' (%DM) 181 cAsh As Single ' (%DM) 182 183 184 ' Computed compositional values 185 TDN_ActX As Single ' TDN at Intake Over Maintenance 186 DiscDE As Single ' Discounted DE (Mcal/kg) 187 MEforNEg As Single ' efficiency of conversion of ME to NEg 188 MEng As Single ' *** ME - metabolizable energy (Mcal/kg) *** 189 NEl As Single ' *** net energy of lactation (Mcal/kg) *** 190 NEg As Single ' *** net energy of growth (Mcal/kg) *** 191 NEm As Single ' *** net energy for maintenance (Mcal/kg) *** 192End Type 193 194 195 196' Feed/Ration Variables 197Public Feed() As FeedType 198Public TotalDMFed As Single ' Total quantity of dry matter fed (kg/day) 199Public TotalRegDMFed As Single ' Total quantity of regular feed (i.e. non-calf feed) DM Fed 200(kg/day) 201Public PredIntake As Single 202 203 204 205' Mineral Name Constants 206Public Enum Minerals 207 Ca = 1 208 P 209 Mg 210 Cl 211 K 212 Na 213 Su 214 Co 215 Cu 216 Io 217 Fe 218 Mn 219 Se 220 Zn 221 Mo 222 VitA 223 VitD 224 VitE 225End Enum 226 227 228 229 230 231' Output Variables 232 233 234 235' Pregnancy Requirements 236Public Km As Single ' diet NEl/diet NE = efficiency of use of ME for Maintenance 237Public MEPreg As Single ' metabolizable energy requirement for pregnancy (Mcal/day) 238Public NEPreg As Single ' net energy required for pregnancy (Mcal/day) 239Public MPPreg As Single ' metabolizable protein requirement for pregnancy (g/day) 240Public CPPreg As Single ' crude protein requirement for pregnancy (g/day) 241Public CW As Single ' conceptus weight (kg) 242Public ADGPreg As Single ' average daily gain due to conceptus growth (g/day) 243 244 245 246' Lactation Requirements 247Public MilkEn As Single ' energy content of milk (Mcal NEl/kg) 248Public YEn As Single ' daily energy secretion in milk (Mcal NEl/day) 249Public NELact As Single ' net energy requirement for lactation (Mcal/day) 250Public YProtn As Single ' daily milk protein yield at current stage of lactation (kg/day) 251Public YFatn As Single ' daily milk fat yield at current stage of lactation (kg/day) 252Public MPLact As Single ' metabolizable protein requirement for lactation (g/day) 253Public FCM As Single ' fat corrected milk production (kg/day) 254 255 256 257' Target Weights and ADG for Breeding Females 258Public Age1st As Single ' age at first calving = FirstCalf (mon) 259Public Age2nd As Single ' age at second calving (mon) 260Public Age3rd As Single ' age at third calving (mon) 261Public Age1stBred As Single ' age at first breeding (mon) 262Public Wt1st As Single ' target weight at first calving (kg) 263Public Wt2nd As Single ' target weight at second calving (kg) 264Public Wt3rd As Single ' target weight at third calving (kg) 265Public Wt1stBred As Single ' target weight at first breeding (kg) 266Public ADG1st As Single ' average daily gain at first calving (kg/day) 267Public ADG2nd As Single ' average daily gain at second calving (kg/day) 268Public ADG3rd As Single ' average daily gain at third calving (kg/day) 269Public ADG1stBred As Single ' average daily gain at first breeding (kg/day) 270Public ADGNonBred As Single ' average daily gain needed to get to ADG1stBred (kg/day) 271Public ADG As Single ' average daily gain for the cow, given the current characteristics 272(kg/day) 273 274 275 276' Reserves Requirements 277Public CS_F(1 To 9) As Single ' factor for condition score x 278Public CS5EBW As Single ' empty body weight of the animal for condition score 5 (kg) 279Public EBW(1 To 9) As Single ' empty body weight of the animal for condition score x (kg) 280Public AF(1 To 9) As Single ' proportion of fat in the animal at condition score x 281Public TF(1 To 9) As Single ' total weight of fat in the animal at condition score x (kg) 282Public AP(1 To 9) As Single ' proportion of protein in the animal at condition score x 283Public TP(1 To 9) As Single ' total weight of protein in the animal at condition score x (kg) 284Public ER(1 To 9) As Single ' energy reserves of the animal at condition score x (Mcal) 285Public Lose1CS As Single ' energy needed to lose one condition score (Mcal) 286Public Gain1CS As Single ' energy needed to gain one condition score (Mcal) 287Public NElSub As Single ' amount of retained energy that will be substituted for 288 ' dietary NEl in order to lose one condition score (Mcal) 289Public NElReq As Single ' amount of energy dietary NEl will supply in 290 ' order to gain one condition score (Mcal) 291Public deltaER As Single ' change in ER needed to move up or down one condition score 292(Mcal) 293Public DaysToChange As Single ' number of days needed to move up or down one condition 294score 295 296 297 298' Compute Energy Values 299Public DMI_to_DMIMaint As Single ' ratio of DMI to DMI required for maintenance 300 301 302' Energy and Protein Supply 303' N.B. Those variables that are arrays are for specific feeds. 304' For example DMI(2) will be the dry matter intake for Feed(2). 305Public PsgRate() As Single ' predicted passage rate 306Public DMI() As Single ' dry matter intake (kg/day) 307Public TDN() As Single ' total digestible nutrients (g/day) 308Public TDN_Act() As Single ' discounted total digestible nutrients (g/day) 309Public CP() As Single ' crude protein intake (g/day) 310Public MEng() As Single ' metabolizable energy (Mcal/day) 311Public NEl() As Single ' net energy for lactation (Mcal/day) 312Public NEg() As Single ' net energy for growth (Mcal/day) 313Public RUP() As Single ' ruminally undegradable intake protein (g/day) 314Public RDP() As Single ' ruminally degradable intake protein (g/day) 315Public NDF() As Single ' neutral detergent fiber (kg/day) 316Public ADF() As Single ' acid detergent fiber (kg/day) 317Public DMI_Total As Single ' total dry matter intake (kg/day) 318Public TDN_Total As Single ' total 1X-TDN intake (g/day) 319Public TDN_Act_Total As Single ' actual, discounted TDN intake (g/day) 320Public Discount As Single ' discounts energy value to adjust for intake 321Public UndiscDE_Total As Single ' total, undiscounted, DE intake (Mcal/day) 322Public DE_Total As Single ' total DE intake (Mcal/day) 323Public Fat_Total As Single ' total Fat intake (kg/day) 324Public MEng_Total As Single ' total ME intake (Mcal/day) 325Public NEm_Total As Single ' total NEm intake (Mcal/day) 326Public NEl_Total As Single ' total NEl intake (Mcal/day) 327Public NEg_Total As Single ' total NEg intake (Mcal/day) 328Public CP_Total As Single ' total crude protein intake (g/day) 329Public RUP_Total As Single ' total RUP intake (g/day) 330Public TotalDigestedRUP As Single ' total digested RUP (g/day) 331Public DietRUPDigest As Single ' total RUP digestibility for the diet (weighted average) 332Public RDP_Total As Single ' total RDP intake (g/day) 333Public NDF_Total As Single ' total NDF intake (g/day) 334Public ADF_Total As Single ' total ADF intake (g/day) 335Public MCP_Total As Single ' total MCP synthesis (g/day) 336Public DietTDN As Single ' fraction of TDN in the diet 337Public NEgOverMEng As Single ' NEg_Total/MEng_Total 338Public NElOverMEng As Single ' NEl_Total/MEng_Total 339Public NEmOverMEng As Single ' NEm_Total/MEng_Total 340Public DietaryNFC As Single ' total dietary NFC (g/day) 341Public EndCP As Single ' endogenous crude protein (g/day) 342Public MPEndo As Single ' endogenous metabolizable protein (g/day) 343Public MPEndoReq As Single ' MPEndo requirement (g/day) 344 345 346 347' Amino Acid Supply 348Public perEAA As Single ' percent total essential amino acids (%RUP) 349Public TotalEAA As Single ' total essential amino acids (g/day) 350Public Arg_Flow As Single ' flow of arginine to the small intestine (g/day) 351Public His_Flow As Single ' flow of histidine to the small intestine (g/day) 352Public Ile_Flow As Single ' flow of isoleucine to the small intestine (g/day) 353Public Leu_Flow As Single ' flow of leucine to the small intestine (g/day) 354Public Lys_Flow As Single ' flow of lysine to the small intestine (g/day) 355Public Met_Flow As Single ' flow of methionine to the small intestine (g/day) 356Public Phe_Flow As Single ' flow of phenylalanine to the small intestine (g/day) 357Public Thr_Flow As Single ' flow of threonine to the small intestine (g/day) 358Public Val_Flow As Single ' flow of valine to the small intestine (g/day) 359Public Dig_Arg_Flow As Single ' flow of digestible arginine to the small intestine (g/day) 360Public Dig_His_Flow As Single ' flow of digestible histidine to the small intestine (g/day) 361Public Dig_Ile_Flow As Single ' flow of digestible isoleucine to the small intestine (g/day) 362Public Dig_Leu_Flow As Single ' flow of digestible leucine to the small intestine (g/day) 363Public Dig_Lys_Flow As Single ' flow of digestible lysine to the small intestine (g/day) 364Public Dig_Met_Flow As Single ' flow of digestible methionine to the small intestine (g/day) 365Public Dig_Phe_Flow As Single ' flow of digestible phenylalanine to the small intestine 366(g/day) 367Public Dig_Thr_Flow As Single ' flow of digestible threonine to the small intestine (g/day) 368Public Dig_Val_Flow As Single ' flow of digestible valine to the small intestine (g/day) 369Public ArgPctMP As Single ' arginine as a percent of metabolizable protein (%) 370Public HisPctMP As Single ' histidine as a percent of metabolizable protein (%) 371Public IlePctMP As Single ' isoleucine as a percent of metabolizable protein (%) 372Public LeuPctMP As Single ' leucine as a percent of metabolizable protein (%) 373Public LysPctMP As Single ' lysine as a percent of metabolizable protein (%) 374Public MetPctMP As Single ' methionine as a percent of metabolizable protein (%) 375Public PhePctMP As Single ' phenylalanine as a percent of metabolizable protein (%) 376Public ThrPctMP As Single ' threonine as a percent of metabolizable protein (%) 377Public ValPctMP As Single ' valine as a percent of metabolizable protein (%) 378 379 380 381 382' Maintenance Requirements 383Public a1 As Single ' thermal neutral maintenance requirement (Mcal/day/BW^0.75) 384Public CS9 As Single ' condition score on 1-9 scale (1996 NRC) 385Public COMP As Single ' effect of previous plane of nutrition on NEMaint requirement 386Public a2 As Single ' maintenance adjustment for previous ambient temperature 387(Mcal/day/BW^0.75) 388Public Pasture As Single ' percent of the predicted dry matter intake supplied by grazing 389Public NEmact As Single ' activity factor on the NEMaint requirement 390Public NEMaintNS As Single ' net energy requirement for maintenance without stress 391(Mcal/day) 392Public NEDietConc As Single ' concentration of net energy in diet (kg DM/day) 393Public FeedMaint As Single ' feed required for maintenance (kg DM/day) 394Public NEGrowthDietNS As Single ' net energy for growth, with no stress, available in the 395diet (Mcal/day) 396Public NEFP As Single ' net energy for production (Mcal/day) 397Public MEI As Single ' metabolizable energy intake (Mcal/day) 398Public SA As Single ' surface area (m^2) 399Public HP As Single ' heat production (Mcal/m^2/day) 400Public T As Single ' age in days 401Public Coat As Single ' coat condition factor (dependent on CoatCond) 402Public TI As Single ' tissue insulation (Mcal/m^2/deg C/day) 403Public EI As Single ' external insulation (Mcal/m^2/deg C/day) 404Public INS As Single ' total insulation (Mcal/m^2/deg C/day) 405Public LCT As Single ' lower critical temperature (deg C) 406Public MEcs As Single ' metabolizable energy required due to cold stress (Mcal/day) 407Public ColdStr As Single ' cold stress factor for computing the net energy requirement 408 ' for maintenance with stress (Mcal/day/BW^0.75) 409Public HeatStr As Single ' heat stress factor for computing the net energy requirement 410 ' for maintenance which is dependent upon the HeatStress variable 411Public NEMaint As Single ' net energy required for maintenance (Mcal/day) 412Public DMIMaint As Single ' dry matter intake required for maintenance (kg DM/day) 413Public DMIPreg As Single ' dry matter intake requirement for pregnancy 414Public NEGrowthDiet As Single ' net energy for growth available in the diet (Mcal/day) 415Public MPMaint As Single ' metabolizable protein requirement for maintenance (g/day) 416Public MEMaint As Single ' used only for Replacement Heifers 417Public ScurfMP As Single ' scurf MP requirement (g/day) 418Public UrineMP As Single ' urine MP requirement (g/day) 419Public FecalMP As Single ' fecal MP requirement (g/day) 420 421 422 423' Dry Matter Intake 424Public TempFact As Single ' temperature adjustment factor for DMI calculations 425Public CCFact As Single ' coat condition adjustment factor for DMI calculations 426Public SubFact As Single ' factor used in the DMI_RH calculation 427Public DivFact As Single ' factor used in the DMI_RH calculation 428Public DMILact As Single ' DMI of a lactating cow (kg/day) 429Public DMIDry As Single ' DMI of a dry cow (kg/day) 430Public DMI_RH As Single ' DMI of a replacement heifer (kg/day) 431Public DryMatterIntake As Single ' dry matter intake (kg/day) 432 433 434 435' Growth Requirements 436Public SBW As Single ' shrunk body weight (kg) 437Public SRW_to_MSBW As Single ' standard reference weight / mature shrunk body weight 438Public EQSBW As Single ' equivalent shrunk body weight (kg) 439Public SWG As Variant ' shrunk weight gain (kg) 440Public WG As Single ' weight gain (kg/day) 441Public DLWReq As Single ' DLW required (kg/day) 442Public EQEBW As Single ' equivalent empty body weight (kg) 443Public EQEBG As Single ' equivalent empty body gain (kg) 444Public RE As Single ' retained energy (Mcal/day) 445Public NEGrowth As Single ' net energy required for growth (Mcal/day) 446Public NPg As Single ' net protein requirement (g/day) 447Public EffMP_NPg As Single ' efficiency of use of MP for NPg 448Public MPGrowth As Single ' metabolizable protein requirement for growth (g/day) 449Public NEReserves As Single ' net energy required for reserves replenishment 450 ' or provided when reserves are mobilized (Mcal NEl/day) 451Public DMIAvailGrowth As Single ' dry matter available for growth (kg/day) 452Public ADGwoPreg As Single ' average daily gain w/o pregnancy (kg/day) 453Public ADGwPreg As Single ' average daily gain with pregnancy (kg/day) 454Public MEGrowth As Single ' only used for Replacement Heifers 455Public MEAllowGain As Single 456Public MEAllowGainPreg As Single 457 458 459 460 461' Mineral Requirements 462Type MineralType 463 Name As String ' name of mineral 464 Units As String ' units the mineral is reported in 465 Fecal As Single ' fecal endogenous loss component 466 Urine As Single ' urine endogenous loss component 467 Sweat As Single ' sweat loss (temperature) component 468 Misc As Single ' miscellaneous loss component 469 Maint As Single ' sum of the misc, fecal, urine and sweat losses 470 Fetal As Single ' fetal requirement 471 Milk As Single ' milk production requirement 472 Growth As Single ' heifer growth requirement 473 Total As Single ' total quantity of mineral required 474 Supplied As Single ' total quantity of mineral supplied by the animal's diet 475 Absorbable As Single ' total quantity of absorbable mineral supplied by the diet 476 Balance As Single ' difference between the quantity of the mineral required and 477supplied 478 RD As Single ' density of the mineral in the animal's ration 479 RDReq As Single ' ration density required 480End Type 481 482Public Mineral(Ca To VitE) As MineralType 483 484 485 486' Diet Evaluation 487Type EvalType 488 Name As String ' name of evaluation factor (e.g. NE-Diet) 489 Units As String ' units of evaluation factor (e.g. Mcal/day) 490 Total As Single 491 Maint As Single 492 Preg As Single 493 Lact As Single 494 Gain As Single 495 Reserves As Single 496End Type 497 498 499 500Public EvalFactor(1 To 6) As EvalType 501' The upper grid of the diet evaluation screen is represented 502' as these six Evaluation Factors. They correspond to NE-Diet, 503' NE-Req, NE-Diff, MP-Diet, MP-Req, and MP-Diff. It is possible 504' that the first three factors may be given in different energy 505' units, under certain conditions, which is another motivation 506' for this type of variable definition 507 508Public DMIPred As Single ' predicted dry matter intake (kg/day) 509Public DMIActual As Single ' actual dry matter intake (kg/day) 510 511Public RDPReq As Single ' RDP required (g/day) 512Public RDPSup As Single ' RDP supplied (g/day) 513Public RDPBal As Single ' difference between RDPReq and RDPSup (g/day) 514Public RUPReq As Single ' RUP required (g/day) 515Public RUPSup As Single ' RUP supplied (g/day) 516Public RUPBal As Single ' difference between RUPReq and RUPSup (g/day) 517 518Public MPBalance As Single 519Public ProteinInGain As Single 520Public MPAllowGain As Single 521Public MPAllowGainPreg As Single 522 523Public CondMessage As String 524 525Public MPBact As Single ' metabolizable protein supplied by microbial protein (g/day) 526Public MPFeed As Single ' metabolizable protein supplied by animal's ration (g/day) 527 528Public DietCP As Single ' fraction of CP in the diet 529Public CP_RDP As Single ' fraction of CP which is RDP 530Public CP_RUP As Single ' fraction of CP which is RUP 531 532Public DietNDF As Single ' fraction of NDF in animal's ration 533Public DietADF As Single ' fraction of ADF in animal's ration 534Public ForageNDF As Single ' fraction of NDF from Forage in ration 535Public DietME As Single ' quantity of ME in animal's ration (Mcal/kg) 536Public DietNEl As Single ' quantity of NEl in animal's ration (Mcal/kg) 537Public DietNEg As Single ' quantity of NEg in animal's ration (Mcal/kg) 538 539Public EnergyAllowableMilk As Single ' energy allowable milk production (kg/day) 540Public ProteinAllowableMilk As Single ' protein allowable milk production (kg/day) 541Public DailyMilk As Single ' milk production (kg/day) 542 543Public TargetADGwoPreg As Single ' target ADG without pregnancy (kg/day) 544Public TargetADGPreg As Single ' target ADG with pregnancy (kg/day) 545 546Public Reserves_WG As Single ' weight gain due to reserves (kg) 547 548Public MPReqReserves As Single ' MP required for reserves (g/day) 549Public MPProvReserves As Single ' MP provided for reserves (g/day) 550 551Public RUPReqReserves As Single ' RUP required for reserves (g/day) 552Public RUPProvReserves As Single ' RUP provided for reserves (g/day) 553 554Public Energy_TargetDietConc As Single 555Public MP_TargetDietConc As Single 556Public Ca_TargetDietConc As Single 557Public P_TargetDietConc As Single 558Public DCAD As Single 559 560 561 562 563' Young Calf Computation Variables 564Public CalfKm As Single ' Efficiency of use of ME for NEm 565Public CalfKg As Single ' Efficiency of use of ME for NEg 566 567Public MilkDMI As Single ' Milk Dry Matter Intake (kg/day) 568Public StarterDMI As Single ' Starter Dry Matter Intake (kg/day) 569Public NEmCalf As Single ' Net Energy required for maintenance (Mcal/day) 570Public TempFactor As Single 571 572Public CalfFat As Single ' Dietary Fat (kg/day) 573Public DietFatCalf As Single ' Dietary Fat (%) 574Public DietNEmCalf As Single ' Dietary NEm (Mcal/kg) 575Public DietMECalf As Single ' Dietary ME (Mcal/kg) 576Public DietNEgCalf As Single ' Dietary NEg (Mcal/kg) 577Public DietCPCalf As Single ' Dietary CP (%) 578Public DietDCPCalf As Single ' Dietary DCP (%) 579Public DMIForNEmCalf As Single ' Dry Matter Intake required to meet NEm requirement 580(kg/day) 581Public DMIForMECalf As Single ' Dry Matter Intake required to meet ME requirement 582(kg/day) 583Public DMIForGrowth As Single ' Total dry matter intake used for growth (kg/day) 584Public MEFGCalf As Single ' Metabolizable energy available for growth (Mcal/day) 585Public NEFGCalf As Single ' Net Energy available for growth (Mcal/day) 586Public EnergyADGCalf As Single ' Energy allowable Average Daily Gain (kg/day) 587Public ProteinReqCalf As Single ' Protein allowable Average Daily Gain (kg/day) 588Public BV As Single ' Biological value used in ADP calculation 589Public EUN As Single ' endogenous urinary nitrogen losses (g/day) used in ADP 590calculation 591Public MFN As Single ' metabolic fecal nitrogen (g/day), used in ADP calculation 592Public ADPmaint As Single ' apparently digested crude protein for maintenance (g/day) 593Public ADPgrowth As Single ' apparently digested crude protein for gain (g/day) 594Public CPmCalf As Single ' calf maintenance crude protein requirement (g/day) 595Public CPgCalf As Single ' calf growth crude protein required (g/day) 596Public CalfADG As Single ' Calf Average Daily Gain (g/day) 597Public CalfADPBal As Single ' digestible ADP Balance (g/day) 598Public CalfCPBal As Single ' digestible CP Balance (g/day) 599Public ADPAllowGain As Single ' ADP Allowable Gain (g/day) 600 601Public Sub ModelComputations() 602' All of the model's computations are run by calling this procedure. 603' Different output is computed by separate computational routines, but 604' they are all called here. 605 606' Important Note : All calculations in this model are made with metric units 607 608 609 610' Different set of computations are run if the animal 611' type is a Young Calf 612If AnimalType = "Young Calf" Then 613 614 If TotalDMFed = 0 Then 615 Exit Sub 616 End If 617 618 ' Run Calf Computations 619 Call CalfComputations 620 621 ' Mineral Sub-Model Calculations 622 Call MineralComputations 623 624Else 625 626 ' Run Pregnancy Sub-Model Calculations 627 Call PregnancyComputations 628 629 ' Lactation Sub-Model Calculations 630 Call LactationComputations 631 632 ' Target Weights and ADG for Breeding Females 633 Call TargetWeightsComputations 634 635 636 ' All of the remaining sub-models assume that the animal is being fed, 637 ' so if no feeds are selected or the quantity fed is equal to zero, 638 ' the computations finish here. 639 640 If (NumFeeds = 0) Or (TotalDMFed = 0) Then 641 'Don't run any more computations 642 Exit Sub 643 644 Else 645 646 ' Energy and Protein Supply Calculations 647 Call EnergyAndProteinSupplyComputations 648 649 ' Amino Acid Supply Calculations 650 Call AminoAcidComputations 651 652 ' Dry Matter Intake Calculations 653 Call DryMatterIntakeComputations 654 655 ' Maintenance Sub-Model Calculations 656 Call MaintenanceComputations 657 658 ' Growth Sub-Model Calculations 659 Call GrowthComputations 660 661 ' Mineral Sub-Model Calculations 662 Call MineralComputations 663 664 ' Diet Evaluation Calculations - Part I 665 ' 666 ' The Diet Evaluation Section is done in two parts. The first 667 ' part is needed to get the EnergyBalance (aka NE-Differ-Gain, 668 ' aka EvalFactor(3).Gain), which is needed for the Reserves 669 ' Calculations, which computes the DaysToChange variable, which 670 ' is displayed in the Diet Evaluation Screen. 671 Call DietEvalOneComputations 672 673 ' Reserves Calculations 674 Call ReservesComputations 675 676 ' Diet Evaluation Calculations - Part II 677 Call DietEvalTwoComputations 678 679 End If 680 681End If 682 683 684End Sub 685 686 687 688 689Private Sub MineralComputations() 690 691Dim C As Integer 692Dim d As Integer 693 694Dim X As Integer 695Dim MilkFeeds As Single 696Dim CalfStarter As Single 697Dim RegFeeds As Single 698Dim m As Single 699Dim n As Single 700Dim o As Single 701 702 703 704 705' Calcium 706 707 With Mineral(1) 708 .Name = "Ca" 709 .Units = "(g/d)" 710 711 If DaysInMilk > 0 Then 712 .Fecal = 3.1 * (BW / 100) 713 Else 714 .Fecal = 1.54 * (BW / 100) 715 End If 716 717 .Urine = 0.08 * (BW / 100) 718 .Misc = 0 719 .Sweat = 0 720 721 If DaysPreg > 190 Then 722 .Fetal = 0.02456 * Exp((0.05581 - (0.00007 * DaysPreg)) * DaysPreg) _ 723 - 0.02456 * Exp((0.05581 - (0.00007 * (DaysPreg - 1))) * (DaysPreg - 1)) 724 Else 725 .Fetal = 0 726 End If 727 728 729 Select Case DaysInMilk 730 Case 0 731 .Milk = 0 732 Case Else 733 Select Case Breed 734 Case "Holstein", "Milking Shorthorn" 735 .Milk = 1.22 * MilkProd 736 Case "Jersey" 737 .Milk = 1.45 * MilkProd 738 Case Else 739 .Milk = 1.37 * MilkProd 740 End Select 741 End Select 742 743 744 If ((BW > 0) And (WG > 0)) Then 745 .Growth = (9.83 * (MW ^ 0.22) * (BW ^ -0.22)) * (WG / 0.96) 746 Else 747 .Growth = 0 748 End If 749 750 751 End With 752 753 754 755' Phosphorus 756 757 With Mineral(2) 758 .Name = "P" 759 .Units = "(g/d)" 760 761 If InStr(AnimalType, "Cow") > 0 Then 762 .Fecal = 1 * TotalDMFed 763 Else 764 .Fecal = 0.8 * TotalDMFed 765 End If 766 767 .Urine = 0.002 * BW 768 .Misc = 0 769 .Sweat = 0 770 771 If DaysPreg >= 190 Then 772 .Fetal = 0.02743 * Exp(((0.05527 - (0.000075 * DaysPreg)) * DaysPreg)) _ 773 - 0.02743 * Exp(((0.05527 - (0.000075 * (DaysPreg - 1))) * (DaysPreg - 1))) 774 Else 775 .Fetal = 0 776 End If 777 778 Select Case DaysInMilk 779 Case 0 780 .Milk = 0 781 Case Else 782 .Milk = 0.9 * MilkProd 783 End Select 784 785 786 If ((BW > 0) And (WG > 0)) Then 787 .Growth = (1.2 + (4.635 * (MW ^ 0.22) * (BW ^ -0.22))) * (WG / 0.96) 788 Else 789 .Growth = 0 790 End If 791 792 End With 793 794 795 796' Magnesium 797 798 With Mineral(3) 799 .Name = "Mg" 800 .Units = "(g/d)" 801 802 .Fecal = 0.003 * BW 803 804 .Urine = 0 805 .Misc = 0 806 .Sweat = 0 807 808 If DaysPreg > 190 Then 809 .Fetal = 0.33 810 Else 811 .Fetal = 0 812 End If 813 814 815 Select Case DaysInMilk 816 Case 0 817 .Milk = 0 818 Case Else 819 .Milk = 0.15 * MilkProd 820 End Select 821 822 .Growth = 0.45 * (WG / 0.96) 823 824 End With 825 826 827 828' Chlorine 829 830 With Mineral(4) 831 .Name = "Cl" 832 .Units = "(g/d)" 833 834 .Fecal = 2.25 * (BW / 100) 835 836 .Urine = 0 837 .Misc = 0 838 .Sweat = 0 839 840 If DaysPreg > 190 Then 841 .Fetal = 1 842 Else 843 .Fetal = 0 844 End If 845 846 847 .Milk = 1.15 * MilkProd 848 849 .Growth = 1 * (WG / 0.96) 850 851 852 End With 853 854 855 856' Potassium 857 858 With Mineral(5) 859 .Name = "K" 860 .Units = "(g/d)" 861 862 If AnimalType = "Lactating Cow" Then 863 .Fecal = 6.1 * TotalDMFed 864 Else 865 .Fecal = 2.6 * TotalDMFed 866 End If 867 868 869 .Urine = 0.038 * BW ' urine loss 870 871 872 Select Case Temp 873 Case Is < 25 874 .Sweat = 0 875 Case 25 To 30 876 .Sweat = 0.04 * (BW / 100) 877 Case Else 878 .Sweat = 0.4 * (BW / 100) 879 End Select 880 881 .Misc = 0 882 883 884 If DaysPreg > 190 Then 885 .Fetal = 1.027 886 Else 887 .Fetal = 0 888 End If 889 890 891 .Milk = 1.5 * MilkProd 892 893 .Growth = 1.6 * (WG / 0.96) 894 895 896 End With 897 898 899 900' Sodium 901 902 With Mineral(6) 903 .Name = "Na" 904 .Units = "(g/d)" 905 906 If AnimalType = "Lactating Cow" Then 907 .Fecal = 0.038 * BW 908 Else 909 .Fecal = 0.015 * BW 910 End If 911 912 913 .Urine = 0 914 .Misc = 0 915 916 Select Case Temp 917 Case Is < 25 918 .Sweat = 0 919 Case 25 To 30 920 .Sweat = 0.1 * (BW / 100) 921 Case Else 922 .Sweat = 0.5 * (BW / 100) 923 End Select 924 925 926 If DaysPreg > 190 Then 927 .Fetal = 1.39 928 Else 929 .Fetal = 0 930 End If 931 932 .Milk = 0.63 * MilkProd 933 934 .Growth = 1.4 * (WG / 0.96) 935 936 937 End With 938 939 940 941' Sulfur 942 943 With Mineral(7) 944 .Name = "S" 945 .Units = "(g/d)" 946 947 ' Non-factorial approach used 948 .Fecal = 0 949 .Misc = 0 950 .Urine = 0 951 .Sweat = 0 952 .Fetal = 0 953 .Milk = 0 954 .Growth = 0 955 956 End With 957 958 959 960' Cobalt 961 962 With Mineral(8) 963 964 .Name = "Co" 965 .Units = "(mg/d)" 966 967 ' Factorial approach not used here 968 .Fecal = 0 969 .Misc = 0 970 .Urine = 0 971 .Sweat = 0 972 .Fetal = 0 973 .Milk = 0 974 .Growth = 0 975 976 End With 977 978 979 980' Copper 981 982 With Mineral(9) 983 .Name = "Cu" 984 .Units = "(mg/d)" 985 986 .Fecal = 0.0071 * BW 987 .Urine = 0 988 .Sweat = 0 989 .Misc = 0 990 991 992 Select Case DaysPreg 993 Case 0 994 .Fetal = 0 995 Case Is < 100 996 .Fetal = 0.5 997 Case 100 To 225 998 .Fetal = 1.5 999 Case Else 1000 .Fetal = 2 1001 End Select 1002 1003 1004 1005 Select Case DaysInMilk 1006 Case 0 1007 .Milk = 0 1008 Case Else 1009 .Milk = 0.15 * MilkProd 1010 End Select 1011 1012 .Growth = 1.15 * (WG / 0.96) 1013 1014 End With 1015 1016 1017 1018' Iodine 1019 1020 With Mineral(10) 1021 .Name = "I" 1022 .Units = "(mg/d)" 1023 1024 .Fecal = 0 1025 .Urine = 0 1026 .Sweat = 0 1027 .Fetal = 0 1028 1029 If DaysInMilk > 0 Then 1030 .Milk = 1.5 * (BW / 100) 1031 .Misc = 0 1032 Else 1033 .Milk = 0 1034 .Misc = 0.6 * (BW / 100) 1035 End If 1036 1037 1038 .Growth = 0 1039 1040 End With 1041 1042 1043 1044' Iron 1045 1046 With Mineral(11) 1047 .Name = "Fe" 1048 .Units = "(mg/d)" 1049 1050 .Fecal = 0 1051 .Urine = 0 1052 .Sweat = 0 1053 .Misc = 0 1054 1055 If DaysPreg > 190 Then 1056 .Fetal = 18 1057 Else 1058 .Fetal = 0 1059 End If 1060 1061 .Milk = 1 * MilkProd 1062 1063 .Growth = 34 * (WG / 0.96) ' Requirement is on a full, not shrunk, basis 1064 1065 End With 1066 1067 1068 1069' Manganese 1070 1071 With Mineral(12) 1072 1073 .Name = "Mn" 1074 .Units = "(mg/d)" 1075 1076 .Fecal = 0.002 * BW 1077 .Urine = 0 1078 .Sweat = 0 1079 .Misc = 0 1080 1081 If DaysPreg > 190 Then 1082 .Fetal = 0.3 1083 Else 1084 .Fetal = 0 1085 End If 1086 1087 Select Case DaysInMilk 1088 Case 0 1089 .Milk = 0 1090 Case Else 1091 .Milk = 0.03 * MilkProd 1092 End Select 1093 1094 .Growth = 0.7 * (WG / 0.96) 1095 1096 End With 1097 1098 1099 1100' Selenium 1101 1102 With Mineral(13) 1103 .Name = "Se" 1104 .Units = "(mg/d)" 1105 1106 ' Factorial approach not used here 1107 .Fecal = 0 1108 .Misc = 0 1109 .Urine = 0 1110 .Sweat = 0 1111 .Fetal = 0 1112 .Milk = 0 1113 .Growth = 0 1114 1115 1116 End With 1117 1118 1119' Zinc 1120 1121 With Mineral(14) 1122 .Name = "Zn" 1123 .Units = "(mg/d)" 1124 1125 .Fecal = 0.033 * BW 1126 .Urine = 0.012 * BW 1127 .Sweat = 0 1128 .Misc = 0 1129 1130 If DaysPreg > 190 Then 1131 .Fetal = 12 1132 Else 1133 .Fetal = 0 1134 End If 1135 1136 .Milk = 4 * MilkProd 1137 .Growth = 24 * (WG / 0.96) ' Requirement is on a full, not shrunk, basis 1138 1139 End With 1140 1141 1142 1143' Vitamin A 1144 1145 With Mineral(16) 1146 .Name = "Vit A" 1147 .Units = "(1000 IU/kg)" 1148 1149 ' Factorial approach not used here 1150 .Fecal = 0 1151 .Urine = 0 1152 .Sweat = 0 1153 .Misc = 0 1154 .Fetal = 0 1155 .Milk = 0 1156 .Growth = 0 1157 1158 End With 1159 1160 1161' Vitamin D 1162 1163 With Mineral(17) 1164 .Name = "Vit D" 1165 .Units = "(1000 IU/kg)" 1166 1167 ' Factorial approach not used here 1168 .Fecal = 0 1169 .Urine = 0 1170 .Sweat = 0 1171 .Misc = 0 1172 .Fetal = 0 1173 .Milk = 0 1174 .Growth = 0 1175 1176 End With 1177 1178 1179' Vitamin E 1180 1181 With Mineral(18) 1182 .Name = "Vit E" 1183 .Units = "(IU/kg)" 1184 1185 ' Factorial approach not used here 1186 .Fecal = 0 1187 .Urine = 0 1188 .Sweat = 0 1189 .Misc = 0 1190 .Fetal = 0 1191 .Milk = 0 1192 .Growth = 0 1193 1194 End With 1195 1196 1197' Calves don't have a factorial mineral requirements system 1198If AnimalType = "Young Calf" Then 1199 For C = 1 To 18 1200 With Mineral(C) 1201 .Fecal = 0 1202 .Urine = 0 1203 .Sweat = 0 1204 .Misc = 0 1205 .Fetal = 0 1206 .Milk = 0 1207 .Growth = 0 1208 End With 1209 Next C 1210End If 1211 1212 1213If AnimalType = "Young Calf" Then 1214 MilkFeeds = 0 1215 CalfStarter = 0 1216 RegFeeds = 0 1217 1218 For X = 1 To NumFeeds 1219 If Feed(X).Name = "Calf Starter" Then 1220 CalfStarter = CalfStarter + Feed(X).DMFed 1221 ElseIf (InStr(Feed(X).Category, "Calf Feed") > 0) Then 1222 MilkFeeds = MilkFeeds + Feed(X).DMFed 1223 Else 1224 RegFeeds = RegFeeds + Feed(X).DMFed 1225 End If 1226 Next X 1227End If 1228 1229 1230 1231For C = 1 To 18 1232 1233 With Mineral(C) 1234 1235 .Maint = .Fecal + .Urine + .Sweat + .Misc 1236 1237 1238 If AnimalType <> "Young Calf" Then 1239 1240 If ((Age < (FirstCalf + CalfInt)) Or (LactNum <= 1)) Then 1241 ' Keep the already computed growth requirement 1242 Else 1243 ' Set the growth requirement to zero 1244 .Growth = 0 1245 End If 1246 1247 1248 If C < VitA Then 1249 .Total = (.Maint + .Fetal + .Milk + .Growth) 1250 Else 1251 Select Case C 1252 Case 16 1253 If (AnimalType = "Replacement Heifer") Then 1254 If DaysPreg > 259 Then 1255 .Total = 0.11 * BW 1256 Else 1257 .Total = 0.08 * BW 1258 End If 1259 Else 1260 .Total = 0.11 * BW 1261 End If 1262 Case 17 1263 .Total = 0.03 * BW 1264 Case 18 1265 If Grazing = True Then 1266 If AnimalType = "Dry Cow" Then 1267 .Total = 0.5 * BW 1268 Else 1269 .Total = 0.26 * BW 1270 End If 1271 Else 1272 If AnimalType = "Dry Cow" Then 1273 .Total = 1.6 * BW 1274 ElseIf AnimalType = "Young Calf" Then 1275 .Total = 50 * TotalDMFed 1276 Else 1277 .Total = 0.8 * BW 1278 End If 1279 End If 1280 End Select 1281 End If 1282 1283 1284 If .Name = "Co" Then 1285 .Total = 0.11 * TotalDMFed 1286 End If 1287 1288 If .Name = "S" Then 1289 .Total = 2 * TotalDMFed 1290 End If 1291 1292 If .Name = "Se" Then 1293 .Total = 0.3 * TotalDMFed 1294 End If 1295 1296 1297 1298 Else 1299 1300 If StarterDMI = 0 Then 1301 1302 Select Case .Name 1303 Case "Ca" 1304 .Total = 10 * TotalDMFed 1305 Case "P" 1306 .Total = (7.5 * TotalDMFed) / 0.9 1307 Case "Mg" 1308 .Total = 0.7 * TotalDMFed 1309 Case "Na" 1310 .Total = 1 * TotalDMFed 1311 Case "K" 1312 .Total = 6.5 * TotalDMFed 1313 Case "Cl" 1314 .Total = 2 * TotalDMFed 1315 Case "S" 1316 .Total = 2.9 * TotalDMFed 1317 Case "Fe" 1318 .Total = 100 * TotalDMFed 1319 Case "Mn" 1320 .Total = 40 * TotalDMFed 1321 Case "Zn" 1322 .Total = 40 * TotalDMFed 1323 Case "Cu" 1324 .Total = 10 * TotalDMFed 1325 Case "I" 1326 .Total = 0.25 * TotalDMFed 1327 Case "Co" 1328 .Total = 0.1 * TotalDMFed 1329 Case "Se" 1330 .Total = 0.3 * TotalDMFed 1331 Case "Vit A" 1332 .Total = 0.11 * CalfBW 1333 Case "Vit D" 1334 .Total = 0.6 * TotalDMFed 1335 Case "Vit E" 1336 .Total = 50 * TotalDMFed 1337 End Select 1338 1339 Else 1340 1341 Select Case .Name 1342 Case "Ca" 1343 .Total = 7 * TotalDMFed 1344 Case "P" 1345 .Total = (4.5 * TotalDMFed) / 0.78 1346 Case "Mg" 1347 .Total = 1 * TotalDMFed 1348 Case "Na" 1349 .Total = 1.5 * TotalDMFed 1350 Case "K" 1351 .Total = 6.5 * TotalDMFed 1352 Case "Cl" 1353 .Total = 2 * TotalDMFed 1354 Case "S" 1355 .Total = 2 * TotalDMFed 1356 Case "Fe" 1357 .Total = 50 * TotalDMFed 1358 Case "Mn" 1359 .Total = 40 * TotalDMFed 1360 Case "Zn" 1361 .Total = 40 * TotalDMFed 1362 Case "Cu" 1363 .Total = 10 * TotalDMFed 1364 Case "I" 1365 .Total = 0.25 * TotalDMFed 1366 Case "Co" 1367 .Total = 0.1 * TotalDMFed 1368 Case "Se" 1369 .Total = 0.3 * TotalDMFed 1370 Case "Vit A" 1371 .Total = 0.11 * CalfBW 1372 Case "Vit D" 1373 .Total = 0.6 * TotalDMFed 1374 Case "Vit E" 1375 .Total = 50 * TotalDMFed 1376 End Select 1377 1378 End If 1379 1380 End If 1381 1382 1383 1384 .Supplied = 0 1385 .Absorbable = 0 1386 1387 If NumFeeds > 0 Then 1388 1389 For d = 1 To NumFeeds 1390 1391 Select Case .Name 1392 Case "Ca" 1393 .Supplied = .Supplied + ((Feed(d).Ca / 100) * Feed(d).DMFed) 1394 1395 If AnimalType <> "Young Calf" Then 1396 .Absorbable = .Absorbable + (((Feed(d).Ca / 100) * Feed(d).DMFed) * (Feed(d).CaBio)) 1397 Else 1398 .Absorbable = .Absorbable + ((Feed(d).Ca / 100) * Feed(d).DMFed) 1399 End If 1400 1401 Case "Mg" 1402 .Supplied = .Supplied + ((Feed(d).Mg / 100) * Feed(d).DMFed) 1403 1404 If AnimalType <> "Young Calf" Then 1405 .Absorbable = .Absorbable + (((Feed(d).Mg / 100) * Feed(d).DMFed) * 1406(Feed(d).MgBio)) 1407 Else 1408 .Absorbable = .Absorbable + ((Feed(d).Mg / 100) * Feed(d).DMFed) 1409 End If 1410 1411 Case "P" 1412 .Supplied = .Supplied + ((Feed(d).P / 100) * Feed(d).DMFed) 1413 1414 If AnimalType <> "Young Calf" Then 1415 .Absorbable = .Absorbable + (((Feed(d).P / 100) * Feed(d).DMFed) * (Feed(d).PBio)) 1416 Else 1417 .Absorbable = .Absorbable + ((Feed(d).P / 100) * Feed(d).DMFed) 1418 End If 1419 1420 Case "K" 1421 .Supplied = .Supplied + ((Feed(d).K / 100) * Feed(d).DMFed) 1422 1423 If AnimalType <> "Young Calf" Then 1424 .Absorbable = .Absorbable + (((Feed(d).K / 100) * Feed(d).DMFed) * (Feed(d).KBio)) 1425 Else 1426 .Absorbable = .Absorbable + ((Feed(d).K / 100) * Feed(d).DMFed) 1427 End If 1428 1429 Case "Na" 1430 .Supplied = .Supplied + ((Feed(d).Na / 100) * Feed(d).DMFed) 1431 1432 If AnimalType <> "Young Calf" Then 1433 .Absorbable = .Absorbable + (((Feed(d).Na / 100) * Feed(d).DMFed) * (Feed(d).NaBio)) 1434 Else 1435 .Absorbable = .Absorbable + ((Feed(d).Na / 100) * Feed(d).DMFed) 1436 End If 1437 1438 Case "Cl" 1439 .Supplied = .Supplied + ((Feed(d).Cl / 100) * Feed(d).DMFed) 1440 1441 If AnimalType <> "Young Calf" Then 1442 .Absorbable = .Absorbable + (((Feed(d).Cl / 100) * Feed(d).DMFed) * (Feed(d).ClBio)) 1443 Else 1444 .Absorbable = .Absorbable + ((Feed(d).Cl / 100) * Feed(d).DMFed) 1445 End If 1446 1447 Case "Zn" 1448 .Supplied = .Supplied + (Feed(d).Zn * Feed(d).DMFed) 1449 1450 If AnimalType <> "Young Calf" Then 1451 .Absorbable = .Absorbable + ((Feed(d).Zn * Feed(d).DMFed) * (Feed(d).ZnBio)) 1452 Else 1453 .Absorbable = .Absorbable + (Feed(d).Zn * Feed(d).DMFed) 1454 End If 1455 1456 Case "Cu" 1457 .Supplied = .Supplied + (Feed(d).Cu * Feed(d).DMFed) 1458 1459 If AnimalType <> "Young Calf" Then 1460 .Absorbable = .Absorbable + ((Feed(d).Cu * Feed(d).DMFed) * (Feed(d).CuBio)) 1461 Else 1462 .Absorbable = .Absorbable + (Feed(d).Cu * Feed(d).DMFed) 1463 End If 1464 1465 Case "Co" 1466 .Supplied = .Supplied + (Feed(d).Co * Feed(d).DMFed) 1467 1468 If AnimalType <> "Young Calf" Then 1469 .Absorbable = .Absorbable + ((Feed(d).Co * Feed(d).DMFed) * (Feed(d).CoBio)) 1470 Else 1471 .Absorbable = .Absorbable + (Feed(d).Co * Feed(d).DMFed) 1472 End If 1473 1474 Case "Mn" 1475 .Supplied = .Supplied + (Feed(d).Mn * Feed(d).DMFed) 1476 1477 If AnimalType <> "Young Calf" Then 1478 .Absorbable = .Absorbable + ((Feed(d).Mn * Feed(d).DMFed) * (Feed(d).MnBio)) 1479 Else 1480 .Absorbable = .Absorbable + (Feed(d).Mn * Feed(d).DMFed) 1481 End If 1482 1483 Case "I" 1484 .Supplied = .Supplied + (Feed(d).I * Feed(d).DMFed) 1485 1486 If AnimalType <> "Young Calf" Then 1487 .Absorbable = .Absorbable + ((Feed(d).I * Feed(d).DMFed) * (Feed(d).IBio)) 1488 Else 1489 .Absorbable = .Absorbable + (Feed(d).I * Feed(d).DMFed) 1490 End If 1491 1492 Case "Fe" 1493 .Supplied = .Supplied + (Feed(d).Fe * Feed(d).DMFed) 1494 1495 If AnimalType <> "Young Calf" Then 1496 .Absorbable = .Absorbable + ((Feed(d).Fe * Feed(d).DMFed) * (Feed(d).FeBio)) 1497 Else 1498 .Absorbable = .Absorbable + (Feed(d).Fe * Feed(d).DMFed) 1499 End If 1500 1501 Case "S" 1502 .Supplied = .Supplied + ((Feed(d).s / 100) * Feed(d).DMFed) 1503 1504 If AnimalType <> "Young Calf" Then 1505 .Absorbable = .Absorbable + (((Feed(d).s / 100) * Feed(d).DMFed) * (Feed(d).SBio)) 1506 Else 1507 .Absorbable = .Absorbable + ((Feed(d).s / 100) * Feed(d).DMFed) 1508 End If 1509 1510 Case "Se" 1511 .Supplied = .Supplied + (Feed(d).Se * Feed(d).DMFed) 1512 1513 If AnimalType <> "Young Calf" Then 1514 .Absorbable = .Absorbable + ((Feed(d).Se * Feed(d).DMFed) * (Feed(d).SeBio)) 1515 Else 1516 .Absorbable = .Absorbable + (Feed(d).Se * Feed(d).DMFed) 1517 End If 1518 1519 Case "Vit A" 1520 .Supplied = .Supplied + (Feed(d).VitA * Feed(d).DMFed) 1521 .Absorbable = .Absorbable + (Feed(d).VitA * Feed(d).DMFed) 1522 1523 Case "Vit D" 1524 .Supplied = .Supplied + (Feed(d).VitD * Feed(d).DMFed) 1525 .Absorbable = .Absorbable + (Feed(d).VitD * Feed(d).DMFed) 1526 1527 Case "Vit E" 1528 .Supplied = .Supplied + (Feed(d).VitE * Feed(d).DMFed) 1529 .Absorbable = .Absorbable + (Feed(d).VitE * Feed(d).DMFed) 1530 1531 End Select 1532 1533 Next d 1534 1535 End If 1536 1537 1538 'Ration Density Calculation 1539 If TotalDMFed > 0 Then 1540 Select Case .Name 1541 Case "Co", "Cu", "I", "Fe", "Mn", "Se", "Zn" 1542 .RD = .Supplied / TotalDMFed 1543 Case "Vit A", "Vit D", "Vit E" 1544 .RD = .Supplied / TotalDMFed 1545 Case Else 1546 .RD = .Supplied / TotalDMFed 1547 End Select 1548 Else 1549 .RD = 0 1550 End If 1551 1552 1553 1554 ' Balance Calculation - First the .Supplied variable must be converted to 1555 ' the same units as the .Total 1556 1557 Select Case .Units 1558 Case "(g/d)" 1559 .Supplied = .Supplied * 1000 1560 .Absorbable = .Absorbable * 1000 1561 Case "(mg/d)" 1562 Select Case .Name 1563 Case "Co", "Cu", "I", "Fe", "Mn", "Se", "Zn" 1564 ' These minerals are listed as mg/kg, no need to convert them to mg units 1565 Case Else 1566 .Supplied = .Supplied * 1000000 1567 .Absorbable = .Absorbable * 1000000 1568 End Select 1569 End Select 1570 1571 .Balance = .Absorbable - .Total 1572 1573 1574 1575 ' Used to calculate Ration Density requirements for young calves 1576 If AnimalType = "Young Calf" Then 1577 Select Case .Name 1578 Case "Ca" 1579 m=1 1580 n = 0.7 1581 o = 0.6 1582 Case "P" 1583 m = 0.7 1584 n = 0.45 1585 o = 0.4 1586 Case "Mg" 1587 m = 0.07 1588 n = 0.1 1589 o = 0.1 1590 Case "Na" 1591 m = 0.4 1592 n = 0.15 1593 o = 0.14 1594 Case "K" 1595 m = 0.65 1596 n = 0.65 1597 o = 0.65 1598 Case "Cl" 1599 m = 0.25 1600 n = 0.2 1601 o = 0.2 1602 Case "S" 1603 m = 0.29 1604 n = 0.2 1605 o = 0.2 1606 Case "Fe" 1607 m = 100 1608 n = 50 1609 o = 50 1610 Case "Mn", "Zn" 1611 m = 40 1612 n = 40 1613 o = 40 1614 Case "Cu" 1615 m = 10 1616 n = 10 1617 o = 10 1618 Case "I" 1619 m = 0.5 1620 n = 0.25 1621 o = 0.25 1622 Case "Co" 1623 m = 0.11 1624 n = 0.1 1625 o = 0.1 1626 Case "Se" 1627 m = 0.3 1628 n = 0.3 1629 o = 0.3 1630 Case "Vit A" 1631 m=9 1632 n=4 1633 o=4 1634 Case "Vit D" 1635 m = 0.6 1636 n = 0.6 1637 o = 0.6 1638 Case "Vit E" 1639 m = 50 1640 n = 25 1641 o = 25 1642 End Select 1643 1644 If TotalDMFed > 0 Then 1645 .RDReq = ((MilkFeeds * m) + (CalfStarter * n) + (RegFeeds * o)) / TotalDMFed 1646 Else 1647 .RDReq = 0 1648 End If 1649 1650 End If 1651 1652 1653 1654 End With 1655 1656Next C 1657 1658End Sub 1659 1660 1661 1662 1663Private Sub DietEvalOneComputations() 1664 1665Dim X As Integer 1666 1667' The EvalFactors are calculated here as follows : 1668' 1669' NE Diet, NE Required, NE Differ, MP Diet, MP Required, MP Differ 1670' Mcal/d Mcal/d Mcal/d g/d g/d g/d 1671 1672If AnimalType <> "Replacement Heifer" Then 1673 EvalFactor(1).Name = "NE Supplied" 1674 EvalFactor(2).Name = "NE Required" 1675 EvalFactor(3).Name = "NE (Diet - Req.)" 1676 EvalFactor(4).Name = "MP Diet" 1677 EvalFactor(5).Name = "MP Required" 1678 EvalFactor(6).Name = "MP (Diet - Req.)" 1679Else 1680 EvalFactor(1).Name = "ME Supplied" 1681 EvalFactor(2).Name = "ME Required" 1682 EvalFactor(3).Name = "ME (Diet - Req.)" 1683 EvalFactor(4).Name = "MP Diet" 1684 EvalFactor(5).Name = "MP Required" 1685 EvalFactor(6).Name = "MP (Diet - Req.)" 1686End If 1687 1688 1689For X = 1 To 6 1690 If X < 4 Then 1691 EvalFactor(X).Units = "Mcal/day" 1692 Else 1693 EvalFactor(X).Units = "g/day" 1694 End If 1695Next X 1696 1697 1698If AnimalType <> "Replacement Heifer" Then 1699 EvalFactor(1).Total = NEl_Total 1700Else 1701 EvalFactor(1).Total = MEng_Total 1702End If 1703 1704EvalFactor(1).Maint = EvalFactor(1).Total 1705 1706If AnimalType <> "Replacement Heifer" Then 1707 EvalFactor(2).Maint = NEMaint 1708Else 1709 If NEmOverMEng > 0 Then 1710 EvalFactor(2).Maint = NEMaint / NEmOverMEng 1711 Else 1712 EvalFactor(2).Maint = 0 1713 End If 1714End If 1715 1716EvalFactor(3).Maint = EvalFactor(1).Maint - EvalFactor(2).Maint 1717 1718EvalFactor(1).Preg = EvalFactor(3).Maint 1719 1720If AnimalType <> "Replacement Heifer" Then 1721 EvalFactor(2).Preg = NEPreg 1722Else 1723 EvalFactor(2).Preg = MEPreg 1724End If 1725 1726EvalFactor(3).Preg = EvalFactor(1).Preg - EvalFactor(2).Preg 1727 1728EvalFactor(1).Lact = EvalFactor(3).Preg 1729 1730If AnimalType <> "Replacement Heifer" Then 1731 EvalFactor(2).Lact = NELact 1732Else 1733 EvalFactor(2).Lact = 0 1734End If 1735 1736 1737EvalFactor(3).Lact = EvalFactor(1).Lact - EvalFactor(2).Lact 1738 1739 1740EvalFactor(1).Gain = EvalFactor(3).Lact 1741 1742 1743If AnimalType = "Replacement Heifer" Then 1744 EvalFactor(2).Gain = EvalFactor(1).Gain 1745Else 1746 If EQEBG > 0 Then 1747 EvalFactor(2).Gain = NEGrowth 1748 Else 1749 EvalFactor(2).Gain = 0 1750 End If 1751End If 1752 1753EvalFactor(3).Gain = EvalFactor(1).Gain - EvalFactor(2).Gain 1754 1755EvalFactor(1).Reserves = EvalFactor(3).Gain 1756 1757EvalFactor(2).Reserves = NEReserves 1758 1759 1760With EvalFactor(2) 1761 .Total = .Maint + .Preg + .Lact + .Gain + .Reserves 1762End With 1763 1764EvalFactor(3).Total = EvalFactor(1).Total - EvalFactor(2).Total 1765 1766 1767MPBact = MCP_Total * 0.64 1768 1769MPFeed = TotalDigestedRUP 1770 1771 1772EvalFactor(4).Total = MPBact + MPFeed 1773 1774EvalFactor(4).Maint = EvalFactor(4).Total 1775 1776EvalFactor(5).Maint = MPMaint 1777 1778EvalFactor(6).Maint = EvalFactor(4).Maint - EvalFactor(5).Maint 1779 1780EvalFactor(4).Preg = EvalFactor(6).Maint 1781 1782EvalFactor(5).Preg = MPPreg 1783 1784EvalFactor(6).Preg = EvalFactor(4).Preg - EvalFactor(5).Preg 1785 1786EvalFactor(4).Lact = EvalFactor(6).Preg 1787 1788EvalFactor(5).Lact = MPLact 1789 1790EvalFactor(6).Lact = EvalFactor(4).Lact - EvalFactor(5).Lact 1791 1792EvalFactor(4).Gain = EvalFactor(6).Lact 1793 1794 1795If Age > FirstCalf Then 1796 If EQEBG > 0 Then 1797 EvalFactor(5).Gain = MPGrowth 1798 Else 1799 EvalFactor(5).Gain = 0 1800 End If 1801Else 1802 If SWG > 0 Then 1803 If EffMP_NPg > 0 Then 1804 If WG > 0 Then 1805 EvalFactor(5).Gain = (((268 - (29.4 * (RE / WG))) * WG) / EffMP_NPg) 1806 Else 1807 EvalFactor(5).Gain = 0 1808 End If 1809 Else 1810 EvalFactor(5).Gain = 0 1811 End If 1812 Else 1813 EvalFactor(5).Gain = 0 1814 End If 1815End If 1816 1817 1818EvalFactor(6).Gain = EvalFactor(4).Gain - EvalFactor(5).Gain 1819 1820EvalFactor(4).Reserves = EvalFactor(6).Gain 1821 1822With EvalFactor(5) 1823 .Total = .Maint + .Preg + .Lact + .Gain 1824End With 1825 1826EvalFactor(6).Total = EvalFactor(4).Total - EvalFactor(5).Total 1827 1828DMIPred = DryMatterIntake 1829 1830DMIActual = TotalDMFed 1831 1832If TotalDMFed > 0 Then 1833 DietCP = CP_Total / (TotalDMFed * 1000) 1834Else 1835 DietCP = 0 1836End If 1837 1838 1839If CP_Total > 0 Then 1840 CP_RDP = (RDP_Total * 1000) / CP_Total 1841 CP_RUP = (CP_Total - (RDP_Total * 1000)) / CP_Total 1842Else 1843 CP_RDP = 0 1844 CP_RUP = 0 1845End If 1846 1847 1848RDPReq = 0.15294 * TDN_Act_Total 1849 1850RDPSup = TotalDMFed * 1000 * DietCP * CP_RDP 1851 1852RDPBal = RDPSup - RDPReq 1853 1854RUPSup = CP_Total - RDPSup 1855 1856 1857If DietRUPDigest > 0 Then 1858 RUPReq = (EvalFactor(5).Total - (MPBact + MPEndo)) / DietRUPDigest 1859Else 1860 RUPReq = 0 1861End If 1862 1863RUPBal = RUPSup - RUPReq 1864 1865 1866 1867MPBalance = (((MPFeed * 1000) + MPBact + MPEndo) _ 1868 - (MPMaint + MPPreg + MPLact + MPGrowth)) 1869 1870 1871If SWG > 0 Then 1872 ProteinInGain = (268 - (29.4 * (NEGrowthDiet / SWG))) 1873Else 1874 ProteinInGain = 0 1875End If 1876 1877 1878 1879Dim MPBalwoGrowth As Single 1880 1881MPBalwoGrowth = (((MPFeed * 1000) + MPBact + MPEndo) _ 1882 - (MPMaint + MPPreg + MPLact)) 1883 1884If ProteinInGain > 0 Then 1885 MPAllowGain = ((MPBalwoGrowth * EffMP_NPg) / ProteinInGain) / 0.96 1886Else 1887 MPAllowGain = 0 1888End If 1889 1890 1891MPAllowGainPreg = MPAllowGain + (ADGPreg / 1000) 1892 1893 1894 1895 1896End Sub 1897 1898 1899 1900 1901Private Sub ReservesComputations() 1902 1903Dim EnergyBal As Single ' Equal to EvalFactor(3).Gain 1904Dim X As Integer 1905 1906EnergyBal = EvalFactor(3).Gain 1907 1908CS_F(1) = 0.726 1909CS_F(2) = 0.794 1910CS_F(3) = 0.863 1911CS_F(4) = 0.931 1912CS_F(5) = 1 1913CS_F(6) = 1.069 1914CS_F(7) = 1.137 1915CS_F(8) = 1.206 1916CS_F(9) = 1.274 1917 1918 1919CS5EBW = (SBW * 0.851) / CS_F(CS9) 1920 1921For X = 1 To 9 1922 EBW(X) = CS_F(X) * CS5EBW 1923 AF(X) = 0.037683 * X 1924 TF(X) = AF(X) * EBW(X) 1925 AP(X) = 0.200886 - (0.0066762 * X) 1926 TP(X) = AP(X) * EBW(X) 1927 ER(X) = (9.4 * TF(X)) + (5.55 * TP(X)) 1928Next X 1929 1930If CS9 >= 3 Then 1931 Lose1CS = ER(CS9) - ER(CS9 - 2) 1932Else 1933 Lose1CS = 1000000 1934End If 1935 1936If CS9 <= 7 Then 1937 Gain1CS = ER(CS9 + 2) - ER(CS9) 1938Else 1939 Gain1CS = 1000000 1940End If 1941 1942If CS9 >= 3 Then 1943 NElSub = 0.82 * Lose1CS 1944Else 1945 NElSub = 0.82 * (ER(CS9) - ER(1)) 1946End If 1947 1948If CS9 <= 7 Then 1949 NElReq = (0.644 / 0.75) * Gain1CS 1950Else 1951 NElReq = (0.644 / 0.75) * (ER(9) - ER(CS9)) 1952End If 1953 1954If EnergyBal > 0 Then 1955 deltaER = NElReq 1956Else 1957 deltaER = NElSub 1958End If 1959 1960If AnimalType = "Replacement Heifer" Then 1961 DaysToChange = 0 1962Else 1963 DaysToChange = deltaER / EnergyBal 1964End If 1965 1966End Sub 1967 1968 1969 1970Private Sub DietEvalTwoComputations() 1971 1972Dim X As Integer 1973 1974If AnimalType = "Replacement Heifer" Then 1975 CondMessage = "No changes in condition score for heifers." 1976Else 1977 If EvalFactor(3).Total >= 0 Then 1978 If Abs(DaysToChange) <= 305 Then 1979 CondMessage = "Days to gain one condition score : " & Str(CInt(Abs(DaysToChange))) 1980 Else 1981 CondMessage = "Days to gain one condition score : > 305" 1982 End If 1983 Else 1984 If Abs(DaysToChange) <= 305 Then 1985 CondMessage = "Days to lose one condition score : " & Str(CInt(Abs(DaysToChange))) 1986 Else 1987 CondMessage = "Days to lose one condition score : > 305" 1988 End If 1989 End If 1990End If 1991 1992 1993If TotalDMFed > 0 Then 1994 DietNDF = NDF_Total / TotalDMFed 1995 DietADF = ADF_Total / TotalDMFed 1996Else 1997 DietNDF = 0 1998 DietADF = 0 1999End If 2000 2001 2002ForageNDF = 0 2003 2004For X = 1 To NumFeeds 2005 If Feed(X).EnergyEqClass = "Forage" Then 2006 ForageNDF = ForageNDF + ((Feed(X).NDF / 100) * Feed(X).DMFed) 2007 End If 2008Next X 2009 2010 2011If TotalDMFed > 0 Then 2012 DietME = MEng_Total / TotalDMFed 2013 DietNEl = NEl_Total / TotalDMFed 2014 DietNEg = NEg_Total / TotalDMFed 2015Else 2016 DietME = 0 2017 DietNEl = 0 2018 DietNEg = 0 2019End If 2020 2021 2022Const kgPerMetricTon = 996.9 2023 2024 2025If AnimalType = "Lactating Cow" Then 2026 DailyMilk = MilkProd 2027Else 2028 DailyMilk = 0 2029End If 2030 2031 2032Dim NEBalance As Single 2033Dim MEBalance As Single 2034Dim EnergyFactor As Single 2035Dim NE_per_kg As Single 2036 2037 2038If AnimalType <> "Replacement Heifer" Then 2039 NEBalance = (NEl_Total - (NEMaint + NEPreg + NELact + NEGrowth)) 2040 MEBalance = 0 2041Else 2042 NEBalance = 0 2043 MEBalance = (MEng_Total - (MEMaint + MEPreg + MEGrowth)) 2044End If 2045 2046 2047 2048If AnimalType = "Lactating Cow" Then 2049 If NEBalance < 0 Then 2050 Reserves_WG = NEBalance / 4.92 2051 Else 2052 Reserves_WG = NEBalance / 5.12 2053 End If 2054ElseIf AnimalType = "Dry Cow" Then 2055 If NEBalance < 0 Then 2056 Reserves_WG = NEBalance / 4.92 2057 Else 2058 Reserves_WG = NEBalance / 6.4 2059 End If 2060Else 2061 Reserves_WG = 0 2062End If 2063 2064 2065If NEBalance > 0 Then 2066 MPReqReserves = (Reserves_WG * ProteinInGain) / 0.492 2067 MPProvReserves = 0 2068 2069 If DietRUPDigest > 0 Then 2070 RUPReqReserves = MPReqReserves / DietRUPDigest 2071 Else 2072 RUPReqReserves = 0 2073 End If 2074 2075 RUPProvReserves = 0 2076Else 2077 MPReqReserves = 0 2078 MPProvReserves = (-1 * Reserves_WG) * ProteinInGain * 0.67 2079 RUPReqReserves = 0 2080 2081 If DietRUPDigest > 0 Then 2082 RUPProvReserves = MPProvReserves / DietRUPDigest 2083 Else 2084 RUPProvReserves = 0 2085 End If 2086End If 2087 2088 2089TargetADGwoPreg = ADG 2090TargetADGPreg = ADG + (ADGPreg / 1000) 2091 2092 2093If MilkProd > 0 Then 2094 If (NEl_Total - NEMaint - NEPreg) > 0 Then 2095 If NELact > 0 Then 2096 EnergyAllowableMilk = MilkProd * ((NEl_Total - NEMaint - NEPreg - NEGrowth) / 2097NELact) 2098 Else 2099 EnergyAllowableMilk = 0 2100 End If 2101 Else 2102 EnergyAllowableMilk = 0 2103 End If 2104 2105 If (((MPFeed * 1000) + MPBact + MPEndo) - MPMaint - MPPreg) > 0 Then 2106 If MPLact > 0 Then 2107 ProteinAllowableMilk = MilkProd * ((((MPFeed * 1000) + MPBact + MPEndo) - MPMaint - 2108MPPreg - MPGrowth) / MPLact) 2109 Else 2110 ProteinAllowableMilk = 0 2111 End If 2112 Else 2113 ProteinAllowableMilk = 0 2114 End If 2115Else 2116 EnergyAllowableMilk = 0 2117 ProteinAllowableMilk = 0 2118End If 2119 2120 2121 2122If DryMatterIntake > 0 Then 2123 If ((AnimalType <> "Replacement Heifer") Or (DaysPreg > 259)) Then 2124 Energy_TargetDietConc = (NEMaint + NEPreg + NELact + NEGrowth) / DryMatterIntake 2125 Else 2126 Energy_TargetDietConc = (MEMaint + MEPreg + MEGrowth) / DryMatterIntake 2127 End If 2128 2129 MP_TargetDietConc = (MPMaint + MPPreg + MPLact + MPGrowth) / DryMatterIntake 2130 2131 Ca_TargetDietConc = Mineral(1).Total / DryMatterIntake 2132 2133 P_TargetDietConc = Mineral(2).Total / DryMatterIntake 2134Else 2135 Energy_TargetDietConc = 0 2136 MP_TargetDietConc = 0 2137 Ca_TargetDietConc = 0 2138 P_TargetDietConc = 0 2139End If 2140 2141 2142DCAD = (((Mineral(6).RD * 100) * 435) + ((Mineral(5).RD * 100) * 256)) _ 2143 - (((Mineral(4).RD * 100) * 282) + ((Mineral(7).RD * 100) * 624)) 2144 2145 2146 2147End Sub 2148 2149 2150 2151Public Sub CalfComputations() 2152 2153Dim X As Integer 2154 2155Dim TotalNEm As Single 2156Dim TotalNEg As Single 2157Dim TotalME As Single 2158Dim TotalCP As Single 2159Dim TotalDCP As Single 2160Dim TotalMilkADP As Single 2161Dim TotalStarterADP As Single 2162Dim TotalMilkCP As Single 2163Dim TotalStarterCP As Single 2164Dim TotalADP As Single 2165Dim ADP_to_CP As Single 2166Dim MilkME As Single 2167Dim StarterME As Single 2168Dim Fat As Single 2169 2170 2171' Energy computations 2172MilkDMI = 0 2173StarterDMI = 0 2174TotalNEm = 0 2175TotalNEg = 0 2176TotalME = 0 2177TotalCP = 0 2178TotalDCP = 0 2179 2180TotalMilkADP = 0 2181TotalStarterADP = 0 2182TotalMilkCP = 0 2183TotalStarterCP = 0 2184DietNEmCalf = 0 2185DietNEgCalf = 0 2186DietMECalf = 0 2187 2188MilkME = 0 2189StarterME = 0 2190Fat = 0 2191 2192 2193' If there are no feeds then there can be no ration, so the computations cannot be run 2194If NumFeeds = 0 Then 2195 Exit Sub 2196End If 2197 2198 2199' If the Calf is not fed anything, then the computations cannot be run 2200' NB: Both regular and calf feeds have a .DMFed property, so this is okay as-is 2201TotalDMFed = 0 2202 2203For X = 1 To NumFeeds 2204 TotalDMFed = TotalDMFed + Feed(X).DMFed 2205Next X 2206 2207 2208If TotalDMFed = 0 Then 2209 Exit Sub 2210End If 2211 2212 2213 2214Call ComputeEnergyValues 2215 2216 2217 2218For X = 1 To NumFeeds 2219 With Feed(X) 2220 If (.Category = "Calf Feed - Starter") _ 2221 Or (.Category = "Calf Feed - Milk") _ 2222 Or (.Category = "Calf Feed - Vitamin/Mineral") Then 2223 ' The feed is a calf feed 2224 2225 TotalNEm = TotalNEm + (.DMFed * .cNEm) 2226 TotalNEg = TotalNEg + (.DMFed * .cNEg) 2227 TotalME = TotalME + (.DMFed * .cMEng) 2228 TotalCP = TotalCP + (.DMFed * (.cCP / 100)) 2229 TotalDCP = TotalDCP + (.DMFed * (.cDCP / 100)) 2230 Fat = Fat + (.DMFed * (.cEE / 100)) 2231 2232 If .Category = "Calf Feed - Milk" Then 2233 MilkDMI = MilkDMI + .DMFed 2234 MilkME = MilkME + (.DMFed * .cMEng) 2235 TotalMilkADP = TotalMilkADP + (.DMFed * (.cDCP / 100)) 2236 TotalMilkCP = TotalMilkCP + (.DMFed * (.cCP / 100)) 2237 Else 2238 StarterDMI = StarterDMI + .DMFed 2239 StarterME = StarterME + (.DMFed * .cMEng) 2240 TotalStarterADP = TotalStarterADP + (.DMFed * (.cDCP / 100)) 2241 TotalStarterCP = TotalStarterCP + (.DMFed * (.cCP / 100)) 2242 End If 2243 2244 Else 2245 ' The feed is a regular feed. 2246 ' All regular feeds in a calf diet are considered starter feeds 2247 StarterDMI = StarterDMI + .DMFed 2248 2249 ' Convert regular feed CP values to calf feed CP values 2250 .cCP = .CP 2251 2252 ' Since regular feeds are automatically starter feeds in a calf 2253 ' diet, the DCP must be 0.75 * CP 2254 .cDCP = 0.75 * .cCP 2255 2256 ' Once CP and DCP are determined for these regular feeds, 2257 ' Total values are computed the same way 2258 TotalCP = TotalCP + (.DMFed * (.cCP / 100)) 2259 TotalDCP = TotalDCP + (.DMFed * (.cDCP / 100)) 2260 TotalStarterADP = TotalStarterADP + (.DMFed * (.cDCP / 100)) 2261 TotalStarterCP = TotalStarterCP + (.DMFed * (.cCP / 100)) 2262 End If 2263 End With 2264Next X 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274' These values are only used for output, so define them 2275' on a percentage basis (eg 83% instead of 0.83) 2276If TotalDMFed > 0 Then 2277 DietCPCalf = (TotalCP / TotalDMFed) * 100 2278 DietDCPCalf = (TotalDCP / TotalDMFed) * 100 2279Else 2280 DietCPCalf = 0 2281 DietDCPCalf = 0 2282End If 2283 2284 2285' ME requirement for maintenance with no stress 2286NEmCalf = 0.086 * (CalfBW ^ 0.75) 2287 2288 2289 2290' These instruction are used to compute a weighted average of 2291' efficiencies to convert NEm to ME and NEg to ME 2292Dim NonMineralFeeds As Single 2293 2294CalfKm = 0 2295CalfKg = 0 2296NonMineralFeeds = 0 2297NEg_Total = 0 2298NEm_Total = 0 2299 2300 2301 2302For X = 1 To NumFeeds 2303 With Feed(X) 2304 If (.Category = "Calf Feed - Starter") _ 2305 Or (.Category = "Calf Feed - Milk") _ 2306 Or (.Category = "Calf Feed - Vitamin/Mineral") Then 2307 If .cMEng <> 0 Then 2308 CalfKm = CalfKm + (0.86 * (Feed(X).DMFed * Feed(X).cMEng)) 2309 CalfKg = CalfKg + (0.69 * (Feed(X).DMFed * Feed(X).cMEng)) 2310 NonMineralFeeds = NonMineralFeeds + (Feed(X).DMFed * Feed(X).cMEng) 2311 End If 2312 Else 2313 If .MEng <> 0 Then 2314 CalfKm = CalfKm + (0.75 * (Feed(X).DMFed * Feed(X).MEng)) 2315 CalfKg = CalfKg + (0.57 * (Feed(X).DMFed * Feed(X).MEng)) 2316 2317 .NEm = (0.75 * (Feed(X).DMFed * Feed(X).MEng)) 2318 .NEg = (0.57 * (Feed(X).DMFed * Feed(X).MEng)) 2319 2320 NonMineralFeeds = NonMineralFeeds + (Feed(X).DMFed * Feed(X).MEng) 2321 2322 NEg_Total = NEg_Total + .NEg 2323 NEm_Total = NEm_Total + .NEm 2324 End If 2325 End If 2326 End With 2327Next X 2328 2329If NonMineralFeeds > 0 Then 2330 CalfKm = CalfKm / NonMineralFeeds 2331 CalfKg = CalfKg / NonMineralFeeds 2332Else 2333 CalfKm = 0 2334 CalfKg = 0 2335End If 2336 2337 2338 2339 2340 2341' Note that energy values for regular feeds are computed based on the total diet. 2342' That is, in the ComputeEnergyValues sub-model, NEm, NEg and ME values 2343' are computed for the entire ration, not on a feed-by-feed basis. 2344' These total energy values are added to those computed for the calf feeds. 2345TotalNEm = TotalNEm + NEm_Total 2346TotalNEg = TotalNEg + NEg_Total 2347TotalME = TotalME + MEng_Total 2348 2349 2350 2351' Note that, to get the dietary energy concentrations, the TotalDMFed 2352' value is used. This is correct, because the total energy values 2353' used in these equations are Calf + Regular feed totals 2354If TotalDMFed > 0 Then 2355 DietNEmCalf = TotalNEm / TotalDMFed 2356 DietNEgCalf = TotalNEg / TotalDMFed 2357 DietMECalf = TotalME / TotalDMFed 2358Else 2359 DietNEmCalf = 0 2360 DietNEgCalf = 0 2361 DietMECalf = 0 2362End If 2363 2364 2365' Factor in lower critical temperature stress 2366If Age > 2 Then 2367 2368 Select Case CalfTemp 2369 Case Is > 5 2370 TempFactor = 0 2371 Case Is > 0 2372 TempFactor = 0.13 2373 Case Is > -5 2374 TempFactor = 0.27 2375 Case Is > -10 2376 TempFactor = 0.4 2377 Case Is > -15 2378 TempFactor = 0.54 2379 Case Is > -20 2380 TempFactor = 0.68 2381 Case Is > -25 2382 TempFactor = 0.81 2383 Case Is > -30 2384 TempFactor = 0.94 2385 Case Else 2386 TempFactor = 1.07 2387 End Select 2388 2389Else 2390 2391 Select Case CalfTemp 2392 Case Is > 15 2393 TempFactor = 0 2394 Case Is > 10 2395 TempFactor = 0.13 2396 Case Is > 5 2397 TempFactor = 0.27 2398 Case Is > 0 2399 TempFactor = 0.4 2400 Case Is > -5 2401 TempFactor = 0.54 2402 Case Is > -10 2403 TempFactor = 0.68 2404 Case Is > -15 2405 TempFactor = 0.86 2406 Case Is > -20 2407 TempFactor = 0.94 2408 Case Is > -25 2409 TempFactor = 1.08 2410 Case Is > -30 2411 TempFactor = 1.21 2412 Case Else 2413 TempFactor = 1.34 2414 End Select 2415 2416End If 2417 2418 2419 2420' Apply temperature factor to compute NEm requirement (with stress) 2421NEmCalf = (NEmCalf * (1 + TempFactor)) 2422 2423 2424 2425' Recalculate ME for maintenance, since the NEm has been adjusted for temperature effects 2426If CalfKm <> 0 Then 2427 MEMaint = NEmCalf / CalfKm 2428Else 2429 MEMaint = 0 2430End If 2431 2432 2433If DietNEmCalf <> 0 Then 2434 DMIForNEmCalf = NEmCalf / DietNEmCalf 2435Else 2436 DMIForNEmCalf = 0 2437End If 2438 2439 2440DMIForGrowth = (TotalDMFed - DMIForNEmCalf) 2441 2442NEFGCalf = DMIForGrowth * DietNEgCalf 2443 2444 2445If CalfKg <> 0 Then 2446 MEFGCalf = NEFGCalf / CalfKg 2447Else 2448 MEFGCalf = 0 2449End If 2450 2451 2452 2453If NEFGCalf > 0 Then 2454 2455 ' The energy allowable ADG equation was derived from the following equation: 2456 ' 2457 ' NEgReq = 0.69 * (0.84 * CalfBW ^.355) * (LWG ^ 1.2) 2458 ' 2459 ' 2460 ' I can re-write the equation in terms of LWG as follows: 2461 ' 2462 ' (LWG ^ 1.2) = NEgReq / (0.69 * (0.84 * CalfBW ^ .355)) 2463 ' (LWG ^ 1.2) = (1.45 * NEgReq) / (0.84 * CalfBW ^ .355) 2464 ' 2465 ' 2466 ' Now take the log of both sides of the equation to get: 2467 ' log ((LWG ^ 1.2)) = log((1.45 * NEgReq) / (0.84 * CalfBW ^ .355)) 2468 ' log ((LWG ^ 1.2)) = log((1.73 * NEgReq) / (CalfBW ^ .355)) 2469 ' 2470 ' 2471 ' Since log A^x = x * (log A), the equation can now be re-written as: 2472 ' 2473 ' 1.2 * (log LWG) = log((1.73 * NEgReq) / (CalfBW ^ .355)) 2474 ' log LWG = 0.8333 * (log((1.73 * NEgReq) / (CalfBW ^ .355))) 2475 ' 2476 ' 2477 ' Finally, by using the fact that exp(log(A)) = A, we can re-write the original 2478 ' equation as follows: 2479 ' 2480 ' LWG = exp(0.8333 * (log((1.73 * NEgReq) / (CalfBW ^ .355)))) 2481 2482 EnergyADGCalf = Exp((0.8333 * (Log((1.19 * NEFGCalf) / (0.69 * (CalfBW ^ 0.355)))))) 2483Else 2484 EnergyADGCalf = -9999 2485End If 2486 2487 2488If EnergyADGCalf > 0 Then 2489 CalfADG = EnergyADGCalf 2490Else 2491 CalfADG = 0 2492End If 2493 2494 2495' There is 30 g Nitrogen/kg gain ==> (30 g N)(6.25) = 187.5 g Net Protein/kg gain 2496ProteinReqCalf = CalfADG * 0.188 2497 2498 2499 2500' Protein Supply 2501TotalADP = ((TotalMilkCP * 0.93) + (TotalStarterCP * 0.75)) * 1000 2502 2503 2504If (TotalMilkCP + TotalStarterCP) > 0 Then 2505 ADP_to_CP = TotalADP / ((TotalMilkCP + TotalStarterCP) * 1000) 2506Else 2507 ADP_to_CP = 1 2508End If 2509 2510 2511' Protein maintenance requirements 2512EUN = 0.2 * (CalfBW ^ 0.75) 2513MFN = (MilkDMI * 1.9) + (StarterDMI * 3.3) 2514 2515If TotalCP > 0 Then 2516 BV = (0.8 * (TotalMilkCP / TotalCP)) _ 2517 + (0.7 * (TotalStarterCP / TotalCP)) 2518Else 2519 BV = 1 2520End If 2521 2522 2523If BV <= 0 Then 2524 BV = 1 2525End If 2526 2527ADPmaint = 6.25 * (((1 / BV) * (EUN + MFN)) - MFN) 2528 2529 2530If ADP_to_CP > 0 Then 2531 CPmCalf = ADPmaint / ADP_to_CP 2532Else 2533 CPmCalf = 0 2534End If 2535 2536ADPgrowth = (ProteinReqCalf * 1000) / BV 2537 2538If ADP_to_CP > 0 Then 2539 CPgCalf = ADPgrowth / ADP_to_CP 2540Else 2541 CPgCalf = 0 2542End If 2543 2544 2545CalfADPBal = TotalADP - ADPmaint - ADPgrowth 2546CalfCPBal = (TotalCP * 1000) - CPmCalf - CPgCalf 2547 2548ADPAllowGain = ((TotalADP - ADPmaint) * BV) / 0.188 2549 2550 2551CalfFat = Fat + ((Fat_Total / 100) * TotalRegDMFed) 2552 2553If TotalDMFed > 0 Then 2554 DietFatCalf = CalfFat / TotalDMFed 2555Else 2556 DietFatCalf = 0 2557End If 2558 2559 2560End Sub 2561 2562 2563 2564Private Sub GrowthComputations() 2565 2566If MW > 0 Then 2567 SRW_to_MSBW = 478 / (0.96 * MW) 2568Else 2569 SRW_to_MSBW = 478 / (0.96 * (MW_From_Breed(Breed))) 2570End If 2571 2572EQSBW = (SBW - CW) * SRW_to_MSBW 2573 2574SWG = 13.91 * (NEGrowthDiet ^ 0.9116) * (EQSBW ^ -0.6837) 2575 2576 2577MEAllowGain = (SWG / 0.96) 2578 2579 2580If Age < FirstCalf Then 2581 MEAllowGainPreg = MEAllowGain + (ADGPreg / 1000) 2582Else 2583 MEAllowGainPreg = (EQEBG / 0.956) + (ADGPreg / 1000) 2584End If 2585 2586 2587If UseTargetADG = False Then 2588 WG = 0.96 * (DesiredADG / 1000) 2589 DLWReq = 0 2590Else 2591 WG = 0.96 * ADG 2592 DLWReq = 0 2593End If 2594 2595 2596 2597 2598EQEBW = 0.891 * EQSBW 2599 2600EQEBG = 0.956 * WG 2601 2602RE = 0.0635 * (EQEBW ^ 0.75) * (EQEBG ^ 1.097) 2603 2604If NEg_Total > 0 Then 2605 If AnimalType <> "Replacement Heifer" Then 2606 NEGrowth = (NEm_Total / NEg_Total) * RE 2607 Else 2608 NEGrowth = RE 2609 End If 2610Else 2611 NEGrowth = 0 2612End If 2613 2614If WG = 0 Then 2615 NPg = 0 2616Else 2617 NPg = WG * (268 - (29.4 * (RE / WG))) 2618End If 2619 2620 2621 2622If (EQSBW <= 478) Then 2623 EffMP_NPg = (83.4 - (0.114 * EQSBW)) / 100 2624Else 2625 EffMP_NPg = 0.28908 2626End If 2627 2628 2629MPGrowth = NPg / EffMP_NPg 2630 2631 2632If (DLWReq > 0) Then 2633 NEReserves = DLWReq * 5.12 2634Else 2635 NEReserves = DLWReq * 4.92 2636End If 2637 2638 2639If AnimalType = "Replacement Heifer" Then 2640 DMIAvailGrowth = TotalDMFed - DMIMaint - DMIPreg 2641Else 2642 DMIAvailGrowth = TotalDMFed - DMIMaint - DMIPreg - DMILact 2643End If 2644 2645 2646 2647 2648' This value is used only for Replacement Heifers 2649If NEgOverMEng > 0 Then 2650 MEGrowth = NEGrowth / NEgOverMEng 2651Else 2652 MEGrowth = 0 2653End If 2654 2655 2656End Sub 2657 2658 2659Private Sub MaintenanceComputations() 2660 2661If (AnimalType = "Lactating Cow") Or (AnimalType = "Dry Cow") Then 2662 a1 = 0.08 2663Else 2664 a1 = 0.086 2665End If 2666 2667CS9 = ((CS - 1) * 2) + 1 2668 2669If AnimalType = "Replacement Heifer" Then 2670 COMP = 0.8 + ((CS9 - 1) * 0.05) 2671 a2 = 0.0007 * (20 - PrevTemp) 2672Else 2673 COMP = 1 2674 a2 = 0 2675End If 2676 2677 2678 2679If Grazing = False Then 2680 NEmact = 0 2681Else 2682 If AnimalType = "Replacement Heifer" Then 2683 NEmact = ((0.0009 * BW) + (0.0016 * BW)) 2684 2685 If Topography = "Hilly" Then 2686 NEmact = NEmact + (0.006 * BW) 2687 End If 2688 2689 Else 2690 2691 ' These activity equations derived by NRC committee members on 2692 ' a full (not shrunk) body weight basis 2693 NEmact = ((((Distance / 1000) * Trips) * (0.00045 * BW)) + (0.0012 * BW)) 2694 2695 If Topography = "Hilly" Then 2696 NEmact = NEmact + (0.006 * BW) 2697 End If 2698 2699 End If 2700End If 2701 2702 2703 2704If AnimalType = "Replacement Heifer" Then 2705 NEMaintNS = (((SBW - CW) ^ 0.75) * ((a1 * COMP) + a2)) + NEmact 2706Else 2707 NEMaintNS = (((BW - CW) ^ 0.75) * (a1 * COMP)) + NEmact 2708End If 2709 2710 2711If TotalDMFed > 0 Then 2712 If AnimalType <> "Replacement Heifer" Then 2713 NEDietConc = NEl_Total / TotalDMFed 2714 Else 2715 NEDietConc = NEm_Total / TotalDMFed 2716 End If 2717Else 2718 NEDietConc = 0 2719End If 2720 2721 2722If NEDietConc > 0 Then 2723 FeedMaint = NEMaintNS / NEDietConc 2724Else 2725 FeedMaint = 0 2726End If 2727 2728 2729If TotalDMFed > 0 Then 2730 NEGrowthDietNS = (TotalDMFed - FeedMaint) * (NEg_Total / TotalDMFed) 2731Else 2732 NEGrowthDietNS = 0 2733End If 2734 2735 2736If AnimalType = "Replacement Heifer" Then 2737 NEFP = NEGrowthDietNS 2738Else 2739 If TotalDMFed > 0 Then 2740 NEFP = (TotalDMFed - FeedMaint) * (NEl_Total / TotalDMFed) * 0.65 2741 Else 2742 NEFP = 0 2743 End If 2744End If 2745 2746 2747MEI = MEng_Total 2748 2749SA = 0.09 * (SBW ^ 0.67) 2750 2751If SA > 0 Then 2752 HP = (MEI - NEFP) / SA 2753Else 2754 HP = 0 2755End If 2756 2757 2758T = Age * 30.4 2759 2760Select Case T 2761 Case Is <= 30 2762 TI = 2.5 2763 Case Is < 183 2764 TI = 6.5 2765 Case Is < 363 2766 TI = 5.1875 + (0.3125 * CS9) 2767 Case Is >= 363 2768 TI = 5.25 + (0.75 * CS9) 2769End Select 2770 2771 2772Select Case CoatCond 2773 Case "Clean/Dry" 2774 Coat = 1 2775 Case "Some Mud" 2776 Coat = 0.8 2777 Case "Wet/Matted" 2778 Coat = 0.5 2779 Case "Covered with Snow/Mud" 2780 Coat = 0.2 2781End Select 2782 2783 2784EI = ((7.36 - (0.296 * WindSpeed) + (2.55 * HairDepth)) * Coat) * 0.8 2785 2786If (EI < 0) Then 2787 EI = 0 2788End If 2789 2790INS = TI + EI 2791 2792LCT = 39 - (INS * HP * 0.85) 2793 2794If (LCT > Temp) Then 2795 MEcs = SA * (LCT - Temp) / INS 2796Else 2797 MEcs = 0 2798End If 2799 2800If ((MEng_Total > 0) And (TotalDMFed > 0)) Then 2801 ColdStr = ((NEDietConc / (MEng_Total / TotalDMFed)) * MEcs) 2802Else 2803 ColdStr = 0 2804End If 2805 2806 2807If ((HeatStress = "None") Or (Temp < 30)) Then 2808 HeatStr = 1 2809ElseIf (HeatStress = "Rapid/Shallow") Then 2810 HeatStr = 1.07 2811ElseIf (HeatStress = "Open Mouth") Then 2812 HeatStr = 1.18 2813End If 2814 2815 2816NEMaint = ((NEMaintNS + ColdStr) * HeatStr) + NEmact 2817 2818 2819If NEDietConc > 0 Then 2820 DMIMaint = NEMaint / NEDietConc 2821Else 2822 DMIMaint = 0 2823End If 2824 2825 2826If DaysPreg > 0 Then 2827 If ((MEng_Total > 0) And (TotalDMFed > 0)) Then 2828 DMIPreg = MEPreg / (MEng_Total / TotalDMFed) 2829 Else 2830 DMIPreg = 0 2831 End If 2832Else 2833 DMIPreg = 0 2834End If 2835 2836 2837If TotalDMFed > 0 Then 2838 NEGrowthDiet = (TotalDMFed - DMIMaint - DMIPreg) * (NEg_Total / TotalDMFed) 2839Else 2840 NEGrowthDiet = 0 2841End If 2842 2843 2844 2845' Net energy for growth available in the diet cannot be negative 2846If NEGrowthDiet < 0 Then 2847 NEGrowthDiet = 0 2848End If 2849 2850 2851 2852MPMaint = (0.3 * ((BW - CW) ^ 0.6)) + (4.1 * ((BW - CW) ^ 0.5)) _ 2853 + ((TotalDMFed * 1000 * 0.03) - (0.5 * ((MPBact / 0.8) - (MPBact)))) + 2854MPEndoReq 2855 2856 2857ScurfMP = 0.3 * ((BW - CW) ^ 0.6) 2858UrineMP = 4.1 * ((BW - CW) ^ 0.5) 2859FecalMP = ((TotalDMFed * 1000 * 0.03) - (0.5 * ((MPBact / 0.8) - (MPBact)))) 2860 2861 2862 2863' Used only for Replacement Heifers 2864If NEmOverMEng > 0 Then 2865 MEMaint = NEMaint / NEmOverMEng 2866Else 2867 MEMaint = 0 2868End If 2869 2870End Sub 2871 2872 2873Private Sub DryMatterIntakeComputations() 2874 2875Dim WOL As Single ' Week of Lactation = 7 * Days In Milk 2876Dim Lag As Single ' week of lactation correction - 2877 ' used in Default and Roseler equations 2878 2879Select Case CoatCond 2880 Case "Clean/Dry" 2881 CCFact = 1 2882 Case "Some Mud" 2883 CCFact = 1 2884 Case "Wet/Matted" 2885 CCFact = 0.85 2886 Case "Covered with Snow/Mud" 2887 CCFact = 0.7 2888End Select 2889 2890CCFact = 1 2891 2892 2893Select Case Temp 2894 Case Is < -15 2895 TempFact = 1.16 2896 Case Is < -5 2897 TempFact = 1.07 2898 Case Is < 5 2899 TempFact = 1.05 2900 Case Is < 15 2901 TempFact = 1.03 2902 Case Is < 25 2903 TempFact = 1 2904 Case Is < 35 2905 TempFact = 0.9 2906 Case Is > 35 2907 If (NightCooling = False) Then 2908 TempFact = 0.65 2909 Else 2910 TempFact = 0.9 2911 End If 2912End Select 2913 2914 2915If Age > 12 Then 2916 SubFact = 0.0869 2917Else 2918 SubFact = 0.1128 2919End If 2920 2921 2922 2923' These equations really belong in the Maintenance computations section, 2924' but are put here since the DivFact variable requires the NEDietConc 2925If TotalDMFed > 0 Then 2926 If AnimalType <> "Replacement Heifer" Then 2927 NEDietConc = NEl_Total / TotalDMFed 2928 Else 2929 NEDietConc = NEm_Total / TotalDMFed 2930 End If 2931Else 2932 NEDietConc = 0 2933End If 2934 2935 2936If (NEDietConc < 1) Then 2937 DivFact = 0.95 2938Else 2939 DivFact = NEDietConc 2940End If 2941 2942 2943If DaysPreg < 259 Then 2944 If DivFact > 0 Then 2945 DMI_RH = ((BW ^ 0.75) * (((0.2435 * NEDietConc) - (0.0466 _ 2946 * (NEDietConc ^ 2)) - SubFact) / DivFact)) _ 2947 * TempFact * CCFact 2948 Else 2949 DMI_RH = 0 2950 End If 2951Else 2952 DMI_RH = ((1.71 - (0.69 * Exp(0.35 * (DaysPreg - 280)))) / 100) * BW 2953End If 2954 2955 2956Dim DMIRH_Factor As Single 2957 2958 2959If ((DaysPreg > 210) And (DaysPreg < 259)) Then 2960 DMIRH_Factor = (1 + ((210 - DaysPreg) * 0.0025)) 2961Else 2962 DMIRH_Factor = 1 2963End If 2964 2965DMI_RH = DMI_RH * DMIRH_Factor 2966 2967 2968 2969WOL = DaysInMilk / 7 2970Lag = 1 - (Exp(-1 * 0.192 * (WOL + 3.67))) 2971DMILact = (((BW ^ 0.75) * 0.0968) + (0.372 * FCM) - 0.293) * Lag 2972 2973 2974DMIDry = ((1.97 - (0.75 * Exp(0.16 * (DaysPreg - 280)))) / 100) * BW 2975 2976 2977 2978Select Case AnimalType 2979 Case "Lactating Cow" 2980 DryMatterIntake = DMILact 2981 Case "Dry Cow" 2982 DryMatterIntake = DMIDry 2983 Case "Replacement Heifer" 2984 DryMatterIntake = DMI_RH 2985 Case "Young Calf" 2986 DryMatterIntake = DMI_RH 2987End Select 2988 2989 2990If DryMatterIntake <= TotalDMFed Then 2991 Pasture = 0 2992Else 2993 If DryMatterIntake > 0 Then 2994 Pasture = (DryMatterIntake - TotalDMFed) / DryMatterIntake 2995 Else 2996 Pasture = 0 2997 End If 2998End If 2999 3000 3001End Sub 3002 3003 3004 3005Private Sub AminoAcidComputations() 3006 3007Dim DMFed As Single 3008Dim NF As Integer 3009Dim X As Integer 3010 3011 3012 3013If NumFeeds > 0 Then 3014 NF = NumFeeds 3015Else 3016 Exit Sub 3017End If 3018 3019 3020 3021Dim TArg As Single 3022Dim THis As Single 3023Dim TIle As Single 3024Dim TLeu As Single 3025Dim TLys As Single 3026Dim TMet As Single 3027Dim TPhe As Single 3028Dim TThr As Single 3029Dim TTrp As Single 3030Dim TVal As Single 3031 3032Dim Dig_TArg As Single 3033Dim Dig_THis As Single 3034Dim Dig_TIle As Single 3035Dim Dig_TLeu As Single 3036Dim Dig_TLys As Single 3037Dim Dig_TMet As Single 3038Dim Dig_TPhe As Single 3039Dim Dig_TThr As Single 3040Dim Dig_TTrp As Single 3041Dim Dig_TVal As Single 3042 3043 3044TArg = 0 3045THis = 0 3046TIle = 0 3047TLeu = 0 3048TLys = 0 3049TMet = 0 3050TPhe = 0 3051TThr = 0 3052TTrp = 0 3053TVal = 0 3054 3055Dig_TArg = 0 3056Dig_THis = 0 3057Dig_TIle = 0 3058Dig_TLeu = 0 3059Dig_TLys = 0 3060Dig_TMet = 0 3061Dig_TPhe = 0 3062Dig_TThr = 0 3063Dig_TTrp = 0 3064Dig_TVal = 0 3065 3066 3067For X = 1 To NF 3068 3069 With Feed(X) 3070 3071 DMFed = .DMFed 3072 3073 If ((DMFed > 0) And (.CP > 0) And (CP(X) > 0)) Then 3074 3075 TArg = TArg + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3076 * (.Arg / 100) * TotalDMFed) * 1000) 3077 3078 THis = THis + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3079 * (.His / 100) * TotalDMFed) * 1000) 3080 3081 TIle = TIle + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3082 * (.Ile / 100) * TotalDMFed) * 1000) 3083 3084 TLeu = TLeu + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3085 * (.Leu / 100) * TotalDMFed) * 1000) 3086 3087 TLys = TLys + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3088 * (.Lys / 100) * TotalDMFed) * 1000) 3089 3090 TMet = TMet + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3091 * (.Met / 100) * TotalDMFed) * 1000) 3092 3093 TPhe = TPhe + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3094 * (.Phe / 100) * TotalDMFed) * 1000) 3095 3096 TThr = TThr + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3097 * (.Thr / 100) * TotalDMFed) * 1000) 3098 3099 TTrp = TTrp + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3100 * (.Trp / 100) * TotalDMFed) * 1000) 3101 3102 TVal = TVal + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) _ 3103 * (.Val / 100) * TotalDMFed) * 1000) 3104 3105 3106 3107 Dig_TArg = Dig_TArg + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3108CP(X)) _ 3109 * (Feed(X).RUPDigest / 100) * (.Arg / 100) * TotalDMFed) * 1000) 3110 3111 Dig_THis = Dig_THis + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3112CP(X)) _ 3113 * (Feed(X).RUPDigest / 100) * (.His / 100) * TotalDMFed) * 1000) 3114 3115 Dig_TIle = Dig_TIle + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / CP(X)) 3116_ 3117 * (Feed(X).RUPDigest / 100) * (.Ile / 100) * TotalDMFed) * 1000) 3118 3119 Dig_TLeu = Dig_TLeu + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3120CP(X)) _ 3121 * (Feed(X).RUPDigest / 100) * (.Leu / 100) * TotalDMFed) * 1000) 3122 3123 Dig_TLys = Dig_TLys + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3124CP(X)) _ 3125 * (Feed(X).RUPDigest / 100) * (.Lys / 100) * TotalDMFed) * 1000) 3126 3127 Dig_TMet = Dig_TMet + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3128CP(X)) _ 3129 * (Feed(X).RUPDigest / 100) * (.Met / 100) * TotalDMFed) * 1000) 3130 3131 Dig_TPhe = Dig_TPhe + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3132CP(X)) _ 3133 * (Feed(X).RUPDigest / 100) * (.Phe / 100) * TotalDMFed) * 1000) 3134 3135 Dig_TThr = Dig_TThr + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3136CP(X)) _ 3137 * (Feed(X).RUPDigest / 100) * (.Thr / 100) * TotalDMFed) * 1000) 3138 3139 Dig_TTrp = Dig_TTrp + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3140CP(X)) _ 3141 * (Feed(X).RUPDigest / 100) * (.Trp / 100) * TotalDMFed) * 1000) 3142 3143 Dig_TVal = Dig_TVal + (((DMFed / TotalDMFed) * (.CP / 100) * ((RUP(X) * 1000) / 3144CP(X)) _ 3145 * (Feed(X).RUPDigest / 100) * (.Val / 100) * TotalDMFed) * 1000) 3146 3147 3148 End If 3149 3150 End With 3151 3152Next X 3153 3154 3155Dim EAATotalBeforeMP As Single 3156Dim x1 As Single 3157Dim x2 As Single 3158Dim TotalArg As Single 3159Dim TotalHis As Single 3160Dim TotalIle As Single 3161Dim TotalLeu As Single 3162Dim TotalLys As Single 3163Dim TotalMet As Single 3164Dim TotalPhe As Single 3165Dim TotalThr As Single 3166Dim TotalVal As Single 3167 3168 3169EAATotalBeforeMP = (TArg + THis + TIle + TLeu _ 3170 + TLys + TMet + TPhe + TThr + TTrp + TVal) 3171 3172If ((RUP_Total * 1000) + EndCP + MCP_Total) > 0 Then 3173 x2 = ((RUP_Total * 1000) / ((RUP_Total * 1000) + EndCP + MCP_Total)) * 100 3174Else 3175 x2 = 0 3176End If 3177 3178If EAATotalBeforeMP > 0 Then 3179 x1 = ((TArg / EAATotalBeforeMP) * 100) 3180Else 3181 x1 = 0 3182End If 3183 3184TotalArg = 7.31 + (0.251 * x1) 3185 3186 3187If EAATotalBeforeMP > 0 Then 3188 x1 = ((THis / EAATotalBeforeMP) * 100) 3189Else 3190 x1 = 0 3191End If 3192 3193TotalHis = 2.07 + (0.393 * x1) + (0.0122 * x2) 3194 3195 3196If EAATotalBeforeMP > 0 Then 3197 x1 = ((TIle / EAATotalBeforeMP) * 100) 3198Else 3199 x1 = 0 3200End If 3201 3202TotalIle = 7.59 + (0.391 * x1) - (0.0123 * x2) 3203 3204 3205If EAATotalBeforeMP > 0 Then 3206 x1 = ((TLeu / EAATotalBeforeMP) * 100) 3207Else 3208 x1 = 0 3209End If 3210 3211TotalLeu = 8.53 + (0.41 * x1) + (0.0746 * x2) 3212 3213 3214If EAATotalBeforeMP > 0 Then 3215 x1 = ((TLys / EAATotalBeforeMP) * 100) 3216Else 3217 x1 = 0 3218End If 3219 3220TotalLys = 13.66 + (0.3276 * x1) - (0.07497 * x2) 3221 3222 3223If EAATotalBeforeMP > 0 Then 3224 x1 = ((TMet / EAATotalBeforeMP) * 100) 3225Else 3226 x1 = 0 3227End If 3228 3229TotalMet = 2.9 + (0.391 * x1) - (0.00742 * x2) 3230 3231 3232If EAATotalBeforeMP > 0 Then 3233 x1 = ((TPhe / EAATotalBeforeMP) * 100) 3234Else 3235 x1 = 0 3236End If 3237 3238TotalPhe = 7.32 + (0.244 * x1) + (0.029 * x2) 3239 3240 3241If EAATotalBeforeMP > 0 Then 3242 x1 = ((TThr / EAATotalBeforeMP) * 100) 3243Else 3244 x1 = 0 3245End If 3246 3247TotalThr = 7.55 + (0.45 * x1) - (0.0212 * x2) 3248 3249 3250If EAATotalBeforeMP > 0 Then 3251 x1 = ((TVal / EAATotalBeforeMP) * 100) 3252Else 3253 x1 = 0 3254End If 3255 3256TotalVal = 8.68 + (0.314 * x1) 3257 3258 3259 3260TotalEAA = 30.9 + (0.863 * EAATotalBeforeMP) + (0.433 * MCP_Total) 3261 3262 3263 3264 3265Dim TotalRUPArgFlow As Single 3266Dim TotalRUPHisFlow As Single 3267Dim TotalRUPIleFlow As Single 3268Dim TotalRUPLeuFlow As Single 3269Dim TotalRUPLysFlow As Single 3270Dim TotalRUPMetFlow As Single 3271Dim TotalRUPPheFlow As Single 3272Dim TotalRUPThrFlow As Single 3273Dim TotalRUPTrpFlow As Single 3274Dim TotalRUPValFlow As Single 3275 3276 3277TotalRUPArgFlow = 0.863 * TArg 3278TotalRUPHisFlow = 0.863 * THis 3279TotalRUPIleFlow = 0.863 * TIle 3280TotalRUPLeuFlow = 0.863 * TLeu 3281TotalRUPLysFlow = 0.863 * TLys 3282TotalRUPMetFlow = 0.863 * TMet 3283TotalRUPPheFlow = 0.863 * TPhe 3284TotalRUPThrFlow = 0.863 * TThr 3285TotalRUPTrpFlow = 0.863 * TTrp 3286TotalRUPValFlow = 0.863 * TVal 3287 3288 3289 3290 3291' Duodenal Flow (g/d) 3292Arg_Flow = (TotalArg / 100) * TotalEAA 3293 3294His_Flow = (TotalHis / 100) * TotalEAA 3295 3296Ile_Flow = (TotalIle / 100) * TotalEAA 3297 3298Leu_Flow = (TotalLeu / 100) * TotalEAA 3299 3300Lys_Flow = (TotalLys / 100) * TotalEAA 3301 3302Met_Flow = (TotalMet / 100) * TotalEAA 3303 3304Phe_Flow = (TotalPhe / 100) * TotalEAA 3305 3306Thr_Flow = (TotalThr / 100) * TotalEAA 3307 3308Val_Flow = (TotalVal / 100) * TotalEAA 3309 3310 3311 3312 3313Dim TotalMCPEndArgFlow As Single 3314Dim TotalMCPEndHisFlow As Single 3315Dim TotalMCPEndIleFlow As Single 3316Dim TotalMCPEndLeuFlow As Single 3317Dim TotalMCPEndLysFlow As Single 3318Dim TotalMCPEndMetFlow As Single 3319Dim TotalMCPEndPheFlow As Single 3320Dim TotalMCPEndThrFlow As Single 3321Dim TotalMCPEndValFlow As Single 3322 3323TotalMCPEndArgFlow = Arg_Flow - TotalRUPArgFlow 3324TotalMCPEndHisFlow = His_Flow - TotalRUPHisFlow 3325TotalMCPEndIleFlow = Ile_Flow - TotalRUPIleFlow 3326TotalMCPEndLeuFlow = Leu_Flow - TotalRUPLeuFlow 3327TotalMCPEndLysFlow = Lys_Flow - TotalRUPLysFlow 3328TotalMCPEndMetFlow = Met_Flow - TotalRUPMetFlow 3329TotalMCPEndPheFlow = Phe_Flow - TotalRUPPheFlow 3330TotalMCPEndThrFlow = Thr_Flow - TotalRUPThrFlow 3331TotalMCPEndValFlow = Val_Flow - TotalRUPValFlow 3332 3333 3334 3335Dim dTotalRUPArg As Single 3336Dim dTotalRUPHis As Single 3337Dim dTotalRUPIle As Single 3338Dim dTotalRUPLeu As Single 3339Dim dTotalRUPLys As Single 3340Dim dTotalRUPMet As Single 3341Dim dTotalRUPPhe As Single 3342Dim dTotalRUPThr As Single 3343Dim dTotalRUPVal As Single 3344 3345Dim dTotalMCPEndArg As Single 3346Dim dTotalMCPEndHis As Single 3347Dim dTotalMCPEndIle As Single 3348Dim dTotalMCPEndLeu As Single 3349Dim dTotalMCPEndLys As Single 3350Dim dTotalMCPEndMet As Single 3351Dim dTotalMCPEndPhe As Single 3352Dim dTotalMCPEndThr As Single 3353Dim dTotalMCPEndVal As Single 3354 3355If TArg > 0 Then 3356 dTotalRUPArg = TotalRUPArgFlow * (Dig_TArg / TArg) 3357Else 3358 dTotalRUPArg = 0 3359End If 3360 3361If THis > 0 Then 3362 dTotalRUPHis = TotalRUPHisFlow * (Dig_THis / THis) 3363Else 3364 dTotalRUPHis = 0 3365End If 3366 3367If TIle > 0 Then 3368 dTotalRUPIle = TotalRUPIleFlow * (Dig_TIle / TIle) 3369Else 3370 dTotalRUPIle = 0 3371End If 3372 3373If TLeu > 0 Then 3374 dTotalRUPLeu = TotalRUPLeuFlow * (Dig_TLeu / TLeu) 3375Else 3376 dTotalRUPLeu = 0 3377End If 3378 3379If TLys > 0 Then 3380 dTotalRUPLys = TotalRUPLysFlow * (Dig_TLys / TLys) 3381Else 3382 dTotalRUPLys = 0 3383End If 3384 3385If TMet > 0 Then 3386 dTotalRUPMet = TotalRUPMetFlow * (Dig_TMet / TMet) 3387Else 3388 dTotalRUPMet = 0 3389End If 3390 3391If TPhe > 0 Then 3392 dTotalRUPPhe = TotalRUPPheFlow * (Dig_TPhe / TPhe) 3393Else 3394 dTotalRUPPhe = 0 3395End If 3396 3397If TThr > 0 Then 3398 dTotalRUPThr = TotalRUPThrFlow * (Dig_TThr / TThr) 3399Else 3400 dTotalRUPThr = 0 3401End If 3402 3403If TVal > 0 Then 3404 dTotalRUPVal = TotalRUPValFlow * (Dig_TVal / TVal) 3405Else 3406 dTotalRUPVal = 0 3407End If 3408 3409 3410dTotalMCPEndArg = 0.8 * TotalMCPEndArgFlow 3411dTotalMCPEndHis = 0.8 * TotalMCPEndHisFlow 3412dTotalMCPEndIle = 0.8 * TotalMCPEndIleFlow 3413dTotalMCPEndLeu = 0.8 * TotalMCPEndLeuFlow 3414dTotalMCPEndLys = 0.8 * TotalMCPEndLysFlow 3415dTotalMCPEndMet = 0.8 * TotalMCPEndMetFlow 3416dTotalMCPEndPhe = 0.8 * TotalMCPEndPheFlow 3417dTotalMCPEndThr = 0.8 * TotalMCPEndThrFlow 3418dTotalMCPEndVal = 0.8 * TotalMCPEndValFlow 3419 3420 3421Dig_Arg_Flow = dTotalRUPArg + dTotalMCPEndArg 3422Dig_His_Flow = dTotalRUPHis + dTotalMCPEndHis 3423Dig_Ile_Flow = dTotalRUPIle + dTotalMCPEndIle 3424Dig_Leu_Flow = dTotalRUPLeu + dTotalMCPEndLeu 3425Dig_Lys_Flow = dTotalRUPLys + dTotalMCPEndLys 3426Dig_Met_Flow = dTotalRUPMet + dTotalMCPEndMet 3427Dig_Phe_Flow = dTotalRUPPhe + dTotalMCPEndPhe 3428Dig_Thr_Flow = dTotalRUPThr + dTotalMCPEndThr 3429Dig_Val_Flow = dTotalRUPVal + dTotalMCPEndVal 3430 3431 3432MPBact = 0.64 * MCP_Total 3433MPFeed = TotalDigestedRUP 3434 3435 3436 3437If (MPBact + (MPFeed * 1000) + MPEndo) > 0 Then 3438 ArgPctMP = 100 * (Dig_Arg_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3439 HisPctMP = 100 * (Dig_His_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3440 IlePctMP = 100 * (Dig_Ile_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3441 LeuPctMP = 100 * (Dig_Leu_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3442 LysPctMP = 100 * (Dig_Lys_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3443 MetPctMP = 100 * (Dig_Met_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3444 PhePctMP = 100 * (Dig_Phe_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3445 ThrPctMP = 100 * (Dig_Thr_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3446 ValPctMP = 100 * (Dig_Val_Flow / (MPBact + (MPFeed * 1000) + MPEndo)) 3447Else 3448 ArgPctMP = 0 3449 HisPctMP = 0 3450 IlePctMP = 0 3451 LeuPctMP = 0 3452 LysPctMP = 0 3453 MetPctMP = 0 3454 PhePctMP = 0 3455 ThrPctMP = 0 3456 ValPctMP = 0 3457End If 3458 3459 3460End Sub 3461 3462 3463 3464 3465 3466Private Sub EnergyAndProteinSupplyComputations() 3467 3468Dim DMFed As Single 3469Dim NF As Integer 3470Dim X As Integer 3471 3472Dim Kp As Single 3473Dim BW_DMI As Single 3474Dim ConcSum As Single 3475Dim PercentConc As Single 3476 3477 3478If NumFeeds > 0 Then 3479 NF = NumFeeds 3480Else 3481 Exit Sub 3482End If 3483 3484ReDim DMI(1 To NF) As Single 3485ReDim TDN(1 To NF) As Single 3486ReDim TDN_Act(1 To NF) As Single 3487ReDim CP(1 To NF) As Single 3488ReDim RUP(1 To NF) As Single 3489ReDim RDP(1 To NF) As Single 3490ReDim NDF(1 To NF) As Single 3491ReDim ADF(1 To NF) As Single 3492ReDim PsgRate(1 To NF) As Single 3493 3494 3495Call ComputeEnergyValues 3496 3497 3498If BW > 0 Then 3499 BW_DMI = (TotalDMFed / BW) * 100 3500Else 3501 BW_DMI = 0 3502End If 3503 3504 3505ConcSum = 0 3506 3507For X = 1 To NumFeeds 3508 If Feed(X).ForageDescrp = "Concentrate" Then 3509 ConcSum = ConcSum + Feed(X).DMFed 3510 End If 3511Next X 3512 3513 3514If TotalDMFed > 0 Then 3515 PercentConc = (ConcSum / TotalDMFed) * 100 3516Else 3517 PercentConc = 0 3518End If 3519 3520 3521For X = 1 To NumFeeds 3522 3523 DMFed = Feed(X).DMFed 3524 DMI(X) = DMFed 3525 3526 If Feed(X).Category <> "Vitamin/Mineral" Then 3527 TDN(X) = (Feed(X).TDN / 100) * (DMFed * 1000) 3528 TDN_Act(X) = (Feed(X).TDN_ActX / 100) * (DMFed * 1000) 3529 Else 3530 TDN(X) = 0 3531 TDN_Act(X) = 0 3532 End If 3533 3534 3535 CP(X) = (Feed(X).CP / 100) * (DMFed * 1000) 3536 3537 3538 ' Passage rate equations 3539 Select Case Feed(X).ForageDescrp 3540 Case "Concentrate" 3541 Kp = 2.904 + (1.375 * BW_DMI) - (0.02 * PercentConc) 3542 Case "Dry" 3543 Kp = 3.362 + (0.479 * BW_DMI) - (0.017 * Feed(X).NDF) - (0.007 * PercentConc) 3544 Case "Wet" 3545 Kp = 3.054 + (0.614 * BW_DMI) 3546 Case Else 3547 Kp = 0 3548 End Select 3549 3550 3551 ' Passage rate cannot be negative 3552 If Kp < 0 Then 3553 Kp = 0 3554 End If 3555 3556 3557 PsgRate(X) = Kp 3558 3559 3560 If (Feed(X).Kd + Kp) > 0 Then 3561 RDP(X) = ((Feed(X).Kd / (Feed(X).Kd + Kp)) * _ 3562 ((((Feed(X).PrtB / 100) * (Feed(X).CP / 100)) * Feed(X).DMFed))) _ 3563 + (((Feed(X).PrtA / 100) * (Feed(X).CP / 100)) * Feed(X).DMFed) 3564 Else 3565 RDP(X) = 0 3566 End If 3567 3568 3569 ' RDP cannot exceed the total CP 3570 If (RDP(X) * 1000) > CP(X) Then 3571 RDP(X) = CP(X) / 1000 3572 End If 3573 3574 3575 RUP(X) = (CP(X) - (RDP(X) * 1000)) / 1000 3576 3577 NDF(X) = (Feed(X).NDF / 100) * DMFed 3578 ADF(X) = (Feed(X).ADF / 100) * DMFed 3579 3580 Next X 3581 3582 3583 DMI_Total = 0 3584 TDN_Total = 0 3585 TDN_Act_Total = 0 3586 CP_Total = 0 3587 RUP_Total = 0 3588 TotalDigestedRUP = 0 3589 RDP_Total = 0 3590 NDF_Total = 0 3591 ADF_Total = 0 3592 3593 3594 For X = 1 To NumFeeds 3595 3596 DMI_Total = DMI_Total + DMI(X) 3597 TDN_Total = TDN_Total + TDN(X) 3598 TDN_Act_Total = TDN_Act_Total + TDN_Act(X) 3599 CP_Total = CP_Total + CP(X) 3600 RUP_Total = RUP_Total + RUP(X) 3601 TotalDigestedRUP = TotalDigestedRUP + (RUP(X) * (Feed(X).RUPDigest / 100)) 3602 RDP_Total = RDP_Total + RDP(X) 3603 NDF_Total = NDF_Total + NDF(X) 3604 ADF_Total = ADF_Total + ADF(X) 3605 3606 Next X 3607 3608 3609 If RUP_Total > 0 Then 3610 DietRUPDigest = TotalDigestedRUP / RUP_Total 3611 Else 3612 DietRUPDigest = 0 3613 End If 3614 3615 3616 MCP_Total = 0.13 * TDN_Act_Total 3617 3618 3619 3620 ' This condition assumes that microbial crude protein production cannot 3621 ' exceed 0.85 (efficiency of protein uptake of bacteria) of the ruminal degraded protein 3622 If MCP_Total > (0.85 * (RDP_Total * 1000)) Then 3623 MCP_Total = (0.85 * (RDP_Total * 1000)) 3624 End If 3625 3626 If MCP_Total < 0 Then 3627 MCP_Total = 0 3628 End If 3629 3630 3631 DietTDN = (TDN_Total / 1000) / TotalDMFed 3632 3633 3634If MEng_Total > 0 Then 3635 NEgOverMEng = NEg_Total / MEng_Total 3636 NElOverMEng = NEl_Total / MEng_Total 3637 NEmOverMEng = NEm_Total / MEng_Total 3638Else 3639 NEgOverMEng = 0 3640 NElOverMEng = 0 3641 NEmOverMEng = 0 3642End If 3643 3644 3645EndCP = 11.8 * TotalDMFed 3646MPEndo = 0.4 * EndCP 3647MPEndoReq = MPEndo / 0.67 3648 3649 3650End Sub 3651 3652 3653Private Sub TargetWeightsComputations() 3654 3655SBW = 0.96 * BW 3656 3657Age1st = FirstCalf 3658Age2nd = Age1st + CalfInt 3659Age3rd = Age2nd + CalfInt 3660Age1stBred = Age1st - (280 / 30.4) 3661 3662Wt1stBred = MW * 0.55 3663Wt1st = MW * 0.82 3664Wt2nd = MW * 0.92 3665Wt3rd = MW 3666 3667 3668If (Age1stBred - Age) > 0 Then 3669 ADG1stBred = (Wt1stBred - BW) / ((Age1stBred - Age) * 30.4) 3670End If 3671 3672If (Age1st - Age) > 0 Then 3673 ADG1st = (Wt1st - (BW - CW)) / ((Age1st - Age) * 30.4) 3674End If 3675 3676If CalfInt > 0 Then 3677 ADG2nd = (Wt2nd - Wt1st) / (CalfInt * 30.4) 3678 ADG3rd = (Wt3rd - Wt2nd) / (CalfInt * 30.4) 3679End If 3680 3681 3682If AnimalType = "Replacement Heifer" Then 3683 If Age < Age1stBred Then 3684 ADGNonBred = (Wt1stBred - BW) / ((Age1stBred - Age) * 30.4) 3685 Else 3686 ADGNonBred = 0 3687 End If 3688Else 3689 ADGNonBred = 0 3690End If 3691 3692If ADGNonBred < 0 Then 3693 ADGNonBred = 0 3694End If 3695 3696 3697If AnimalType = "Replacement Heifer" Then 3698 If (DaysPreg > 0) Then 3699 ADG = ADG1st 3700 Else 3701 ADG = ADG1stBred 3702 End If 3703Else 3704 If (Age >= Age3rd) Then 3705 ADG = 0 3706 ElseIf ((Age2nd <= Age) And (Age < Age3rd)) Then 3707 ADG = ADG3rd 3708 ElseIf ((Age1st <= Age) And (Age < Age2nd)) Then 3709 ADG = ADG2nd 3710 ElseIf ((Age1stBred <= Age) And (Age < Age1st)) Then 3711 ADG = ADG1st 3712 End If 3713End If 3714 3715If ADG < 0 Then 3716 ADG = 0 3717End If 3718 3719End Sub 3720 3721 3722 3723Private Sub LactationComputations() 3724 3725If MilkProd = 0 Then 3726 MilkEn = 0 3727 NELact = 0 3728 YProtn = 0 3729 YFatn = 0 3730 MPLact = 0 3731 FCM = 0 3732 3733 Exit Sub 3734End If 3735 3736 3737If (Lactose = 0) Then 3738 MilkEn = (0.0929 * MilkFat) + (0.0547 * (MilkTrueProtein / 0.93)) + 0.192 3739Else 3740 MilkEn = (0.0929 * MilkFat) + (0.0547 * (MilkTrueProtein / 0.93)) + (0.0395 * Lactose) 3741End If 3742 3743 3744YEn = MilkEn * MilkProd 3745 3746NELact = YEn 3747 3748YProtn = MilkProd * (MilkTrueProtein / 100) 3749 3750YFatn = MilkProd * (MilkFat / 100) 3751 3752MPLact = (YProtn / 0.67) * 1000 3753 3754FCM = (0.4 * MilkProd) + (15 * (MilkFat / 100) * MilkProd) 3755 3756End Sub 3757 3758 3759 3760 3761Private Sub PregnancyComputations() 3762 3763 3764 Const Km = 0.64 ' Changed from 0.576 (Beef NRC value) on June 5, 2000 3765 Const EffMEPreg = 0.14 3766 Const EffMPPreg = 0.33 3767 3768 3769 If DaysPreg < 190 Then 3770 CW = 0 3771 ADGPreg = 0 3772 MEPreg = 0 3773 MPPreg = 0 3774 Else 3775 3776 If DaysPreg > 279 Then 3777 DaysPreg = 279 3778 End If 3779 3780 CW = (18 + ((DaysPreg - 190) * 0.665)) * (CBW / 45) 3781 ADGPreg = 665 * (CBW / 45) 3782 MEPreg = (((2 * 0.00159 * DaysPreg) - 0.0352) * (CBW / 45)) / EffMEPreg 3783 MPPreg = (((0.69 * DaysPreg) - 69.2) * (CBW / 45)) / EffMPPreg 3784 End If 3785 3786 3787 NEPreg = MEPreg * Km 3788 3789 3790 If DaysPreg = 0 Then 3791 MEPreg = 0 3792 MPPreg = 0 3793 ADGPreg = 0 3794 CW = 0 3795 End If 3796 3797End Sub 3798 3799 3800 3801Public Sub ComputeEnergyValues() 3802 3803Dim tdNFC As Single ' truly digestible NFC 3804Dim tdCP As Single ' truly digestible CP 3805Dim tdFat As Single ' truly digestible Fat 3806Dim dNDF As Single ' digestible NDF 3807Dim DiscountVariable As Single ' used to determine discount 3808 3809 3810Dim C As Byte 3811Dim DMFed As Single 3812Dim NF As Integer 3813Dim X As Integer 3814Dim SBW As Single 3815 3816 3817 3818 3819' Reset total energy values 3820MEng_Total = 0 3821NEl_Total = 0 3822NEg_Total = 0 3823NEm_Total = 0 3824 3825 3826 3827 3828If NumFeeds > 0 Then 3829 NF = NumFeeds 3830Else 3831 Exit Sub 3832End If 3833 3834 3835 3836' Regular (i.e. non-calf) feeds can be used in a calf ration, so it 3837' is necessary to differentitate between the TotalDMFed, which accouts 3838' for all of the dry matter fed to the animal, and the Total Regular DMFed. 3839' It is necessary to do this, since the total energy values computed in this 3840' section are done so by first computing total energy concentration values, 3841' then multiplying them by the total quantity values. Thus there must be 3842' a total regular feed fed value, since multiplying TotalDMFed * concentration 3843' would (if calf feeds were present) over-estimate the computed total energy 3844TotalRegDMFed = 0 3845 3846For X = 1 To NF 3847 If InStr(Feed(X).Category, "Calf Feed") = 0 Then 3848 TotalRegDMFed = TotalRegDMFed + Feed(X).DMFed 3849 End If 3850Next X 3851 3852 3853' If there are no regular feeds, exit the procedure 3854If ((TotalRegDMFed = 0) And (AnimalType = "Young Calf")) Then 3855 Exit Sub 3856End If 3857 3858 3859 3860 3861SBW = 0.96 * BW 3862 3863 3864DietaryNFC = 0 3865 3866 3867 3868 3869 3870 3871 3872' Exit procedure if there are no feeds selected 3873If NumFeeds = 0 Then Exit Sub 3874 3875 3876For C = 1 To NumFeeds 3877 With Feed(C) 3878 3879 If InStr(.Category, "Calf Feed") = 0 Then 3880 3881 .NFCDigest = 0.98 3882 3883 tdNFC = .NFCDigest * (100 - .NDF - .CP - .Fat - .Ash + .NDFIP) * .PAF 3884 DietaryNFC = DietaryNFC + (((100 - .NDF - .CP - .Fat - .Ash + .NDFIP) / 100) * .DMFed) 3885 3886 If .CP > 0 Then 3887 If .EnergyEqClass = "Forage" Then 3888 tdCP = Exp((-1.2 * (.ADFIP / .CP))) * .CP 3889 Else 3890 If .Category = "Animal Protein" Then 3891 tdCP = (.CPDigest * .CP) 3892 Else 3893 tdCP = (1 - (0.4 * (.ADFIP / .CP))) * .CP 3894 End If 3895 End If 3896 Else 3897 tdCP = 0 3898 End If 3899 3900 3901 If .Fat < 1 Then 3902 tdFat = 0 3903 Else 3904 tdFat = (.Fat - 1) * 2.25 3905 End If 3906 3907 3908 If .NDF > .NDFIP Then 3909 dNDF = .NDFDigest * .NDF 3910 Else 3911 dNDF = 0 3912 End If 3913 3914 3915 If .Category = "Fat" Then 3916 If .EnergyEqClass = "Fatty Acid" Then 3917 .TDN = (.Fat * .FatDigest * 2.25) 3918 .DE = 0.094 * .FatDigest * .Fat 3919 Else 3920 .TDN = 10 + ((.Fat - 10) * .FatDigest * 2.25) 3921 .DE = (.FatDigest * (.Fat - 10) * 0.094) + 0.43 3922 End If 3923 Else 3924 If .Category = "Animal Protein" Then 3925 .TDN = (.CPDigest * .CP) + ((.Fat - 1) * 2.25) + ((.NFCDigest * (100 - .CP - .Ash - .Fat)) 3926- 7) 3927 .DE = (tdNFC * 0.042) + (tdCP * 0.056) + (0.094 * (tdFat / 2.25)) - 0.3 3928 Else 3929 If dNDF > 0 Then 3930 .TDN = tdNFC + tdCP + tdFat + dNDF - 7 3931 .DE = (tdNFC * 0.042) + (dNDF * 0.042) + (tdCP * 0.056) + (0.094 * (tdFat / 2.25)) - 39320.3 3933 Else 3934 If .CP > 0 Then 3935 .TDN = ((0.98 * .PAF) * (100 - .CP - .Fat - .Ash)) + (.CP * (1 - (0.4 * (.ADFIP / .CP)))) 3936+ ((2.25 * (.Fat - 1) - 7)) 3937 .DE = (0.98 * .PAF) * (0.042 * (100 - .CP - .Fat - .Ash)) + (.CP * (0.056 * (1 - (0.4 * 3938(.ADFIP / .CP))))) + (0.094 * (.Fat - 1)) - 0.3 3939 Else 3940 .TDN = ((0.98 * .PAF) * (100 - .Fat - .Ash)) + ((2.25 * (.Fat - 1) - 7)) 3941 .DE = (0.98 * .PAF) * (0.042 * (100 - .Fat - .Ash)) + (0.094 * (.Fat - 1)) - 0.3 3942 End If 3943 End If 3944 End If 3945 End If 3946 3947 3948 3949 ' Don't generate energy values for vitamin/minerals 3950 If .Category = "Vitamin/Mineral" Then 3951 .TDN = 0 3952 .DE = 0 3953 End If 3954 3955 End If 3956 End With 3957Next C 3958 3959 3960 3961 3962 3963' These variables hold the values of DE and ME before a discount 3964' is applied since the NEg equation used (from the 1996 Beef NRC) 3965' uses an un-discounted ME in its equations 3966Dim UndiscountedME As Single 3967 3968Dim TotalTDN As Single 3969Dim TDNConc As Single 3970 3971 3972TotalTDN = 0 3973 3974For X = 1 To NumFeeds 3975 With Feed(X) 3976 If InStr(.Category, "Calf Feed") = 0 Then 3977 TotalTDN = TotalTDN + ((.TDN / 100) * .DMFed) 3978 End If 3979 End With 3980Next X 3981 3982 3983If AnimalType <> "Young Calf" Then 3984 If AnimalType = "Replacement Heifer" Then 3985 DMI_to_DMIMaint = TotalTDN / (0.035 * (SBW ^ 0.75)) 3986 Else 3987 ' Note that this equation uses BW instead of SBW since it 3988 ' is for a mature animal 3989 DMI_to_DMIMaint = TotalTDN / (0.035 * (BW ^ 0.75)) 3990 End If 3991Else 3992 ' The DMI for maintenance for a young calf is downstream 3993 ' from the energy computations, which require that the 3994 ' DMI/DMI_Maint value be estimated first. This is a circular 3995 ' path which cannot be resolved, so instead this ratio is 3996 ' estimated using the equation for mature animals, given above. 3997 DMI_to_DMIMaint = TotalTDN / (0.035 * (CalfBW ^ 0.75)) 3998End If 3999 4000If TotalRegDMFed > 0 Then 4001 TDNConc = (TotalTDN / TotalRegDMFed) * 100 4002Else 4003 TDNConc = 0 4004End If 4005 4006 4007' Compute total fat in diet 4008Fat_Total = 0 4009 4010For C = 1 To NumFeeds 4011 If InStr(Feed(C).Category, "Calf Feed") = 0 Then 4012 Fat_Total = Fat_Total + ((Feed(C).Fat / 100) * Feed(C).DMFed) 4013 End If 4014Next C 4015 4016Dim TotalFat As Single ' This is the total fat in whole number units (e.g. 5% instead of 0.05) 4017 4018If TotalRegDMFed > 0 Then 4019 TotalFat = (Fat_Total / TotalRegDMFed) * 100 4020Else 4021 TotalFat = 0 4022End If 4023 4024 4025Dim TotalDigestibleFat As Single 4026Dim DigestibleFat As Single 4027 4028TotalDigestibleFat = 0 4029 4030For C = 1 To NumFeeds 4031 With Feed(C) 4032 If .Category = "Fat" Then 4033 If .EnergyEqClass = "Fat" Then 4034 DigestibleFat = 10 + ((.Fat - 10) * .FatDigest) 4035 Else 4036 DigestibleFat = .Fat * .FatDigest 4037 End If 4038 Else 4039 DigestibleFat = .Fat - 1 4040 End If 4041 4042 4043 DigestibleFat = DigestibleFat * .DMFed 4044 4045 TotalDigestibleFat = TotalDigestibleFat + DigestibleFat 4046 4047 End With 4048Next C 4049 4050 4051If TotalDMFed > 0 Then 4052 TotalDigestibleFat = TotalDigestibleFat / TotalDMFed 4053Else 4054 TotalDigestibleFat = 0 4055End If 4056 4057 4058 4059Dim Adj_TDN As Single 4060 4061If TotalRegDMFed > 0 Then 4062 If (Fat_Total / TotalRegDMFed) > 0.03 Then 4063 4064 If TotalFat > 0 Then 4065 Adj_TDN = TDNConc - (((TotalFat) - 3) * (TotalDigestibleFat / TotalFat) * 2.25) 4066 Else 4067 Adj_TDN = 0 4068 End If 4069 4070 TDNConc = Adj_TDN / ((100 - (TotalFat - 3)) / 100) 4071 End If 4072End If 4073 4074 4075DiscountVariable = ((0.18 * TDNConc) - 10.3) * (DMI_to_DMIMaint - 1) 4076 4077If DiscountVariable < 0 Then 4078 DiscountVariable = 0 4079End If 4080 4081 4082If TDNConc < 60 Then 4083 Discount = 1 4084ElseIf ((TDNConc > 60) And ((TDNConc - DiscountVariable) < 60)) Then 4085 Discount = 60 / TDNConc 4086ElseIf TDNConc > 0 Then 4087 Discount = (TDNConc - DiscountVariable) / TDNConc 4088Else 4089 Discount = 1 4090End If 4091 4092 4093' TDN Discount cannot be negative 4094If Discount < 0 Then 4095 Discount = 1 4096End If 4097 4098 4099 4100 4101' Discount the TDN 4102For C = 1 To NumFeeds 4103 4104 With Feed(C) 4105 4106 If InStr(.Category, "Calf Feed") = 0 Then 4107 .TDN_ActX = .TDN * Discount 4108 End If 4109 End With 4110 4111Next C 4112 4113 4114 4115 4116 4117 4118' Note : This value has units of %DM 4119If TotalRegDMFed > 0 Then 4120 Fat_Total = (Fat_Total / TotalRegDMFed) * 100 4121Else 4122 Fat_Total = 0 4123End If 4124 4125 4126 4127 4128 4129For C = 1 To NumFeeds 4130 With Feed(C) 4131 .DiscDE = Discount * .DE 4132 4133 If .Fat >= 3 Then 4134 If (AnimalType <> "Replacement Heifer") Then 4135 .MEng = (1.01 * .DiscDE) - 0.45 + (0.0046 * (.Fat - 3)) 4136 Else 4137 .MEng = 0.82 * .DE 4138 End If 4139 4140 .NEl = (0.703 * .MEng) - 0.19 + ((((0.097 * .MEng) + 0.19) / 97) * (.Fat - 3)) 4141 Else 4142 If ((AnimalType <> "Young Calf") And (AnimalType <> "Replacement Heifer")) Then 4143 .MEng = (1.01 * .DiscDE) - 0.45 4144 Else 4145 .MEng = 0.82 * .DE 4146 End If 4147 4148 .NEl = (0.703 * .MEng) - 0.19 4149 End If 4150 4151 4152 If .Category <> "Fat" Then 4153 .MEforNEg = 0.82 * .DE 4154 4155 .NEg = ((1.42 * .MEforNEg) - (0.174 * (.MEforNEg ^ 2)) _ 4156 + (0.0122 * (.MEforNEg ^ 3)) - 1.65) 4157 4158 If .NEg < 0 Then 4159 .NEg = 0 4160 End If 4161 4162 4163 .NEm = ((1.37 * .MEforNEg) - (0.138 * (.MEforNEg ^ 2)) _ 4164 + (0.0105 * (.MEforNEg ^ 3)) - 1.12) 4165 Else 4166 .MEng = .DiscDE 4167 .NEl = 0.8 * .DiscDE 4168 .NEm = 0.8 * .MEng 4169 .NEg = 0.55 * .MEng 4170 End If 4171 4172 4173 ' Non-negativity constraints 4174 If .MEng < 0 Then 4175 .MEng = 0 4176 End If 4177 4178 If .NEl < 0 Then 4179 .NEl = 0 4180 End If 4181 4182 If .NEm < 0 Then 4183 .NEm = 0 4184 End If 4185 4186 If .NEg < 0 Then 4187 .NEg = 0 4188 End If 4189 4190 4191 MEng_Total = MEng_Total + (.MEng * .DMFed) 4192 NEl_Total = NEl_Total + (.NEl * .DMFed) 4193 NEg_Total = NEg_Total + (.NEg * .DMFed) 4194 NEm_Total = NEm_Total + (.NEm * .DMFed) 4195 End With 4196Next C 4197 4198 4199 4200' These variables are total concentration values (Mcal/kg) 4201Dim TotalDEConc As Single 4202Dim TotalMEConc As Single 4203Dim TotalNEmConc As Single 4204Dim TotalNElConc As Single 4205Dim TotalNEgConc As Single 4206 4207 4208If TotalRegDMFed > 0 Then 4209 TotalMEConc = MEng_Total / TotalRegDMFed 4210 TotalNElConc = NEl_Total / TotalRegDMFed 4211 TotalNEgConc = NEg_Total / TotalRegDMFed 4212 TotalNEmConc = NEm_Total / TotalRegDMFed 4213Else 4214 TotalMEConc = 0 4215 TotalNElConc = 0 4216 TotalNEgConc = 0 4217 TotalNEmConc = 0 4218End If 4219 4220 4221If AnimalType <> "Replacement Heifer" Then 4222 If TotalRegDMFed > 0 Then 4223 NEDietConc = NEl_Total / TotalRegDMFed 4224 Else 4225 NEDietConc = 0 4226 End If 4227Else 4228 If TotalRegDMFed > 0 Then 4229 NEDietConc = NEm_Total / TotalRegDMFed 4230 Else 4231 NEDietConc = 0 4232 End If 4233End If 4234 4235 4236 4237End Sub 4238 4239 4240 4241Public Function MW_From_Breed(Br As String) As Integer 4242 4243Select Case Br 4244 Case "Ayrshire" 4245 MW_From_Breed = 545 4246 Case "Brown Swiss" 4247 MW_From_Breed = 682 4248 Case "Guernsey" 4249 MW_From_Breed = 500 4250 Case "Holstein" 4251 MW_From_Breed = 682 4252 Case "Jersey" 4253 MW_From_Breed = 454 4254 Case "Milking Shorthorn" 4255 MW_From_Breed = 568 4256End Select 4257 4258End Function 4259 4260 4261 4262Public Function CBW_From_MW() As Single 4263 4264 CBW_From_MW = 0.06275 * MW 4265 4266End Function 4267
Effect of Cassava Bioethanol By-Product and Crude Palm Oil in Brahman X Thai Native Yearling Heifer Cattle Diets (II. Carcass Characteristics and Meat Quality)