Index: /issm/trunk/src/m/classes/model.m
===================================================================
--- /issm/trunk/src/m/classes/model.m	(revision 9535)
+++ /issm/trunk/src/m/classes/model.m	(revision 9536)
@@ -180,5 +180,5 @@
 		 %Control
 		 control_analysis = modelfield('default',0,'marshall',true,'format','Boolean');
-		 control_type     = modelfield('default',0,'marshall',true,'format','DoubleMat','mattype',3);
+		 control_type     = modelfield('default',NaN,'marshall',true,'preprocess','marshallcontroltype','format','DoubleMat','mattype',3);
 		 weights          = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
 		 nsteps           = modelfield('default',0,'marshall',true,'format','Integer');
Index: /issm/trunk/src/m/model/display/displaycontrol.m
===================================================================
--- /issm/trunk/src/m/model/display/displaycontrol.m	(revision 9535)
+++ /issm/trunk/src/m/model/display/displaycontrol.m	(revision 9536)
@@ -11,5 +11,5 @@
 disp(sprintf('   Control solution parameters:\n'));
 if md.control_analysis,
-	fielddisplay(md,'control_type','parameter where inverse control is carried out; ex: DragCoefficientEnum, or RheologyBbarEnum)');
+	fielddisplay(md,'control_type','parameter where inverse control is carried out; ex: {''DragCoefficient''}, or {''RheologyBbar''}');
 	fielddisplay(md,'weights','weights applied to the misfit of each node');
 	fielddisplay(md,'nsteps','number of optimization searches');
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9535)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9536)
@@ -203,5 +203,10 @@
 	num_controls=numel(md.control_type);
 	num_costfunc=size(md.cm_responses,2);
-	checkvalues(md,{'control_type'},[DhdtEnum DragCoefficientEnum RheologyBbarEnum VxEnum VyEnum]);
+	if ~iscell(md.control_type)
+		message(['model not consistent: model ' md.name ' control_type field should be a cell of strings']);
+	end
+	if ~ismember(md.control_type,{'Dhdt' 'DragCoefficient' 'RheologyBbar' 'Vx' 'Vy'});
+		message(['model not consistent: model ' md.name ' control_type field should be ''Dhdt'' ''DragCoefficient'' ''RheologyBbar'' ''Vx'' ''Vy''']);
+	end
 
 	%LENGTH CONTROL FIELDS
Index: /issm/trunk/src/m/model/marshall.m
===================================================================
--- /issm/trunk/src/m/model/marshall.m	(revision 9535)
+++ /issm/trunk/src/m/model/marshall.m	(revision 9536)
@@ -381,2 +381,7 @@
 	pos=find(in==7); out(pos,end)=PattynStokesApproximationEnum;
 
+function out=marshallcontroltype(in)
+	out=zeros(numel(in),1);
+	for i=1:numel(in),
+		out(i)=StringToEnum(in{i});
+	end
Index: /issm/trunk/src/m/model/parametercontroloptimization.m
===================================================================
--- /issm/trunk/src/m/model/parametercontroloptimization.m	(revision 9535)
+++ /issm/trunk/src/m/model/parametercontroloptimization.m	(revision 9536)
@@ -30,5 +30,5 @@
 md2.eps_cm=NaN;
 md2.nsteps=getfieldvalue(options,'nsteps',5);
-md2.control_type=getfieldvalue(options,'md2.control_type',DragCoefficientEnum);
+md2.control_type=getfieldvalue(options,'md2.control_type',{'DragCoefficient'});
 md2.maxiter=10*ones(md2.nsteps,1);
 md2.cm_jump=0.99*ones(md2.nsteps,1);
Index: /issm/trunk/src/m/model/parameterization/parametercontrolB.m
===================================================================
--- /issm/trunk/src/m/model/parameterization/parametercontrolB.m	(revision 9535)
+++ /issm/trunk/src/m/model/parameterization/parametercontrolB.m	(revision 9536)
@@ -21,5 +21,5 @@
 
 %control type
-md.control_type=RheologyBbarEnum;
+md.control_type={'RheologyBbar'};
 
 %weights
Index: /issm/trunk/src/m/model/parameterization/parametercontroldrag.m
===================================================================
--- /issm/trunk/src/m/model/parameterization/parametercontroldrag.m	(revision 9535)
+++ /issm/trunk/src/m/model/parameterization/parametercontroldrag.m	(revision 9536)
@@ -21,5 +21,5 @@
 
 %control type
-md.control_type=DragCoefficientEnum;
+md.control_type={'DragCoefficient'};
 
 %weights
Index: /issm/trunk/src/m/model/tres.m
===================================================================
--- /issm/trunk/src/m/model/tres.m	(revision 9535)
+++ /issm/trunk/src/m/model/tres.m	(revision 9536)
@@ -41,4 +41,5 @@
 	if md.control_analysis==1,
 		for control_type=md.control_type
+			%Will need to be updated... good luck ;)
 			md.(EnumToModelField(control_type))=PatchToVec(md.results.DiagnosticSolution.(EnumToString(control_type)));
 		end
