def testdsgsat(self): self.L.load('steam/dsgsat3.a4c') T = self.L.findType('dsgsat3') M = T.getSimulation('sim',False) M.run(T.getMethod('on_load')) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) self.assertAlmostEqual(M.dTw_dt[2],0.0); M.run(T.getMethod('configure_dynamic')) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) return M
def testvary(self): self.L.load('steam/dsgsat3.a4c') T = self.L.findType('dsgsat3') M = T.getSimulation('sim',False) M.run(T.getMethod('on_load')) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) print "----- setting qdot_s -----" M.qdot_s.setRealValueWithUnits(1000,"W/m") M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) print "----- setting qdot_s -----" M.qdot_s.setRealValueWithUnits(2000,"W/m") M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter())
def test1(self): ascpy.getCompiler().setBinaryCompilation(True) self.L.load('johnpye/testlog10.a4c') T = self.L.findType('testlog10') M = T.getSimulation('sim',1) M.build() M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter())
def test2(self): self.L.load('test/slvreq/test1.a4c') R = ascpy.SolverReporter() class SolverHooksPython(ascpy.SolverHooks): def __init__(self): print "PYTHON SOLVER HOOKS" ascpy.SolverHooks.__init__(self,None) def setSolver(self,solvername,sim): sim.setSolver(ascpy.Solver(solvername)) print "PYTHON: SOLVER is now %s" % sim.getSolver().getName() return 0 def setOption(self,optionname,val,sim): try: PP = sim.getParameters() except Exception,e: print "PYTHON ERROR: ",str(e) return ascpy.SLVREQ_OPTIONS_UNAVAILABLE try: for P in PP: if P.getName()==optionname: try: P.setValueValue(val) sim.setParameters(PP) print "PYTHON: SET",optionname,"to",repr(val) return 0 except Exception,e: print "PYTHON ERROR: ",str(e) return ascpy.SLVREQ_WRONG_OPTION_VALUE_TYPE return ascpy.SLVREQ_INVALID_OPTION_NAME except Exception,e: print "PYTHON ERROR: ",str(e) return ascpy.SLVREQ_INVALID_OPTION_NAME
def teststeadyida(self): M = self.testdsgsat() self.assertAlmostEqual(M.dTw_dt[2],0.0) Tw1 = float(M.T_w[2]) T = self.L.findType('dsgsat3') M.run(T.getMethod('free_states')) I = ascpy.Integrator(M) I.setEngine('IDA') I.setParameter('linsolver','DENSE') I.setParameter('safeeval',True) I.setParameter('rtol',1e-4) I.setParameter('atolvect',False) I.setParameter('atol',1e-4) I.setParameter('maxord',3) I.setInitialSubStep(0.001) I.setReporter(ascpy.IntegratorReporterConsole(I)) I.setLinearTimesteps(ascpy.Units("s"), 0, 3600, 10) I.analyse() I.solve() self.assertAlmostEqual(float(M.T_w[2]),Tw1) M.qdot_s.setRealValueWithUnits(1000,"W/m") self.assertAlmostEqual(M.qdot_s.to("W/m"),1000) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) print "dTw/dt = %f" % M.dTw_dt[2] self.assertNotAlmostEqual(M.dTw_dt[2],0.0) F=file('dsgsat.dot','w') M.write(F,'dot')
def test1(self): self.L.load('test/slvreq/test1.a4c') H = ascpy.SolverHooks(ascpy.SolverReporter()) ascpy.SolverHooksManager_Instance().setHooks(H) T = self.L.findType('test1') M = T.getSimulation('sim',0) print "\n\n\nRUNNING ON_LOAD EXPLICITLY NOW..." M.run(T.getMethod('on_load'))
def test1(self): self.L.load('sensitivity_test.a4c') T = self.L.findType('sensitivity_test') M = T.getSimulation('sim',0) M.run(T.getMethod('on_load')) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) M.run(T.getMethod('analyse')) M.run(T.getMethod('self_test'))
def doSolve(self, inst, sim): try: print "PYTHON: SOLVING", sim.getName(), "WITH", sim.getSolver( ).getName() sim.solve(sim.getSolver(), ascpy.SolverReporter()) except Exception, e: print "PYTHON ERROR:", str(e) return 3
def ipopt_tester(self,testname,hessian_approx='limited-memory',linear_solver='mumps'): self.L.load('test/ipopt/%s.a4c' % testname) T = self.L.findType(testname) M = T.getSimulation('sim') M.setSolver(ascpy.Solver("IPOPT")) M.setParameter('linear_solver',linear_solver) M.setParameter('hessian_approximation',hessian_approx) M.solve(ascpy.Solver("IPOPT"),ascpy.SolverReporter()) M.run(T.getMethod('self_test'))
def testsatuv(self): self.L.load('steam/iapwssat.a4c') T = self.L.findType('testiapwssatuv') M = T.getSimulation('sim',False) M.run(T.getMethod('on_load')) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) print "p = %f bar" % M.p.to('bar'); print "T = %f C" % (M.T.to('K') - 273.15); print "x = %f" % M.x; M.run(T.getMethod('self_test')) M.run(T.getMethod('values2')) # M.v.setRealValueWithUnits(1.0/450,"m^3/kg"); # M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) print "p = %f bar" % M.p.to('bar'); print "T = %f C" % (M.T.to('K') - 273.15); print "x = %f" % M.x; M.run(T.getMethod('self_test2'))
def testrelinclude(self): self.L.load('test/relinclude.a4c') T = self.L.findType('relinclude') M = T.getSimulation('sim',1) M.eq1.setIncluded(True) M.eq2.setIncluded(False) M.eq3.setIncluded(False) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) self.assertAlmostEqual( float(M.z), 2.0) M.eq1.setIncluded(False) M.eq2.setIncluded(True) M.eq3.setIncluded(False) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) self.assertAlmostEqual( float(M.z), 4.0) M.eq1.setIncluded(False) M.eq2.setIncluded(False) M.eq3.setIncluded(True) M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) self.assertAlmostEqual( float(M.z), 4.61043629206)
def testsonic(self): M = self._run('sonic',"CMSlv","sonic.a4c") assert(M.sonic_flow.getBoolValue()) # other side of boundary... M.D.setRealValueWithUnits(4.,"cm") T = self.L.findType('sonic') M.solve(ascpy.Solver('CMSlv'),ascpy.SolverReporter()) M.run(T.getMethod('self_test')) assert(not M.sonic_flow.getBoolValue())
def teststeadylsode(self): "test that steady conditions are stable with LSODE" M = self.testdsgsat() #M.qdot_s.setRealValueWithUnits(1000,"W/m") M.solve(ascpy.Solver('QRSlv'),ascpy.SolverReporter()) #M.setParameter(' I = ascpy.Integrator(M) I.setEngine('LSODE') I.setReporter(ascpy.IntegratorReporterConsole(I)) I.setLinearTimesteps(ascpy.Units("s"), 0, 3600, 10) I.analyse() I.solve()
def _run(self,modelname,solvername="QRSlv",filename=None,parameters={}): if filename==None: filename = 'johnpye/%s.a4c' % modelname self.L.load(filename) T = self.L.findType(modelname) M = T.getSimulation('sim',1) M.setSolver(ascpy.Solver(solvername)) for k,v in parameters.iteritems(): M.setParameter(k,v) M.solve(ascpy.Solver(solvername),ascpy.SolverReporter()) M.run(T.getMethod('self_test')) return M
def testlotka(self): self.L.load('test/dopri5/dopri5test.a4c') M = self.L.findType('dopri5test').getSimulation('sim') M.setSolver(ascpy.Solver("QRSlv")) M.solve(ascpy.Solver("QRSlv"),ascpy.SolverReporter()) I = ascpy.Integrator(M) I.setEngine('DOPRI5') I.setReporter(ascpy.IntegratorReporterConsole(I)) I.setLinearTimesteps(ascpy.Units("s"), 0, 200, 20) I.setParameter('rtol',1e-8) I.analyse() assert I.getNumVars()==1 I.solve()
def testaren(self): self.L.load('test/dopri5/aren.a4c') M = self.L.findType('aren').getSimulation('sim') M.setSolver(ascpy.Solver("QRSlv")) M.solve(ascpy.Solver("QRSlv"),ascpy.SolverReporter()) I = ascpy.Integrator(M) I.setEngine('DOPRI5') I.setReporter(ascpy.IntegratorReporterConsole(I)) #xend = 17.0652165601579625588917206249 I.setLinearTimesteps(ascpy.Units("s"), 0, 17.0652165601579625588917206249, 10) I.setParameter('rtol',1e-7) I.setParameter('atol',1e-7) I.setParameter('tolvect',False) I.setMinSubStep(0); I.setMaxSubStep(0); I.setInitialSubStep(0); I.analyse() I.solve() print "y[0] = %f" % float(M.y[0]) assert abs(float(M.y[0]) - 0.994) < 1e-5 assert abs(float(M.y[1]) - 0.0) < 1e-5
def testnewton(self): sys.stderr.write("STARTING TESTNEWTON\n") self.L.load('johnpye/newton.a4c') T = self.L.findType('newton') M = T.getSimulation('sim') M.solve(ascpy.Solver("QRSlv"),ascpy.SolverReporter()) I = ascpy.Integrator(M) I.setEngine('IDA') I.setParameter('linsolver','DENSE') I.setParameter('safeeval',True) I.setParameter('rtol',1e-8) I.setMaxSubStep(0.001) I.setMaxSubSteps(10000) I.setReporter(ascpy.IntegratorReporterConsole(I)) I.setLinearTimesteps(ascpy.Units("s"), 0, 2*float(M.v)/float(M.g), 2) I.analyse() I.solve() print "At end of simulation," print "x = %f" % M.x print "v = %f" % M.v M.run(T.getMethod('self_test'))
def run(self): ascendlock.acquire() try: L = ascpy.Library() L.clear() L.load(self.filepath) t = L.findType(self.modelname) testmethod = None for m in t.getMethods(): if m.getName() == TEST_METHOD_NAME: testmethod = m if not testmethod: raise RuntimeError("No method '" + TEST_METHOD_NAME + "' found") s = t.getSimulation('testsim') #s.check() s.build() print "LAUNCHING SOLVER...\n\n" r = ascpy.SolverReporter() s.solve(ascpy.Solver('QRSlv'), r) s.run(testmethod) except RuntimeError, e: print e
def test1(self): self.L.load('johnpye/datareader/testcsv.a4c') M = self.L.findType('testcsv').getSimulation('sim') M.solve(ascpy.Solver("QRSlv"),ascpy.SolverReporter())
#-------------------------------- print "\n\n\n\nINSTANTIATING TEST...\n\n\n" t = L.findType("extfntest") #t = L.findType("intfntest") sim = t.getSimulation("S") print "\n--------------------------\n" #-------------------------------- print "\n\n\n\nLISTING EXTERNAL METHODS...\n\n\n" print chr(27) + "[31;1mEXTERNAL METHODS (!):" + chr(27) + "[0m" ff = L.getExtMethods() for f in ff: fn = f.getName() fh = f.getHelp() if not fh: fh = '[no help]' else: mlre = re.compile("\\n") fh = re.sub(mlre, "\n ", fh) print chr(27) + "[31;1m" + fn + chr(27) + "[31;2m: " + fh + chr(27) + "[0m" #-------------------------------- print "\n\n\n\nBUILDING...\n\n\n" sim.build() sim.solve(ascpy.Solver('QRSlv'), ascpy.SolverReporter())
def test_compound2(self): self.L.load('johnpye/section.a4c') T = self.L.findType('compound_section_test2') M = T.getSimulation('sim') M.solve(ascpy.Solver("QRSlv"),ascpy.SolverReporter()) M.run(T.getMethod('self_test'))