Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 7685)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 7686)
@@ -288,4 +288,16 @@
 %}}}
 
+%FLAIM {{{1
+if (md.solution_type == FlaimSolutionEnum),
+	if ~exist(md.fm_tracks,'file')
+		error(['model not consistent: fm_tracks file ''' md.fm_tracks ''' must exist.']);
+	end
+%   probably going to need some checks on fm_flightreqs here
+	if (numel(md.fm_criterion) ~= md.numberofgrids) && (numel(md.fm_criterion) ~= md.numberofelements)
+		error(['model not consistent: fm_criterion vector must have number of nodes (' int2str(md.numberofgrids) ') or elements (' int2str(md.numberofelements) ') values, not ' int2str(numel(md.fm_criterion)) ' values.']);
+	end
+end
+%}}}
+
 %Solution specific check
 %TRANSIENT {{{1
@@ -474,4 +486,8 @@
 			end
 			%}}}
+		case FlaimAnalysisEnum,
+			% {{{2
+			% No checks for now
+			%}}}
 		otherwise
 			disp(['WARNING: no check implemented for analysis ' EnumToString(analysis_enum) '!']);
Index: /issm/trunk/src/m/model/process_solve_options.m
===================================================================
--- /issm/trunk/src/m/model/process_solve_options.m	(revision 7685)
+++ /issm/trunk/src/m/model/process_solve_options.m	(revision 7686)
@@ -22,5 +22,5 @@
 if ~ismember(solution_type,[DiagnosticSolutionEnum,PrognosticSolutionEnum,ThermalSolutionEnum,...
 		SteadystateSolutionEnum,ParametersSolutionEnum,Transient2DSolutionEnum,Transient3DSolutionEnum...
-		BalancedthicknessSolutionEnum,BalancedvelocitiesSolutionEnum,BedSlopeSolutionEnum,SurfaceSlopeSolutionEnum,GroundingLineMigration2DSolutionEnum,HydrologySolutionEnum]),
+		BalancedthicknessSolutionEnum,BalancedvelocitiesSolutionEnum,BedSlopeSolutionEnum,SurfaceSlopeSolutionEnum,GroundingLineMigration2DSolutionEnum,HydrologySolutionEnum,FlaimSolutionEnum]),
 	error(['process_solve_options error message: solution_type ' EnumToString(solution_type) ' not supported yet!']);
 end
@@ -38,2 +38,11 @@
 outoptions.iparams=getfieldvalue(options,'iparams',1);
 outoptions.runmpi=getfieldvalue(options,'runmpi',false);
+
+%  process flaim arguments
+outoptions.fmdir=getfieldvalue(options,'fmdir',['fm' num2str(GetPId)]);
+outoptions.fmfile=getfieldvalue(options,'fmfile','fm_targets');
+outoptions.overwrite=getfieldvalue(options,'overwrite','n');
+outoptions.keep=getfieldvalue(options,'keep','y');
+outoptions.latsgn=getfieldvalue(options,'latsgn',0);
+outoptions.cmap=getfieldvalue(options,'cmap',[]);
+
Index: /issm/trunk/src/m/model/solve.m
===================================================================
--- /issm/trunk/src/m/model/solve.m	(revision 7685)
+++ /issm/trunk/src/m/model/solve.m	(revision 7686)
@@ -35,4 +35,11 @@
 assignin('base',inputname(1),md);
 
+%flaim analysis
+if (md.solution_type == FlaimSolutionEnum)
+	md=flaim(md,options);
+	md.solution_type=EnumToString(options.solution_type);
+	return;
+end
+
 %If running in parallel, we have a different way of launching the solution
 %sequences. 
