[1409] | 1 | import sys |
---|
| 2 | from os import sep |
---|
| 3 | sys.path.append('..'+sep+'pyvolution') |
---|
| 4 | from mg2ga import * |
---|
| 5 | # open file |
---|
| 6 | f=open('test_3l_2cc.out', 'r') |
---|
| 7 | print f |
---|
| 8 | # read in nodes and triangles |
---|
| 9 | [nodes, triangles, triangles_per_proc] = mg2ga(f) |
---|
| 10 | f.close |
---|
| 11 | # find whole mesh on host |
---|
| 12 | mesh = Mesh(nodes, triangles) |
---|
| 13 | # find sub domains (i.e. full triangles) |
---|
| 14 | submesh = [] |
---|
| 15 | tlower = 0 |
---|
| 16 | nproc = len(triangles_per_proc) |
---|
| 17 | nnodes = len(nodes) |
---|
| 18 | # loop over processors |
---|
| 19 | for p in range(nproc): |
---|
| 20 | # find triangles on processor p |
---|
| 21 | tupper = triangles_per_proc[p]+tlower |
---|
| 22 | subtriangles = triangles[tlower:tupper] |
---|
| 23 | # find nodes in processor p |
---|
| 24 | nodemap = map(lambda n: 0, nodes) |
---|
| 25 | for t in subtriangles: |
---|
| 26 | nodemap[t[0]]=1 |
---|
| 27 | nodemap[t[1]]=1 |
---|
| 28 | nodemap[t[2]]=1 |
---|
| 29 | subnodes = [] |
---|
| 30 | for i in range(nnodes): |
---|
| 31 | if nodemap[i] == 1: |
---|
| 32 | subnodes.append([i,nodes[i][0],nodes[i][1]]) |
---|
| 33 | # renumber nodes (have to change to store local/global map) |
---|
| 34 | [GAnodes, GAtriangles] = restructure(subnodes, subtriangles) |
---|
| 35 | # build GA data structure (maybe not needed, maybe can just remember |
---|
| 36 | # GAnodes, GAtriangles and build mesh on processors) |
---|
| 37 | submesh.append(Mesh(GAnodes, GAtriangles)) |
---|
| 38 | tlower = tupper |
---|
| 39 | # check results |
---|
| 40 | #write a data file for use by scilab script |
---|
| 41 | #START160505 VISUALISE MESH IN SCILAB |
---|
| 42 | #write triangles as (x0,y0,x1,y1,x2,y2,processor), for use in a scilab visualisation script. |
---|
| 43 | fp=open("visualise_mesh","w"); |
---|
| 44 | tlower=0 |
---|
| 45 | for p in range(len(triangles_per_proc)): |
---|
| 46 | nodes=submesh[p].coordinates |
---|
| 47 | triangles=submesh[p].triangles |
---|
| 48 | for t in range(shape(triangles)[0]): |
---|
| 49 | x=[] |
---|
| 50 | y=[] |
---|
| 51 | string=repr(t)+ ' ' |
---|
| 52 | for i in range(3): |
---|
| 53 | x.append(nodes[triangles[t][i]][0]) |
---|
| 54 | y.append(nodes[triangles[t][i]][1]) |
---|
| 55 | string=string+repr(x[i])+' '+repr(y[i])+' ' |
---|
| 56 | string=string+repr(p)+'\n' |
---|
| 57 | fp.write(string) |
---|
| 58 | if ((x[1]-x[0])*(y[2]-y[0])-(x[2]-x[0])*(y[1]-y[0])<=0): |
---|
| 59 | string='Error: Triangle '+repr(t)+' on processor '+repr(p)+' is oriented clockwise or degenerate' |
---|
| 60 | print(string) |
---|
| 61 | fp.close() |
---|
| 62 | #END160505 VISUALISE MESH IN SCILAB |
---|
| 63 | mesh |
---|
| 64 | mesh.vertex_coordinates |
---|
| 65 | mesh.triangles |
---|
| 66 | submesh |
---|