'union': [-1, -2, -3], }, { 'name': 'A', 'phys': 2, 'union': 1, }, { 'name': 'B', 'phys': 4, 'union': 2, }, { 'name': 'C', 'phys': 16, 'union': 3, }] mtf = MultiTrace(kRef, meshname, dd, 'CSC') At, X, J, iJ = mtf.tolinop() 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])
}, { 'name': 'T', 'union': 2, 'phys': 9., }, { 'name': 'F', 'union': 3, 'phys': 16., }, ] doms = Domains(dd) doms.write2dot() mtf = MultiTrace(kRef, meshname, doms) At, X, J, iJ = mtf.tolinop() shape = mtf.shape A = 2.0 * At A2 = A * iJ * A print('') print(mtf.shape, flush=True) print('') Ce = 0.5 * J - At Ci = 0.5 * J + At
doms = merge_msh_bubbles(dgens) myd = Domains(doms) myd.write2dot('graph.dot') call(['dot', '-Teps', 'graph.dot'], stdout=open('graph.eps', 'wb')) dd = myd print(N) ################################## meshname = "./geo/all.msh" mtf = MultiTrace(kRef, meshname, dd) At, X, J, iJ = mtf.tolinop() 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])
from assemb import MultiTrace, checker from time import time import scipy.linalg as la meshname = "./geo/sphere-disjoint.msh" kRef = 0.1 * np.pi dd = [{ 'name': '0', 'phys': 1, 'union': [-1, -2, -3], }, { 'name': 'A', 'phys': 2, 'union': 1, }, { 'name': 'B', 'phys': 4, 'union': 2, }, { 'name': 'C', 'phys': 16, 'union': 3, }] mtf = MultiTrace(kRef, meshname, dd) mtf.collecting()
'phys': 2, 'union': 1, } # }, # { 'name': 'B', # 'phys': 1, # 'union': 2, # } # }, # { 'name': 'C', # 'phys': 4, # 'union': 3, # } ] mtf = MultiTrace(kRef, meshname, dd) Aw = mtf.A_weak_form() At, X, J, iJ = mtf.tolinop() 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
nEl2, nEnl2 = [], [] nEL2, nEnL2 = [], [] for nlambda in nlambdas: print('\n') print('##################') print('\n') geoconf['nlambda'] = nlambda cmds = write_params_geo(geoconf) system("gmsh geo/sphere-disjoint.script.geo -") H.append(ll / nlambda) mtf = MultiTrace(geoconf['kRef'], 'geo/'+geoconf['meshname'], dd) Aw = mtf.A_weak_form() At, X, J, iJ = mtf.tolinop() shape = mtf.shape size, _ = shape Size.append(size) A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At
from time import time import scipy.linalg as la meshname = "./geo/sphere-disjoint.msh" kRef = 0.1 * np.pi dd = [ { 'name': '0', 'phys': 1, 'union': [-1, -2, -3], }, { 'name': 'A', 'phys': 2, 'union': 1, }, { 'name': 'B', 'phys': 4, 'union': 2, }, { 'name': 'C', 'phys': 16, 'union': 3, } ] mtf = MultiTrace(kRef, meshname, dd) mtf.collecting()
'union': [-1, -2, -3], }, { 'name': 'A', 'phys': 2, 'union': 1, }, { 'name': 'B', 'phys': 4, 'union': 2, }, { 'name': 'C', 'phys': 16, 'union': 3, }] mtf = MultiTrace(kRef, meshname, dd, J_is='CSC') #jmtf = MultiTrace(1j * kRef, meshname, dd) At, X, J, iJ = mtf.tolinop() #jAt, jX, jJ, jiJ = jmtf.tolinop() shape = mtf.shape #jshape = jmtf.shape A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce
'phys': 4, 'union': 2, }, { 'name': 'C', 'phys': 16, 'union': 3, } ] 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]) mtf = MultiTrace(kRef, meshname, dd, J_is='CSC') b = mtf.rhs(dir_data, neu_data) At, X, J, iJ = mtf.tolinop() 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
{ 'name': 'A', 'phys': 2, 'union': 1, }, { 'name': 'B', 'phys': 4, 'union': 2, }, { 'name': 'C', 'phys': 16, 'union': 3, } ] mtf = MultiTrace(kRef, meshname, dd, J_is='CSC') #jmtf = MultiTrace(1j * kRef, meshname, dd) At, X, J, iJ = mtf.tolinop() #jAt, jX, jJ, jiJ = jmtf.tolinop() shape = mtf.shape #jshape = jmtf.shape A = 2.0 * At A2 = A * iJ * A Ce = 0.5 * J - At Ci = 0.5 * J + At Ce2 = Ce * iJ * Ce