Index: /issm/trunk/test/NightlyRun/Id2Name.m
===================================================================
--- /issm/trunk/test/NightlyRun/Id2Name.m	(revision 5051)
+++ /issm/trunk/test/NightlyRun/Id2Name.m	(revision 5052)
@@ -169,5 +169,10 @@
 elseif (id==519), name='PigSteaS3dSerial';
 elseif (id==520), name='PigSteaS3dParallel';
-elseif (id==521), name='PigSteaS3dParallel';
+elseif (id==521), name='PigCMBS3dSerial';
+elseif (id==522), name='PigCMBS3dparallel';
+elseif (id==523), name='PigCMDragP3dSerial';
+elseif (id==524), name='PigCMDragP3dparallel';
+elseif (id==525), name='PigCMDragSteaM3dSerial';
+elseif (id==526), name='PigCMDragSteaM3dparallel';
 elseif (id==601), name='79NorthProg2dSerial';
 elseif (id==602), name='79NorthProg2dParallel';
Index: /issm/trunk/test/NightlyRun/test521.m
===================================================================
--- /issm/trunk/test/NightlyRun/test521.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test521.m	(revision 5052)
@@ -0,0 +1,26 @@
+md=mesh(model,'../Exp/Pig.exp',10000);
+md=geography(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+
+%impose hydrostatic equilibrium (required by Stokes)
+md.bed=-md.rho_ice/md.rho_water*md.thickness;
+md.surface=md.bed+md.thickness;
+md=extrude(md,3,1);
+md=setelementstype(md,'macayeal','all','stokes','all');
+md=modelextract(md,md.elementoniceshelf);
+
+%control parameters
+md.control_analysis=1;
+md.control_type='rheology_B';
+md.cm_min=10^6;
+md.cm_max=2*10^9;
+md.nsteps=2;
+md.fit=0*ones(md.nsteps,1);
+md.weights=ones(md.numberofgrids,1);
+md.optscal=10^8*ones(md.nsteps,1);
+md.maxiter=2*ones(md.nsteps,1);
+md.cm_jump=0.99*ones(md.nsteps,1);
+md.vx_obs=md.vx; md.vy_obs=md.vy;
+
+md.cluster='none';
+md=solve(md,'analysis_type',DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test521_nightly.m
===================================================================
--- /issm/trunk/test/NightlyRun/test521_nightly.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test521_nightly.m	(revision 5052)
@@ -0,0 +1,11 @@
+field_names     ={'Gradient' 'Misfits' 'RheologyB' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	PatchToVec(md.results.DiagnosticSolution.Gradient),...
+	md.results.DiagnosticSolution.J,...
+	PatchToVec(md.results.DiagnosticSolution.RheologyB),...
+	PatchToVec(md.results.DiagnosticSolution.Pressure),...
+	PatchToVec(md.results.DiagnosticSolution.Vel),...
+	PatchToVec(md.results.DiagnosticSolution.Vx),...
+	PatchToVec(md.results.DiagnosticSolution.Vy)
+};
Index: /issm/trunk/test/NightlyRun/test522.m
===================================================================
--- /issm/trunk/test/NightlyRun/test522.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test522.m	(revision 5052)
@@ -0,0 +1,26 @@
+md=mesh(model,'../Exp/Pig.exp',10000);
+md=geography(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+
+%impose hydrostatic equilibrium (required by Stokes)
+md.bed=-md.rho_ice/md.rho_water*md.thickness;
+md.surface=md.bed+md.thickness;
+md=extrude(md,3,1);
+md=setelementstype(md,'macayeal','all','stokes','all');
+md=modelextract(md,md.elementoniceshelf);
+
+%control parameters
+md.control_analysis=1;
+md.control_type='rheology_B';
+md.cm_min=10^6;
+md.cm_max=2*10^9;
+md.nsteps=2;
+md.fit=0*ones(md.nsteps,1);
+md.weights=ones(md.numberofgrids,1);
+md.optscal=10^8*ones(md.nsteps,1);
+md.maxiter=2*ones(md.nsteps,1);
+md.cm_jump=0.99*ones(md.nsteps,1);
+md.vx_obs=md.vx; md.vy_obs=md.vy;
+
+md.cluster=oshostname;
+md=solve(md,'analysis_type',DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test522_nightly.m
===================================================================
--- /issm/trunk/test/NightlyRun/test522_nightly.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test522_nightly.m	(revision 5052)
@@ -0,0 +1,11 @@
+field_names     ={'Gradient' 'Misfits' 'RheologyB' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	PatchToVec(md.results.DiagnosticSolution.Gradient),...
+	md.results.DiagnosticSolution.J,...
+	PatchToVec(md.results.DiagnosticSolution.RheologyB),...
+	PatchToVec(md.results.DiagnosticSolution.Pressure),...
+	PatchToVec(md.results.DiagnosticSolution.Vel),...
+	PatchToVec(md.results.DiagnosticSolution.Vx),...
+	PatchToVec(md.results.DiagnosticSolution.Vy)
+};
Index: /issm/trunk/test/NightlyRun/test523.m
===================================================================
--- /issm/trunk/test/NightlyRun/test523.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test523.m	(revision 5052)
@@ -0,0 +1,22 @@
+md=mesh(model,'../Exp/Pig.exp',80000);
+md=geography(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1);
+md=setelementstype(md,'pattyn','all');
+
+%control parameters
+md.control_analysis=1;
+md.control_type='drag_coefficient';
+md.cm_min=1;
+md.cm_max=200;
+md.nsteps=2;
+md.fit=2*ones(md.nsteps,1);
+md.weights=ones(md.numberofgrids,1);
+md.optscal=3*ones(md.nsteps,1);
+md.maxiter=2*ones(md.nsteps,1);
+md.cm_jump=0.99*ones(md.nsteps,1);
+md.cm_noisedmp=2*10^-7;
+md.vx_obs=md.vx; md.vy_obs=md.vy;
+
+md.cluster='none';
+md=solve(md,'analysis_type',DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test523_nightly.m
===================================================================
--- /issm/trunk/test/NightlyRun/test523_nightly.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test523_nightly.m	(revision 5052)
@@ -0,0 +1,11 @@
+field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	PatchToVec(md.results.DiagnosticSolution.Gradient),...
+	md.results.DiagnosticSolution.J,...
+	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.Pressure),...
+	PatchToVec(md.results.DiagnosticSolution.Vel),...
+	PatchToVec(md.results.DiagnosticSolution.Vx),...
+	PatchToVec(md.results.DiagnosticSolution.Vy)
+};
Index: /issm/trunk/test/NightlyRun/test524.m
===================================================================
--- /issm/trunk/test/NightlyRun/test524.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test524.m	(revision 5052)
@@ -0,0 +1,22 @@
+md=mesh(model,'../Exp/Pig.exp',80000);
+md=geography(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1);
+md=setelementstype(md,'pattyn','all');
+
+%control parameters
+md.control_analysis=1;
+md.control_type='drag_coefficient';
+md.cm_min=1;
+md.cm_max=200;
+md.nsteps=2;
+md.fit=2*ones(md.nsteps,1);
+md.weights=ones(md.numberofgrids,1);
+md.optscal=3*ones(md.nsteps,1);
+md.maxiter=2*ones(md.nsteps,1);
+md.cm_jump=0.99*ones(md.nsteps,1);
+md.cm_noisedmp=2*10^-7;
+md.vx_obs=md.vx; md.vy_obs=md.vy;
+
+md.cluster=oshostname();
+md=solve(md,'analysis_type',DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test524_nightly.m
===================================================================
--- /issm/trunk/test/NightlyRun/test524_nightly.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test524_nightly.m	(revision 5052)
@@ -0,0 +1,11 @@
+field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	PatchToVec(md.results.DiagnosticSolution.Gradient),...
+	md.results.DiagnosticSolution.J,...
+	PatchToVec(md.results.DiagnosticSolution.DragCoefficient),...
+	PatchToVec(md.results.DiagnosticSolution.Pressure),...
+	PatchToVec(md.results.DiagnosticSolution.Vel),...
+	PatchToVec(md.results.DiagnosticSolution.Vx),...
+	PatchToVec(md.results.DiagnosticSolution.Vy)
+};
Index: /issm/trunk/test/NightlyRun/test525.m
===================================================================
--- /issm/trunk/test/NightlyRun/test525.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test525.m	(revision 5052)
@@ -0,0 +1,23 @@
+md=mesh(model,'../Exp/Pig.exp',80000);
+md=geography(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1);
+md=setelementstype(md,'macayeal','all');
+
+%control parameters
+md.control_analysis=1;
+md.control_type='drag_coefficient';
+md.cm_min=1;
+md.cm_max=200;
+md.nsteps=2;
+md.fit=2*ones(md.nsteps,1);
+md.weights=ones(md.numberofgrids,1);
+md.optscal=3*ones(md.nsteps,1);
+md.maxiter=2*ones(md.nsteps,1);
+md.cm_jump=0.99*ones(md.nsteps,1);
+md.cm_noisedmp=2*10^-7;
+md.vx_obs=md.vx; md.vy_obs=md.vy;
+md.dt=0;
+
+md.cluster='none';
+md=solve(md,'analysis_type',SteadystateSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test525_nightly.m
===================================================================
--- /issm/trunk/test/NightlyRun/test525_nightly.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test525_nightly.m	(revision 5052)
@@ -0,0 +1,14 @@
+field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'MeltingRate'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	PatchToVec(md.results.SteadystateSolution.Gradient),...
+	md.results.SteadystateSolution.J,...
+	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.Pressure),...
+	PatchToVec(md.results.SteadystateSolution.Vel),...
+	PatchToVec(md.results.SteadystateSolution.Vx),...
+	PatchToVec(md.results.SteadystateSolution.Vy),...
+	PatchToVec(md.results.SteadystateSolution.Vz),...
+	PatchToVec(md.results.SteadystateSolution.Temperature),...
+	PatchToVec(md.results.SteadystateSolution.MeltingRate)
+};
Index: /issm/trunk/test/NightlyRun/test526.m
===================================================================
--- /issm/trunk/test/NightlyRun/test526.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test526.m	(revision 5052)
@@ -0,0 +1,23 @@
+md=mesh(model,'../Exp/Pig.exp',80000);
+md=geography(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1);
+md=setelementstype(md,'macayeal','all');
+
+%control parameters
+md.control_analysis=1;
+md.control_type='drag_coefficient';
+md.cm_min=1;
+md.cm_max=200;
+md.nsteps=2;
+md.fit=2*ones(md.nsteps,1);
+md.weights=ones(md.numberofgrids,1);
+md.optscal=3*ones(md.nsteps,1);
+md.maxiter=2*ones(md.nsteps,1);
+md.cm_jump=0.99*ones(md.nsteps,1);
+md.cm_noisedmp=2*10^-7;
+md.vx_obs=md.vx; md.vy_obs=md.vy;
+md.dt=0;
+
+md.cluster=oshostname();
+md=solve(md,'analysis_type',SteadystateSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test526_nightly.m
===================================================================
--- /issm/trunk/test/NightlyRun/test526_nightly.m	(revision 5052)
+++ /issm/trunk/test/NightlyRun/test526_nightly.m	(revision 5052)
@@ -0,0 +1,14 @@
+field_names     ={'Gradient' 'Misfits' 'DragCoefficient' 'Pressure' 'Vel' 'Vx' 'Vy' 'Vz' 'Temperature' 'MeltingRate'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	PatchToVec(md.results.SteadystateSolution.Gradient),...
+	md.results.SteadystateSolution.J,...
+	PatchToVec(md.results.SteadystateSolution.DragCoefficient),...
+	PatchToVec(md.results.SteadystateSolution.Pressure),...
+	PatchToVec(md.results.SteadystateSolution.Vel),...
+	PatchToVec(md.results.SteadystateSolution.Vx),...
+	PatchToVec(md.results.SteadystateSolution.Vy),...
+	PatchToVec(md.results.SteadystateSolution.Vz),...
+	PatchToVec(md.results.SteadystateSolution.Temperature),...
+	PatchToVec(md.results.SteadystateSolution.MeltingRate)
+};
