Changeset 20279


Ignore:
Timestamp:
03/01/16 20:15:44 (9 years ago)
Author:
Eric.Larour
Message:

CHG: fixed diverse issues with the new class in python.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/m/classes/maskpsl.py

    r20225 r20279  
    1 from MatlabFuncs import *
     1import numpy
     2import MatlabFuncs as m
    23from model import *
    34from EnumDefinitions import *
    4 from numpy import *
    55from fielddisplay import fielddisplay
    66from checkfield import checkfield
     
    1313#      maskpsl=maskpsl();
    1414        def __init__(self,*args): # {{{
    15                 self.groundedice_levelset = NaN
    16                 self.ice_levelset         = NaN
    17                 self.ocean_levelset = NaN
    18                 self.land_levelset = NaN
     15                self.groundedice_levelset = float('NaN')
     16                self.ice_levelset         = float('NaN')
     17                self.ocean_levelset = float('NaN')
     18                self.land_levelset = float('NaN')
    1919               
    2020                if not len(args):
     
    5757                if max(md.mask.ice_levelset)<0:
    5858                        print('no ice front provided')
    59 
    60                 icefront=sum(md.mask.ice_levelset[md.mesh.elements.astype(int)-1]==0,axis=1)
    61                 if (amax(icefront)==3 & strcmp(md.mesh.elementtype(),'Tria')) or (amax(icefront==6) & strcmp(md.mesh.elementtype(),'Penta')):
     59               
     60                elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
     61                icefront=numpy.sum(md.mask.ice_levelset[elements]==0,axis=1)
     62                if (max(icefront)==3 & m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) & m.strcmp(md.mesh.elementtype(),'Penta')):
    6263                        raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
    6364               
     
    7879                return self
    7980        # }}}
    80        
    8181        def marshall(self,md,fid): # {{{
    8282                WriteData(fid,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
     
    8787                # get mask of vertices of elements with ice
    8888                isice=md.mask.ice_levelset<=0.
    89                 vlist = zeros(md.mesh.numberofvertices,1)
    90                 pos=find(sum(isice(md.mesh.elements),2)>0)
    91                 vlist[md.mesh.elements[pos,:]]=1
     89                vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
     90               
     91                elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
     92                pos=numpy.nonzero(numpy.sum(isice[elements],axis=1))[0]
     93                vlist[elements[pos,:]-1]=1
    9294                WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1)
    9395
Note: See TracChangeset for help on using the changeset viewer.