source: issm/trunk-jpl/src/m/classes/mask.py@ 25449

Last change on this file since 25449 was 25449, checked in by bdef, 5 years ago

BUG:fix of bad Python translation

File size: 2.7 KB
RevLine 
[21303]1import numpy as np
[24896]2
3from checkfield import checkfield
[12038]4from fielddisplay import fielddisplay
[19048]5from project3d import project3d
[17497]6from WriteData import WriteData
[12038]7
[24213]8
[12958]9class mask(object):
[24896]10 '''
[24213]11 MASK class definition
[12958]12
[24896]13 Usage:
14 mask = mask()
15 '''
[25449]16 def __init__(self): # {{{
[24213]17 self.ice_levelset = float('NaN')
[24861]18 self.ocean_levelset = float('NaN')
[12123]19
[24896]20 #set defaults
[24213]21 self.setdefaultparameters()
[24896]22 # }}}
[25449]23
24 def __repr__(self): # {{{
[24213]25 string = " masks:"
[12949]26
[24867]27 string = "%s\n%s" % (string, fielddisplay(self, "ocean_levelset", "presence of ocean if < 0, coastline/grounding line if = 0, no ocean if > 0"))
[24213]28 string = "%s\n%s" % (string, fielddisplay(self, "ice_levelset", "presence of ice if < 0, icefront position if = 0, no ice if > 0"))
29 return string
[24896]30 # }}}
[25449]31
32 def setdefaultparameters(self): # {{{
[24896]33 return self
34 # }}}
[25449]35
36 def extrude(self, md): # {{{
37 self.ice_levelset = project3d(md, 'vector', self.ice_levelset, 'type', 'node')
[24861]38 self.ocean_levelset = project3d(md, 'vector', self.ocean_levelset, 'type', 'node')
[24896]39
[24213]40 return self
[24896]41 # }}}
[25449]42
43 def mask(self, *args): # {{{
44 if len(args) == 0:
[24896]45 self.setdefaultparameters()
46 else:
47 raise RuntimeError("constructor not supported")
48
[24213]49 return self
[24896]50 # }}}
[25449]51
52 def oceanset(self, *args): # {{{
53 if len(args) == 2:
[24896]54 ocean = args[0]
55 index = args[1]
56 self.ocean_levelset[index] = -ocean
[25449]57 elif len(args) == 1:
[24896]58 ocean = args[0]
59 self.ocean_levelset = -ocean
60 else:
61 raise RuntimeError("oceanset error message: not supported yet")
62
63 return self
64 # }}}
[25449]65
66 def iceset(self, *args): # {{{
67 if len(args) == 2:
[24896]68 ice = args[0]
69 index = args[1]
70 self.ice_levelset[index] = -ice
[25449]71 elif len(args) == 1:
[24902]72 ice = args[0]
[25449]73 self.ocean_levelset = -ice
[24896]74 else:
75 raise RuntimeError("iceset error message: not supported yet")
76
77 return self
78 # }}}
[25449]79
80 def checkconsistency(self, md, solution, analyses): # {{{
[24896]81 if solution == 'LoveSolution':
[24213]82 return
83
84 md = checkfield(md, 'fieldname', 'mask.ice_levelset', 'size', [md.mesh.numberofvertices])
85 isice = np.array(md.mask.ice_levelset <= 0, int)
86 if np.sum(isice) == 0:
87 raise TypeError("no ice present in the domain")
88
89 return md
90 # }}}
[25449]91
92 def marshall(self, prefix, md, fid): # {{{
[24861]93 WriteData(fid, prefix, 'object', self, 'fieldname', 'ocean_levelset', 'format', 'DoubleMat', 'mattype', 1)
[24213]94 WriteData(fid, prefix, 'object', self, 'fieldname', 'ice_levelset', 'format', 'DoubleMat', 'mattype', 1)
95 # }}}
Note: See TracBrowser for help on using the repository browser.