diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java index 60c8e5b0bbbb4e551dabf966681c247869ed990c..d3b9f2362bad49a0eba7a7fef4f804574bb4da44 100644 --- a/src/ac/ed/lurg/ModelMain.java +++ b/src/ac/ed/lurg/ModelMain.java @@ -204,9 +204,9 @@ public class ModelMain { private void writeMarketFile(Timestep timestep, RasterSet<LandUseItem> landUseRaster) { try { - StringBuffer sbHeadings = new StringBuffer("Year, Cropland (Mha), Pasture (Mha), Natural (Mha), Fert crop (Mt), Fert pasture (Mt), Fert crop (M litre), Fert pasture (M litre)"); - for (CropType crop : CropType.getImportedTypes()) - sbHeadings.append(",Px_" + crop.getGamsName()); + StringBuffer sbHeadings = new StringBuffer("Year, Cropland (Mha), Pasture (Mha), Natural (Mha), Fert crop (Mt), Fert pasture (Mt), Irrig crop (M litre), Irrig pasture (M litre)"); + // for (CropType crop : CropType.getImportedTypes()) + // sbHeadings.append(",Px_" + crop.getGamsName()); BufferedWriter outputFile = getFileWriter(timestep, ModelConfig.TOTAL_LAND_COVER_FILE, sbHeadings.toString()); @@ -223,8 +223,8 @@ public class ModelMain { sbData.append(String.format(", %.1f", LandUseItem.getIrrigationTotal(landUseRaster.values(), CropType.getCropsLessPasture()))); sbData.append(String.format(", %.1f", LandUseItem.getIrrigationTotal(landUseRaster.values(), CropType.PASTURE))); - for (CropType crop : CropType.getImportedTypes() ) - sbData.append(String.format(", %.3f", prevWorldPrices.get(crop))); + // for (CropType crop : CropType.getImportedTypes() ) + // sbData.append(String.format(", %.3f", prevWorldPrices.get(crop))); outputFile.write(sbData.toString()); outputFile.newLine(); diff --git a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java index 052805edb0085f112ba31e3311978c7be778e45d..c56267a0b374b82ecd9fbdaf6a2fecef4df408b3 100644 --- a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java +++ b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java @@ -222,6 +222,8 @@ public class GamsLocationOptimiser { protected LandUseItem createValue() { return new LandUseItem(); } }; + Map<Integer, ? extends IrrigationItem> allIrrigationRefData = inputData.getIrrigationCosts(); + Map<CropType, CropUsageData> cropUsageData = new HashMap<CropType, CropUsageData>(); Map<CropType, Double> cropAdjs = new HashMap<CropType, Double>(); @@ -254,7 +256,8 @@ public class GamsLocationOptimiser { if (area > 0) { if (DEBUG) LogWriter.println(String.format("\t location %s, %s:\tarea= %.1f,\tfert= %.3f,\tirrg= %.3f,\tintensity= %.3f", locationName, itemName, area, fertIntensity, irrigIntensity, otherIntensity)); - landUseItem.setIntensity(cropType, new Intensity(fertIntensity, irrigIntensity, otherIntensity, yield, unitEnergy)); + IrrigationItem irrigRefData = allIrrigationRefData.get(locId); + landUseItem.setIntensity(cropType, new Intensity(fertIntensity, irrigIntensity, otherIntensity, yield, unitEnergy, irrigRefData.getMaxIrrigAmount(cropType))); } double croplandArea = getParmValue(parmCroplandArea, locationName); diff --git a/src/ac/ed/lurg/landuse/Intensity.java b/src/ac/ed/lurg/landuse/Intensity.java index bd5f83ccadc11fe6885ac475af76d62357ecd5fd..9022ec211b2b67d3beb5bf2ccc5316ac9ad8529d 100644 --- a/src/ac/ed/lurg/landuse/Intensity.java +++ b/src/ac/ed/lurg/landuse/Intensity.java @@ -3,19 +3,21 @@ package ac.ed.lurg.landuse; import ac.ed.lurg.ModelConfig; public class Intensity { - double fertiliserIntensity; - double irrigationIntensity; - double otherIntensity; - double yield; - double unitEnergy; + private double fertiliserIntensity; + private double irrigationIntensity; + private double otherIntensity; + private double yield; + private double unitEnergy; + private double maxIrrigRate; - public Intensity(double fertiliserIntensity, double irrigationIntensity, double otherIntensity, double yield, double unitEnergy) { + public Intensity(double fertiliserIntensity, double irrigationIntensity, double otherIntensity, double yield, double unitEnergy, double maxIrrigRate) { super(); this.fertiliserIntensity = fertiliserIntensity; this.irrigationIntensity = irrigationIntensity; this.otherIntensity = otherIntensity; this.yield = yield; this.unitEnergy = unitEnergy; + this.maxIrrigRate = maxIrrigRate; } public double getFertiliserIntensity() { @@ -42,7 +44,7 @@ public class Intensity { return unitEnergy; } - public double getIrrigationRate(double maxIrrigAmount) { - return maxIrrigAmount * irrigationIntensity; + public double getIrrigationRate() { + return maxIrrigRate * irrigationIntensity; } } diff --git a/src/ac/ed/lurg/landuse/IrrigationItem.java b/src/ac/ed/lurg/landuse/IrrigationItem.java index 72a76779e93989afa05f6c2f38924a4921faa06c..5ebcfb9d72892124e28c812b32b35b9915cfd508 100644 --- a/src/ac/ed/lurg/landuse/IrrigationItem.java +++ b/src/ac/ed/lurg/landuse/IrrigationItem.java @@ -23,13 +23,13 @@ public class IrrigationItem implements RasterItem { this.irrigationCost = aridityIndex; } - public double getMaxIrrigAmount(CropType c) { - Double d = maxIrrigAmounts.get(c); - return c==null ? Double.NaN : d.doubleValue(); + public double getMaxIrrigAmount(CropType crop) { + Double d = maxIrrigAmounts.get(crop); + return d==null ? Double.NaN : d.doubleValue(); } - public void setMaxIrrigAmount(CropType c, double maxIrrig) { - maxIrrigAmounts.put(c, maxIrrig); + public void setMaxIrrigAmount(CropType crop, double maxIrrig) { + maxIrrigAmounts.put(crop, maxIrrig); } public double getIrrigConstraint() { diff --git a/src/ac/ed/lurg/landuse/LandUseItem.java b/src/ac/ed/lurg/landuse/LandUseItem.java index 699025e1ce663a3588781e2e79682926bf3863ad..c625f59a5ec8386b6f3cf8da6ccb41485bf522c3 100644 --- a/src/ac/ed/lurg/landuse/LandUseItem.java +++ b/src/ac/ed/lurg/landuse/LandUseItem.java @@ -16,6 +16,7 @@ public class LandUseItem implements InterpolatingRasterItem<LandUseItem> { private Map<CropType, Double> cropFractions = new HashMap<CropType, Double>(); private Map<LandCoverType, Double> landCoverAreas = new HashMap<LandCoverType, Double>(); + public Intensity getIntensity(CropType crop) { return intensityMap.get(crop); } @@ -71,7 +72,7 @@ public class LandUseItem implements InterpolatingRasterItem<LandUseItem> { public double getIrrigationRate(CropType crop) { Intensity i = getIntensity(crop); - return (i == null) ? 0 : i.getIrrigationRate(999); + return (i == null) ? 0 : i.getIrrigationRate(); } /** Irrigation amount in M litres, for this location */