fig, ax = plt.subplots() clf = ax.pcolor(x, y, np.abs(err), vmin=1e-5, norm=mpl.colors.LogNorm()) plt.plot(new_ebdy.bdy.x, ebdy.bdy.y, color='red') plt.colorbar(clf) print('On grid: {:0.1e}'.format(merr)) # assess error in position err_bx = np.abs(bxe - ebdy.bdy.x) err_by = np.abs(bye - ebdy.bdy.y) err_b = max(err_bx.max(), err_by.max()) print('Boundary motion is: {:0.1e}'.format(err_b)) # assess on radial grid (via NUFFT of eulerian solution) cr = ebdy.interpolate_grid_to_radial(c_eulerian) err_r = np.abs(cr - c.radial_value_list[0]) merr_r = err_r.max() print('On radial grid: {:0.1e}'.format(merr_r)) # plot the errors properly... cerr = EmbeddedFunction(ebdyc) cerr.load_data(err, [ err_r, ]) fig, ax = plt.subplots() cerr.plot(ax, vmin=1e-5, norm=mpl.colors.LogNorm())
# c_new.grid_value[new_ebdyc.phys_not_in_annulus] = ch[:gp.N] # # set the radial values # c_new.radial_value_list[0][:] = ch[gp.N:].reshape(ebdy.radial_shape) # bb = c_new.radial_value_list[0][-1].copy() # visualize fc3n if False: fig, ax = plt.subplots() is_fc3 = EmbeddedFunction(new_ebdyc) is_fc3_grid = np.zeros(x.shape, dtype=bool) is_fc3_grid[new_ebdyc.phys] = fc3[:gp.N] is_fc3_radial = fc3[gp.N:].reshape(new_ebdy.radial_shape) is_fc3.load_data(is_fc3_grid, [ is_fc3_radial, ]) clf = is_fc3.plot(ax) for bb, col in zip([new_ebdyc, ebdyc, ebdyc_old], ['red', 'pink', 'gray']): bbb = bb.ebdys[0].bdy ax.plot(bbb.x, bbb.y, color=col) ax.scatter(new_ebdyc.ebdys[0].radial_x, new_ebdyc.ebdys[0].radial_y, color='white') # now reset naming conventions try: ebdy_old_save = ebdy_old ebdyc_old_save = ebdyc_old c_old_save = c_old except: pass
# set the radial values c_new.radial_value_list[0][:] = ch[gp.N:].reshape(ebdy.radial_shape) # merge the grid and the radial values where they overlap new_ebdyc.merge_grids(c_new) # overwrite under grid under annulus by radial grid # _ = new_ebdyc.interpolate_radial_to_grid(c_new.radial_value_list, c_new.grid_value) # visualize fc3n if False: fig, ax = plt.subplots() is_fc3 = EmbeddedFunction(new_ebdyc) is_fc3_grid = np.zeros(x.shape, dtype=bool) is_fc3_grid[new_ebdyc.phys] = fc3[:gp.N] is_fc3_radial = fc3[gp.N:].reshape(new_ebdy.radial_shape) is_fc3.load_data(is_fc3_grid, [is_fc3_radial,]) clf = is_fc3.plot(ax) for bb, col in zip([new_ebdyc, ebdyc], ['red', 'pink', 'gray']): bbb = bb.ebdys[0].bdy ax.plot(bbb.x, bbb.y, color=col) ax.scatter(new_ebdyc.ebdys[0].radial_x, new_ebdyc.ebdys[0].radial_y, color='white') # now reset naming conventions old_ebdy = ebdy old_ebdyc = ebdyc ebdy = new_ebdy ebdyc = new_ebdyc c = c_new # assess error on underlying grid err = (np.abs(c.grid_value - ce)*ebdyc.phys).max()