diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java index 62261efa7557a01b0e0f00d4309761e6257eaefc..7fda52456486ff409a3c7a68f04629caee283bc0 100644 --- a/src/ac/ed/lurg/ModelConfig.java +++ b/src/ac/ed/lurg/ModelConfig.java @@ -164,6 +164,7 @@ public class ModelConfig { public static final boolean IS_CALIBRATION_RUN = getBooleanProperty("IS_CALIBRATION_RUN", false); public static final String SERIALIZED_LAND_USE_FILE = getProperty("SERIALIZED_LAND_USE_FILE", OUTPUT_DIR + File.separator + "landUseRaster.ser"); public static final boolean MARKET_ADJ_PRICE = IS_CALIBRATION_RUN ? false : getBooleanProperty("MARKET_ADJ_PRICE", true); + public static final double INITIAL_PRICE_SHIFT = getDoubleProperty("INITIAL_PRICE_SHIFT", 1.0); public static final boolean CHANGE_YIELD_DATA_YEAR = IS_CALIBRATION_RUN ? false : getBooleanProperty("CHANGE_YIELD_DATA_YEAR", true); public static final String CLUSTERED_YIELD_FILE = getProperty("CLUSTERED_YIELD_FILE", OUTPUT_DIR + File.separator + "cluster.asc"); @@ -237,7 +238,7 @@ public class ModelConfig { public static final double OTHER_INTENSITY_COST = getDoubleProperty("OTHER_INTENSITY_COST", 0.4); public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 3.22); - public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.0007); + public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.0006); public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 2.7); // $500/t, 18% N/t public static final double FERTILISER_MAX_COST = FERTILISER_COST_PER_T * MAX_FERT_AMOUNT/1000; diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java index 004891ec042455da730ca18b3e1ccbd6a13eb130..bc5a76c50acd94f507712cdc038f43ebe6e39d65 100644 --- a/src/ac/ed/lurg/ModelMain.java +++ b/src/ac/ed/lurg/ModelMain.java @@ -97,16 +97,16 @@ public class ModelMain { // in first timestep we don't have this info, but ok as constrained to import/export specified amount, values based on http://www.indexmundi.com/commodities/ for Jun 2010 prevWorldPrices = new HashMap<CropType, GlobalPrice>(); - prevWorldPrices.put(CropType.WHEAT, GlobalPrice.createInitial(0.157)); - prevWorldPrices.put(CropType.MAIZE, GlobalPrice.createInitial(0.152)); - prevWorldPrices.put(CropType.RICE, GlobalPrice.createInitial(0.282)); - prevWorldPrices.put(CropType.OILCROPS, GlobalPrice.createInitial((0.820 * .4 + 0.314 * .6))); - - prevWorldPrices.put(CropType.PULSES, GlobalPrice.createInitial(0.4)); - prevWorldPrices.put(CropType.STARCHY_ROOTS, GlobalPrice.createInitial(0.1)); - prevWorldPrices.put(CropType.MONOGASTRICS, GlobalPrice.createInitial(0.4 * 0.5)); // quantities is in feed equivalent term (0.4 is weighted average price per feed, and 0.5 accounts for mark-up for additional processing) - prevWorldPrices.put(CropType.RUMINANTS, GlobalPrice.createInitial(0.2 * 0.6)); // quantities is in feed equivalent term - prevWorldPrices.put(CropType.ENERGY_CROPS, GlobalPrice.createInitial(0.04)); + prevWorldPrices.put(CropType.WHEAT, GlobalPrice.createInitial(0.157 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.MAIZE, GlobalPrice.createInitial(0.152 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.RICE, GlobalPrice.createInitial(0.182 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.OILCROPS, GlobalPrice.createInitial((0.820 * .4 + 0.314 * .6)*0.5 * ModelConfig.INITIAL_PRICE_SHIFT)); + + prevWorldPrices.put(CropType.PULSES, GlobalPrice.createInitial(0.4 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.STARCHY_ROOTS, GlobalPrice.createInitial(0.1 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.MONOGASTRICS, GlobalPrice.createInitial(0.4 * 0.5 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term (0.4 is weighted average price per feed, and 0.5 accounts for mark-up for additional processing) + prevWorldPrices.put(CropType.RUMINANTS, GlobalPrice.createInitial(0.1 * 0.6 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term + prevWorldPrices.put(CropType.ENERGY_CROPS, GlobalPrice.createInitial(0.04 * ModelConfig.INITIAL_PRICE_SHIFT)); prevStockLevel = getInitialStockLevels(); } diff --git a/src/ac/ed/lurg/demand/DemandManager.java b/src/ac/ed/lurg/demand/DemandManager.java index 29f8a5a6d8d5808eac6d3e13bb3a85bd9f289abe..f24a65b239b6319b848ef4996064e79b15048e63 100644 --- a/src/ac/ed/lurg/demand/DemandManager.java +++ b/src/ac/ed/lurg/demand/DemandManager.java @@ -73,7 +73,8 @@ public class DemandManager { } public double getSecondGenBioenergyDemand(Timestep timestep) { - double d = bioenergyDemandManager.getSecondGenBioenergyDemand(timestep.getYear()); + int year = ModelConfig.CHANGE_DEMAND_YEAR ? timestep.getYear() : ModelConfig.BASE_YEAR; + double d = bioenergyDemandManager.getSecondGenBioenergyDemand(year); LogWriter.println("Global gen2 bioenergy demand in " + timestep + " is " + d); return d; } diff --git a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java index 63c9e118cd1c459953a599bc2af19a719892a47a..e1eff57e9f10ec3e71c3808dbd6aa60ba2c4dfb4 100644 --- a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java +++ b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java @@ -39,7 +39,7 @@ public class LPJYieldResponseMapReader { // arithmetic adjustment of yield for tech change int yearsOfTech = (timestep.getTimestep() - ModelConfig.TECHNOLOGY_CHANGE_START_STEP) * ModelConfig.TIMESTEP_SIZE; - techYieldAdj = yearsOfTech > 0 ? (1.0 + yearsOfTech * ModelConfig.TECHNOLOGY_CHANGE_ANNUAL_RATE) : 1.0 ; + techYieldAdj = 1.0 + yearsOfTech * ModelConfig.TECHNOLOGY_CHANGE_ANNUAL_RATE; LogWriter.println("Yield adjustment for technology for " + timestep + " is " + techYieldAdj); YieldRaster yieldRaster = new YieldRaster(rasterProj);