bbox = [[-1, -1, -1], [1, 1, 1]] # save calling convention as distmesh 2D ms, el_pos = mesh.create(h0=0.15, bbox=bbox) no2xy = ms['node'] el2no = ms['element'] # report the status of the 2D mesh quality.stats(no2xy, el2no) """ 1. FEM forward simulations """ # setup EIT scan conditions el_dist, step = 7, 1 ex_mat = eit_scan_lines(16, el_dist) # calculate simulated data fwd = Forward(ms, el_pos) # in python, index start from 0 ex_line = ex_mat[1].ravel() # change alpha anomaly = [{'x': 0.40, 'y': 0.40, 'z': 0.0, 'd': 0.30, 'alpha': 100.0}] ms_test = mesh.set_alpha(ms, anomaly=anomaly, background=1.0) tri_perm = ms_test['alpha'] node_perm = pdeprtni(no2xy, el2no, np.real(tri_perm)) # solving once using fem f, _ = fwd.solve_once(ex_line, tri_perm) f = np.real(f) # mplot.tetplot(p, t, edge_color=(0.2, 0.2, 1.0, 1.0), alpha=0.01)
shading='flat', cmap=plt.cm.viridis) ax.set_title(r'$\Delta$ Conductivities') fig.colorbar(im) ax.axis('equal') fig.set_size_inches(6, 4) # fig.savefig('demo_bp_0.png', dpi=96) plt.show() """ 2. FEM forward simulations """ # setup EIT scan conditions # adjacent stimulation (el_dist=1), adjacent measures (step=1) el_dist, step = 1, 1 ex_mat = eit_scan_lines(16, el_dist) # calculate simulated data fwd = Forward(mesh_obj, el_pos) f0 = fwd.solve_eit(ex_mat, step=step, perm=mesh_obj['perm']) f1 = fwd.solve_eit(ex_mat, step=step, perm=mesh_new['perm']) """ 3. naive inverse solver using back-projection """ eit = bp.BP(mesh_obj, el_pos, ex_mat=ex_mat, step=1, parser='std') eit.setup(weight='none') ds = 192.0 * eit.solve(f1.v, f0.v) # plot fig = plt.figure() ax1 = fig.add_subplot(111) im = ax1.tripcolor(pts[:, 0], pts[:, 1], tri, ds, cmap=plt.cm.viridis) ax1.set_title(r'$\Delta$ Conductivities') ax1.axis('equal')