Index: /issm/trunk-jpl/src/m/partition/AreaAverageOntoPartition.py
===================================================================
--- /issm/trunk-jpl/src/m/partition/AreaAverageOntoPartition.py	(revision 23462)
+++ /issm/trunk-jpl/src/m/partition/AreaAverageOntoPartition.py	(revision 23463)
@@ -1,3 +1,4 @@
 import numpy as np
+import copy
 
 def AreaAverageOntoPartition(md,vector,layer=None):
@@ -11,10 +12,10 @@
 '''
 	#some checks
-	if len(np.shape(md.mesh)) == 3:
+	if(md.mesh.dimension()==3):
 		if layer == None:
 			raise RuntimeError('AreaAverageOntoPartition: layer should be provided onto which Area Averaging occurs')
-		
+
 		#save 3D model
-		md3d = md
+		md3d = copy.deepcopy(md)
 
 		md.mesh.elements = md.mesh.elements2d
@@ -35,24 +36,26 @@
 
 	#ok, first check that part is Matlab indexed
-	#part = md.qmu.partition
+	part = (md.qmu.partition).copy()
+	part = part.flatten() + 1
 
 	#some check: 
-	if md.qmu.numberofpartitions != max(md.qmu.partition):
+	if md.qmu.numberofpartitions != max(part):
 		raise RuntimeError('AreaAverageOntoPartition error message: ''npart'' should be equal to max(md.qmu.partition)')
 
 
 	#initialize output
-	partvector = np.zeros((max(md.qmu.partition),))
+	partvector = np.zeros((max(part)))
 
 	#start weight average
 	weightedvector = vector*md.qmu.vertex_weight
-	for i in range(max(md.qmu.partition)):
-		pos=np.where(md.qmu.partition==i)
+	for i in range(max(part)):
+		pos=np.where((part-1)==i)
 		partvector[i]=sum(weightedvector[pos])/sum(md.qmu.vertex_weight[pos])
 
 
 	#in 3D, restore 3D model:
-	if len(np.shape(md.mesh)) == 3:
-		md = md3d
+	if(md.mesh.dimension()==3):
+		md = copy.deepcopy(md3d)
+
 
 	return partvector
