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)
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()