Index: /issm/trunk/src/c/Bamgx/objects/Triangles.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 2937)
+++ /issm/trunk/src/c/Bamgx/objects/Triangles.cpp	(revision 2938)
@@ -912,5 +912,5 @@
 		/*Get and process fields*/
 		s=bamgopts->field;
-		nbsol=1;       //for now, only one field
+		nbsol=bamgopts->numfields;
 		typsols=(int*)xmalloc(1*sizeof(int));
 		typsols[0]=0; // only one dof per node
@@ -1246,5 +1246,5 @@
 		/*Get and process fields*/
 		s=bamgopts->field;
-		nbsol=1;       //for now, only one field
+		nbsol=bamgopts->numfields;
 		typsols=(int*)xmalloc(1*sizeof(int));
 		typsols[0]=0; // only one dof per node
@@ -1650,5 +1650,5 @@
 		/*Get and process fields*/
 		s=bamgopts->field;
-		nbsol=1;       //for now, only one field
+		nbsol=bamgopts->numfields;
 		typsols=(int*)xmalloc(1*sizeof(int));
 		typsols[0]=0; // only one dof per node
Index: /issm/trunk/src/c/Bamgx/objects/Vertex.cpp
===================================================================
--- /issm/trunk/src/c/Bamgx/objects/Vertex.cpp	(revision 2937)
+++ /issm/trunk/src/c/Bamgx/objects/Vertex.cpp	(revision 2938)
@@ -139,5 +139,4 @@
 		double coef=bamgopts->coef;
 		int    Metrictype=(bamgopts->Metrictype);
-		int    Rescaling=(bamgopts->Rescaling);
 
 		/*Intermediary*/
@@ -153,10 +152,5 @@
 		 */
 		if (Metrictype==0){
-			if (Rescaling){
-				ci= 1/(bamgopts->err*coef*coef) * 1/(smax-smin);
-			}
-			else{
-				ci=1/(bamgopts->err*coef*coef);
-			}
+			ci= 2.0/9.0 * 1/(bamgopts->err*coef*coef);
 		}
 
@@ -169,15 +163,15 @@
 		 */
 		else if (Metrictype==1){
-			ci=1/(bamgopts->err*coef*coef) * 1/Max( Abs(s), CutOff*(Max(Abs(smin),Abs(smax))));
-		}
-
-		//Interpolation Error
+			ci= 2.0/9.0 * 1/(bamgopts->err*coef*coef) * 1/Max( Abs(s), CutOff*(Max(Abs(smin),Abs(smax))));
+		}
+
+		//Rescaled absolute error
 		/*
-		 *            2         1       
-		 *Metric M = ---  ------------   Abs(Hessian)
-		 *            9   err * coeff^2  
+		 *            2         1            Abs(Hessian)
+		 *Metric M = ---  ------------  ---------------------- 
+		 *            9   err * coeff^2       (smax-smin)
 		 */
 		else if (Metrictype==2){
-			ci=(2.0/9.0)*(1.0/(bamgopts->err));
+			ci= 2.0/9.0 * 1/(bamgopts->err*coef*coef) * 1/(smax-smin);
 		}
 		else{
Index: /issm/trunk/src/c/objects/BamgOpts.h
===================================================================
--- /issm/trunk/src/c/objects/BamgOpts.h	(revision 2937)
+++ /issm/trunk/src/c/objects/BamgOpts.h	(revision 2938)
@@ -15,5 +15,4 @@
 	double  anisomax;
 	int     NbSmooth;
-	int     Rescaling;
 	int     Metrictype;
 	int     nbjacobi;
@@ -31,4 +30,5 @@
 	double* metric;
 	double* field;
+	int     numfields;
 
 };
Index: /issm/trunk/src/m/classes/public/bamg.m
===================================================================
--- /issm/trunk/src/m/classes/public/bamg.m	(revision 2937)
+++ /issm/trunk/src/m/classes/public/bamg.m	(revision 2938)
@@ -81,9 +81,8 @@
 bamg_options.coef=getfieldvalue(options,'coef',1);
 bamg_options.power=getfieldvalue(options,'power',1);
-bamg_options.Rescaling=getfieldvalue(options,'Rescaling',1);
 bamg_options.nbjacobi=getfieldvalue(options,'nbjacobi',1);
 bamg_options.AbsError=getfieldvalue(options,'AbsError',0);
 bamg_options.Hessiantype=getfieldvalue(options,'Hessiantype',2);
-bamg_options.Metrictype=getfieldvalue(options,'Metrictype',2);
+bamg_options.Metrictype=getfieldvalue(options,'Metrictype',0);
 bamg_options.NbSmooth=getfieldvalue(options,'NbSmooth',3);
 bamg_options.omega=getfieldvalue(options,'omega',1.8);
Index: /issm/trunk/src/mex/Bamg/Bamg.cpp
===================================================================
--- /issm/trunk/src/mex/Bamg/Bamg.cpp	(revision 2937)
+++ /issm/trunk/src/mex/Bamg/Bamg.cpp	(revision 2938)
@@ -37,5 +37,5 @@
 	double power;
 	int    Hessiantype,Metrictype,NbSmooth;
-	int    Rescaling,nbjacobi,AbsError;
+	int    nbjacobi,AbsError;
 	double omega;
 	double gradation;
@@ -43,4 +43,5 @@
 	double* metric=NULL;
 	double* field=NULL;
+	int     numfields=0;
 
 	/*Boot module: */
@@ -121,6 +122,4 @@
 	FetchData(&power,mxGetField(BAMGOPTIONS,0,"power"));
 	bamgopts.power=power;
-	FetchData(&Rescaling,mxGetField(BAMGOPTIONS,0,"Rescaling"));
-	bamgopts.Rescaling=Rescaling;
 	FetchData(&nbjacobi,mxGetField(BAMGOPTIONS,0,"nbjacobi"));
 	bamgopts.nbjacobi=nbjacobi;
@@ -151,5 +150,7 @@
 	FetchData(&metric,NULL,NULL,mxGetField(BAMGOPTIONS,0,"metric"));
 	bamgopts.metric=metric;
-	FetchData(&field,NULL,NULL,mxGetField(BAMGOPTIONS,0,"field"));
+	FetchData(&field,NULL,&numfields,mxGetField(BAMGOPTIONS,0,"field"));
+	bamgopts.numfields=numfields;
+	printf("numfields = %i\n",numfields);
 	bamgopts.field=field;
 
