Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/flowequation.py
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/flowequation.py	(revision 13048)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/flowequation.py	(revision 13049)
@@ -19,6 +19,7 @@
 		
 		self.ismacayealpattyn     = 0;
 		self.ishutter             = 0;
+		self.isl1l2             = 0;
 		self.isstokes             = 0;
 		self.vertex_equation      = float('NaN')
 		self.element_equation     = float('NaN')
@@ -36,6 +37,7 @@
 
 		string="%s\n\n%s"%(string,fielddisplay(self,'ismacayealpattyn','is the macayeal or pattyn approximation used ?'))
 		string="%s\n%s"%(string,fielddisplay(self,'ishutter','is the shallow ice approximation used ?'))
+		string="%s\n%s"%(string,fielddisplay(self,'isl1l2','are l1l2 equations used ?'))
 		string="%s\n%s"%(string,fielddisplay(self,'isstokes','are the Full-Stokes equations used ?'))
 		string="%s\n%s"%(string,fielddisplay(self,'vertex_equation','flow equation for each vertex'))
 		string="%s\n%s"%(string,fielddisplay(self,'element_equation','flow equation for each element'))
@@ -55,6 +57,7 @@
 		if DiagnosticHorizAnalysisEnum() in analyses:
 			md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0,1])
+			md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices],'values',[0,1])
 			md = checkfield(md,'flowequation.borderpattyn','size',[md.mesh.numberofvertices],'values',[0,1])
@@ -65,12 +68,12 @@
 			else:
 				md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',range(0,7+1))
 				md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',range(0,7+1))
-			if not (md.flowequation.ismacayealpattyn or md.flowequation.ishutter or md.flowequation.isstokes):
+			if not (self.ismacayealpattyn or self.ishutter or self.isstokes or self.isl1l2):
 				md.checkmessage("no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1")
 
 		if DiagnosticHutterAnalysisEnum() in analyses:
-			if any(md.flowequation.element_equation==1):
-				if numpy.any(numpy.logical_and(md.flowequation.element_equation,md.mask.elementonfloatingice)):
+			if any(self.element_equation==1):
+				if numpy.any(numpy.logical_and(self.element_equation,md.mask.elementonfloatingice)):
 					print "\n !!! Warning: Hutter's model is not consistent on ice shelves !!!\n"
 
 		return md
@@ -79,6 +82,7 @@
 	def marshall(self,fid):    # {{{
 		WriteData(fid,'object',self,'fieldname','ismacayealpattyn','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','ishutter','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isl1l2','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isstokes','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','bordermacayeal','format','DoubleMat','mattype',1)
 		WriteData(fid,'object',self,'fieldname','borderpattyn','format','DoubleMat','mattype',1)
@@ -93,6 +97,7 @@
 		data[[i for i,item in enumerate(data) if item==5]]=MacAyealPattynApproximationEnum()
 		data[[i for i,item in enumerate(data) if item==6]]=MacAyealStokesApproximationEnum()
 		data[[i for i,item in enumerate(data) if item==7]]=PattynStokesApproximationEnum()
+		data[[i for i,item in enumerate(data) if item==8]]=L1L2ApproximationEnum()
 		WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1)
 		data=self.element_equation
 		data[[i for i,item in enumerate(data) if item==0]]=NoneApproximationEnum()
@@ -103,6 +108,7 @@
 		data[[i for i,item in enumerate(data) if item==5]]=MacAyealPattynApproximationEnum()
 		data[[i for i,item in enumerate(data) if item==6]]=MacAyealStokesApproximationEnum()
 		data[[i for i,item in enumerate(data) if item==7]]=PattynStokesApproximationEnum()
+		data[[i for i,item in enumerate(data) if item==8]]=L1L2ApproximationEnum()
 		WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2)
 	# }}}
 
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/flowequation.m
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/flowequation.m	(revision 13048)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/flowequation.m	(revision 13049)
@@ -7,6 +7,7 @@
 	properties (SetAccess=public) 
 		ismacayealpattyn     = 0;
 		ishutter             = 0;
+		isl1l2               = 0;
 		isstokes             = 0;
 		vertex_equation      = NaN;
 		element_equation     = NaN;
@@ -32,6 +33,7 @@
 
 				md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0 1]);
+				md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices 1],'values',[0 1]);
 				md = checkfield(md,'flowequation.borderpattyn','size',[md.mesh.numberofvertices 1],'values',[0 1]);
@@ -40,16 +42,16 @@
 					md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[1:2]);
 					md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1:2]);
 				else
-					md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:7]);
-					md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:7]);
+					md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:8]);
+					md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:8]);
 				end
-				if ~(md.flowequation.ismacayealpattyn || md.flowequation.ishutter || md.flowequation.isstokes),
+				if ~(obj.ismacayealpattyn || obj.ishutter || obj.isstokes || obj.isl1l2),
 					md = checkmessage(md,['no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1']);
 				end
 			end
 			if ismember(DiagnosticHutterAnalysisEnum(),analyses),
-				if any(md.flowequation.element_equation==1),
-					if(md.flowequation.element_equation & md.mask.elementonfloatingice),
+				if any(obj.element_equation==1),
+					if(obj.element_equation & md.mask.elementonfloatingice),
 						disp(sprintf('\n !!! Warning: Hutter''s model is not consistent on ice shelves !!!\n'));
 					end
 				end
@@ -61,6 +63,7 @@
 
 			fielddisplay(obj,'ismacayealpattyn','is the macayeal or pattyn approximation used ?');
 			fielddisplay(obj,'ishutter','is the shallow ice approximation used ?');
+			fielddisplay(obj,'isl1l2','is the l1l2 approximation used ?');
 			fielddisplay(obj,'isstokes','are the Full-Stokes equations used ?');
 			fielddisplay(obj,'vertex_equation','flow equation for each vertex');
 			fielddisplay(obj,'element_equation','flow equation for each element');
@@ -72,6 +75,7 @@
 		function marshall(obj,fid) % {{{
 			WriteData(fid,'object',obj,'fieldname','ismacayealpattyn','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','ishutter','format','Boolean');
+			WriteData(fid,'object',obj,'fieldname','isl1l2','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','isstokes','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','bordermacayeal','format','DoubleMat','mattype',1);
 			WriteData(fid,'object',obj,'fieldname','borderpattyn','format','DoubleMat','mattype',1);
@@ -86,6 +90,7 @@
 			pos=find(data==5); data(pos,end)=MacAyealPattynApproximationEnum();
 			pos=find(data==6); data(pos,end)=MacAyealStokesApproximationEnum();
 			pos=find(data==7); data(pos,end)=PattynStokesApproximationEnum();
+			pos=find(data==8); data(pos,end)=L1L2ApproximationEnum();
 			WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1);
 			data=obj.element_equation;
 			pos=find(data==0); data(pos,end)=NoneApproximationEnum();
@@ -96,6 +101,7 @@
 			pos=find(data==5); data(pos,end)=MacAyealPattynApproximationEnum();
 			pos=find(data==6); data(pos,end)=MacAyealStokesApproximationEnum();
 			pos=find(data==7); data(pos,end)=PattynStokesApproximationEnum();
+			pos=find(data==8); data(pos,end)=L1L2ApproximationEnum();
 			WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2);
 		end % }}}
 	end
