Example #1
0
nE = 5000
dt = 0.001
nsteps = 50
Mach = 0.3
Re = 10
HiRes = 1.

if not os.path.exists('fig'): os.mkdir('fig')
if not os.path.exists('data'): os.mkdir('data')

for iAdapt in range(10):
    print 'Adapt cycle {0}'.format(iAdapt)

    if iAdapt == 0:
        v, t, b = initMesh(geom, nE)
        solver = NavierStokes(v, t, b, Mach, Re, HiRes)
        solver.integrate(1E-8, solver.freeStream())
    else:
        xt0, W0 = solver.mesh.xt(), solver.soln
        v, t, b = adaptMesh(geom, v, t, b, nE, hessian)
        solver = NavierStokes(v, t, b, Mach, Re, HiRes)
        W0 = griddata(xt0, W0, solver.mesh.xt(), method='nearest')
        solver.integrate(1E-8, W0)

    solution = zeros([nsteps, solver.nt, 4])
    hessian = zeros([solver.nt, 2, 2])  # metric for next adaptation

    for istep, T in enumerate(arange(1, nsteps + 1) * dt):
        solver.integrate(T)
        solution[istep] = solver.soln.copy()
        hessian += solver.hessian()