示例#1
0
def testSquare():

    ptlist = {
        "vertices": np.array(
            ((0.0, 0.0), (0.5, 0.0), (1.0, 0.0), (0.0, 0.5), (0.5, 0.5), (1.0, 0.5), (0.0, 1.0), (0.5, 1.0), (1.0, 1.0))
        )
    }
    t = triangle.triangulate(ptlist)
    t1 = triangle.triangulate(ptlist, "qa0.001")

    triangle.plot.compare(plt, t, t1)
    #    plt.show()

    L, M = FE.assembleMatrices(t)
    #    print L
    #    print '\n\n'
    #    print M

    np.savetxt("textL", L)
    np.savetxt("textM", M)

    eig = FE.eigenvalues(L, M)
    elist = eig[0]
    efunc = eig[1]
    print elist[0]
    print elist[1]
    print elist[2]

    #    vertices = np.asarray(t['vertices'])
    #    faces = np.asarray(t['triangles'])
    #    x = vertices[:,0]
    #    y = vertices[:,1]

    #    z = efunc[1]

    #    plt.figure()
    #    plt.tricontourf(x,y,faces,z,cmap='afmhot')
    #    plt.show()
    print "****************************"

    L, M = FE.assembleMatrices(t1)
    eig = FE.eigenvalues(L, M)
    elist = eig[0]
    efunc = eig[1]
    for j in range(10):
        print elist[j]

    vertices = np.asarray(t1["vertices"])
    faces = np.asarray(t1["triangles"])
    x = vertices[:, 0]
    y = vertices[:, 1]
    z = efunc[:, 5]

    plt.figure()
    plt.tricontourf(x, y, z, 100, cmap="afmhot")
    plt.show()

    print "***************************\n\n\n\n\n"
示例#2
0
def testFE():
    ptlist = {"vertices": np.array(((0, 0), (1, 0), (1, 1), (0, 1)))}
    triang = triangle.triangulate(ptlist)

    print triang
    print "\n\n"
    print triang["vertices"]
    print triang["triangles"]

    triangle.plot.compare(plt, ptlist, triang)
    plt.show()

    print "\n\nNow testing the FE assembly ..."

    L, M = FE.assembleMatrices(triang)

    elist = FE.eigenvalues(L, M)[0]
    elist.sort()

    print "eigenvalues:"

    for j in elist:
        print j

    triangle.plot.compare(plt, ptlist, triang)
    plt.show()

    triang = triangle.triangulate(triang, "rqa0.1")

    L, M = FE.assembleMatrices(triang)

    elist = FE.eigenvalues(L, M)[0]
    elist.sort()

    print "\n\neigenvalues:"

    for j in elist:
        print j

    triangle.plot.compare(plt, ptlist, triang)
    plt.show()

    triang = triangle.triangulate(triang, "rqa0.01")

    L, M = FE.assembleMatrices(triang)

    elist = FE.eigenvalues(L, M)[0]
    elist.sort()

    print "\n\neigenvalues:"

    for j in elist:
        print j

    triangle.plot.compare(plt, ptlist, triang)
    plt.show()
示例#3
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()
示例#4
0
def testSubdivide():

    g = Mesh()
    g.addVertex(0, 0)
    g.addVertex(1, 0)
    g.addVertex(0, 1)
    g.addFace(0, 1, 2)

    L, M = FE.assembleMatrices(g)

    # print L
    # print M

    elist = FE.eigenvalues(L, M)

    print "\n\n\n"
    # print elist

    g.plot()

    g.subdivide(0)

    L, M = FE.assembleMatrices(g)

    # print '\n\n'
    # print L
    # print M

    # print '\n\n'

    elist = FE.eigenvalues(L, M)

    # print '\n\n\n'
    # print elist

    # g.plot()

    # g.subdivide(0)

    # g.plot()

    # g.subdivide(0)

    # g.plot()

    # for k in range(10):
    #    j = np.random.choice( range(len(g.face_list)) )
    #    g.subdivide(j)

    g.subdivide_all()

    g.plot()

    g.subdivide_all()
    g.subdivide_all()

    g.plot()

    L, M = FE.assembleMatrices(g)

    elist = FE.eigenvalues(L, M)[0]
    elist.sort()

    print elist
示例#5
0
import FE
import triangle
import numpy as np
import matplotlib.pyplot as plt
from pylab import *

tri = {'vertices':np.array([[0.,0.],[1.,0.],[0.7,0.05]]),'triangles':np.array([[0,1,2]])}

tri_mesh = triangle.triangulate(tri,'qa0.000005')

print str(len(tri_mesh['vertices'])) + ' nodes'

L,M = FE.assembleMatrices(tri_mesh)
eig = FE.eigenvalues(L,M)
elist = eig[0]
efunc = eig[1]
for j in range(10):
	print elist[j]

fig = plt.figure()
vertices = np.asarray(tri_mesh['vertices'])
faces = np.asarray(tri_mesh['triangles'])
x = vertices[:,0]
y = vertices[:,1]
for j in range(5):
	z = efunc[:,j]
	plt.tricontourf(x,y,z,100,cmap='afmhot')
	axes().set_aspect('equal')
	plt.show()

示例#6
0
import triangle.plot as plot

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')