def eigenvalueSurvey(n): fn_list = [] ds = 0.0005 domain_list = [] for x in np.arange(0.45,0.55,ds): max_height = min( 1.0 - x**2, 1.0 - (x-1.0)**2 ) for y in np.arange(np.sqrt(3.)/2. - 0.05, np.sqrt(3.)/2. + 0.05, ds): domain_list.append( [x,y] ) for p in tqdm(domain_list): x = p[0] y = p[1] area = y/2.0 # define triangle T = triangleMesh(x,y,0.001) # get eigenvalues L,M = FE.assembleMatrices(T) eigvals = FE.sparseEigs(L,M,n)[0] for j in range(len(eigvals)): eigvals[j] = eigvals[j]*area current_tuple = [x,y]+list(eigvals) fn_list.append(current_tuple) f = open('eig.dat', 'w+') f.truncate() for j in range(len(fn_list)): s = '' for k in range(n+2): s = s + str(fn_list[j][k]) + ' ' s = s + '\n' f.write( s ) f.close()
dom = {'vertices':np.array([[0.,0.],[1.,0.],[1.,.49],[.9,.49],[.9,.1],[.1,.1],[.1,.9],[.9,.9],[.9,.51],[1.,.51],[1.,1.],[0.,1.]]),'triangles':np.array([[0,1,5],[0,5,6],[1,4,5],[1,4,2],[2,3,4],[0,6,11],[6,10,11],[6,7,10],[7,8,9],[7,9,10]])}#,'segments':np.array([[0,1],[1,2],[2,3],[3,4],[4,5],[5,6],[6,7],[7,8],[8,9],[9,10],[10,11]])} print len(dom['vertices']) print dom['triangles'] mesh = triangle.triangulate(dom,'pqa0.05') print mesh ax1 = plt.subplot(111,aspect='equal') plot.plot(ax1, **mesh) plt.show() L,M = FE.assembleMatrices(mesh) evals,efunc = FE.sparseEigs(L,M) fig = plt.figure() vertices = np.asarray(mesh['vertices']) faces = np.asarray(mesh['triangles']) x = vertices[:,0] y = vertices[:,1] #for j in range(1,5): # z = efunc[:,j] # plt.tricontourf(x,y,z,0,cmap='afmhot') # axes().set_aspect('equal') # plt.show() #z = efunc[:,11] #plt.tricontourf(x,y,z,0,cmap='afmhot') #axes().set_aspect('equal')