diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index f78d8bc2b5f0779c5c96f46d95e6ff176ef4a0a5..cf69278e5a4fecf726b0024967c655cc214c883a 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -36,6 +36,7 @@ import ac.ed.lurg.landuse.CropUsageReader;
 import ac.ed.lurg.landuse.IrrigationItem;
 import ac.ed.lurg.landuse.IrrigationMaxAmountReader;
 import ac.ed.lurg.landuse.IrrigationRasterSet;
+import ac.ed.lurg.landuse.IrrigiationCostReader;
 import ac.ed.lurg.landuse.LandCoverItem;
 import ac.ed.lurg.landuse.LandCoverReader;
 import ac.ed.lurg.landuse.LandUseItem;
@@ -98,7 +99,7 @@ public class ModelMain {
 		
 		tradeManager = new TradeManager(compositeCountryManager);
 		fpuManager = new FPUManager(desiredProjection);
-		currentIrrigationData = new IrrigationRasterSet(desiredProjection);
+		currentIrrigationData = getFixedIrrigationData();
 		countryBoundaryRaster = getCountryBoundaryRaster();
 		clusterIdRaster = (ModelConfig.IS_CALIBRATION_RUN) ? new RasterSet<IntegerRasterItem>(desiredProjection) : getClusterRaster();
 
@@ -551,6 +552,12 @@ public class ModelMain {
 	}
 	
 
+	private IrrigationRasterSet getFixedIrrigationData() {	
+	    IrrigationRasterSet fixedIrrigData = new IrrigationRasterSet(desiredProjection);
+		new IrrigiationCostReader(fixedIrrigData).getRasterDataFromFile(ModelConfig.IRRIGATION_COST_FILE);
+		return fixedIrrigData;
+	}
+	
 	private RasterSet<IrrigationItem> getUpdateIrrigationData(Timestep timestep, YieldRaster yieldSurfaces) {		
 		String rootDir = timestep.getYearSubDir(ModelConfig.YIELD_DIR);
 		new IrrigationMaxAmountReader(currentIrrigationData, yieldSurfaces).getRasterDataFromFile(rootDir + File.separator + ModelConfig.IRRIG_MAX_WATER_FILENAME);
diff --git a/src/ac/ed/lurg/landuse/FPUManager.java b/src/ac/ed/lurg/landuse/FPUManager.java
index 41a38764ed02865417bd6ea7ec749e5e9a49207e..531dad35d5a75b07805e763ffb13cc651f91d4b7 100644
--- a/src/ac/ed/lurg/landuse/FPUManager.java
+++ b/src/ac/ed/lurg/landuse/FPUManager.java
@@ -18,82 +18,80 @@ import ac.sac.raster.RasterKey;
 import ac.sac.raster.RasterSet;
 
 public class FPUManager {
-	private static final int FPU_COL = 0; 
-	private static final int YEAR_COL = 1; 
-	private static final int USAGE_COL = 2; 
-	
+	private static final int FPU_COL = 0;
+	private static final int YEAR_COL = 1;
+	private static final int USAGE_COL = 2;
+
 	RasterSet<IntegerRasterItem> fpuBoundaries;
 	Map<IntegerRasterItem, List<RasterKey>> fpuMap;
-	Map<Integer, Map<Integer,Double>> fpuOtherUses;
-	
+	Map<Integer, Map<Integer, Double>> fpuOtherUses;
+
 	public FPUManager(RasterHeaderDetails desiredProjection) {
 		getFPUBoundaryRaster(desiredProjection);
-		fpuMap=CollectionHelper.invertMap(fpuBoundaries);
+		fpuMap = CollectionHelper.invertMap(fpuBoundaries);
 		readOtherUses();
 	}
 
 	public void getFPUBoundaryRaster(RasterHeaderDetails desiredProjection) {
-		fpuBoundaries = new RasterSet<IntegerRasterItem>(desiredProjection){
+		fpuBoundaries = new RasterSet<IntegerRasterItem>(desiredProjection) {
 			private static final long serialVersionUID = -8620255271155259176L;
+
 			protected IntegerRasterItem createRasterData() {
 				return new IntegerRasterItem(0);
 			}
 		};
-		
+
 		FPUBoundaryReader fpuReader = new FPUBoundaryReader(fpuBoundaries);
 		fpuReader.getRasterDataFromFile(ModelConfig.FPU_BOUNDARIES_FILE);
 	}
-	
+
 	@SuppressWarnings("serial")
-	public void readOtherUses(){
-	
-		LazyHashMap<Integer, Map<Integer,Double>> usageMap = new LazyHashMap<Integer, Map<Integer,Double>>() {
-			protected Map<Integer, Double> createValue() { return new HashMap<Integer, Double>(); }
+	public void readOtherUses() {
+
+		LazyHashMap<Integer, Map<Integer, Double>> usageMap = new LazyHashMap<Integer, Map<Integer, Double>>() {
+			protected Map<Integer, Double> createValue() {
+				return new HashMap<Integer, Double>();
+			}
 		};
-		
+
 		String filename = ModelConfig.OTHER_WATER_USES_FILE;
 		try {
-			BufferedReader reader = new BufferedReader(new FileReader(filename)); 
+			BufferedReader reader = new BufferedReader(new FileReader(filename));
 			String line;
 			int fpu, year;
 			double waterUsage;
-			
+
 			reader.readLine(); // read header
-			
-			while ((line=reader.readLine()) != null) {
+
+			while ((line = reader.readLine()) != null) {
 				String[] tokens = line.split(",");
-				
+
 				if (tokens.length < 3)
 					LogWriter.printlnError("Too few columns in " + filename + ", " + line);
-				
-				
-					fpu = Integer.parseInt(tokens[FPU_COL]);
-					year = Integer.parseInt(tokens[YEAR_COL]);
-					waterUsage = Double.parseDouble(tokens[USAGE_COL]);
-					
-					Map<Integer, Double> fpuData = usageMap.lazyGet(fpu);
-					fpuData.put(year, waterUsage);
-				} 
-				reader.close(); 
-			
-			} catch (IOException e) {
-				LogWriter.printlnError("Failed in reading water usage");
-				LogWriter.print(e);
+
+				fpu = Integer.parseInt(tokens[FPU_COL]);
+				year = Integer.parseInt(tokens[YEAR_COL]);
+				waterUsage = Double.parseDouble(tokens[USAGE_COL]);
+
+				Map<Integer, Double> fpuData = usageMap.lazyGet(fpu);
+				fpuData.put(year, waterUsage);
 			}
-			LogWriter.println("Processed " + filename + ", create " + usageMap.size() + " water usage maps values");
-			
-			fpuOtherUses = usageMap;
+			reader.close();
+
+		} catch (IOException e) {
+			LogWriter.printlnError("Failed in reading water usage");
+			LogWriter.print(e);
 		}
-		
-		
-	
-	
+		LogWriter.println("Processed " + filename + ", create " + usageMap.size() + " water usage maps values");
+
+		fpuOtherUses = usageMap;
+	}
+
 	public List<RasterKey> getKeysFor(IntegerRasterItem fpu) {
 		List<RasterKey> keys = fpuMap.get(fpu);
 		if (keys == null)
 			keys = new ArrayList<RasterKey>();
 		return keys;
 	}
-	
-	
+
 }
diff --git a/src/ac/ed/lurg/landuse/IrrigationRasterSet.java b/src/ac/ed/lurg/landuse/IrrigationRasterSet.java
index fffedff6d2533a312b9fd3281e709c6294c162f7..c3c39ad86157448453086b4ec5791967d31edd71 100644
--- a/src/ac/ed/lurg/landuse/IrrigationRasterSet.java
+++ b/src/ac/ed/lurg/landuse/IrrigationRasterSet.java
@@ -5,25 +5,24 @@ import java.util.Map;
 
 import ac.ed.lurg.ModelConfig;
 import ac.ed.lurg.Timestep;
+import ac.ed.lurg.utils.LogWriter;
 import ac.sac.raster.IntegerRasterItem;
 import ac.sac.raster.RasterHeaderDetails;
 import ac.sac.raster.RasterKey;
 import ac.sac.raster.RasterSet;
 
-public class IrrigationRasterSet extends RasterSet<IrrigationItem>{
-	
+public class IrrigationRasterSet extends RasterSet<IrrigationItem> {
+
 	private static final long serialVersionUID = 4794790389538053286L;
 
 	public IrrigationRasterSet(RasterHeaderDetails header) {
 		super(header);
-		new IrrigiationCostReader(this).getRasterDataFromFile(ModelConfig.IRRIGATION_COST_FILE); //this isn't very nice in here...
 	}
 
-	
 	protected IrrigationItem createRasterData() {
 		return new IrrigationItem();
 	}
-	
+
 	public void updateConstraintByFPU(FPUManager fpuManager, Timestep timestep) {
 
 		Collection<RasterKey> fpuKeys;
@@ -32,42 +31,41 @@ public class IrrigationRasterSet extends RasterSet<IrrigationItem>{
 		int yearsOfIrrigChange = (timestep.getTimestep() - ModelConfig.START_TIMESTEP) * ModelConfig.TIMESTEP_SIZE;
 		double waterAvailabilityAdj = 1.0 + yearsOfIrrigChange * ModelConfig.WATER_AVAILIBILITY_RATE_OF_CHANGE;
 		int year = timestep.getYear();
-		
-		
-		
+
 		for (IntegerRasterItem fpu : keyset) {
-				
-			fpuKeys =fpuManager.getKeysFor(fpu);
+
+			fpuKeys = fpuManager.getKeysFor(fpu);
 			RasterSet<IrrigationItem> irrigData = this.createSubsetForKeys(fpuKeys);
 			double fpuRunOff = 0.0;
 			double otherUses = 0.0;
 			double waterAvailForIrrigPerCell = 0.0;
 			int cellCount = 0;
-			
+
 			for (Map.Entry<RasterKey, IrrigationItem> entry : irrigData.entrySet()) {
 
-				
 				if (entry.getValue() != null) {
-					fpuRunOff += entry.getValue().getRunOff()*fpuManager.fpuBoundaries.getAreaMha(entry.getKey())*0.01;
-					
+					fpuRunOff += entry.getValue().getRunOff() * fpuManager.fpuBoundaries.getAreaMha(entry.getKey())
+							* 0.01;
 					cellCount++;
 				}
-				
+
 			}
 
-			Double fpuRunOffAvailable = fpuRunOff*0.4 * ModelConfig.ENVIRONMENTAL_WATER_CONSTRAINT; //0.4 from elliott paper
-			
-			
+			Double fpuRunOffAvailable = fpuRunOff * 0.4 * ModelConfig.ENVIRONMENTAL_WATER_CONSTRAINT; // 0.4
+																										// from
+																										// elliott
+																										// paper
+
 			otherUses = fpuManager.fpuOtherUses.get(fpu.getInt()).get(year) * waterAvailabilityAdj;
-			if (fpuRunOffAvailable - otherUses < 0){
+			if (fpuRunOffAvailable - otherUses < 0) {
 				waterAvailForIrrigPerCell = 0;
-			}
-			else waterAvailForIrrigPerCell = (fpuRunOffAvailable - otherUses) / cellCount;
-		
+			} else
+				waterAvailForIrrigPerCell = (fpuRunOffAvailable - otherUses) / cellCount;
+
 			for (Map.Entry<RasterKey, IrrigationItem> entry : irrigData.entrySet()) {
 				if (entry.getValue() != null) {
 					entry.getValue().setIrrigConstraint(waterAvailForIrrigPerCell);
-					
+
 				}
 			}
 
@@ -75,5 +73,4 @@ public class IrrigationRasterSet extends RasterSet<IrrigationItem>{
 
 	}
 
-
 }