Daniel,

Attached is the script that my grad student made to create a simple 2-D quadralateral mesh file you asked for. We did not use a gmsh directly as I was unable to quickly figure out how to use it to make a uniform quadralateral mesh.

Andy
----------------------
Andrew Reeve
Dept. of Earth Science
University of Maine

On Tue, 20 Nov 2007, Daniel Wheeler wrote:


Andrew,

I added your patch to trunk. Send along the gmsh script and I'll put a
test case too.

Cheers
##Create new file to write to
newfile=open('MESH.msh','w')
#newfile=open('MESH.txt','w')

##Set mesh dimensions
cols=4
rows=3

##Node Number
nx=cols+1
ny=rows+1

##Write format to file
newfile.write('$MeshFormat')
newfile.write('\n')
newfile.write(' %4.1i'%2)
newfile.write(' %4.1i'%0)
newfile.write(' %4.1i'%8)
newfile.write('\n')
newfile.write('$EndMeshFormat')
newfile.write('\n')

##Write number of nodes to file
newfile.write('$Nodes')
newfile.write('\n')
nodes=nx*ny
newfile.write(' %4.1i'%nodes)
newfile.write('\n')

##Loop through nx/ny to assign node coordinates
n=1
for i in xrange(nx):
    for j in xrange(ny):
        newfile.write(' %4.1i'%n)
        newfile.write(' %4.1f'%i)
        newfile.write(' %4.1f'%j)
        newfile.write(' %4.1f'%0)
        newfile.write('\n')
        n=n+1
newfile.write('$EndNodes')
newfile.write('\n')

##Write number of elements to file
newfile.write('$Elements')
newfile.write('\n')
n=rows*cols##+n-1
newfile.write(' %4.1i'%n)
newfile.write('\n')

##Loop through nodes to create 1point node elements
count=1
#for i in xrange(1,nodes+1):
#    newfile.write(' %4.1i'%count)
#    newfile.write(' %4.1i'%15)
#    newfile.write(' %4.1i'%0)
#    newfile.write(' %4.1i'%i)
#    newfile.write('\n')
#    count=count+1  

##Loop through columns and rows to determine quad coordinates
for i in range(1,cols+1):
    for j in range(1,rows+1):
        element=count
        
        a=(i-1)*ny+j
        b=(i-1)*ny+j+1
        c=(i)*ny+j+1
        d=(i)*ny+j
        
        newfile.write(' %4.1i'%element)
        newfile.write(' %4.1i'%3)
        newfile.write(' %4.1i'%0)
        newfile.write(' %4.1i'%a)
        newfile.write(' %4.1i'%b)
        newfile.write(' %4.1i'%c)
        newfile.write(' %4.1i'%d)
        newfile.write('\n')
        
        count=count+1
newfile.write('$EndElements')
newfile.write('\n')

##Close write file
newfile.close()

print 'end'

Reply via email to