Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22800)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22801)
@@ -1400,5 +1400,9 @@
 		parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
 		parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
-		if(control_index>0) for(int n=0;n<control_index-1;n++) start+=N[n]*M[n];
+		if(control_index>0) {
+			for(int n=0;n<control_index;n++){
+				start+=N[n]*M[n];
+			}
+		}
 
 		for(int n=0;n<N[control_index];n++){
@@ -1671,5 +1675,5 @@
 						values_min[i] = min_vector[N*(vertexids[i]-1)+t];
 						values_max[i] = max_vector[N*(vertexids[i]-1)+t];
-					 } 
+					 }
 					switch(this->ObjectEnum()){
                     case TriaEnum:
@@ -1679,10 +1683,10 @@
 								break;
                     case PentaEnum:
-									values_input->AddTimeInput(new PentaInput(ControlInputValuesEnum,values,P1Enum)); 
+									values_input->AddTimeInput(new PentaInput(input_enum,values,P1Enum)); 
 									mins_input->AddTimeInput(new PentaInput(ControlInputMinsEnum,values_min,P1Enum)); 
 									maxs_input->AddTimeInput(new PentaInput(ControlInputMaxsEnum,values_max,P1Enum)); 
 									break;
                     case TetraEnum:
-									values_input->AddTimeInput(new TetraInput(ControlInputValuesEnum,values,P1Enum)); 
+									values_input->AddTimeInput(new TetraInput(input_enum,values,P1Enum)); 
 									mins_input->AddTimeInput(new TetraInput(ControlInputMinsEnum,values_min,P1Enum)); 
 									maxs_input->AddTimeInput(new TetraInput(ControlInputMaxsEnum,values_max,P1Enum)); 
Index: /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 22800)
+++ /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 22801)
@@ -486,5 +486,4 @@
 		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,1,0));
 
-		/*TEMP START*/
 		int offset = 0;
 		for(int i=0;i<num_controls;i++){
@@ -504,11 +503,4 @@
 			offset += N[i]*numberofvertices;
 		}
-		/*TEMP END*/
-
-		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,GradientEnum,G,numberofvertices,intn/numberofvertices,1,0));
-
-		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,InversionControlParametersEnum,X,numberofvertices,intn/numberofvertices,1,0));
-
-		//femmodel->OutputControlsx(&femmodel->results);
 	}
 	else{
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 22800)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 22801)
@@ -16,4 +16,9 @@
 		const char* field = "md.geometry.thickness";
 		input_enum        = ThicknessEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"MaterialsRheologyBbar")==0){
+		const char* field = "md.materials.rheology_B";
+		input_enum        = MaterialsRheologyBbarEnum;
 		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
 	}
