Changeset 13395 for issm/trunk/src/m/classes/flowequation.py
- Timestamp:
- 09/19/12 09:32:34 (12 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk
- Property svn:ignore
-
old new 1 projects 1 2 autom4te.cache 2 3 aclocal.m4
-
- Property svn:mergeinfo changed
/issm/trunk-jpl merged: 12710-12871,12873-12877,12881-12896,12898-12900,12902-12916,12920-12935,12937-12945,12948-13100,13107-13110,13112-13116,13119-13393
- Property svn:ignore
-
issm/trunk/src
-
Property svn:mergeinfo
set to
/issm/branches/trunk-jpl-damage/src merged eligible /issm/trunk-jpl/src merged eligible
-
Property svn:mergeinfo
set to
-
issm/trunk/src/m/classes/flowequation.py
r12329 r13395 1 1 #module imports 2 import numpy 2 3 from fielddisplay import fielddisplay 4 from EnumDefinitions import * 5 from checkfield import * 6 from WriteData import * 3 7 4 class flowequation: 8 class flowequation(object): 9 """ 10 FLOWEQUATION class definition 11 12 Usage: 13 flowequation=flowequation(); 14 """ 15 5 16 #properties 6 17 def __init__(self): … … 9 20 self.ismacayealpattyn = 0; 10 21 self.ishutter = 0; 22 self.isl1l2 = 0; 11 23 self.isstokes = 0; 12 24 self.vertex_equation = float('NaN') … … 20 32 21 33 #}}} 22 def __repr__( obj):34 def __repr__(self): 23 35 # {{{ Display 24 36 string=' flow equation parameters:' 25 37 26 string="%s\n\n%s"%(string,fielddisplay(obj,'ismacayealpattyn','is the macayeal or pattyn approximation used ?')) 27 string="%s\n%s"%(string,fielddisplay(obj,'ishutter','is the shallow ice approximation used ?')) 28 string="%s\n%s"%(string,fielddisplay(obj,'isstokes','are the Full-Stokes equations used ?')) 29 string="%s\n%s"%(string,fielddisplay(obj,'vertex_equation','flow equation for each vertex')) 30 string="%s\n%s"%(string,fielddisplay(obj,'element_equation','flow equation for each element')) 31 string="%s\n%s"%(string,fielddisplay(obj,'bordermacayeal','vertices on MacAyeal''s border (for tiling)')) 32 string="%s\n%s"%(string,fielddisplay(obj,'borderpattyn','vertices on Pattyn''s border (for tiling)')) 33 string="%s\n%s"%(string,fielddisplay(obj,'borderstokes','vertices on Stokes'' border (for tiling)')) 38 string="%s\n\n%s"%(string,fielddisplay(self,'ismacayealpattyn','is the macayeal or pattyn approximation used ?')) 39 string="%s\n%s"%(string,fielddisplay(self,'ishutter','is the shallow ice approximation used ?')) 40 string="%s\n%s"%(string,fielddisplay(self,'isl1l2','are l1l2 equations used ?')) 41 string="%s\n%s"%(string,fielddisplay(self,'isstokes','are the Full-Stokes equations used ?')) 42 string="%s\n%s"%(string,fielddisplay(self,'vertex_equation','flow equation for each vertex')) 43 string="%s\n%s"%(string,fielddisplay(self,'element_equation','flow equation for each element')) 44 string="%s\n%s"%(string,fielddisplay(self,'bordermacayeal','vertices on MacAyeal''s border (for tiling)')) 45 string="%s\n%s"%(string,fielddisplay(self,'borderpattyn','vertices on Pattyn''s border (for tiling)')) 46 string="%s\n%s"%(string,fielddisplay(self,'borderstokes','vertices on Stokes'' border (for tiling)')) 34 47 return string 35 48 #}}} 36 49 37 def setdefaultparameters( obj):50 def setdefaultparameters(self): 38 51 # {{{setdefaultparameters 39 return obj52 return self 40 53 #}}} 41 54 55 def checkconsistency(self,md,solution,analyses): # {{{ 56 57 if DiagnosticHorizAnalysisEnum() in analyses: 58 md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0,1]) 59 md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0,1]) 60 md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0,1]) 61 md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0,1]) 62 md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices],'values',[0,1]) 63 md = checkfield(md,'flowequation.borderpattyn','size',[md.mesh.numberofvertices],'values',[0,1]) 64 md = checkfield(md,'flowequation.borderstokes','size',[md.mesh.numberofvertices],'values',[0,1]) 65 if md.mesh.dimension==2: 66 md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2]) 67 md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2]) 68 else: 69 md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',range(0,7+1)) 70 md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',range(0,7+1)) 71 if not (self.ismacayealpattyn or self.ishutter or self.isstokes or self.isl1l2): 72 md.checkmessage("no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1") 73 74 if DiagnosticHutterAnalysisEnum() in analyses: 75 if any(self.element_equation==1): 76 if numpy.any(numpy.logical_and(self.element_equation,md.mask.elementonfloatingice)): 77 print "\n !!! Warning: Hutter's model is not consistent on ice shelves !!!\n" 78 79 return md 80 # }}} 81 82 def marshall(self,fid): # {{{ 83 WriteData(fid,'object',self,'fieldname','ismacayealpattyn','format','Boolean') 84 WriteData(fid,'object',self,'fieldname','ishutter','format','Boolean') 85 WriteData(fid,'object',self,'fieldname','isl1l2','format','Boolean') 86 WriteData(fid,'object',self,'fieldname','isstokes','format','Boolean') 87 WriteData(fid,'object',self,'fieldname','bordermacayeal','format','DoubleMat','mattype',1) 88 WriteData(fid,'object',self,'fieldname','borderpattyn','format','DoubleMat','mattype',1) 89 WriteData(fid,'object',self,'fieldname','borderstokes','format','DoubleMat','mattype',1) 90 #convert approximations to enums 91 data=self.vertex_equation 92 data[numpy.nonzero(data==0)]=NoneApproximationEnum() 93 data[numpy.nonzero(data==1)]=HutterApproximationEnum() 94 data[numpy.nonzero(data==2)]=MacAyealApproximationEnum() 95 data[numpy.nonzero(data==3)]=PattynApproximationEnum() 96 data[numpy.nonzero(data==4)]=StokesApproximationEnum() 97 data[numpy.nonzero(data==5)]=MacAyealPattynApproximationEnum() 98 data[numpy.nonzero(data==6)]=MacAyealStokesApproximationEnum() 99 data[numpy.nonzero(data==7)]=PattynStokesApproximationEnum() 100 data[numpy.nonzero(data==8)]=L1L2ApproximationEnum() 101 WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1) 102 data=self.element_equation 103 data[numpy.nonzero(data==0)]=NoneApproximationEnum() 104 data[numpy.nonzero(data==1)]=HutterApproximationEnum() 105 data[numpy.nonzero(data==2)]=MacAyealApproximationEnum() 106 data[numpy.nonzero(data==3)]=PattynApproximationEnum() 107 data[numpy.nonzero(data==4)]=StokesApproximationEnum() 108 data[numpy.nonzero(data==5)]=MacAyealPattynApproximationEnum() 109 data[numpy.nonzero(data==6)]=MacAyealStokesApproximationEnum() 110 data[numpy.nonzero(data==7)]=PattynStokesApproximationEnum() 111 data[numpy.nonzero(data==8)]=L1L2ApproximationEnum() 112 WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2) 113 # }}} 114
Note:
See TracChangeset
for help on using the changeset viewer.