# IPAT-S script implementing a feed demand scenario, driven by livestock # production base year 2000 scen years 2010 2020 dim livestock 'beef cattle' 'dairy cattle' 'sheep & goat' 'pig' 'poultry' dim feed 'concentrates' 'grazing' 'residue etc.' ####################################### ## ## Variables ## ####################################### comment: FeedTable: Detailed feed allocation by type of livestock and type of feed. FeedEnerReq: Sum FeedTable over "feed" FeedSupply: Sum FeedTable over "livestock" Production: Domestic livestock production by type of livestock GrazArea: Total grazing area :comment summvar FeedTable{livestock feed} # Feed supply in 1000 LSU summvar FeedEnerReq{livestock} # Feed energy requirements in 1000 LSU summvar FeedSupply{feed} # Feed supply by feed in 1000 LSU summvar Production{livestock} # Production in kt summvar GrazArea # Grazing area in Mha comment: Productivity indices * Meat-producing liveweight: Liveweight index offtake: Offtake index * Dairy-producing dairyProd: Dairy productivity index (kt milk/LSU) * Land use grazProduct: Index of productivity of grazing land (LSU/ha) :comment ratio liveweight{livestock}, offtake{livestock} ratio dairyProd ratio grazProduct ######################################## ## ## Base-year feed allocation ## ######################################## # Beef cattle ditto livestock = 'beef cattle': FeedTable.0{'' feed = 'concentrates'} = 10% * 500 FeedTable.0{'' feed = 'grazing'} = 70% * 500 FeedTable.0{'' feed = 'residue etc.'} = (100% - 10% - 70%) * 500 # Dairy cattle ditto livestock = 'dairy cattle': FeedTable.0{'' feed = 'concentrates'} = 70% * 450 FeedTable.0{'' feed = 'residue etc.'} = (100% - 70%) * 450 # Sheep & goats ditto livestock = 'sheep & goat': FeedTable.0{'' feed = 'concentrates'} = 30% * 600 FeedTable.0{'' feed = 'residue etc.'} = (100% - 30%) * 600 # Pigs ditto livestock = 'pig': FeedTable.0{'' feed = 'concentrates'} = 70% * 550 FeedTable.0{'' feed = 'residue etc.'} = (100% - 70%) * 550 # Poultry ditto livestock = 'poultry': FeedTable.0{'' feed = 'concentrates'} = 20% * 400 FeedTable.0{'' feed = 'residue etc.'} = (100% - 20%) * 400 # Sum across sources to give total feed for animals summarize FeedTable as FeedEnerReq ######################################### ## ## Livestock production in BY & scenario ## ######################################### ditto livestock: Production{'' = 'beef cattle'} = 300, <330, 370> Production{'' = 'dairy cattle'} = 3500, <4000, 4700> # Milk and milk products Production{'' = 'sheep & goat'} = 400, <410, 400> Production{'' = 'pig'} = 500, <570, 650> Production{'' = 'poultry'} = 450, <510, 580> liveweight = incr[< 10% >] # Increase 10% between each successive scenario year offtake = incr[< 5% >] # Increase 5% between each successive scenario year dairyProd = gr(<0.75%>) # Gradual increase in dairy productivity GrazArea.0 = 127 grazProduct = index[<1.05, 1.02>] # Change in grazing land productivity ######################################### ## ## Feed requirements in the scenario ## ######################################### # Production drives feed energy requirements, but moderated by # - offtake rate (higher rate reduces feed req) # - liveweight (more energy per animal, to 0.75 power, but more meat per animal) :: Production >> liveweight^0.75/(offtake * liveweight) -> FeedEnerReq # Calculate for dairy, which doesn't use above formula # Note: Have to do this one second ditto livestock = 'dairy cattle': :: Production {''} >> 1/dairyProd -> FeedEnerReq {''} # Calculate feed requirements by feed source, and sum across livestock # to give total requirements by type of feed # Assume scenario feed mixes for each livestock type are # the same as in the base year summarize FeedEnerReq >>-> FeedTable as FeedSupply # Calculate grazing area :: FeedSupply{feed = 'grazing'} >> 1/grazProduct -> GrazArea ######################################### ## ## Report results ## ######################################### report 100 * Production/Production.2000 as "Production Index (2000 = 100)" report FeedEnerReq as "Feed Requirements (1000 LSU)" report 100 * GrazArea/GrazArea.2000 as "Grazing Index (2000 = 100)" report 100 * FeedSupply/FeedSupply.2000 as "Feed Use Index (2000 = 100)"