Source code for issm.independent

import numpy as np
from issm.pairoptions import pairoptions
from issm.fielddisplay import fielddisplay
from issm.checkfield import checkfield
from issm.MatlabFuncs import *

[docs]class independent(object): """ INDEPENDENT class definition Usage: independent=independent(); """ def __init__(self,*args): # {{{ self.name = '' self.type = '' self.fos_forward_index = float('NaN') self.fov_forward_indices = np.array([]) self.nods = 0 #set defaults self.setdefaultparameters() #use provided options to change fields options=pairoptions(*args) #OK get other fields self=options.AssignObjectFields(self) # }}} def __repr__(self): # {{{ s =" independent variable:\n" s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding String)") s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')") if not np.isnan(self.fos_forward_index): s+="%s\n" % fielddisplay(self,'fos_forward_index',"index for fos_foward driver of ADOLC") if np.any(np.logical_not(np.isnan(self.fov_forward_indices))): s+="%s\n" % fielddisplay(self,'fov_forward_indices',"indices for fov_foward driver of ADOLC") return s # }}}
[docs] def setdefaultparameters(self): # {{{ #do nothing return self
# }}}
[docs] def checkconsistency(self,md,i,solution,analyses,driver): # {{{ if not np.isnan(self.fos_forward_index): if not strcmpi(driver,'fos_forward'): raise TypeError("cannot declare an independent with a fos_forward_index when the driver is not fos_forward!") if self.nods==0: raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable") if len(self.fov_forward_indices) > 0: if not strcmpi(driver,'fov_forward'): raise TypeError("cannot declare an independent with fov_forward_indices when the driver is not fov_forward!") if self.nods==0: raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable") md = checkfield(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods) return md
# }}}
[docs] def typetoscalar(self): # {{{ if strcmpi(self.type,'scalar'): scalar=0 elif strcmpi(self.type,'vertex'): scalar=1 return scalar
# }}}