Index: /issm/trunk-jpl/src/m/classes/qmu.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu.m	(revision 22068)
+++ /issm/trunk-jpl/src/m/classes/qmu.m	(revision 22069)
@@ -65,6 +65,6 @@
 			end
 			if ~isempty(md.qmu.partition),
-				if numel(md.qmu.partition)~=md.mesh.numberofvertices,
-					md = checkmessage(md,['user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1 ']);
+				if numel(md.qmu.partition)~=md.mesh.numberofvertices & numel(md.qmu.partition)~=md.mesh.numberofelements,
+					md = checkmessage(md,['user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1 or md.mesh.numberofelements x 1']);
 				end
 				if min(md.qmu.partition)~=0,
Index: /issm/trunk-jpl/src/m/modules/MeshPartition.m
===================================================================
--- /issm/trunk-jpl/src/m/modules/MeshPartition.m	(revision 22068)
+++ /issm/trunk-jpl/src/m/modules/MeshPartition.m	(revision 22069)
@@ -1,3 +1,3 @@
-function [element_partitioning, node_partitioning] = MeshPartition(md.mesh,numpartitions);
+function [element_partitioning, node_partitioning] = MeshPartition(md,numpartitions)
 %MESHPARTITION - Partition mesh according to the number of areas, using Metis library.
 %
Index: /issm/trunk-jpl/src/m/partition/partitioner.m
===================================================================
--- /issm/trunk-jpl/src/m/partition/partitioner.m	(revision 22068)
+++ /issm/trunk-jpl/src/m/partition/partitioner.m	(revision 22069)
@@ -90,9 +90,14 @@
 elseif strcmpi(package,'linear'),
 
-	part=1:1:md.mesh.numberofvertices;
+	if npart==md.mesh.numberofelements | md.qmu.numberofpartitions==md.mesh.numberofelements
+		part=1:1:md.mesh.numberofelements;
+		disp('Linear partitioner requesting partitions on elements');
+	else
+		part=1:1:md.mesh.numberofvertices;
+	end
 
 elseif strcmpi(package,'metis'),
 
-	[element_partitioning,part]=MeshPartition(md.mesh,md.qmu.numberofpartitions);
+	[element_partitioning,part]=MeshPartition(md,md.qmu.numberofpartitions);
 
 else
Index: /issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 22068)
+++ /issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 22069)
@@ -56,5 +56,5 @@
 		FetchData(&numberoflayers,mxGetAssignedField(MESH,0,"numberoflayers"));
 	}
-	else if(strcmp(mxGetClassName(MESH),"mesh2dhorizontal")==0){
+	else if(strcmp(mxGetClassName(MESH),"mesh2d")==0){
 		meshelementtype = TriaEnum;
 		numberoflayers=1;
