from pairoptions import pairoptions
import MatlabFuncs as m
from WriteData import WriteData
[docs]class verbose(object):
"""
VERBOSE class definition
Available verbosity levels:
mprocessor : model processing
module : modules
solution : solution sequence
solver : solver info (extensive)
convergence : convergence criteria
control : control method
qmu : sensitivity analysis
autodiff : AD analysis
smb : SMB analysis
Usage:
verbose=verbose();
verbose=verbose(3);
verbose=verbose('001100');
verbose=verbose('module',True,'solver',False);
WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
Do not modify these sections. See src/c/shared/Numerics/README for more info
"""
def __init__(self,*args): # {{{
#BEGINFIELDS
self.mprocessor = False
self.module = False
self.solution = False
self.solver = False
self.convergence = False
self.control = False
self.qmu = False
self.autodiff = False
self.smb = False
#ENDFIELDS
if not len(args):
#Don't do anything
self.solution=True;
self.qmu=True;
self.control=True;
pass
elif len(args) == 1:
binary=args[0]
if isinstance(binary,(str,unicode)):
if binary.lower()=='all':
binary=2**11-1 #all ones
self.BinaryToVerbose(binary)
self.solver=False #Do not use by default
else:
binary=int(binary,2)
self.BinaryToVerbose(binary)
elif isinstance(binary,(int,long,float)):
self.BinaryToVerbose(int(binary))
else:
#Use options to initialize object
self=pairoptions(*args).AssignObjectFields(self)
#Cast to logicals
listproperties=vars(self)
for fieldname,fieldvalue in listproperties.iteritems():
if isinstance(fieldvalue,bool) or isinstance(fieldvalue,(int,long,float)):
setattr(self,fieldname,bool(fieldvalue))
else:
raise TypeError("verbose supported field values are logicals only (True or False)")
# }}}
def __repr__(self): # {{{
#BEGINDISP
s ="class '%s' = \n" % type(self)
s+=" %15s : %s\n" % ('mprocessor',self.mprocessor)
s+=" %15s : %s\n" % ('module',self.module)
s+=" %15s : %s\n" % ('solution',self.solution)
s+=" %15s : %s\n" % ('solver',self.solver)
s+=" %15s : %s\n" % ('convergence',self.convergence)
s+=" %15s : %s\n" % ('control',self.control)
s+=" %15s : %s\n" % ('qmu',self.qmu)
s+=" %15s : %s\n" % ('autodiff',self.autodiff)
s+=" %15s : %s\n" % ('smb',self.smb)
#ENDDISP
return s
# }}}
[docs] def VerboseToBinary(self): # {{{
#BEGINVERB2BIN
binary=0
if self.mprocessor:
binary=binary | 1
if self.module:
binary=binary | 2
if self.solution:
binary=binary | 4
if self.solver:
binary=binary | 8
if self.convergence:
binary=binary | 16
if self.control:
binary=binary | 32
if self.qmu:
binary=binary | 64
if self.autodiff:
binary=binary | 128
if self.smb:
binary=binary | 256
#ENDVERB2BIN
return binary
# }}}
[docs] def BinaryToVerbose(self,binary): # {{{
#BEGINBIN2VERB
self.mprocessor =bool(binary & 1)
self.module =bool(binary & 2)
self.solution =bool(binary & 4)
self.solver =bool(binary & 8)
self.convergence=bool(binary & 16)
self.control =bool(binary & 32)
self.qmu =bool(binary & 64)
self.autodiff =bool(binary & 128)
self.smb =bool(binary & 256)
#ENDBIN2VERB
# }}}
[docs] def checkconsistency(self,md,solution,analyses): # {{{
return md
# }}}
[docs] def marshall(self,prefix,md,fid): # {{{
WriteData(fid,prefix,'data',self.VerboseToBinary(),'name','md.verbose','format','Integer')
# }}}