Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22793)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22794)
@@ -1662,5 +1662,5 @@
             for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
 				/*Create the three transient inputs for the control input*/
-            TransientInput* values_input=new TransientInput(ControlInputValuesEnum,times,N);
+            TransientInput* values_input=new TransientInput(input_enum,times,N);
 				TransientInput* mins_input = new TransientInput(ControlInputMinsEnum,times,N);
 				TransientInput* maxs_input = new TransientInput(ControlInputMaxsEnum,times,N);
@@ -1674,5 +1674,5 @@
 					switch(this->ObjectEnum()){
                     case TriaEnum:
-									values_input->AddTimeInput(new TriaInput(ControlInputValuesEnum,values,P1Enum)); 
+									values_input->AddTimeInput(new TriaInput(input_enum,values,P1Enum)); 
 									mins_input->AddTimeInput(new TriaInput(ControlInputMinsEnum,values_min,P1Enum)); 
 									maxs_input->AddTimeInput(new TriaInput(ControlInputMaxsEnum,values_max,P1Enum));
Index: /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 22793)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 22794)
@@ -330,5 +330,5 @@
 	TransientInput* transient_input = xDynamicCast<TransientInput*>(input);
 	IssmDouble time = transient_input->GetTimeByOffset(timeoffset);
-	TransientInput* new_trans_input = new TransientInput(ControlInputValuesEnum);
+	TransientInput* new_trans_input = new TransientInput(this->enum_type);
 	for(int i=0;i<transient_input->numtimesteps;i++){
 		if(transient_input->timesteps[i]==time) new_trans_input->AddTimeInput(xDynamicCast<TriaInput*>(in_input),time);
Index: /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 22793)
+++ /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 22794)
@@ -106,4 +106,5 @@
 			if(X[index]<XL[index]) X[index]=XL[index];
 		}
+		N_add+=N[c];
 	}
 
@@ -320,4 +321,5 @@
 			Gnorm += G[index]*G[index];
 		}
+		N_add+=N[c];
 	}
 	Gnorm = sqrt(Gnorm);
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 22793)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 22794)
@@ -141,4 +141,9 @@
 		const char* field = "md.calving.stress_threshold_groundedice";
 		input_enum        = CalvingStressThresholdGroundediceEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"DamageDbar")==0){
+		const char* field = "md.damage.D";
+		input_enum        = DamageDbarEnum;
 		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
 	}
