Index: /issm/trunk-jpl/externalpackages/cython/install-19.2.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/cython/install-19.2.sh	(revision 17074)
+++ /issm/trunk-jpl/externalpackages/cython/install-19.2.sh	(revision 17075)
@@ -4,4 +4,5 @@
 #clean up
 rm -rf Cython-0.19.2
+rm -rf cython.tar.gz
 
 #download numpy first
Index: /issm/trunk-jpl/externalpackages/git/install.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/git/install.sh	(revision 17074)
+++ /issm/trunk-jpl/externalpackages/git/install.sh	(revision 17075)
@@ -18,6 +18,6 @@
 #install
 cd src 
-./configure  --prefix="$ISSM_DIR/externalpackages/git/install"
-#--with-python="$ISSM_DIR/externalpackages/python/install/bin/python" #Do we really need this line?
+./configure  --prefix="$ISSM_DIR/externalpackages/git/install" \
+    --with-python="$ISSM_DIR/externalpackages/python/install/bin/python" #Do we really need this line?
 	
 #Compile
Index: /issm/trunk-jpl/externalpackages/nose/install-linux64-python2.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/nose/install-linux64-python2.sh	(revision 17074)
+++ /issm/trunk-jpl/externalpackages/nose/install-linux64-python2.sh	(revision 17075)
@@ -11,4 +11,6 @@
 
 cd src
+export python=$ISSM_DIR/externalpackages/python/install/bin/python
+
 python ./setup.py build
 python ./setup.py install
Index: /issm/trunk-jpl/externalpackages/petsc/install-3.4-linux64.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/petsc/install-3.4-linux64.sh	(revision 17074)
+++ /issm/trunk-jpl/externalpackages/petsc/install-3.4-linux64.sh	(revision 17075)
@@ -21,5 +21,5 @@
 	--PETSC_ARCH=linux-gnu-amd64 \
 	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
+	--with-debugging=1 \
 	--with-shared-libraries=1 \
 	--download-parmetis=yes \
Index: /issm/trunk-jpl/externalpackages/python/install-2.7.3-linux64.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/python/install-2.7.3-linux64.sh	(revision 17074)
+++ /issm/trunk-jpl/externalpackages/python/install-2.7.3-linux64.sh	(revision 17075)
@@ -19,4 +19,5 @@
 ./configure \
  --prefix="$ISSM_DIR/externalpackages/python/install" \
+ --with-zlib \
  --enable-shared
 
Index: /issm/trunk-jpl/externalpackages/scipy/install-linux64.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/scipy/install-linux64.sh	(revision 17074)
+++ /issm/trunk-jpl/externalpackages/scipy/install-linux64.sh	(revision 17075)
@@ -8,10 +8,13 @@
 export FFLAGS=-ff2c
 
+if [ -d "scipy" ]; then
 #clean up
-rm -rf scipy
-
+#rm -rf scipy
+echo "hello"
+else
 #download scipy
-export GIT_SSL_NO_VERIFY=true 
-git clone https://github.com/scipy/scipy.git
+    export GIT_SSL_NO_VERIFY=true 
+    git clone https://github.com/scipy/scipy.git
+fi
 
 #install scipy
Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 17074)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 17075)
@@ -369,5 +369,7 @@
 #Transient sources  {{{
 transient_sources  = ./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \
-							./cores/transient_core.cpp
+							./cores/transient_core.cpp\
+              ./analyses/LevelsetAnalysis.h\
+              ./analyses/LevelsetAnalysis.cpp
 #}}}
 #Steadystate sources  {{{
Index: /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 17074)
+++ /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 17075)
@@ -36,4 +36,5 @@
 		case ExtrudeFromTopAnalysisEnum : return new ExtrudeFromTopAnalysis();
 		case ThermalAnalysisEnum : return new ThermalAnalysis();
+	  case LevelsetAnalysisEnum : return new LevelsetAnalysis();
 		#ifdef _HAVE_GIA_
 		case GiaAnalysisEnum : return new GiaAnalysis();
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h	(revision 17074)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h	(revision 17075)
@@ -11,5 +11,5 @@
 class StressbalanceAnalysis: public Analysis{
 
-	public:
+  public:
 		/*Model processing*/
 		int  DofsPerNode(int** doflist,int meshtype,int approximation);
Index: /issm/trunk-jpl/src/c/analyses/analyses.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/analyses.h	(revision 17074)
+++ /issm/trunk-jpl/src/c/analyses/analyses.h	(revision 17075)
@@ -23,4 +23,5 @@
 #include "./HydrologyDCInefficientAnalysis.h"
 #include "./HydrologyShreveAnalysis.h"
+#include "./LevelsetAnalysis.h"
 #include "./MasstransportAnalysis.h"
 #include "./MeltingAnalysis.h"
Index: /issm/trunk-jpl/src/c/cores/AnalysisConfiguration.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/AnalysisConfiguration.cpp	(revision 17074)
+++ /issm/trunk-jpl/src/c/cores/AnalysisConfiguration.cpp	(revision 17075)
@@ -116,5 +116,5 @@
 
 		case TransientSolutionEnum:
-			numanalyses=12;
+			numanalyses=13;
 			analyses=xNew<int>(numanalyses);
 			analyses[ 0]=StressbalanceAnalysisEnum;
@@ -130,4 +130,5 @@
 			analyses[10]=ExtrudeFromBaseAnalysisEnum;
 			analyses[11]=ExtrudeFromTopAnalysisEnum;
+			analyses[12]=LevelsetAnalysisEnum;
 			break;
 
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17074)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17075)
@@ -22,5 +22,5 @@
 	int    i;
 	IssmDouble starttime,finaltime,dt,yts;
-	bool   isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isdelta18o,isgia;
+	bool   isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isdelta18o,isgia,islevelset;
 	bool   save_results,dakota_analysis;
 	bool   time_adapt=false;
@@ -28,4 +28,5 @@
 	int    meshtype,groundingline_migration;
 	int    numoutputs         = 0;
+  Analysis *analysis = NULL;
 	char** requested_outputs = NULL;
 
@@ -159,4 +160,11 @@
 		}
 
+		if(islevelset){
+			if(VerboseSolution()) _printf0_("   computing movement of ice boundaries\n");
+			//analysis = new LevelsetAnalysis();
+			//analysis->Core(femmodel);
+			//delete analysis;
+		}
+
 		/*unload results*/
 		if(VerboseSolution()) _printf0_("   computing requested outputs\n");
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 17074)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 17075)
@@ -16,5 +16,5 @@
 
 	int   i,analysis_enum,verbose;
-	bool  isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy;
+	bool  isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy,islevelset;
 
 	/*Initialize datasets*/
@@ -34,4 +34,5 @@
 	iomodel->Constant(&isthermal,TransientIsthermalEnum);
 	iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);
+	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
 	iomodel->Constant(&ismasstransport,TransientIsmasstransportEnum);
 	iomodel->Constant(&isstressbalance,TransientIsstressbalanceEnum);
@@ -73,4 +74,6 @@
 		if(solution_enum==SteadystateSolutionEnum && analysis_enum==MeltingAnalysisEnum && isenthalpy==true) continue;
 		if(solution_enum==SteadystateSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && isenthalpy==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==LevelsetAnalysisEnum && islevelset==false) continue;
+
 
 		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_enum) << "\n");
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17074)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17075)
@@ -273,4 +273,5 @@
 	TransientIsgiaEnum,
 	TransientIsdamageEnum,
+	TransientIslevelsetEnum,
 	TransientNumRequestedOutputsEnum,
 	TransientRequestedOutputsEnum,
@@ -317,4 +318,5 @@
 	DamageEvolutionSolutionEnum,
 	DamageEvolutionAnalysisEnum,
+	LevelsetAnalysisEnum,
 	StressbalanceAnalysisEnum,
 	StressbalanceSIAAnalysisEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17074)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17075)
@@ -279,4 +279,5 @@
 		case TransientIsgiaEnum : return "TransientIsgia";
 		case TransientIsdamageEnum : return "TransientIsdamage";
+		case TransientIslevelsetEnum : return "TransientIslevelset";
 		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
 		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
@@ -318,4 +319,5 @@
 		case DamageEvolutionSolutionEnum : return "DamageEvolutionSolution";
 		case DamageEvolutionAnalysisEnum : return "DamageEvolutionAnalysis";
+		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
 		case StressbalanceAnalysisEnum : return "StressbalanceAnalysis";
 		case StressbalanceSIAAnalysisEnum : return "StressbalanceSIAAnalysis";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17074)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17075)
@@ -285,4 +285,5 @@
 	      else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
 	      else if (strcmp(name,"TransientIsdamage")==0) return TransientIsdamageEnum;
+	      else if (strcmp(name,"TransientIslevelset")==0) return TransientIslevelsetEnum;
 	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
 	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
@@ -324,4 +325,5 @@
 	      else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
 	      else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
+	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
 	      else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum;
 	      else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;
Index: /issm/trunk-jpl/src/m/classes/transient.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/transient.m	(revision 17074)
+++ /issm/trunk-jpl/src/m/classes/transient.m	(revision 17075)
@@ -12,4 +12,5 @@
 		isgia             = 0;
 		isdamage             = 0;
+                islevelset = 0;
 		requested_outputs = {};
 	end
@@ -32,4 +33,5 @@
 			obj.isgia           = 0;
 			obj.isdamage        = 0;
+			obj.islevelset      = 0;
 
 			%default output
@@ -52,4 +54,5 @@
 			md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.isdamage','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1);
 
@@ -64,4 +67,5 @@
 			fielddisplay(obj,'isgia','indicates whether a postglacial rebound model is used in the transient');
 			fielddisplay(obj,'isdamage','indicates whether damage evolution is used in the transient');
+			fielddisplay(obj,'islevelset','LEVEL SET DESCRIPTION...');
 			fielddisplay(obj,'requested_outputs','list of additional outputs requested');
 
@@ -74,4 +78,5 @@
 			WriteData(fid,'object',obj,'fieldname','isgia','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','isdamage','format','Boolean');
+			WriteData(fid,'object',obj,'fieldname','islevelset','format','Boolean');
 
 			%process requested outputs
Index: /issm/trunk-jpl/src/m/classes/transient.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/transient.py	(revision 17074)
+++ /issm/trunk-jpl/src/m/classes/transient.py	(revision 17075)
@@ -18,4 +18,5 @@
 		self.isgroundingline   = False
 		self.isgia             = False
+		self.islevelset        = False
 		self.requested_outputs = []
 
@@ -31,4 +32,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'isgia','indicates if a postglacial rebound is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'islevelset','LEVELSET METHOD DESCRIPTION'))
 		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested'))
 		return string
@@ -47,4 +49,5 @@
 		self.isgroundingline = False
 		self.isgia           = False
+		self.islevelset           = False
 
 		#default output
@@ -63,4 +66,5 @@
 		md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1)
 
@@ -73,4 +77,5 @@
 		WriteData(fid,'object',self,'fieldname','isgroundingline','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isgia','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','islevelset','format','Boolean')
 
 		#process requested outputs
Index: /issm/trunk-jpl/src/m/dev/devpath.py
===================================================================
--- /issm/trunk-jpl/src/m/dev/devpath.py	(revision 17074)
+++ /issm/trunk-jpl/src/m/dev/devpath.py	(revision 17075)
@@ -25,9 +25,9 @@
 from plotmodel import plotmodel
 
-c = get_ipython().config
-c.InteractiveShellApp.exec_lines = []
-c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
-c.InteractiveShellApp.exec_lines.append('%autoreload 2')
-c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+#c = get_ipython().config
+#c.InteractiveShellApp.exec_lines = []
+#c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+#c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+#c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
 
 print("\n  ISSM development path correctly loaded\n\n")
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17074)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17075)
@@ -271,4 +271,5 @@
 def TransientIsgiaEnum(): return StringToEnum("TransientIsgia")[0]
 def TransientIsdamageEnum(): return StringToEnum("TransientIsdamage")[0]
+def TransientIslevelsetEnum(): return StringToEnum("TransientIslevelset")[0]
 def TransientNumRequestedOutputsEnum(): return StringToEnum("TransientNumRequestedOutputs")[0]
 def TransientRequestedOutputsEnum(): return StringToEnum("TransientRequestedOutputs")[0]
@@ -310,4 +311,5 @@
 def DamageEvolutionSolutionEnum(): return StringToEnum("DamageEvolutionSolution")[0]
 def DamageEvolutionAnalysisEnum(): return StringToEnum("DamageEvolutionAnalysis")[0]
+def LevelsetAnalysisEnum(): return StringToEnum("LevelsetAnalysis")[0]
 def StressbalanceAnalysisEnum(): return StringToEnum("StressbalanceAnalysis")[0]
 def StressbalanceSIAAnalysisEnum(): return StringToEnum("StressbalanceSIAAnalysis")[0]
