def ConvergenceGMRes(params, outkeys, keyinteg): Inform.Display(params['nodes'], params['itera'], 'ConvergenceGMRes') bar = progressbar.ProgressBar(widgets=[progressbar.Bar(), ' (', progressbar.ETA(), ') ']) outnames = {key: DataOut( name = outkeys[key], method = 'gm', nd = params['nodes'], it = params['itera'], pic = params['picit']) for key in outkeys} type = 'lobatto' integrate = True bfield = False n = Stepsize() omdt = np.zeros(n.st) xpos = np.zeros([n.st, 3]) xvel = np.zeros([n.st, 3]) for u in range(n.st): step = params['tend']/n.step[u] p = Particle(params['nodes'], n.step[u]) gmres = gmres_sdc(dt = step, nodes = params['nodes'], kiter = params['itera'], pic = params['picit'], nsteps = int(n.step[u]), type=type, integrate=integrate) x_gm, v_gm, stats = gmres.run(bfield = bfield, outnames = outnames, params = params) xpos[u, :] = x_gm[:, int(n.step[u])] xvel[u, :] = v_gm[:, int(n.step[u])] omdt[u] = step*p.P.om_c Inform.storePositions(outnames['positions'].fullname, n.st, xpos, omdt) Inform.storeConverg(outnames['convergence'].fullname, n.st - 1, xpos, omdt)
def EnergyGMRes(params, outkeys, keyinteg, numsteps): Inform.Display(params['nodes'], params['itera'], 'EnergyGMRes') lastpnt = 0 bar = progressbar.ProgressBar( widgets=[progressbar.Bar(), ' (', progressbar.ETA(), ') ']) outnames = { key: DataOut(name=outkeys[key], method='gm', nd=params['nodes'], it=params['itera'], pic=params['picit']) for key in outkeys } type = 'lobatto' integrate = True bfield = False step = params['tend'] / numsteps p = Particle(params['nodes'], numsteps) gmres = gmres_sdc(dt=step, nodes=params['nodes'], kiter=params['itera'], pic=params['picit'], nsteps=numsteps, type=type, integrate=integrate) x_gm, v_gm, stats = gmres.run(bfield=bfield, outnames=outnames, params=params) Inform.storeEnergy(outnames['totalenergy'].fullname, numsteps, stats['energy_errors'])
def BrefGMRes(params, outkeys, keyinteg): Inform.Display(params['nodes'], params['itera'], 'BrefGMRes') bar = progressbar.ProgressBar(widgets=[progressbar.Bar(), ' (', progressbar.ETA(), ') ']) outnames = {key: DataOut( name = outkeys[key], method = 'gm', nd = params['nodes'], it = params['itera'], pic = params['picit']) for key in outkeys} type = 'lobatto' integrate = True bfield = True n = Stepsize() for u in range(n.st): step = params['tend']/n.step[u] p = Particle(params['nodes'], n.step[u]) gmres = gmres_sdc(dt = step, nodes = params['nodes'], kiter = params['itera'], pic = params['picit'], nsteps = int(n.step[u]), type=type, integrate=integrate) x_gm, v_gm, stats = gmres.run(bfield = bfield, outnames = outnames, params = params) p.RHSeval(params, outnames['deviation'].fullname, 'BrefGMRes')