Index: /issm/trunk-jpl/jenkins/pine_island-mac-full
===================================================================
--- /issm/trunk-jpl/jenkins/pine_island-mac-full	(revision 25840)
+++ /issm/trunk-jpl/jenkins/pine_island-mac-full	(revision 25841)
@@ -1,4 +1,4 @@
 # NOTE: This configuration adds solid earth and Dakota capabilities to the 
-		basic build.
+#		basic build.
 
 #--------------------#
Index: /issm/trunk-jpl/jenkins/pine_island-mac-full-valgrind
===================================================================
--- /issm/trunk-jpl/jenkins/pine_island-mac-full-valgrind	(revision 25840)
+++ /issm/trunk-jpl/jenkins/pine_island-mac-full-valgrind	(revision 25841)
@@ -1,4 +1,4 @@
 # NOTE: This configuration adds solid earth and Dakota capabilities to the 
-		basic build, as well as the ability to debug with Valgrind.
+#		basic build, as well as the ability to debug with Valgrind.
 
 #--------------------#
Index: sm/trunk-jpl/jenkins/ross-debian_linux-trunk
===================================================================
--- /issm/trunk-jpl/jenkins/ross-debian_linux-trunk	(revision 25840)
+++ 	(revision )
@@ -1,67 +1,0 @@
-#--------------------#
-# ISSM Configuration #
-#--------------------#
-
-MATLAB_PATH="/usr/local/MATLAB/R2019b"
-ISSM_CONFIG='\
-	--prefix=${ISSM_DIR} \
-	--disable-static \
-	--enable-development \
-	--enable-debugging \
-	--with-numthreads=4 \
-	--with-matlab-dir=${MATLAB_PATH} \
-	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
-	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
-	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
-	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
-	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
-	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
-	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
-	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
-	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
-	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
-	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
-	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
-'
-
-#-------------------#
-# External Packages #
-#-------------------#
-
-EXTERNALPACKAGES="
-	autotools	install-debian-linux.sh
-	cmake		install.sh
-	petsc		install-3.12-linux.sh
-	triangle	install-linux.sh
-	chaco		install.sh
-	m1qn3		install.sh
-	semic		install.sh
-	shell2junit	install.sh
-"
-
-#---------#
-# Testing #
-#---------#
-
-# Test suites
-MATLAB_TEST=1
-PYTHON_TEST=0
-JAVASCRIPT_TEST=0
-EXAMPLES_TEST=0
-
-# Number of CPUs used in ISSM compilation
-#
-# NOTE: One is usually safer as some packages are very sensitive to parallel
-# 		compilation.
-#
-NUMCPUS_INSTALL=8
-
-# Number of CPUs used in the nightly runs
-NUMCPUS_RUN=2
-
-# Nightly run options
-#
-# See documentation in test/NightlyRun/runme.* for more information.
-#
-MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')]"
-PYTHON_NROPTIONS=""
Index: /issm/trunk-jpl/test/NightlyRun/test540.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test540.py	(revision 25840)
+++ /issm/trunk-jpl/test/NightlyRun/test540.py	(revision 25841)
@@ -1,11 +1,12 @@
 #Test Name: PigTranCalvingDevSSA2d
+import numpy as np
+from calvingvonmises import *
+from MatlabFuncs import oshostname
 from model import *
-from socket import gethostname
-from triangle import *
-from setmask import *
 from parameterize import *
 from setflowequation import *
+from setmask import *
 from solve import *
-from calvingvonmises import *
+from triangle import *
 
 md = triangle(model(), '../Exp/Pig.exp', 10000.)
@@ -22,11 +23,12 @@
 md.transient.ismovingfront = 1
 md.transient.isgroundingline = 1
-md.levelset.spclevelset = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
 pos = np.where(md.mesh.vertexonboundary)
 md.levelset.spclevelset[pos] = md.mask.ice_levelset[pos]
+md.levelset.migration_max = 1e10
 
 #Force MUMPS sequential analysis
 md.toolkits.DefaultAnalysis.mat_mumps_icntl_28 = 1
-md.cluster = generic('name', gethostname(), 'np', 2)
+md.cluster = generic('name', oshostname(), 'np', 2)
 md = solve(md, 'Transient')
 
Index: /issm/trunk-jpl/test/NightlyRun/test541.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test541.py	(revision 25840)
+++ /issm/trunk-jpl/test/NightlyRun/test541.py	(revision 25841)
@@ -1,11 +1,12 @@
-#Test Name: PigTranCalvingDevd
+#Test Name: PigTranCalvingDevdHO3d
+import numpy as np
+from calvingvonmises import *
+from MatlabFuncs import oshostname
 from model import *
-from socket import gethostname
-from triangle import *
-from setmask import *
 from parameterize import *
 from setflowequation import *
+from setmask import *
 from solve import *
-from calvingvonmises import *
+from triangle import *
 
 md = triangle(model(), '../Exp/Pig.exp', 10000.)
@@ -22,11 +23,12 @@
 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
 md.transient.ismovingfront = 1
-md.levelset.spclevelset = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
 pos = np.where(md.mesh.vertexonboundary)
 md.levelset.spclevelset[pos] = md.mask.ice_levelset[pos]
+md.levelset.migration_max = 1e10
 
 #Force MUMPS sequential analysis
 md.toolkits.DefaultAnalysis.mat_mumps_icntl_28 = 1
-md.cluster = generic('name', gethostname(), 'np', 2)
+md.cluster = generic('name', oshostname(), 'np', 2)
 md = solve(md, 'Transient')
 
Index: /issm/trunk-jpl/test/NightlyRun/test804.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test804.py	(revision 25840)
+++ /issm/trunk-jpl/test/NightlyRun/test804.py	(revision 25841)
@@ -1,10 +1,11 @@
 #Test Name: ValleyGlacierLevelsetCalvingSIA2d
+import numpy as np
+from MatlabFuncs import oshostname
 from model import *
-from socket import gethostname
-from triangle import *
-from setmask import *
 from parameterize import *
 from setflowequation import *
+from setmask import *
 from solve import *
+from triangle import *
 
 
@@ -13,5 +14,5 @@
 md = parameterize(md, '../Par/ValleyGlacierShelf.py')
 md = setflowequation(md, 'SIA', 'all')
-md.cluster = generic('name', gethostname(), 'np', 3)
+md.cluster = generic('name', oshostname(), 'np', 3)
 
 #Transient
@@ -26,4 +27,5 @@
 md.calving.calvingrate = 1000. * np.ones((md.mesh.numberofvertices))
 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.migration_max = 1e10
 
 md = solve(md, 'Transient')
Index: /issm/trunk-jpl/test/NightlyRun/test805.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test805.py	(revision 25840)
+++ /issm/trunk-jpl/test/NightlyRun/test805.py	(revision 25841)
@@ -1,10 +1,11 @@
 #Test Name: ValleyGlacierLevelsetEnthCalvingHO3d
+import numpy as np
+from MatlabFuncs import oshostname
 from model import *
-from socket import gethostname
-from triangle import *
-from setmask import *
 from parameterize import *
 from setflowequation import *
+from setmask import *
 from solve import *
+from triangle import *
 
 
@@ -14,5 +15,5 @@
 md.extrude(3, 2.)
 md = setflowequation(md, 'HO', 'all')
-md.cluster = generic('name', gethostname(), 'np', 3)
+md.cluster = generic('name', oshostname(), 'np', 3)
 
 #Thermal model
@@ -35,4 +36,5 @@
 md.groundingline.melt_interpolation = 'SubelementMelt1'
 md.levelset.stabilization = 2
+md.levelset.migration_max = 1e10
 
 md = solve(md, 'Transient')
Index: /issm/trunk-jpl/test/NightlyRun/test806.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test806.py	(revision 25840)
+++ /issm/trunk-jpl/test/NightlyRun/test806.py	(revision 25841)
@@ -1,12 +1,11 @@
 #Test Name: SquareShelfLevelsetCalvingSSA2dLevermann
+import numpy as np
+from MatlabFuncs import oshostname
 from model import *
-from socket import gethostname
-from triangle import *
-from setmask import *
 from parameterize import *
 from setflowequation import *
+from setmask import *
 from solve import *
-
-import numpy as np
+from triangle import *
 
 md = triangle(model(), '../Exp/Square.exp', 50000.)
@@ -14,5 +13,5 @@
 md = parameterize(md, '../Par/SquareShelf.py')
 md = setflowequation(md, 'SSA', 'all')
-md.cluster = generic('name', gethostname(), 'np', 3)
+md.cluster = generic('name', oshostname(), 'np', 3)
 
 x = md.mesh.x
@@ -42,4 +41,5 @@
 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
 md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices))
+md.levelset.migration_max = 1e8
 
 md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate']
Index: /issm/trunk-jpl/test/NightlyRun/test808.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test808.py	(revision 25840)
+++ /issm/trunk-jpl/test/NightlyRun/test808.py	(revision 25841)
@@ -1,12 +1,12 @@
 #Test Name: SquareShelfLevelsetCalvingSSA2dMinThickness
+import numpy as np
+from calvingminthickness import *
+from MatlabFuncs import oshostname
 from model import *
-from socket import gethostname
-from triangle import *
-from setmask import *
 from parameterize import *
 from setflowequation import *
+from setmask import *
 from solve import *
-import numpy as np
-from calvingminthickness import *
+from triangle import *
 
 md = triangle(model(), '../Exp/Square.exp', 30000.)
@@ -14,5 +14,5 @@
 md = parameterize(md, '../Par/SquareShelf.py')
 md = setflowequation(md, 'SSA', 'all')
-md.cluster = generic('name', gethostname(), 'np', 3)
+md.cluster = generic('name', oshostname(), 'np', 3)
 
 #Do not kill ice bergs as all is floating
@@ -41,6 +41,7 @@
 md.calving.min_thickness = 400
 md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
-md.levelset.spclevelset = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
 md.levelset.reinit_frequency = 1
+md.levelset.migration_max = 1e10
 
 md = solve(md, 'Transient')
Index: /issm/trunk-jpl/test/NightlyRun/test809.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test809.py	(revision 25841)
+++ /issm/trunk-jpl/test/NightlyRun/test809.py	(revision 25841)
@@ -0,0 +1,66 @@
+#Test Name: ValleyGlacierLevelsetCalvingSSA2dCrevassedepth
+import numpy as np
+from calvingcrevassedepth import *
+from MatlabFuncs import oshostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 2
+md.timestepping.final_time = 50
+md.cluster = generic('name', oshostname(), 'np', 3)
+
+#Transient
+md.transient.isstressbalance = 1
+md.transient.ismovingfront = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 1
+md.transient.isgia = 0
+
+md.calving = calvingcrevassedepth()
+md.calving.crevasse_opening_stress=1
+md.calving.water_height = 50 * np.ones((md.mesh.numberofvertices, ))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
+md.levelset.reinit_frequency = 1
+md.levelset.migration_max = 1e10
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1'
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2'
+               'Vx10', 'Vy10', 'Vel10', 'Pressure10', 'Thickness10', 'Surface10', 'MaskIceLevelset10']
+field_tolerances = [1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9,
+                    1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9,
+                    1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[11].Vx,
+                md.results.TransientSolution[11].Vy,
+                md.results.TransientSolution[11].Vel,
+                md.results.TransientSolution[11].Pressure,
+                md.results.TransientSolution[11].Thickness,
+                md.results.TransientSolution[11].Surface,
+                md.results.TransientSolution[11].MaskIceLevelset]
