示例#1
0
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()
示例#2
0
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')