shape = mtf.shape A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) xr = np.random.rand(shape[0]) checker('A2 = J', A2, J, x) checker('exterior Proj.', Ce2, Ce, x) checker('interior Proj.', Ci2, Ci, x) checker('error-Calderon with random [no-sense]', A, J, x) ################################################# ################################################# def dir_data(x, normal, dom_ind, result): result[0] = -np.exp( 1j * kRef * x[1]) def neu_data(x, normal, dom_ind, result): result[0] = -1j * normal[1] * kRef * np.exp( 1j * kRef * x[1]) ################################################# #################################################
shape = mtf.shape A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) xr = np.random.rand(shape[0]) checker('A2 = J', A2, J, x) checker('exterior Proj.', Ce2, Ce, x) checker('interior Proj.', Ci2, Ci, x) checker('error-Calderon with random [no-sense]', A, J, x) def dir_data(x, normal, dom_ind, result): result[0] = -np.exp(1j * kRef * x[1]) def neu_data(x, normal, dom_ind, result): result[0] = -1j * normal[1] * kRef * np.exp(1j * kRef * x[1]) b = mtf.rhs(dir_data, neu_data) M = A - X
Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) b = mtf.rhs(dir_data, neu_data) M = A - X print('') print(nlambda, mtf.shape, flush=True) print('') checker('A2 = J', A2, J, x) checker('exterior Proj.', Ce2, Ce, x) checker('interior Proj.', Ci2, Ci, x) checker('error-Calderon with random [no-sense]', A, J, x) print('') print('MTF classic', M.shape) print('') xx, niter, res, tt = my_gmres("\nGmres restart={0} maxiter={1}", M, b, tol, restart, maxiter) ecald = checker('Calderon ', A, J, xx) etrans = checker('Transmission ', J, X, xx, b) Ecald.append(ecald)
shape = mtf.shape A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) xr = np.random.rand(shape[0]) checker("A2 = J", A2, J, x) checker("exterior Proj.", Ce2, Ce, x) checker("interior Proj.", Ci2, Ci, x) checker("error-Calderon with random [no-sense]", A, J, x) def dir_data(x, normal, dom_ind, result): result[0] = -np.exp(1j * kRef * x[1]) def neu_data(x, normal, dom_ind, result): result[0] = -1j * normal[1] * kRef * np.exp(1j * kRef * x[1]) b = mtf.rhs(dir_data, neu_data) M = A - X
A2 = A * iJ * A print('') print(mtf.shape, flush=True) print('') Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) xr = np.random.rand(shape[0]) checker('A2 = J', A2, J, x) checker('exterior Proj.', Ce2, Ce, x) checker('interior Proj.', Ci2, Ci, x) checker('error-Calderon with random [no-sense]', A, J, x) ################################################# ################################################# def dir_data(x, normal, dom_ind, result): result[0] = -np.exp(1j * kRef * x[0]) def neu_data(x, normal, dom_ind, result): result[0] = -1j * normal[0] * kRef * np.exp(1j * kRef * x[0])
shape = mtf.shape A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) xr = np.random.rand(shape[0]) checker('A2 = J', A2, J, x) checker('exterior Proj.', Ce2, Ce, x) checker('interior Proj.', Ci2, Ci, x) checker('error-Calderon with random [no-sense]', A, J, x) def dir_data(x, normal, dom_ind, result): result[0] = -np.exp( 1j * kRef * x[1]) def neu_data(x, normal, dom_ind, result): result[0] = -1j * normal[1] * kRef * np.exp( 1j * kRef * x[1]) b = mtf.rhs(dir_data, neu_data) M = A - X print('') print(mtf.shape, flush=True)
res = [] tt = time() xx, info = gmres(M, b, orthog='mgs', tol=tol, residuals=res, restrt=restart, maxiter=maxiter) tt = time() - tt print(info, len(res)) oResWO = np.array(res) ResWO = rescaleRes(oResWO, lambda x: x, b) print('#time: {}'.format(tt)) checker('Calderon WO', A, J, xx) ################################################# print('\nMass restart={0} maxiter={1}'.format(restart, maxiter), flush=True) del res res = [] tt = time() xx, info = gmres(M, b, M=iJ, orthog='mgs', tol=tol, residuals=res, restrt=restart, maxiter=maxiter)
print('') print(mtf.shape, flush=True) print('') Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce Ci2 = Ci * iJ * Ci x = np.random.rand(shape[0]) + 1j * np.random.rand(shape[0]) xr = np.random.rand(shape[0]) checker('A2 = J', A2, J, x) checker('exterior Proj.', Ce2, Ce, x) checker('interior Proj.', Ci2, Ci, x) checker('error-Calderon with random [no-sense]', A, J, x) ################################################# ################################################# def dir_data(x, normal, dom_ind, result): result[0] = -np.exp( 1j * kRef * x[0]) def neu_data(x, normal, dom_ind, result): result[0] = -1j * normal[0] * kRef * np.exp( 1j * kRef * x[0]) ################################################# #################################################
del res res = [] tt = time() xx, info = gmres(M, b, orthog='mgs', tol=tol, residuals=res, restrt=restart, maxiter=maxiter) tt = time() - tt print(info, len(res)) oResWO = np.array(res) ResWO = rescaleRes(oResWO, lambda x: x, b) print('#time: {}'.format(tt)) checker('Calderon WO', A, J, xx) ################################################# print('\nMass restart={0} maxiter={1}'.format(restart, maxiter), flush=True) del res res = [] tt = time() xx, info = gmres(M, b, M = iJ, orthog='mgs', tol=tol, residuals=res, restrt=restart, maxiter=maxiter) tt = time() - tt
del res res = [] tt = time() xx, info = gmres(M, b, orthog='mgs', tol=tol, residuals=res, restrt=restart, maxiter=maxiter) tt = time() - tt print(info, len(res)) oResWO = np.array(res) ResWO = rescaleRes(oResWO, lambda x: x, b) print('#time: {}'.format(tt)) checker('Calderon WO', A, J, xx) ################################################# print('\nJac restart={0} maxiter={1}'.format(restart, maxiter), flush=True) del res res = [] tt = time() xx, info = gmres(M, b, M = Pjac, orthog='mgs', tol=tol, residuals=res, restrt=restart, maxiter=maxiter) tt = time() - tt