Source code for issm.steadystate

import numpy as np
from fielddisplay import fielddisplay
from checkfield import checkfield
from WriteData import WriteData

[docs]class steadystate(object): """ STEADYSTATE class definition Usage: steadystate=steadystate(); """ def __init__(self): # {{{ self.reltol = 0 self.maxiter = 0 self.requested_outputs = [] #set defaults self.setdefaultparameters() #}}} def __repr__(self): # {{{ string=' steadystate solution parameters:' string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion')) string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of iterations')) string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional requested outputs')) return string #}}}
[docs] def defaultoutputs(self,md): # {{{ return md.stressbalance.defaultoutputs(md)+md.thermal.defaultoutputs(md)
#}}}
[docs] def setdefaultparameters(self): # {{{ #maximum of steady state iterations self.maxiter=100 #Relative tolerance for the steadystate convertgence self.reltol=0.01 #default output self.requested_outputs=['default'] return self
#}}}
[docs] def checkconsistency(self,md,solution,analyses): # {{{ #Early return if not solution=='SteadystateSolution': return md if not md.timestepping.time_step==0: md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.") if np.isnan(md.stressbalance.reltol): md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!") md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1) return md
# }}}
[docs] def marshall(self,prefix,md,fid): # {{{ WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double') WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer') #process requested outputs outputs = self.requested_outputs indices = [i for i, x in enumerate(outputs) if x == 'default'] if len(indices) > 0: outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:] outputs =outputscopy WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray')
# }}}