Index: /issm/trunk/src/m/classes/flaim.m
===================================================================
--- /issm/trunk/src/m/classes/flaim.m	(revision 9731)
+++ /issm/trunk/src/m/classes/flaim.m	(revision 9732)
@@ -41,4 +41,17 @@
 
 		end % }}}
+		function checkconsistency(obj,md) % {{{
+
+			if ~exist(obj.flaim.tracks,'file')
+				checkmessage(['flaim.tracks file ''' md.flaim.tracks ''' does not exist.']);
+			end
+			%   probably going to need some checks on flaim.flightreqs here
+			if (numel(obj.flaim.criterion)~=md.mesh.numberofvertices) & (numel(md.flaim.criterion)~=md.mesh.numberofelements),
+				checkmessage(['flaim.criterion vector must have number of nodes (' ...
+					int2str(md.mesh.numberofvertices) ') or elements (' int2str(md.mesh.numberofelements)...
+					') values, not ' int2str(numel(md.flaim.criterion)) ' values.']);
+			end
+
+		end % }}}
 		function disp(obj) % {{{
 
Index: /issm/trunk/src/m/classes/miscellaneous.m
===================================================================
--- /issm/trunk/src/m/classes/miscellaneous.m	(revision 9731)
+++ /issm/trunk/src/m/classes/miscellaneous.m	(revision 9732)
@@ -26,4 +26,10 @@
 			end
 		end % }}}
+		function checkconsistency(obj,md) % {{{
+
+			fields={'name'};
+			checknonempty(md,'miscellaneous',fields);
+
+		end % }}}
 		function obj = setdefaultparameters(obj) % {{{
 
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9731)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9732)
@@ -118,56 +118,4 @@
 					 error('model constructor error message: 0 of 1 argument only in input.');
 				 end
-		 end
-		 %}}}
-		 function disp(md) % {{{1
-			 disp(sprintf('\n%s = \n',inputname(1)));
-
-			 %name
-			 disp(sprintf('   Name:'));
-			 if isempty(md.miscellaneous.name),
-				 disp(sprintf('      N/A'));
-			 else
-				 disp(sprintf('      %s',md.miscellaneous.name));
-			 end
-
-			 %notes: md.miscellaneous.notes is a cell array of strings
-			 disp(sprintf('   Notes:'));
-			 if isempty(md.miscellaneous.notes),
-				 disp(sprintf('      N/A'));
-			 else
-				 if iscell(md.miscellaneous.notes),
-					 strings=md.miscellaneous.notes;
-					 for i=1:length(strings),
-						 string=char(strings(i));
-						 if i==1,
-							 disp(sprintf('      %s',string));
-						 else
-							 disp(sprintf('      %s',string));
-						 end
-					 end
-				 elseif ischar(md.miscellaneous.notes),
-					 disp(sprintf('      %s',md.miscellaneous.notes));
-				 else
-					 disp('display error message: ''notes'' for model is neither a cell array of string, nor a string. Cannot display.');
-				 end
-			 end
-
-			 %diverse
-			 disp(sprintf('   Mesh:'));
-			 disp(sprintf('%s%s%s','      Mesh: type ''',inputname(1),'.mesh'' to display'));
-			 disp(sprintf('   Parameters:'));
-			 disp(sprintf('%s%s%s','      Boundary conditions: type ''',inputname(1),'.bc'' to display'));
-			 disp(sprintf('%s%s%s','      Materials: type ''',inputname(1),'.mat'' to display'));
-			 disp(sprintf('%s%s%s','      Parameters: type ''',inputname(1),'.par'' to display'));
-			 disp(sprintf('   Solution parameters: %s'));
-			 disp(sprintf('%s%s%s','      Diagnostic solution parameters: type ''',inputname(1),'.diagnostic'' to display'));
-			 disp(sprintf('%s%s%s','      Thermal solution parameters: type ''',inputname(1),'.thermal'' to display'));
-			 disp(sprintf('%s%s%s','      Prognostic solution parameters: type ''',inputname(1),'.prognostic'' to display'));
-			 disp(sprintf('%s%s%s','      Transient solution parameters: type ''',inputname(1),'.transient'' to display'));
-			 disp(sprintf('%s%s%s','      Control solution parameters: type ''',inputname(1),'.control'' to display'));
-			 disp(sprintf('   Parallel:'));
-			 disp(sprintf('%s%s%s','      Parallel options: type ''',inputname(1),'.parallel'' to display'));
-			 disp(sprintf('   Results:'));
-			 disp(sprintf('%s%s%s','      Results: type ''',inputname(1),'.res'' to display'));
 		 end
 		 %}}}
Index: /issm/trunk/src/m/model/bamg.m
===================================================================
--- /issm/trunk/src/m/model/bamg.m	(revision 9731)
+++ /issm/trunk/src/m/model/bamg.m	(revision 9732)
@@ -328,4 +328,5 @@
 md.mesh.numberofelements=size(md.elements,1);
 md.mesh.numberofvertices=length(md.x);
+md.mesh.numberofedges=size(md.edges,1);
 md.z=zeros(md.mesh.numberofvertices,1);
 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9731)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9732)
@@ -8,6 +8,13 @@
 modelconsistency(true);
 
-%Always check mesh
+%General consistency checks
 md.mesh.checkconsistency(md);
+
+%Solution dependent checks
+%FLAIM {{{1
+switch(md.private.solution),
+	case FlaimSolutionEnum, md.flaim.checkconsistency(md);
+end
+%}}}
 
 %error message if mode is not consistent
Index: /issm/trunk/src/m/model/mesh/meshconvert.m
===================================================================
--- /issm/trunk/src/m/model/mesh/meshconvert.m	(revision 9731)
+++ /issm/trunk/src/m/model/mesh/meshconvert.m	(revision 9732)
@@ -39,4 +39,5 @@
 md.mesh.numberofelements=size(md.elements,1);
 md.mesh.numberofvertices=length(md.x);
+md.mesh.numberofedges=size(md.edges,1);
 md.z=zeros(md.mesh.numberofvertices,1);
 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1);
