What is the functional form of generic waste biomass in the model?
What is the functional form of generic waste biomass in the model?
The formula for the annual production (EJ/yr) as a function of the price (1975$/GJ) of biomass which is a smooth-renewable-subresource is
AnnualProduction = maxSubResource * (Price^CurveExponent / (MidPrice^CurveExponent + Price^CurveExponent))
Note that the mid-price can be reduced by the techChange parameter (looks like it's zero by default) and the supply calculated from that formula is increased by the gdpSupplyElast, which is the ratio of the GDP in the given period to the baseGDP, raised to the exogenous gdpSupplyElast exponent.
Note that the biomass market consists of the sum of generic waste biomass, residue biomass from agriculture and forestry, and in future periods purpose-grown biomass. All three markets share a price but the contributions from each source need to be queried separately.
Thank you for your reply! I have other questions to ask: Price-elasticity is percent change in output / percent change in price. Is it possible that gdpSupplyElast is percent change in generic waste biomass production / percent change in GDP? Is CurveExponent exogenous data? How is it calculated? It seems that the AnnualProduction of generic waste biomass needs to be multiplied by gpdSupplyExpansion, and the contents of gpdSupplyExpansion are as follows. How is gpdSupplyExpansion written in functional form?
double gpdSupplyExpansion = std::pow( aGDP->getApproxGDP( aPeriod ) / aGDP->getApproxGDP( 0 ),
mGdpSupplyElasticity );
// now convert to absolute value of production
double annualProd = fractionAvailable * mMaxAnnualSubResource[aPeriod] * gpdSupplyExpansion;
if( annualProd < util::getSmallNumber() ) {
// the curve can be extremely flat close to zero
// so instead we will cut off production at getSmallNumber
// which has also be used in getLowestPrice so that in
// conjunction we can let the solver effectively ignore
// supply/demand mismatch below this value
annualProd = 0.0;
}
mAnnualProd[ aPeriod ] = annualProd;
currTech->production( aRegionName, aResourceName, mAnnualProd[ aPeriod ], 1.0, aGDP, aPeriod );