Changeset 8501
- Timestamp:
- Aug 9, 2012, 11:20:54 AM (13 years ago)
- Location:
- trunk/anuga_core/source/anuga
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/anuga_core/source/anuga/abstract_2d_finite_volumes/general_mesh.py
r8500 r8501 512 512 vertex_coordinates = num.zeros((3*M, 2), num.float) 513 513 514 # k0 = self.triangles[:,0] 515 # k1 = self.triangles[:,1] 516 # k2 = self.triangles[:,2] 517 # 518 # vertex_coordinates[3*k0,:] = self.nodes[k0,:] 519 # vertex_coordinates[3*k1+1,:] = self.nodes[k1,:] 520 # vertex_coordinates[3*k2+2,:] = self.nodes[k2,:] 521 522 for i in range(M): 523 for j in range(3): 524 k = self.triangles[i,j] # Index of vertex j in triangle i 525 vertex_coordinates[3*i+j,:] = self.nodes[k] 514 k0 = self.triangles[:,0] 515 k1 = self.triangles[:,1] 516 k2 = self.triangles[:,2] 517 518 # I = num.arange(M,dtype=num.int) 519 # 520 # V0 = V[0:3*M:3, :] 521 # V1 = V[1:3*M:3, :] 522 # V2 = V[2:3*M:3, :] 523 524 vertex_coordinates[0:3*M:3,:] = self.nodes[k0,:] 525 vertex_coordinates[1:3*M:3,:] = self.nodes[k1,:] 526 vertex_coordinates[2:3*M:3,:] = self.nodes[k2,:] 527 528 # for i in range(M): 529 # for j in range(3): 530 # k = self.triangles[i,j] # Index of vertex j in triangle i 531 # vertex_coordinates[3*i+j,:] = self.nodes[k] 526 532 527 533 return vertex_coordinates … … 758 764 759 765 # Count number of triangles per node 760 number_of_triangles_per_node = num.zeros(self.number_of_nodes, 761 num.int) #array default# 762 for volume_id, triangle in enumerate(self.get_triangles()): 763 for vertex_id in triangle: 764 number_of_triangles_per_node[vertex_id] += 1 766 # number_of_triangles_per_node = num.zeros(self.number_of_nodes, 767 # num.int) #array default# 768 # for volume_id, triangle in enumerate(self.get_triangles()): 769 # for vertex_id in triangle: 770 # number_of_triangles_per_node[vertex_id] += 1 771 772 # Need to pad number_of_triangles_per_node in case lone nodes at end of list 773 #number_of_triangles_per_node = num.zeros(self.number_of_nodes, num.int) 774 775 number_of_triangles_per_node = num.bincount(self.triangles.flatten()) 776 777 number_of_lone_nodes = self.number_of_nodes - len(number_of_triangles_per_node) 778 779 #print number_of_lone_nodes 780 if number_of_lone_nodes > 0: 781 number_of_triangles_per_node = \ 782 num.append(number_of_triangles_per_node,num.zeros(number_of_lone_nodes,num.int)) 783 784 #assert num.allclose(number_of_triangles_per_node_new, number_of_triangles_per_node) 765 785 766 786 # Allocate space for inverted structure 767 787 number_of_entries = num.sum(number_of_triangles_per_node) 768 vertex_value_indices = num.zeros(number_of_entries, num.int) #array default# 769 770 # Register (triangle, vertex) indices for each node 771 vertexlist = [None] * self.number_of_nodes 772 for volume_id in range(self.number_of_triangles): 773 a = self.triangles[volume_id, 0] 774 b = self.triangles[volume_id, 1] 775 c = self.triangles[volume_id, 2] 776 777 for vertex_id, node_id in enumerate([a, b, c]): 778 if vertexlist[node_id] is None: 779 vertexlist[node_id] = [] 780 vertexlist[node_id].append((volume_id, vertex_id)) 781 782 # Build inverted triangle index array 788 789 assert number_of_entries == 3*self.number_of_triangles 790 791 #vertex_value_indices = num.zeros(number_of_entries, num.int) #array default# 792 793 # Array of vertex_indices (3*vol_id+vertex_id) sorted into contiguous 794 # order around each node. Use with number_of_triangles_per_node to 795 # find vertices associated with a node. 796 # ie There are number_of_triangles_per_node[i] vertices 797 vertex_value_indices = num.argsort(self.triangles.flatten()) 798 799 node_index = num.zeros((self.number_of_nodes)+1, dtype = num.int) 800 783 801 k = 0 784 for vertices in vertexlist:785 if vertices is not None:786 for volume_id, vertex_id in vertices:787 vertex_value_indices[k] = 3*volume_id + vertex_id 788 k += 1 789 790 # Save structure802 node_index[0] = 0 803 for i in range(self.number_of_nodes): 804 node_index[i+1] = node_index[i] + number_of_triangles_per_node[i] 805 806 807 # Save structures 808 self.node_index = node_index 791 809 self.number_of_triangles_per_node = number_of_triangles_per_node 792 810 self.vertex_value_indices = vertex_value_indices -
trunk/anuga_core/source/anuga/abstract_2d_finite_volumes/neighbour_mesh.py
r8500 r8501 793 793 len(self.vertex_value_indices) 794 794 795 795 796 # Check number of triangles per node 796 797 count = [0]*self.number_of_nodes -
trunk/anuga_core/source/anuga/abstract_2d_finite_volumes/test_neighbour_mesh.py
r8154 r8501 1140 1140 c = [1.0, 3.0] 1141 1141 d = [2.0, 4.0] 1142 1143 points = [a, b, c, d] 1144 vertices = [[0,1,2]] 1142 e = [4.0, 3.0] 1143 1144 points = [a, b, d, c, e] 1145 vertices = [[0,1,3]] 1145 1146 1146 1147 mesh = Mesh(points, vertices) 1147 1148 mesh.check_integrity() 1148 1149 loners = mesh.get_lone_vertices() 1149 self.failUnless(loners==[3], 1150 1151 #print loners 1152 self.failUnless(loners==[2,4], 1150 1153 'FAILED!') 1151 1154 -
trunk/anuga_core/source/anuga/operators/erosion_operators.py
r8500 r8501 375 375 376 376 377 node_index = num.zeros((self.domain.number_of_nodes)+1, dtype = num.int) 378 379 k = 0 380 node_index[0] = 0 381 for i in range(self.domain.number_of_nodes): 382 node_index[i+1] = node_index[i] + self.domain.number_of_triangles_per_node[i] 383 384 self.node_index = node_index 377 self.node_index = self.domain.node_index 385 378 386 379 vertex_ids =[]
Note: See TracChangeset
for help on using the changeset viewer.