def checkEvents(self, maxevtpts, eventActive, eventDir, eventTerm, eventInt, eventDelay, eventTol, maxbisect, eventNearCoef): if not self.initBasic: raise InitError('You must initialize the integrator before ' + \ 'checking events. (initBasic)') verify_nonneg('maxevtpts', maxevtpts, _all_int) list_len_val = (self.nEvents, 'nEvents') verify_intbool('eventActive', eventActive, list_ok=True, list_len=list_len_val) verify_values('eventDir', eventDir, [-1, 0, 1], list_ok=True, list_len=list_len_val) verify_intbool('eventTerm', eventTerm, list_ok=True, list_len=list_len_val) verify_nonneg('eventInt', eventInt, _real_types, list_ok=True, list_len=list_len_val) verify_nonneg('eventDelay', eventDelay, _real_types, list_ok=True, list_len=(self.nEvents, 'nEvents')) verify_pos('eventTol', eventTol, _real_types, list_ok=True, list_len=list_len_val) verify_nonneg('maxbisect', maxbisect, _all_int, list_ok=True, list_len=list_len_val) verify_pos('eventNearCoef', eventNearCoef, _real_types)
def checkBasic(self, rhs, phaseDim, paramDim, nAux, nEvents, nExtInputs, hasJac, hasJacP, hasMass, extraSpace): # Check that inputs to this function are correct try: if not isinstance(rhs, str): raise TypeError("right hand side rhs must be a string") verify_nonneg('phaseDim', phaseDim, _all_int) verify_nonneg('paramDim', paramDim, _all_int) verify_intbool('hasJac', hasJac) verify_intbool('hasJacP', hasJacP) verify_intbool('hasMass', hasMass) verify_nonneg('nAux', nAux, _all_int) verify_nonneg('nEvents', nEvents, _all_int) verify_nonneg('nExtInputs', nExtInputs, _all_int) verify_nonneg('extraSpace', extraSpace, _all_int) except: print sys.exc_info()[0], sys.exc_info()[1] raise InitError('Integrator initialization failed!')
def checkRunParams(self, ic, params, t0, tend, gt0, refine, specTimes, bounds): if not self.initBasic: raise InitError('You must initialize the integrator before checking run params. (initBasic)') if not isinstance(ic, list): raise TypeError("ic must be list") if len(ic) != self.phaseDim: print "IC length %i didn't match phaseDim %i"%(len(ic), self.phaseDim), ic raise ValueError('ic must have length equal to phaseDim') for x in ic: if not isinstance(x, _real_types): raise TypeError("ic entries must be real values") if not isinstance(params, list): raise TypeError("params must be list") if len(params) != self.paramDim: raise ValueError("params must have length equal to phaseDim") if len(params) > 0: for x in params: if not isinstance(x, _real_types): raise TypeError("params entries must be real values") verify_nonneg('refine', refine, _all_int) if not isinstance(t0, _real_types): raise TypeError("t0 must be real valued") if not isinstance(tend, _real_types): raise TypeError("tend must be real valued") if t0 == tend: raise ValueError("t0 must differ from tend") if t0 < tend: direction = 1 else: direction = -1 try: specTimes = list(specTimes) except: raise TypeError("specTimes must be a sequence type") if len(specTimes) > 0: if not isinstance(specTimes[0], _real_types): raise TypeError("specTimes entries must be real valued") if direction == 1: if specTimes[0] < t0 or specTimes[0] > tend: raise ValueError("specTimes entries must be within [%.8f,%.8f]"%(t0,tend)) else: if specTimes[0] > t0 or specTimes[0] < tend: raise ValueError("specTimes entries must be within [%.8f,%.8f]"%(tend,t0)) if len(specTimes) > 1: for x in range(len(specTimes)-1): if not isinstance(specTimes[x], _real_types): raise TypeError("specTimes entries must be real valued") if direction == 1: if specTimes[x] < t0 or specTimes[x] > tend: raise ValueError("specTimes entries must be within [%.8f,%.8f]"%(t0,tend)) if specTimes[x] > specTimes[x+1]: raise ValueError("specTimes must be non-decreasing") else: if specTimes[x] > t0 or specTimes[x] < tend: raise ValueError("specTimes entries must be within [%.8f,%.8f]"%(tend,t0)) if specTimes[x] < specTimes[x+1]: raise ValueError("specTimes must be non-increasing") # Check the parameter, phase space bounds if not isinstance(bounds, list): raise TypeError("bounds must be list") if bounds != []: if len(bounds) != 2: raise TypeError("non-empty bounds must be a 2-list") for i in range(2): if type(bounds[i]) is not list: raise TypeError("non-empty bounds must be a 2-list") if len(bounds[i]) != self.phaseDim + self.paramDim: raise ValueError("bounds have incorrect size") for j in range(self.phaseDim + self.paramDim): if not isinstance(bounds[i][j], _real_types): raise TypeError("bounds entries must be real valued")