From 58ba9d4498c1ec3f580087bf52116ab216bd7b3e Mon Sep 17 00:00:00 2001 From: jriegel Date: Thu, 15 Aug 2013 19:35:52 +0200 Subject: [PATCH] Fix bug in getNodes() and some clean up in ApplyingBC --- src/Mod/Fem/App/FemMeshPyImp.cpp | 2 +- src/Mod/Machining_Distortion/ApplyingBC_IC.py | 26 ++++++++++++++++++- .../Machining_Distortion/MachDistAnalysis.py | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/Mod/Fem/App/FemMeshPyImp.cpp b/src/Mod/Fem/App/FemMeshPyImp.cpp index 795972455..d614fdee7 100755 --- a/src/Mod/Fem/App/FemMeshPyImp.cpp +++ b/src/Mod/Fem/App/FemMeshPyImp.cpp @@ -476,7 +476,7 @@ Py::Tuple FemMeshPy::getNodes(void) const // Apply the matrix to hold the BoundBox in absolute space. vec = Mtrx * vec; - tup.setItem(i, Py::asObject(new Base::VectorPy(Base::Vector3d(aNode->X(),aNode->Y(),aNode->Z())))); + tup.setItem(i, Py::asObject(new Base::VectorPy( vec ))); } return tup; diff --git a/src/Mod/Machining_Distortion/ApplyingBC_IC.py b/src/Mod/Machining_Distortion/ApplyingBC_IC.py index ffefaf1f9..2f2a3fa57 100755 --- a/src/Mod/Machining_Distortion/ApplyingBC_IC.py +++ b/src/Mod/Machining_Distortion/ApplyingBC_IC.py @@ -1,9 +1,33 @@ -def ApplyingBC_IC(Casedir,YoungModulus,PoissonCoeff,OUTER_GRID_No1,OUTER_GRID_No2,OUTER_GRID_No3) : +def ApplyingBC_IC(Casedir,YoungModulus,PoissonCoeff,OUTER_GRID_No1,OUTER_GRID_No2,OUTER_GRID_No3,Meshobject) : # Variables generales import os,subprocess # AC_file = open (str(Casedir + "/" + "Applied_Conditions.txt"),'w') # + #Setup local coordinate system by using *TRANSFORM keyword to avoid any rigid body motions during isostatic clamping + #Outer_Grid_no_1 is origin, no_2 is on x-axis and no_3 is in local XY plane + #Therefore + #OUTER_GRID_No2-OUTER_GRID_No1,OUTER_GRID_No3-OUTER_GRID_No1 is the input for the TRansform keyword + AllNodes = Meshobject.FemMesh.Nodes + GridNode1 = AllNodes[OUTER_GRID_No1] + GridNode2 = AllNodes[OUTER_GRID_No2] + GridNode3 = AllNodes[OUTER_GRID_No3] + print GridNode1 + a_x = GridNode2[0]-GridNode1[0] + a_y = GridNode2[1]-GridNode1[1] + a_z = GridNode2[2]-GridNode1[2] + b_x = GridNode3[0]-GridNode1[0] + b_y = GridNode3[1]-GridNode1[1] + b_z = GridNode3[2]-GridNode1[2] + AC_file.write("** \n") + AC_file.write("** Node Set for transformation card :\n") + AC_file.write("*Nset, nset=transformed_nodes\n") + AC_file.write(str(OUTER_GRID_No1)+","+str(OUTER_GRID_No2)+","+str(OUTER_GRID_No3)+"\n") + AC_file.write("** \n") + AC_file.write("** Transformation to avoid rigid body motions :\n") + AC_file.write("*TRANSFORM, nset=transformed_nodes\n") + AC_file.write(str(a_x)+","+str(a_y)+","+str(a_z)+","+str(b_x)+","+str(b_y)+","+str(b_z)+"\n") + AC_file.write("** \n") # a) BOUNDARY conditions in order to prevent the billet to any solid displacement AC_file.write("** \n") AC_file.write("** BOUNDARY Conditions :\n") diff --git a/src/Mod/Machining_Distortion/MachDistAnalysis.py b/src/Mod/Machining_Distortion/MachDistAnalysis.py index e2000bfea..f5e778922 100644 --- a/src/Mod/Machining_Distortion/MachDistAnalysis.py +++ b/src/Mod/Machining_Distortion/MachDistAnalysis.py @@ -349,7 +349,7 @@ class _JobControlTaskPanel: #Check if the MeshObject.FemMesh.writeABAQUS(str(Case_Dir + "/" + "geometry_fe_input.inp")) IsoNodes = list(IsoNodes) - ApplyingBC_IC(Case_Dir, young_modulus,poisson_ratio,IsoNodes[0],IsoNodes[1],IsoNodes[2]) + ApplyingBC_IC(Case_Dir, young_modulus,poisson_ratio,IsoNodes[0],IsoNodes[1],IsoNodes[2],MeshObject) batch.write("cd \"" + str(Case_Dir) + "\"\n") batch.write("ccx -i geometry_fe_input\n")