From d1d986ea1bb9572cf92c5545762648d43ee68e86 Mon Sep 17 00:00:00 2001
From: Peter Alexander <p.m.w.alexander@gmail.com>
Date: Thu, 9 Feb 2017 11:12:43 +0000
Subject: [PATCH] Changes for cluster

---
 scripts/compilePlum.sh                        |  3 ++-
 .../convertOldToNewLPJData.sh                 |  0
 scripts/createScenarios.sh                    | 13 +++++------
 src/ac/ed/lurg/ModelConfig.java               | 23 ++++++++++++-------
 src/ac/ed/lurg/ModelMain.java                 |  8 +++----
 .../country/gams/GamsLocationOptimiser.java   |  4 ++--
 .../lurg/yield/LPJYieldResponseMapReader.java |  4 ++--
 7 files changed, 31 insertions(+), 24 deletions(-)
 rename convertOldToNewLPJData.sh => scripts/convertOldToNewLPJData.sh (100%)

diff --git a/scripts/compilePlum.sh b/scripts/compilePlum.sh
index 6832de0d..606f0569 100755
--- a/scripts/compilePlum.sh
+++ b/scripts/compilePlum.sh
@@ -1,2 +1,3 @@
-javac -J-Xmx1g -cp .:/Applications/GAMS/gams24.3_osx_x64_64_sfx/apifiles/Java/api/GAMSJavaAPI.jar ./src/ac/ed/lurg/*.java ./src/ac/ed/lurg/country/*.java ./src/ac/ed/lurg/country/gams/*.java ./src/ac/ed/lurg/demand/*.java ./src/ac/ed/lurg/landuse/*.java ./src/ac/ed/lurg/output/*.java ./src/ac/ed/lurg/types/*.java ./src/ac/ed/lurg/utils/*.java ./src/ac/ed/lurg/yield/*.java ./src/ac/sac/raster/*.java -d ./classes
+cd /exports/csce/eddie/geos/groups/LURG/models/PLUM/plumv2
+javac -J-Xmx1g -cp .:/exports/csce/eddie/geos/groups/LURG/models/gams/gams24.7_linux_x64_64_sfx/apifiles/Java/api/GAMSJavaAPI.jar ./src/ac/ed/lurg/*.java ./src/ac/ed/lurg/country/*.java ./src/ac/ed/lurg/country/gams/*.java ./src/ac/ed/lurg/demand/*.java ./src/ac/ed/lurg/landuse/*.java ./src/ac/ed/lurg/output/*.java ./src/ac/ed/lurg/types/*.java ./src/ac/ed/lurg/utils/*.java ./src/ac/ed/lurg/yield/*.java ./src/ac/sac/raster/*.java -d ../classes
 
diff --git a/convertOldToNewLPJData.sh b/scripts/convertOldToNewLPJData.sh
similarity index 100%
rename from convertOldToNewLPJData.sh
rename to scripts/convertOldToNewLPJData.sh
diff --git a/scripts/createScenarios.sh b/scripts/createScenarios.sh
index 3abe563f..514b7748 100755
--- a/scripts/createScenarios.sh
+++ b/scripts/createScenarios.sh
@@ -1,8 +1,8 @@
 #!/bin/sh
 
 filename="$1"
-common_prop_file=./common.properties
-output_dir=./scenarios/
+common_prop_file=/exports/csce/eddie/geos/groups/LURG/models/PLUM/output/common_properties
+output_dir=/exports/csce/eddie/geos/groups/LURG/models/PLUM/output
 
 if [[ $* == *-O* ]]; then overwrite=1
 else overwrite=0
@@ -15,7 +15,7 @@ fi
 
 echo "Generating scenarios into $output_dir"
 
-while read -r datarow $filename
+while read -r datarow
 do
   IFS=',' read -r -a array <<< "$datarow"
 
@@ -23,9 +23,8 @@ do
      header=( "${array[@]}" )
   else
      scenario="${array[0]}"
-     scenario_dir=$output_dir$scenario
-     echo $scenario
-
+     scenario_dir=$output_dir/$scenario
+     echo "$scenario in $scenario_dir"
      if [ ! -d "$scenario_dir" ]; then
         mkdir $scenario_dir
      elif [ $overwrite -ne 1 ]; then
@@ -35,7 +34,7 @@ do
 
      config_file=$scenario_dir/config.properties
      cp $common_prop_file $config_file
-     echo "BASE_DIR=$scenario_dir" >> $config_file
+     echo "OUTPUT_DIR=$scenario_dir" >> $config_file
 
      for index in "${!array[@]}"
      do
diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java
index 3e6d352d..ff3aa1c9 100644
--- a/src/ac/ed/lurg/ModelConfig.java
+++ b/src/ac/ed/lurg/ModelConfig.java
@@ -3,6 +3,7 @@ package ac.ed.lurg;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.util.Enumeration;
 import java.util.Properties;
 
 public class ModelConfig {
@@ -22,6 +23,12 @@ public class ModelConfig {
 			System.err.println("Problems reading config file");
 			System.err.println(e.getMessage());
 		}
+
+		Enumeration<?> em = configFile.keys();
+		while(em.hasMoreElements()) {
+			String str = (String) em.nextElement();
+			System.out.println(str + ": " + configFile.get(str));
+		}
 	}
 	
 	private static ModelConfig getModelConfig() {
@@ -82,11 +89,11 @@ public class ModelConfig {
 
 	// Directory information
 	public static final String BASE_DIR = getProperty("BASE_DIR");  // this must to be set in config file
-	public static final String TEMP_DIR = getProperty("TEMP_DIR", BASE_DIR + File.separator + "temp");
 	public static final String OUTPUT_DIR = getProperty("OUTPUT_DIR", BASE_DIR + File.separator + "output");
+	public static final String TEMP_DIR = getProperty("TEMP_DIR", OUTPUT_DIR + File.separator + "GamsTmp");
 	public static final String DATA_DIR = getProperty("DATA_DIR", BASE_DIR + File.separator + "data");
 	public static final String GAMS_MODEL = getProperty("GAMS_MODEL", BASE_DIR + File.separator + "GAMS/IntExtOpt.gms");
-	public static final boolean CLEANUP_GAMS_DIR = getBooleanProperty("CLEANUP_GAMS_DIR", true);
+	public static final boolean CLEANUP_GAMS_DIR = getBooleanProperty("CLEANUP_GAMS_DIR", false);
 
 	// Country (non-gridded) data
 	public static final String DEMAND_CURVES_FILE = DATA_DIR + File.separator + "com_curves.csv";
@@ -104,7 +111,7 @@ public class ModelConfig {
 	public static final int LPJG_MONITOR_TIMEOUT_SEC = getIntProperty("LPJG_MONITOR_TIMEOUT", 60*60*2);
 	public static final String ANPP_FILENAME = getProperty("ANPP_FILENAME", "anpp.out");
 	public static final String YIELD_FILENAME = getProperty("YIELD_FILENAME", "yield.out");
-	public static final boolean PASTURE_FERT_RESPONSE_FROM_LPJ = getBooleanProperty("PASTURE_FERT_RESPONSE_FROM_LPJ", true);;
+	public static final boolean PASTURE_FERT_RESPONSE_FROM_LPJ = getBooleanProperty("PASTURE_FERT_RESPONSE_FROM_LPJ", false);;
 
 	public static final double CALIB_FACTOR_WHEAT = getDoubleProperty("CALIB_FACTOR_WHEAT", 0.976);
 	public static final double CALIB_FACTOR_MAIZE = getDoubleProperty("CALIB_FACTOR_MAIZE", 0.667);
@@ -149,10 +156,10 @@ public class ModelConfig {
 	public static final double MAX_IMPORT_CHANGE = IS_CALIBRATION_RUN ? 0.0 : getDoubleProperty("MAX_IMPORT_CHANGE", ANNUAL_MAX_IMPORT_CHANGE*TIMESTEP_SIZE);
 
 	// Fertiliser application rates in kg/ha
-	public static final double MIN_FERT_AMOUNT = getDoubleProperty("MIN_FERT_AMOUNT", 5.0);
-	public static final double MID_FERT_AMOUNT = getDoubleProperty("MID_FERT_AMOUNT", 20.0);
-	public static final double MAX_FERT_AMOUNT = getDoubleProperty("MAX_FERT_AMOUNT", 200.0);
-	public static final int FERT_AMOUNT_PADDING = getIntProperty("FERT_AMOUNT_PADDING", 3);;
+	public static final double MIN_FERT_AMOUNT = getDoubleProperty("MIN_FERT_AMOUNT", 0.0);
+	public static final double MID_FERT_AMOUNT = getDoubleProperty("MID_FERT_AMOUNT", 200.0);
+	public static final double MAX_FERT_AMOUNT = getDoubleProperty("MAX_FERT_AMOUNT", 1000.0);
+	public static final int FERT_AMOUNT_PADDING = getIntProperty("FERT_AMOUNT_PADDING", 4);;
 
 	// Other model parameters
 	public static final boolean CHANGE_DEMAND_YEAR = IS_CALIBRATION_RUN ? false : getBooleanProperty("CHANGE_DEMAND_YEAR", true);
@@ -199,4 +206,4 @@ public class ModelConfig {
 	public static final String DEBUG_COUNTRY_NAME = getProperty("DEBUG_COUNTRY_NAME", "United States of America");
 	public static final double PASTURE_MAX_IRRIGATION_RATE = getDoubleProperty("DEFAULT_MAX_IRRIGATION_RATE", 50.0); // shouldn't need this but some areas crops don't have a value, but was causing them to be selected
 	public static final int LPJG_TIMESTEP_SIZE = 5;
-}
\ No newline at end of file
+}
diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java
index 3f92fa07..563f3015 100644
--- a/src/ac/ed/lurg/ModelMain.java
+++ b/src/ac/ed/lurg/ModelMain.java
@@ -157,7 +157,7 @@ public class ModelMain {
 			}
 			
 			// some hacky code for debug purposes that keeps each gams gdx file
-			if (ca.getCountry().getName().equals("Spain")) {
+/*			if (ca.getCountry().getName().equals("Spain")) {
 				try {
 					Files.copy(
 						FileSystems.getDefault().getPath("/Users/peteralexander/Documents/R_Workspace/UNPLUM/temp/GamsTmp/_gams_java_gdb1.gdx"),
@@ -165,9 +165,9 @@ public class ModelMain {
 						, StandardCopyOption.REPLACE_EXISTING);
 				} catch (IOException e) {
 					// TODO Auto-generated catch block
-					e.printStackTrace();
+					LogWriter.printException(e);
 				}
-			} 
+			} */
 
 			// update global rasters
 			globalLandUseRaster.putAll(result.getLandUses());
@@ -539,4 +539,4 @@ public class ModelMain {
 		return initialStockLevels;
 		
 	}
-}
\ No newline at end of file
+}
diff --git a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java
index efb19bd7..8e1703ad 100644
--- a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java
+++ b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java
@@ -45,7 +45,7 @@ public class GamsLocationOptimiser {
 
 	public GamsLocationOutput run() {
 
-		File workingDirectory = new File(ModelConfig.TEMP_DIR, "GamsTmp");
+		File workingDirectory = new File(ModelConfig.TEMP_DIR);
 		workingDirectory.mkdir();
 
 		GAMSWorkspaceInfo  wsInfo  = new GAMSWorkspaceInfo();
@@ -374,4 +374,4 @@ public class GamsLocationOptimiser {
 			LogWriter.print(e);
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java
index 771526c0..901ecab4 100644
--- a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java
+++ b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java
@@ -53,7 +53,7 @@ public class LPJYieldResponseMapReader {
 		
 		AbstractTabularRasterReader<YieldResponsesItem> nppReader = new AbstractTabularRasterReader<YieldResponsesItem>("\\s+", 10, yieldRaster) {
 			protected void setData(RasterKey key, YieldResponsesItem item, Map<String, Double> rowValues) {
-				double adjFactor = 10 * ModelConfig.PASTURE_HARVEST_FRACTION / 0.446;  // 10 for kg/m2 to t/ha, 0.446 carbon units / dry matter, from Osaki, M., Shinano, T., Tadano, T., 1992. Carbon-nitrogen interaction in field crop production. Soil Science and Plant Nutrition 38, 553–564.
+				double adjFactor = 10 * ModelConfig.PASTURE_HARVEST_FRACTION / 0.446;  // 10 for kg/m2 to t/ha, 0.446 carbon units / dry matter, from Osaki, M., Shinano, T., Tadano, T., 1992. Carbon-nitrogen interaction in field crop production. Soil Science and Plant Nutrition 38, 553-564.
 								
 				for (FertiliserRate fert : FertiliserRate.values()) {
 					double pastureYield;
@@ -115,4 +115,4 @@ public class LPJYieldResponseMapReader {
 		
 		item.setYield(yieldType, crop, yieldAdj);  // applying the calibration factor can't go in YieldResponsesItem.setYield as this is also called from elsewhere
 	}
-}
\ No newline at end of file
+}
-- 
GitLab