Exemplo n.º 1
0
print('Solving')
# get the real geometry
sp =  ebdy.bdy.speed     if interior else ebdy.interface.speed
cur = ebdy.bdy.curvature if interior else ebdy.interface.curvature
RAG = RealAnnularGeometry(sp, cur, AAG)
# convert (u,v) to (r,t)
fr, ft = ebdy.convert_uv_to_rt(fur, fvr)
lr, lt = ebdy.convert_uv_to_rt(lower_u, lower_v)
ur, ut = ebdy.convert_uv_to_rt(upper_u, upper_v)
re_radial, te_radial, pe_radial = solver.solve(RAG, fr, ft, lr, lt, ur, ut, verbose=False, tol=1e-12)
ur, vr = ebdy.convert_rt_to_uv(re_radial, te_radial)
U = np.hypot(ur, vr).max()
u = ur/U
v = vr/U
# get derivatives of the velocity field
ux, uy = ebdy.radial_grid_derivatives(u)
vx, vy = ebdy.radial_grid_derivatives(v)

# get a function c to test with
c_func = lambda x, y: np.exp(np.cos(x))*np.sin(y)
c = c_func(xr, yr)

################################################################################
# test advectors

dt = 0.01

### eulerian advector
st = time.time()
cx, cy = ebdy.radial_grid_derivatives(c)
cu1 = c - dt*(u*cx + v*cy)
Exemplo n.º 2
0
fe = ebdy.interpolate_grid_to_interface(f, order=5)
err = np.abs(fe-fr).max()
print('Error in grid --> interface interpolation: {:0.2e}'.format(err))

# Interpolation of a function from radial to grid
fr = test_func(ebdy.radial_x, ebdy.radial_y)
ft = ebdy.interpolate_radial_to_grid(fr)
fe = test_func(ebdy.grid_ia_x, ebdy.grid_ia_y)
err = np.abs(fe-ft).max()
print('Error in radial --> grid interpolation:    {:0.2e}'.format(err))

################################################################################
# Test derivatives

# radial gradient
frxe, frye = ebdy.radial_grid_derivatives(fr)
frxt = test_func_x(ebdy.radial_x, ebdy.radial_y)
fryt = test_func_y(ebdy.radial_x, ebdy.radial_y)
err_x = np.abs(frxt-frxe).max()
err_y = np.abs(fryt-frye).max()
err = max(err_x, err_y)
print('Error in radial grid differentiation:      {:0.2e}'.format(err))

# fourth order accurate gradient on whole domain
dx = lambda x: fd_x_4(x, grid.xh, periodic_fix=not interior)
dy = lambda x: fd_y_4(x, grid.yh, periodic_fix=not interior)
fxe, fye, fxre, fyre = ebdy.gradient(f, fr, dx, dy)
fxt = test_func_x(grid.xg, grid.yg)
fyt = test_func_y(grid.xg, grid.yg)
err_x = np.abs(fxt-fxe)[ebdy.phys].max()
err_y = np.abs(fyt-fye)[ebdy.phys].max()