Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 16191)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 16192)
@@ -542,5 +542,5 @@
 		}
 		delete dependent_objects;
-		xDelete<IssmPDouble>(dependents);
+		if(num_dependents)xDelete<IssmPDouble>(dependents);
 		#else
 		_error_("Should not be requesting dependents when an AD library is not available!");
Index: /issm/trunk-jpl/src/m/classes/toolkits.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/toolkits.m	(revision 16191)
+++ /issm/trunk-jpl/src/m/classes/toolkits.m	(revision 16192)
@@ -48,5 +48,11 @@
 				 end
 			 else
-				 obj.DefaultAnalysis           = issmsolver(); 
+				 if IssmConfig('_HAVE_MUMPS_'),
+					 obj.DefaultAnalysis           = issmmumpssolver(); 
+				 elseif IssmConfig('_HAVE_GSL_'),
+					 obj.DefaultAnalysis           = issmgslsolver(); 
+				 else 
+					 error('Need at least Mumps or Gsl to define an issm solver type');
+				 end
 			 end
 
Index: /issm/trunk-jpl/src/m/classes/toolkits.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/toolkits.py	(revision 16191)
+++ /issm/trunk-jpl/src/m/classes/toolkits.py	(revision 16192)
@@ -25,5 +25,10 @@
 				self.DefaultAnalysis           = iluasmoptions()
 		else:
-			self.DefaultAnalysis           = issmsolver()
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = issmmumpssolver()
+			elif IssmConfig('_HAVE_GSL_')[0]:
+				self.DefaultAnalysis           = issmgslsolver()
+			else:
+				raise IOError("ToolkitsFile error: need at least Mumps or Gsl to define issm solver type")
 
 		#The other properties are dynamic
Index: /issm/trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 16191)
+++ /issm/trunk-jpl/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 16192)
@@ -50,4 +50,11 @@
 	else if(strcmp(name,"_HAVE_MUMPS_")==0){
 		#ifdef _HAVE_MUMPS_
+		value = 1.;
+		#else
+		value = 0.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_GSL_")==0){
+		#ifdef _HAVE_GSL_
 		value = 1.;
 		#else
Index: /issm/trunk-jpl/test/NightlyRun/test3001.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3001.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3001.m	(revision 16192)
@@ -4,9 +4,8 @@
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1);
-md.toolkits.DefaultAnalysis=issmsolver();
 md.stressbalance.requested_outputs=StressTensorEnum();
 md.autodiff.isautodiff=true;
-md.toolkits.DefaultAnalysis=issmsolver();
-md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
 md=solve(md,StressbalanceSolutionEnum());
 
Index: /issm/trunk-jpl/test/NightlyRun/test3001.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3001.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3001.py	(revision 16192)
@@ -14,5 +14,5 @@
 md.cluster=generic('name',oshostname(),'np',1)
 md.stressbalance.requested_outputs=StressTensorEnum()
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3002.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3002.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3002.m	(revision 16192)
@@ -6,5 +6,5 @@
 md.cluster=generic('name',oshostname(),'np',1);
 md.autodiff.isautodiff=true;
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md.verbose=verbose('autodiff',true);
 md=solve(md,StressbalanceSolutionEnum());
Index: /issm/trunk-jpl/test/NightlyRun/test3002.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3002.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3002.py	(revision 16192)
@@ -15,5 +15,5 @@
 md.cluster=generic('name',oshostname(),'np',1)
 md.autodiff.isautodiff=True
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md=solve(md,StressbalanceSolutionEnum())
 
Index: /issm/trunk-jpl/test/NightlyRun/test3003.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3003.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3003.m	(revision 16192)
@@ -7,5 +7,5 @@
 md.stressbalance.requested_outputs=StressTensorEnum();
 md.autodiff.isautodiff=true;
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md.verbose=verbose('autodiff',true);
 md=solve(md,StressbalanceSolutionEnum());
Index: /issm/trunk-jpl/test/NightlyRun/test3003.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3003.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3003.py	(revision 16192)
@@ -15,5 +15,5 @@
 md.cluster=generic('name',oshostname(),'np',1)
 md.stressbalance.requested_outputs=StressTensorEnum()
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3004.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3004.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3004.m	(revision 16192)
@@ -6,5 +6,5 @@
 md.cluster=generic('name',oshostname(),'np',1);
 md.autodiff.isautodiff=true;
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md.verbose=verbose('autodiff',true);
 md=solve(md,StressbalanceSolutionEnum());
Index: /issm/trunk-jpl/test/NightlyRun/test3004.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3004.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3004.py	(revision 16192)
@@ -14,5 +14,5 @@
 md=setflowequation(md,'FS','all')
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3005.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3005.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3005.m	(revision 16192)
@@ -5,5 +5,5 @@
 md.cluster=generic('name',oshostname(),'np',1);
 md.autodiff.isautodiff=true;
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md.verbose=verbose('autodiff',true);
 md=solve(md,MasstransportSolutionEnum());
Index: /issm/trunk-jpl/test/NightlyRun/test3005.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3005.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3005.py	(revision 16192)
@@ -13,5 +13,5 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3006.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3006.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3006.m	(revision 16192)
@@ -8,5 +8,5 @@
 md.masstransport.spcthickness=md.geometry.thickness;
 md.autodiff.isautodiff=true;
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md.verbose=verbose('autodiff',true);
 md=solve(md,MasstransportSolutionEnum());
Index: /issm/trunk-jpl/test/NightlyRun/test3006.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3006.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3006.py	(revision 16192)
@@ -17,5 +17,5 @@
 md.masstransport.stabilization=3
 md.masstransport.spcthickness=md.geometry.thickness
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3007.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3007.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3007.m	(revision 16192)
@@ -7,5 +7,5 @@
 md.autodiff.isautodiff=true;
 md.verbose=verbose('autodiff',true);
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md=solve(md,MasstransportSolutionEnum());
 
Index: /issm/trunk-jpl/test/NightlyRun/test3007.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3007.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3007.py	(revision 16192)
@@ -14,5 +14,5 @@
 md.extrude(5,3.)
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3008.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3008.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3008.m	(revision 16192)
@@ -8,5 +8,5 @@
 md.autodiff.isautodiff=true;
 md.verbose=verbose('autodiff',true);
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md=solve(md,ThermalSolutionEnum());
 
Index: /issm/trunk-jpl/test/NightlyRun/test3008.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3008.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3008.py	(revision 16192)
@@ -15,5 +15,5 @@
 md.timestepping.time_step=0
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,ThermalSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3009.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3009.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3009.m	(revision 16192)
@@ -11,5 +11,5 @@
 md.autodiff.isautodiff=true;
 md.verbose=verbose('autodiff',true);
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md=solve(md,TransientSolutionEnum());
 
Index: /issm/trunk-jpl/test/NightlyRun/test3009.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3009.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3009.py	(revision 16192)
@@ -18,5 +18,5 @@
 md.transient.isthermal=True
 md.transient.isgroundingline=False
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,TransientSolutionEnum())
Index: /issm/trunk-jpl/test/NightlyRun/test3010.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3010.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3010.m	(revision 16192)
@@ -8,5 +8,5 @@
 md.autodiff.isautodiff=true;
 md.verbose=verbose('autodiff',true);
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 md=solve(md,TransientSolutionEnum());
 
Index: /issm/trunk-jpl/test/NightlyRun/test3010.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3010.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3010.py	(revision 16192)
@@ -13,5 +13,5 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmsolver()
+md.toolkits.DefaultAnalysis=issmgslsolver()
 md.transient.requested_outputs=IceVolumeEnum()
 
Index: /issm/trunk-jpl/test/NightlyRun/test3015.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3015.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3015.m	(revision 16192)
@@ -10,5 +10,5 @@
 md.masstransport.requested_outputs=IceVolumeEnum();
 md.verbose=verbose('autodiff',true);
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 
 %setup autodiff parameters
Index: /issm/trunk-jpl/test/NightlyRun/test3015.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3015.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3015.py	(revision 16192)
@@ -24,4 +24,5 @@
 md.masstransport.requested_outputs=IceVolumeEnum()
 md.verbose=verbose('autodiff',True)
+md.toolkits.DefaultAnalysis=issmgslsolver()
 
 #setup autodiff parameters
Index: /issm/trunk-jpl/test/NightlyRun/test3019.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3019.m	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3019.m	(revision 16192)
@@ -5,5 +5,5 @@
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1);
-md.toolkits.DefaultAnalysis=issmsolver();
+md.toolkits.DefaultAnalysis=issmgslsolver();
 
 md.autodiff.isautodiff=true;
Index: /issm/trunk-jpl/test/NightlyRun/test3019.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3019.py	(revision 16191)
+++ /issm/trunk-jpl/test/NightlyRun/test3019.py	(revision 16192)
@@ -17,4 +17,5 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
+md.toolkits.DefaultAnalysis=issmgslsolver()
 
 md.autodiff.isautodiff=True
