From 74a43f23b3dcf9a95a3d691b9373bb0ecf8ea0f2 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Thu, 3 Mar 2016 18:39:25 +0100 Subject: [PATCH] FEM: ccxInpWriter, add Nodes dict to self object --- src/Mod/Fem/ccxInpWriter.py | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/Mod/Fem/ccxInpWriter.py b/src/Mod/Fem/ccxInpWriter.py index 02e92d160..6b1216da1 100644 --- a/src/Mod/Fem/ccxInpWriter.py +++ b/src/Mod/Fem/ccxInpWriter.py @@ -64,6 +64,7 @@ class inp_writer: self.fc_ver = FreeCAD.Version() self.ccx_eall = 'Eall' self.ccx_elsets = [] + self.fem_mesh_nodes = {} def write_calculix_input_file(self): self.mesh_object.FemMesh.writeABAQUS(self.file_name) @@ -835,15 +836,16 @@ class inp_writer: # [ (nodeID, length), ... , (nodeID, length) ] some nodes will have more than one entry node_length_table = [] mesh_edge_length = 0 - mesh_nodes = self.mesh_object.FemMesh.Nodes + if not self.fem_mesh_nodes: + self.fem_mesh_nodes = self.mesh_object.FemMesh.Nodes # print(len(edge_table)) for me in edge_table: if len(edge_table[me]) == 2: # 2 node mesh edge # end_node_length = mesh_edge_length / 2 # ______ # P1 P2 - P1 = mesh_nodes[edge_table[me][0]] - P2 = mesh_nodes[edge_table[me][1]] + P1 = self.fem_mesh_nodes[edge_table[me][0]] + P2 = self.fem_mesh_nodes[edge_table[me][1]] edge_vec = P2 - P1 mesh_edge_length = edge_vec.Length # print(mesh_edge_length) @@ -856,9 +858,9 @@ class inp_writer: # middle_node_length = mesh_face_area * 2 / 3 # _______ _______ # P1 P3 P2 - P1 = mesh_nodes[edge_table[me][0]] - P2 = mesh_nodes[edge_table[me][1]] - P3 = mesh_nodes[edge_table[me][2]] + P1 = self.fem_mesh_nodes[edge_table[me][0]] + P2 = self.fem_mesh_nodes[edge_table[me][1]] + P3 = self.fem_mesh_nodes[edge_table[me][2]] edge_vec1 = P3 - P1 edge_vec2 = P2 - P3 mesh_edge_length = edge_vec1.Length + edge_vec2.Length @@ -880,7 +882,8 @@ class inp_writer: # [ (nodeID,Area), ... , (nodeID,Area) ] some nodes will have more than one entry node_area_table = [] mesh_face_area = 0 - mesh_nodes = self.mesh_object.FemMesh.Nodes + if not self.fem_mesh_nodes: + self.fem_mesh_nodes = self.mesh_object.FemMesh.Nodes for mf in face_table: if len(face_table[mf]) == 3: # 3 node mesh face triangle # corner_node_area = mesh_face_area / 3.0 @@ -889,9 +892,9 @@ class inp_writer: # / \ # /____\ # P1 P2 - P1 = mesh_nodes[face_table[mf][0]] - P2 = mesh_nodes[face_table[mf][1]] - P3 = mesh_nodes[face_table[mf][2]] + P1 = self.fem_mesh_nodes[face_table[mf][0]] + P2 = self.fem_mesh_nodes[face_table[mf][1]] + P3 = self.fem_mesh_nodes[face_table[mf][2]] mesh_face_area = getTriangleArea(P1, P2, P3) corner_node_area = mesh_face_area / 3.0 @@ -915,12 +918,12 @@ class inp_writer: # /t1 \ /t2 \ # /_____\/_____\ # P1 P4 P2 - P1 = mesh_nodes[face_table[mf][0]] - P2 = mesh_nodes[face_table[mf][1]] - P3 = mesh_nodes[face_table[mf][2]] - P4 = mesh_nodes[face_table[mf][3]] - P5 = mesh_nodes[face_table[mf][4]] - P6 = mesh_nodes[face_table[mf][5]] + P1 = self.fem_mesh_nodes[face_table[mf][0]] + P2 = self.fem_mesh_nodes[face_table[mf][1]] + P3 = self.fem_mesh_nodes[face_table[mf][2]] + P4 = self.fem_mesh_nodes[face_table[mf][3]] + P5 = self.fem_mesh_nodes[face_table[mf][4]] + P6 = self.fem_mesh_nodes[face_table[mf][5]] mesh_face_t1_area = getTriangleArea(P1, P4, P6) mesh_face_t2_area = getTriangleArea(P2, P5, P4)