Index: /issm/trunk-jpl/src/m/classes/maskpsl.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/maskpsl.py	(revision 20278)
+++ /issm/trunk-jpl/src/m/classes/maskpsl.py	(revision 20279)
@@ -1,6 +1,6 @@
-from MatlabFuncs import *
+import numpy
+import MatlabFuncs as m
 from model import *
 from EnumDefinitions import *
-from numpy import *
 from fielddisplay import fielddisplay
 from checkfield import checkfield
@@ -13,8 +13,8 @@
 #      maskpsl=maskpsl();
 	def __init__(self,*args): # {{{
-		self.groundedice_levelset = NaN
-		self.ice_levelset         = NaN
-		self.ocean_levelset = NaN
-		self.land_levelset = NaN
+		self.groundedice_levelset = float('NaN')
+		self.ice_levelset         = float('NaN')
+		self.ocean_levelset = float('NaN')
+		self.land_levelset = float('NaN')
 		
 		if not len(args):
@@ -57,7 +57,8 @@
 		if max(md.mask.ice_levelset)<0:
 			print('no ice front provided')
-
-		icefront=sum(md.mask.ice_levelset[md.mesh.elements.astype(int)-1]==0,axis=1)
-		if (amax(icefront)==3 & strcmp(md.mesh.elementtype(),'Tria')) or (amax(icefront==6) & strcmp(md.mesh.elementtype(),'Penta')):
+		
+		elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
+		icefront=numpy.sum(md.mask.ice_levelset[elements]==0,axis=1)
+		if (max(icefront)==3 & m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) & m.strcmp(md.mesh.elementtype(),'Penta')):
 			raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
 		
@@ -78,5 +79,4 @@
 		return self
 	# }}}
-	
 	def marshall(self,md,fid): # {{{
 		WriteData(fid,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
@@ -87,7 +87,9 @@
 		# get mask of vertices of elements with ice
 		isice=md.mask.ice_levelset<=0.
-		vlist = zeros(md.mesh.numberofvertices,1)
-		pos=find(sum(isice(md.mesh.elements),2)>0)
-		vlist[md.mesh.elements[pos,:]]=1
+		vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
+		
+		elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
+		pos=numpy.nonzero(numpy.sum(isice[elements],axis=1))[0]
+		vlist[elements[pos,:]-1]=1
 		WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1)
 
