Index: /issm/trunk-jpl/jenkins/javascript/karma/scripts/test121.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/scripts/test121.js	(revision 21135)
+++ /issm/trunk-jpl/jenkins/javascript/karma/scripts/test121.js	(revision 21135)
@@ -0,0 +1,42 @@
+//Test Name: SquareShelfConstrainedEnthalpyTran
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.trans.isstressbalance=0;
+md.trans.ismasstransport=0;
+md.trans.issmb=1;
+md.trans.isthermal=1;
+md.trans.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,TransientSolutionEnum());
+
+//Fields and tolerances to track changes
+field_names     =['Enthalpy1','Waterfraction1','Temperature1',
+	'Enthalpy2','Waterfraction2','Temperature2',
+	'Enthalpy3','Waterfraction3','Temperature3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Enthalpy),
+	(md.results.TransientSolution[0](1).Waterfraction),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](2).Enthalpy),
+	(md.results.TransientSolution[0](2).Waterfraction),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](3).Enthalpy),
+	(md.results.TransientSolution[0](3).Waterfraction),
+	(md.results.TransientSolution[0](3).Temperature),
+	];
Index: /issm/trunk-jpl/jenkins/javascript/karma/scripts/test122.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/scripts/test122.js	(revision 21135)
+++ /issm/trunk-jpl/jenkins/javascript/karma/scripts/test122.js	(revision 21135)
@@ -0,0 +1,65 @@
+//Test Name: SquareShelfConstrainedTransHOEnth
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.thermal.stabilization=2;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,TransientSolutionEnum());
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).Enthalpy),
+	(md.results.TransientSolution[0](1).Waterfraction),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).Enthalpy),
+	(md.results.TransientSolution[0](2).Waterfraction),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).Enthalpy),
+	(md.results.TransientSolution[0](3).Waterfraction),
+	];
Index: /issm/trunk-jpl/jenkins/javascript/karma/scripts/test123.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/scripts/test123.js	(revision 21135)
+++ /issm/trunk-jpl/jenkins/javascript/karma/scripts/test123.js	(revision 21135)
@@ -0,0 +1,23 @@
+//Test Name: SquareShelfConstrainedTranMisfitSurface
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+fake_surface=[[md.geometry.surface+100,1.1],[md.geometry.surface+200,2.1],[md.geometry.surface+300,2.5]];
+
+md.trans.requested_outputs=['default','SurfaceMisfit'];
+md.outputdefinition.definitions=[misfit('name','SurfaceMisfit', 'definitionenum',Outputdefinition1Enum,'model_enum',SurfaceEnum,'observation_enum',SurfaceObservationEnum,'observation',fake_surface,'timeinterpolation','nearestneighbor','weights',ones(md.mesh.numberofvertices,1),'weights_enum',WeightsSurfaceObservationEnum)];
+
+md=solve(md,TransientSolutionEnum());
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceMisfitFirstStep','SurfaceMisfitSecondStep','SurfaceMisfitThirdStep'];
+field_tolerances=[1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).SurfaceMisfit),
+	(md.results.TransientSolution[0](2).SurfaceMisfit),
+	(md.results.TransientSolution[0](3).SurfaceMisfit)
+	];
Index: /issm/trunk-jpl/jenkins/javascript/karma/scripts/test124.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/scripts/test124.js	(revision 21135)
+++ /issm/trunk-jpl/jenkins/javascript/karma/scripts/test124.js	(revision 21135)
@@ -0,0 +1,49 @@
+//Test Name: SquareShelfConstrainedTranFSFreeSurface
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+
+//Free surface
+md.masstransport.isfreesurface=1;
+md.timestepping.time_step=0.00001;
+md.timestepping.final_time=0.00005;
+
+//Go solve
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,TransientSolutionEnum());
+
+//Fields and tolerances to track changes
+field_names     =[
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[
+	2e-09,3e-9,3e-9,3e-9,1e-13,1e-12,1e-12,
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,1e-10,
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,1e-10];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/trunk-jpl/jenkins/javascript/karma/scripts/test125.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/scripts/test125.js	(revision 21135)
+++ /issm/trunk-jpl/jenkins/javascript/karma/scripts/test125.js	(revision 21135)
@@ -0,0 +1,49 @@
+//Test Name: SquareShelfConstrainedRestartTranSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',1);
+md.trans.requested_outputs=['IceVolume','TotalSmb'];
+
+//md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+// time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,TransientSolutionEnum());
+md2=solve(md,TransientSolutionEnum(),'restart',1);
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution[0](1).TotalSmb),
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution[0](2).TotalSmb),
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution[0](3).TotalSmb),
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/trunk-jpl/jenkins/javascript/karma/scripts/test126.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/scripts/test126.js	(revision 21135)
+++ /issm/trunk-jpl/jenkins/javascript/karma/scripts/test126.js	(revision 21135)
@@ -0,0 +1,57 @@
+//Test Name: SquareShelfConstrainedRestartTranHO3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+//md.cluster=generic('name',oshostname(),'np',1);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+md.trans.requested_outputs=['IceVolume','TotalSmb'];
+
+//md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+// time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,TransientSolutionEnum());
+md2=solve(md,TransientSolutionEnum(),'restart',1);
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution[0](1).TotalSmb),
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution(6).Temperature)-(md2.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution(6).Pressure)-(md2.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution[0](2).TotalSmb),
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution(7).Temperature)-(md2.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution(7).Pressure)-(md2.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution[0](3).TotalSmb),
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution[0](3).IceVolume),
+	(md.results.TransientSolution(8).Temperature)-(md2.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution(8).Pressure)-(md2.results.TransientSolution[0](3).Pressure),
+	];
