Index: /issm/trunk-jpl/src/m/consistency/checkfield.m
===================================================================
--- /issm/trunk-jpl/src/m/consistency/checkfield.m	(revision 23759)
+++ /issm/trunk-jpl/src/m/consistency/checkfield.m	(revision 23760)
@@ -9,5 +9,5 @@
 %      - NaN: 1 if check that there is no NaN
 %      - Inf: 1 if check that there is no Inf
-%      - size: [lines cols], NaN for non checked dimensions
+%      - size: [lines cols], NaN for non checked dimensions, or 'universal' for any input type (nodal, element, time series, etc)
 %      - >:  greater than provided value
 %      - >=: greater or equal to provided value
@@ -48,18 +48,67 @@
 if exist(options,'size')
 	fieldsize=getfieldvalue(options,'size');
-	if isnan(fieldsize(1)),
-		if (size(field,2)~=fieldsize(2)),
-			md = checkmessage(md,getfieldvalue(options,'message',...
-				['field ''' fieldname ''' should have ' num2str(fieldsize(2)) ' columns']));
-		end
-	elseif isnan(fieldsize(2)),
-		if (size(field,1)~=fieldsize(1)),
-			md = checkmessage(md,getfieldvalue(options,'message',...
-				['field ''' fieldname ''' should have ' num2str(fieldsize(1)) ' lines']));
-		end
-	else
-		if ((size(field,1)~=fieldsize(1)) |  (size(field,2)~=fieldsize(2)))
-			md = checkmessage(md,getfieldvalue(options,'message',...
-				['field ''' fieldname ''' size should be ' num2str(fieldsize(1)) ' x ' num2str(fieldsize(2))]));
+	if ischar(fieldsize),
+		if strcmp(fieldsize,'universal'),
+
+			%Check that vector size will not be confusing for ModelProcessorx
+			if (md.mesh.numberofvertices==md.mesh.numberofelements),
+				error('number of vertices is the same as number of elements');
+			elseif (md.mesh.numberofvertices+1==md.mesh.numberofelements),
+				error('number of vertices +1 is the same as number of elements');
+			elseif (md.mesh.numberofvertices==md.mesh.numberofelements+1),
+				error('number of vertices is the same as number of elements +1');
+			end
+
+			%Uniform field
+			if (size(field,1)==1),
+				if (size(field,2)~=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%vertex oriented input, only one column allowed
+			elseif (size(field,1)==md.mesh.numberofvertices),
+				if (size(field,2)~=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%element oriented input, one or more column (patch) is ok 
+			elseif (size(field,1)==md.mesh.numberofelements),
+				%nothing to do here (either constant per element, or defined on nodes)
+
+			%vertex time series
+			elseif (size(field,1)==md.mesh.numberofvertices+1),
+				if (size(field,2)<=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%element time series
+			elseif (size(field,1)==md.mesh.numberofelements+1),
+				if (size(field,2)<=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%else not supported
+			else
+				md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+			end
+		else
+			error(['fieldsize ''' fieldsize ''' not supported yet']);
+		end
+	else
+		if isnan(fieldsize(1)),
+			if (size(field,2)~=fieldsize(2)),
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' should have ' num2str(fieldsize(2)) ' columns']));
+			end
+		elseif isnan(fieldsize(2)),
+			if (size(field,1)~=fieldsize(1)),
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' should have ' num2str(fieldsize(1)) ' lines']));
+			end
+		else
+			if ((size(field,1)~=fieldsize(1)) |  (size(field,2)~=fieldsize(2)))
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' size should be ' num2str(fieldsize(1)) ' x ' num2str(fieldsize(2))]));
+			end
 		end
 	end
