iv = 0 for jy in range(my): igy = jigy[jy] for jx in range(mx): igx = jigx[jx] ig = igx + igy*ngx cvode.denGETRS(P[ig], mp, pivot[ig], z.ptrto(iv)) iv += mp return 0 c = cvode.NVector([0]*NEQ) rewt = cvode.NVector([0]*NEQ) wdata = WebData() for i in range(NGRP): wdata.P[i] = cvode.denalloc(NS,NS) wdata.pivot[i] = cvode.denallocpiv(NS) wdata.rewt = rewt.data InitUserData(wdata) ns = wdata.ns mxns = wdata.mxns PrintIntro() for jpre in range(cvode.PREC_LEFT, cvode.PREC_RIGHT+1): for gstype in range(cvode.MODIFIED_GS,cvode.CLASSICAL_GS+1): t = cvode.realtype(T0) CInit(c, wdata) PrintHeader(jpre, gstype) firstrun = (jpre == cvode.PREC_LEFT and gstype == cvode.MODIFIED_GS)
z[:] = r for jx in range(MX): for jy in range(MY): cvode.denGETRS(data.P[jx][jy], NUM_SPECIES, data.pivot[jx][jy], z.ptrto(jx*NUM_SPECIES + jy*NSMX)) return 0 u = cvode.NVector([0.0]*(NEQ)) #Allocate and initialise user data t = cvode.realtype(0) data = UserData() for jx in range(MX): for jy in range(MY): data.P[jx][jy] = cvode.denalloc(NUM_SPECIES, NUM_SPECIES) data.Jbd[jx][jy] = cvode.denalloc(NUM_SPECIES, NUM_SPECIES) data.pivot[jx][jy] = cvode.denallocpiv(NUM_SPECIES) data.om = PI/HALFDAY data.dx = (XMAX-XMIN)/(MX-1) data.dy = (YMAX-YMIN)/(MY-1) data.hdco = KH/(data.dx**2) data.haco = VEL/(2.0*data.dx) data.vdco = (1.0/(data.dy**2))*KV0 pdata = ctypes.pointer(data) SetInitialProfiles(u, data.dx, data.dy) abstol= cvode.realtype(1.0e-5*100) reltol= cvode.realtype(1.0e-5)