Index: /issm/trunk/src/m/classes/@model/model.m
===================================================================
--- /issm/trunk/src/m/classes/@model/model.m	(revision 5070)
+++ /issm/trunk/src/m/classes/@model/model.m	(revision 5071)
@@ -45,4 +45,5 @@
 	md.elements2d=NaN;
 	md.elements_type2d=NaN;
+	md.vertices_type2d=NaN;
 	md.x2d=NaN;
 	md.y2d=NaN;
Index: /issm/trunk/src/m/classes/public/extrude.m
===================================================================
--- /issm/trunk/src/m/classes/public/extrude.m	(revision 5070)
+++ /issm/trunk/src/m/classes/public/extrude.m	(revision 5071)
@@ -119,4 +119,5 @@
 md.elements2d=md.elements;
 md.elements_type2d=md.elements_type;
+md.vertices_type2d=md.vertices_type;
 md.numberofelements2d=md.numberofelements;
 md.numberofgrids2d=md.numberofgrids;
@@ -187,4 +188,12 @@
 	md.deadgrids(md.elements(md.elements_type(:,1)~=MacAyealFormulationEnum,:))=0;%non macayeal grids are not dead
 	md.deadgrids(find(md.gridonbed))=0;%grids from elements on bed are not dead
+end
+
+%verticestype
+if ~isnan(md.vertices_type)
+	oldvertices_type=md.vertices_type2d;
+	md.vertices_type=zeros(number_grids3d,2);
+	md.vertices_type(:,1)=project3d(md,oldvertices_type(:,1),'node');
+	md.vertices_type(:,2)=project3d(md,oldvertices_type(:,2),'node');
 end
 
Index: /issm/trunk/src/m/classes/public/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 5070)
+++ /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 5071)
@@ -59,4 +59,19 @@
 %Check the values of elements_type(1)
 checkvalues(md,{'elements_type(:,1)'},[MacAyealFormulationEnum() HutterFormulationEnum() PattynFormulationEnum()]);
+%Check the values of elements_type(2)
+checkvalues(md,{'elements_type(:,2)'},[StokesFormulationEnum() NoneFormulationEnum()]);
+if (md.dim==2),
+	checkvalues(md,{'elements_type(:,1)'},[MacAyealFormulationEnum() HutterFormulationEnum()]);
+end
+if (md.ismacayealpattyn==0 && md.ishutter==0 && md.isstokes==0),
+	error(['model not consistent: no elements type set for this model. at least one of ismacayealpattyn, ishutter and isstokes need to be =1']);
+end
+%}}}
+%VERTICESTYPE{{{1
+%Check the size of verticess_type
+fields={'vertices_type'};
+checksize(md,fields,[md.numberofgrids 2]);
+%Check the values of elements_type(1)
+checkvalues(md,{'elements_type(:,1)'},[MacAyealFormulationEnum() HutterFormulationEnum() PattynFormulationEnum() MacAyealPattynFormulationEnum()]);
 %Check the values of elements_type(2)
 checkvalues(md,{'elements_type(:,2)'},[StokesFormulationEnum() NoneFormulationEnum()]);
Index: /issm/trunk/src/m/classes/public/setelementstype.m
===================================================================
--- /issm/trunk/src/m/classes/public/setelementstype.m	(revision 5070)
+++ /issm/trunk/src/m/classes/public/setelementstype.m	(revision 5071)
@@ -98,4 +98,21 @@
 md.elements_type(find(~stokesflag),2)=NoneFormulationEnum();
 
+%Create vertices_type
+md.vertices_type=zeros(md.numberofgrids,2);
+pos=find(gridonhutter);
+md.vertices_type(pos,1)=HutterFormulationEnum();
+pos=find(gridonmacayeal);
+md.vertices_type(pos,1)=MacAyealFormulationEnum();
+pos=find(gridonpattyn);
+md.vertices_type(pos,1)=PattynFormulationEnum();
+pos=find(gridonhutter);
+md.vertices_type(pos,1)=HutterFormulationEnum();
+pos=find(gridonpattyn & gridonmacayeal);
+md.vertices_type(pos,1)=MacAyealPattynFormulationEnum();
+pos=find(gridonstokes);
+md.vertices_type(pos,2)=StokesFormulationEnum();
+pos=find(~gridonstokes);
+md.vertices_type(pos,2)=NoneFormulationEnum();
+
 %Create the border grids between Pattyn and MacAyeal and extrude them
 numgrids2d=md.numberofgrids2d;
