Source code for issm.massfluxatgate

from issm.fielddisplay import fielddisplay
from issm.pairoptions import pairoptions
from issm.checkfield import checkfield
from issm.WriteData import WriteData
from issm.MeshProfileIntersection import MeshProfileIntersection
import os

[docs]class massfluxatgate(object): """ MASSFLUXATEGATE class definition Usage: massfluxatgate=massfluxatgate('GateName','PathToExpFile') """ def __init__(self,*args): # {{{ self.name = '' self.definitionstring = '' self.profilename = '' self.segments = float('NaN') #set defaults self.setdefaultparameters() #use provided options to change fields options=pairoptions(*args) #OK get other fields self=options.AssignObjectFields(self) #}}} def __repr__(self): # {{{ string=" Massfluxatgate:" string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this massfluxatgate response')) string="%s\n%s"%(string,fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from Outputdefinition[1-10]')) string="%s\n%s"%(string,fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)')) return string #}}}
[docs] def setdefaultparameters(self): # {{{ return self
#}}}
[docs] def checkconsistency(self,md,solution,analyses): # {{{ if not isinstance(self.name, basestring): raise RuntimeError("massfluxatgate error message: 'name' field should be a string!") if not isinstance(self.profilename, basestring): raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!") md = checkfield(md,'field',self.definitionstring,'values',['Outputdefinition1','Outputdefinition2','Outputdefinition3','Outputdefinition4','Outputdefinition5','Outputdefinition6','Outputdefinition7','Outputdefinition8','Outputdefinition9','Outputdefinition10']) #check the profilename points to a file!: if not os.path.isfile(self.profilename): raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!") return md
# }}}
[docs] def marshall(self,prefix,md,fid): # {{{ #before marshalling, we need to create the segments out of the profilename: self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename)[0] #ok, marshall name and segments: WriteData(fid,prefix,'data',self.name,'name','md.massfluxatgate.name','format','String'); WriteData(fid,prefix,'data',self.definitionstring,'name','md.massfluxatgate.definitionstring','format','String'); WriteData(fid,prefix,'data',self.segments,'name','md.massfluxatgate.segments','format','DoubleMat','mattype',1);
# }}}