Index: /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 2266)
+++ /issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 2267)
@@ -24,5 +24,5 @@
 
 	double* fit=NULL;
-	double* cmjump=NULL;
+	double* cm_jump=NULL;
 	double* optscal=NULL;
 	double* maxiter=NULL; 
@@ -114,5 +114,5 @@
 		/*Now, recover fit, optscal and maxiter as vectors: */
 		IoModelFetchData((void**)&iomodel->fit,NULL,NULL,iomodel_handle,"fit","Matrix","Mat");
-		IoModelFetchData((void**)&iomodel->cmjump,NULL,NULL,iomodel_handle,"cmjump","Matrix","Mat");
+		IoModelFetchData((void**)&iomodel->cm_jump,NULL,NULL,iomodel_handle,"cm_jump","Matrix","Mat");
 		IoModelFetchData((void**)&iomodel->optscal,NULL,NULL,iomodel_handle,"optscal","Matrix","Mat");
 		IoModelFetchData((void**)&iomodel->maxiter,NULL,NULL,iomodel_handle,"maxiter","Matrix","Mat");
@@ -124,6 +124,6 @@
 
 		count++;
-		param= new Param(count,"cmjump",DOUBLEVEC);
-		param->SetDoubleVec(iomodel->cmjump,iomodel->nsteps);
+		param= new Param(count,"cm_jump",DOUBLEVEC);
+		param->SetDoubleVec(iomodel->cm_jump,iomodel->nsteps);
 		parameters->AddObject(param);
 
@@ -139,5 +139,5 @@
 
 		xfree((void**)&iomodel->fit);
-		xfree((void**)&iomodel->cmjump);
+		xfree((void**)&iomodel->cm_jump);
 		xfree((void**)&iomodel->optscal);
 		xfree((void**)&iomodel->maxiter);
Index: /issm/trunk/src/c/ModelProcessorx/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/IoModel.cpp	(revision 2266)
+++ /issm/trunk/src/c/ModelProcessorx/IoModel.cpp	(revision 2267)
@@ -108,5 +108,5 @@
 	/*!solution parameters: */
 	iomodel->fit=NULL;
-	iomodel->cmjump=NULL;
+	iomodel->cm_jump=NULL;
 	iomodel->meanvel=0;
 	iomodel->epsvel=0;
@@ -241,5 +241,5 @@
 	xfree((void**)&iomodel->n);
 	xfree((void**)&iomodel->fit);
-	xfree((void**)&iomodel->cmjump);
+	xfree((void**)&iomodel->cm_jump);
 	xfree((void**)&iomodel->optscal);
 	xfree((void**)&iomodel->maxiter);
Index: /issm/trunk/src/c/ModelProcessorx/IoModel.h
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/IoModel.h	(revision 2266)
+++ /issm/trunk/src/c/ModelProcessorx/IoModel.h	(revision 2267)
@@ -107,5 +107,5 @@
 	/*solution parameters: */
 	double* fit;
-	double* cmjump;
+	double* cm_jump;
 	double  meanvel,epsvel;
 	int     artificial_diffusivity;
Index: /issm/trunk/src/c/objects/OptPars.h
===================================================================
--- /issm/trunk/src/c/objects/OptPars.h	(revision 2266)
+++ /issm/trunk/src/c/objects/OptPars.h	(revision 2267)
@@ -11,5 +11,5 @@
 	double xmax;
 	double tolerance;
-	double cmjump;
+	double cm_jump;
 	int maxiter;
 
Index: /issm/trunk/src/c/parallel/control_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/control_core.cpp	(revision 2266)
+++ /issm/trunk/src/c/parallel/control_core.cpp	(revision 2267)
@@ -32,5 +32,5 @@
 	int     gsize;
 	double* maxiter=NULL;
-	double* cmjump=NULL;
+	double* cm_jump=NULL;
 	double  eps_cm;
 	double  tolx;
@@ -66,5 +66,5 @@
 	model->FindParam(&optscal,"optscal");
 	model->FindParam(&maxiter,"maxiter");
-	model->FindParam(&cmjump,"cmjump");
+	model->FindParam(&cm_jump,"cm_jump");
 	model->FindParam(&eps_cm,"eps_cm");
 	model->FindParam(&tolx,"tolx");
@@ -125,5 +125,5 @@
 		optargs.model=model;
 		optargs.param_g=param_g; optargs.grad_g=grad_g_double; optargs.inputs=inputs;optargs.n=n;
-		optpars.xmin=0; optpars.xmax=1; optpars.tolerance=tolx; optpars.maxiter=(int)maxiter[n];optpars.cmjump=cmjump[n];
+		optpars.xmin=0; optpars.xmax=1; optpars.tolerance=tolx; optpars.maxiter=(int)maxiter[n];optpars.cm_jump=cm_jump[n];
 		BrentSearch(&search_scalar,J+n,&optpars,&objectivefunctionC,&optargs);
 		_printf_("%s\n","      done.");
@@ -216,5 +216,5 @@
 	xfree((void**)&optscal);
 	xfree((void**)&maxiter);
-	xfree((void**)&cmjump);
+	xfree((void**)&cm_jump);
 	VecFree(&new_grad_g); //do not VecFree grad_g and grad_g_old, they point to new_grad_g
 	xfree((void**)&grad_g_double);
Index: /issm/trunk/src/c/shared/Numerics/BrentSearch.cpp
===================================================================
--- /issm/trunk/src/c/shared/Numerics/BrentSearch.cpp	(revision 2266)
+++ /issm/trunk/src/c/shared/Numerics/BrentSearch.cpp	(revision 2267)
@@ -39,5 +39,5 @@
 	double tol1,tol2,seps,tolerance;
 	int    maxiter;
-	double cmjump;
+	double cm_jump;
 
 	/*counters: */
@@ -49,5 +49,5 @@
 	tolerance=optpars->tolerance;
 	maxiter=optpars->maxiter;
-	cmjump=optpars->cmjump;
+	cm_jump=optpars->cm_jump;
 	
 	//initialize counter and boundaries
@@ -66,8 +66,8 @@
 
 	//test if jump option activated and xmin==0
-	if (!isnan(cmjump) && (xmin==0)){
+	if (!isnan(cm_jump) && (xmin==0)){
 
 		//test ration between fxmin and fxmax. if < criterion, return
-		if((fxmax/fxmin)<cmjump){
+		if((fxmax/fxmin)<cm_jump){
 
 			/*Assign output pointers: */
Index: /issm/trunk/src/m/classes/@model/model.m
===================================================================
--- /issm/trunk/src/m/classes/@model/model.m	(revision 2266)
+++ /issm/trunk/src/m/classes/@model/model.m	(revision 2267)
@@ -185,5 +185,5 @@
 	md.maxcontrolconstraint=0;
 	md.fit=[];
-	md.cmjump=[];
+	md.cm_jump=[];
 	md.epsvel=0;
 	md.meanvel=0;
Index: /issm/trunk/src/m/classes/@model/setdefaultparameters.m
===================================================================
--- /issm/trunk/src/m/classes/@model/setdefaultparameters.m	(revision 2266)
+++ /issm/trunk/src/m/classes/@model/setdefaultparameters.m	(revision 2267)
@@ -189,6 +189,6 @@
 md.fit=0*ones(md.nsteps,1);
 
-%cmjump
-md.cmjump=.7*ones(md.nsteps,1); %30 per cent decrement.
+%cm_jump
+md.cm_jump=.7*ones(md.nsteps,1); %30 per cent decrement.
 
 %eps_cm is a criteria to stop the control methods.
Index: /issm/trunk/src/m/classes/public/display/displaycontrol.m
===================================================================
--- /issm/trunk/src/m/classes/public/display/displaycontrol.m	(revision 2266)
+++ /issm/trunk/src/m/classes/public/display/displaycontrol.m	(revision 2267)
@@ -16,5 +16,5 @@
 	fielddisplay(md,'optscal','scaling factor on gradient direction during optimization, for each optimization step');
 	fielddisplay(md,'fit','''absolute: 0'', ''relative: 1'', or ''logarithmic: 2''. default is ''absolute: 0'', for each optimization steps');
-	fielddisplay(md,'cmjump','decrease threshold for misfit, default is 30%');
+	fielddisplay(md,'cm_jump','decrease threshold for misfit, default is 30%');
 	fielddisplay(md,'maxiter','maximum iterations during each optimization step');
 	fielddisplay(md,'tolx','minimum tolerance which will stop one optimization search');
Index: /issm/trunk/src/m/classes/public/geography.m
===================================================================
--- /issm/trunk/src/m/classes/public/geography.m	(revision 2266)
+++ /issm/trunk/src/m/classes/public/geography.m	(revision 2267)
@@ -42,4 +42,6 @@
 elements=md.elements;
 
+invert=0;
+
 %Fist recover arrays of ice shelf grids and elements, and ice sheet grids and elements.
 if strcmp(iceshelfname,''), %no iceshelf contour file, we are dealing with a pure ice sheet.
@@ -50,5 +52,13 @@
 	elementoniceshelf=ones(md.numberofelements,1);
 else
+	if strcmpi(iceshelfname(1),'~'),
+		iceshelfname=iceshelfname(2:length(iceshelfname));
+		invert=1;
+	end
 	[gridoniceshelf,elementoniceshelf]=ContourToMesh(elements,x,y,expread(iceshelfname,1),'element and node',2);
+end
+if invert,
+	gridoniceshelf=1-gridoniceshelf;
+	elementoniceshelf=1-elementoniceshelf;
 end
 
Index: /issm/trunk/src/m/classes/public/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 2266)
+++ /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 2267)
@@ -351,6 +351,6 @@
 
 	%LENGTH CONTROL FIELDS
-	if (length(md.maxiter)~=md.nsteps | length(md.optscal)~=md.nsteps | length(md.fit)~=md.nsteps | length(md.cmjump)~=md.nsteps)
-		disp('maxiter, optscal, fit and cmjump must have the length specified by nsteps')
+	if (length(md.maxiter)~=md.nsteps | length(md.optscal)~=md.nsteps | length(md.fit)~=md.nsteps | length(md.cm_jump)~=md.nsteps)
+		disp('maxiter, optscal, fit and cm_jump must have the length specified by nsteps')
 		bool=0;return;
 	end
Index: /issm/trunk/src/m/classes/public/marshall.m
===================================================================
--- /issm/trunk/src/m/classes/public/marshall.m	(revision 2266)
+++ /issm/trunk/src/m/classes/public/marshall.m	(revision 2267)
@@ -101,5 +101,5 @@
 %Write solution parameters
 WriteData(fid,md.fit,'Mat','fit');
-WriteData(fid,md.cmjump,'Mat','cmjump');
+WriteData(fid,md.cm_jump,'Mat','cm_jump');
 WriteData(fid,md.yts,'Scalar','yts');
 WriteData(fid,md.meanvel,'Scalar','meanvel');
Index: /issm/trunk/src/m/classes/public/plot/plot_riftpenetration.m
===================================================================
--- /issm/trunk/src/m/classes/public/plot/plot_riftpenetration.m	(revision 2266)
+++ /issm/trunk/src/m/classes/public/plot/plot_riftpenetration.m	(revision 2267)
@@ -44,5 +44,8 @@
 			normal(2)=penaltypairs(j,6);
 
-			vx1=md.vx(penaltypairs(j,1)); vx2=md.vx(penaltypairs(j,2)); vy1=md.vy(penaltypairs(j,1)); vy2=md.vy(penaltypairs(j,2));
+			vx1=md.vx(penaltypairs(j,1)); 
+			vx2=md.vx(penaltypairs(j,2));
+			vy1=md.vy(penaltypairs(j,1)); 
+			vy2=md.vy(penaltypairs(j,2));
 			penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
 			%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
Index: /issm/trunk/src/m/classes/public/plot/plot_transient_results.m
===================================================================
--- /issm/trunk/src/m/classes/public/plot/plot_transient_results.m	(revision 2266)
+++ /issm/trunk/src/m/classes/public/plot/plot_transient_results.m	(revision 2267)
@@ -24,5 +24,5 @@
 string='plotmodel(md';
 for i=1:length(md.results.transient),
-	string=[string ',''data'',''results.transient(' num2str(i) ').thickness'',''title'',''Thickness at time ' num2str(md.results.transient(i).time) ' a'''];
+	string=[string ',''data'',md.results.transient(' num2str(i) ').thickness,''title'',''Thickness at time ' num2str(md.results.transient(i).time) ' a'''];
 end
 string=[string ',''figure'',1,''colorbar#all'',''on'',''fontsize'',' num2str(options_structure.fontsize) ',''fontweight'',' num2str(options_structure.fontweight) ');'];
@@ -32,5 +32,5 @@
 string='plotmodel(md';
 for i=1:length(md.results.transient),
-	string=[string ',''data'',''results.transient(' num2str(i) ').vel'',''view'',3,''title'',''Velocity at time ' num2str(md.results.transient(i).time) ' a'''];
+	string=[string ',''data'',md.results.transient(' num2str(i) ').vel,''view'',3,''title'',''Velocity at time ' num2str(md.results.transient(i).time) ' a'''];
 end
 string=[string ',''figure'',2,''colorbar#all'',''on'',''fontsize'',' num2str(options_structure.fontsize) ',''fontweight'',' num2str(options_structure.fontweight)  ');'];
@@ -38,11 +38,13 @@
 clear string;
 
-string='plotmodel(md';
-for i=1:length(md.results.transient),
-	string=[string ',''data'',''results.transient(' num2str(i) ').temperature'',''view'',3,''title'',''Temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+if strcmpi(md.type,'3d'),
+	string='plotmodel(md';
+	for i=1:length(md.results.transient),
+		string=[string ',''data'',md.results.transient(' num2str(i) ').temperature,''view'',3,''title'',''Temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+	end
+	string=[string ',''figure'',3,''colorbar#all'',''on'',''view'',3,''fontsize'',' num2str(options_structure.fontsize) ',''fontweight'',' num2str(options_structure.fontweight)  ');'];
+	eval(string);
+	clear string;
 end
-string=[string ',''figure'',3,''colorbar#all'',''on'',''view'',3,''fontsize'',' num2str(options_structure.fontsize) ',''fontweight'',' num2str(options_structure.fontweight)  ');'];
-eval(string);
-clear string;
 
 string='plotmodel(md';
@@ -62,9 +64,11 @@
 clear string;
 
-string='plotmodel(md';
-for i=2:length(md.results.transient),
-	string=[string ',''data'',md.results.transient(' num2str(i) ').temperature-md.results.transient(' num2str(i-1) ').temperature,''view'',3,''title'',''Delta temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+if strcmpi(md.type,'3d'),
+	string='plotmodel(md';
+	for i=2:length(md.results.transient),
+		string=[string ',''data'',md.results.transient(' num2str(i) ').temperature-md.results.transient(' num2str(i-1) ').temperature,''view'',3,''title'',''Delta temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+	end
+	string=[string ',''figure'',6,''colorbar#all'',''on'',''fontsize'',' num2str(options_structure.fontsize) ',''fontweight'',' num2str(options_structure.fontweight)  ');'];
+	eval(string);
+	clear string;
 end
-string=[string ',''figure'',6,''colorbar#all'',''on'',''fontsize'',' num2str(options_structure.fontsize) ',''fontweight'',' num2str(options_structure.fontweight)  ');'];
-eval(string);
-clear string;
Index: /issm/trunk/src/mex/ControlOptimization/ControlOptimization.cpp
===================================================================
--- /issm/trunk/src/mex/ControlOptimization/ControlOptimization.cpp	(revision 2266)
+++ /issm/trunk/src/mex/ControlOptimization/ControlOptimization.cpp	(revision 2267)
@@ -29,5 +29,5 @@
 	mxArray* n=NULL;
 	int      n_value;
-	double*  cmjump=NULL;
+	double*  cm_jump=NULL;
 
 	/*Boot module: */
@@ -45,5 +45,5 @@
 
 	/*Parameters: */
-	FetchData((void**)&cmjump,NULL,NULL,mxGetField(PARAMETERS,0,"cmjump"),"Matrix","Mat");
+	FetchData((void**)&cm_jump,NULL,NULL,mxGetField(PARAMETERS,0,"cm_jump"),"Matrix","Mat");
 	FetchData((void**)&n_value,NULL,NULL,STEP,"Integer",NULL);
 
@@ -61,5 +61,5 @@
 	optpars.tolerance=tolerance;
 	optpars.maxiter=maxiter;
-	optpars.cmjump=cmjump[n_value-1];
+	optpars.cm_jump=cm_jump[n_value-1];
 
 	BrentSearch(&search_scalar,&J,&optpars,&OptFunc,&optargs);
@@ -71,5 +71,5 @@
 	/*Free ressources: */
 	xfree((void**)&function_name);
-	xfree((void**)&cmjump);
+	xfree((void**)&cm_jump);
 
 	/*end module: */
