From 34b993715ac7d573f9d88d9fdab1c30c990d124a Mon Sep 17 00:00:00 2001 From: L-Nafaryus Date: Tue, 23 Mar 2021 14:05:55 +0500 Subject: [PATCH] Samples [2] --- samples.py | 79 --------------------- samples/__init__.py | 3 + samples/bodyCenteredCubic.py | 126 ++++++++++++++++++++++++++++++++ samples/faceCenteredCubic.py | 134 +++++++++++++++++++++++++++++++++++ samples/simpleCubic.py | 103 +++++++++++++++++++++++++++ samples_.py | 84 ++++++++++++++++++++++ src/geometry_utils.py | 3 +- 7 files changed, 452 insertions(+), 80 deletions(-) delete mode 100644 samples.py create mode 100644 samples/__init__.py create mode 100644 samples/bodyCenteredCubic.py create mode 100644 samples/faceCenteredCubic.py create mode 100644 samples/simpleCubic.py create mode 100644 samples_.py diff --git a/samples.py b/samples.py deleted file mode 100644 index d6e0a71..0000000 --- a/samples.py +++ /dev/null @@ -1,79 +0,0 @@ -from .src import geometry_utils -import GEOM - -from .src import mesh_utils -import SMESH - -from .src import anisotropeCubic -import salome -import math - -def genMesh(ctype, theta, flowdirection): - _G = globals() - - for g in _G: - func = g.get(ctype) - - if func: - salome.salome_init() - func(theta, flowdirection) - salome.salome_close() - - else: - raise Exception("Unknown type of the sample function") - - -def simpleCubic(theta, flowdirection): - radius = 1 - stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi] - theta = theta if theta else 0.1 - layers = [3, 3, 3] - grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers) - - scale = [2 * math.sqrt(2), 2 * math.sqrt(2), 2] - flowdirection = flowdirection if flowdirection else [1, 0, 0] - style = 0 - cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style) - boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains) - - fineness = 3 - mesh = mesh_utils.meshCreate(cubic, boundary, fineness) - mesh_utils.meshCompute(mesh) - - -def bodyCenteredCubic(theta, flowdirection): - radius = 1 - stackAngle = [0.5 * math.pi, 0.25 * math.pi, 0.25 * math.pi] - theta = theta if theta else 0.1 - layers = [3, 3, 3] - grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers) - - scale = [2 / math.sqrt(2), 2 / math.sqrt(2), 1] - flowdirection = flowdirection if flowdirection else [1, 0, 0] - style = 0 - cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style) - boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains) - - fineness = 3 - mesh = mesh_utils.meshCreate(cubic, boundary, fineness) - mesh_utils.meshCompute(mesh) - - -def faceCenteredCubic(theta, flowdirection): - radius = 1 - stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi] - theta = theta if theta else 0.1 - layers = [3, 3, 3] - grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers) - - scale = [1 / math.sqrt(2), 1 / math.sqrt(2), 1] - flowdirection = flowdirection if flowdirection else [1, 0, 0] - style = 0 - cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style) - boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains) - - fineness = 3 - mesh = mesh_utils.meshCreate(cubic, boundary, fineness) - mesh_utils.meshCompute(mesh) - - diff --git a/samples/__init__.py b/samples/__init__.py new file mode 100644 index 0000000..d592fba --- /dev/null +++ b/samples/__init__.py @@ -0,0 +1,3 @@ +from .simpleCubic import simpleCubic +from .faceCenteredCubic import faceCenteredCubic +from .bodyCenteredCubic import bodyCenteredCubic diff --git a/samples/bodyCenteredCubic.py b/samples/bodyCenteredCubic.py new file mode 100644 index 0000000..2583777 --- /dev/null +++ b/samples/bodyCenteredCubic.py @@ -0,0 +1,126 @@ +import sys +import salome + +salome.salome_init() + +import GEOM +from salome.geom import geomBuilder +import math +import SALOMEDS + +geompy = geomBuilder.New() + +def bodyCenteredCubic(alpha): + O = geompy.MakeVertex(0, 0, 0) + OX = geompy.MakeVectorDXDYDZ(1, 0, 0) + OY = geompy.MakeVectorDXDYDZ(0, 1, 0) + OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) + V_1 = geompy.MakeVectorDXDYDZ(1, 1, 0) + V_2 = geompy.MakeVectorDXDYDZ(1, -1, 0) + + L = 1.0 + L2 = L/2 + r0 = L*math.sqrt(3)/4 + a = L*math.sqrt(2) + a2 = a/2 + h4 = L/4 + Pi_4 = 45*math.pi/180.0 + + sk = geompy.Sketcher3D() + sk.addPointsAbsolute(0, 0, 2*L) #Vertex_1 of Rombus + sk.addPointsAbsolute(L, 0, L) #Vertex_2 of Rombus + sk.addPointsAbsolute(L, L, 0) #Vertex_3 of Rombus + sk.addPointsAbsolute(0, L, L) #Vertex_4 of Rombus + sk.addPointsAbsolute(0, 0, 2*L) #Vertex_1 of Rombus + a3D_Sketcher_1 = sk.wire() + Face_1 = geompy.MakeFaceWires([a3D_Sketcher_1], 1) + Extrusion_1 = geompy.MakePrismDXDYDZ(Face_1, L2, L2, L2) + + sk2 = geompy.Sketcher3D() + sk2.addPointsAbsolute(L/3, L/3, 4*L/3) #Vertex_1 of Rombus + sk2.addPointsAbsolute(L, 0, L) #Vertex_2 of Rombus + sk2.addPointsAbsolute(2*L/3, 2*L/3, 2*L/3) #Vertex_3 of Rombus + #sk2.addPointsAbsolute(0, L, L) #Vertex_4 of Rombus + sk2.addPointsAbsolute(L/3, L/3, 4*L/3) #Vertex_1 of Rombus + a3D_Sketcher_2 = sk2.wire() + Face_2 = geompy.MakeFaceWires([a3D_Sketcher_2], 1) + Extrusion_2 = geompy.MakePrismDXDYDZ(Face_2, L2, L2, L2) + + Box_1 = geompy.MakeBoxDXDYDZ(a, a, L) + Rotation_1 = geompy.MakeRotation(Box_1, OZ, Pi_4) + Translation_1 = geompy.MakeTranslation(Rotation_1, L, 0, 0) + Translation_2 = geompy.MakeTranslation(Translation_1, 0, 0, h4) + + Box_2 = geompy.MakeBoxDXDYDZ(a2, a2, L) + Rotation_2 = geompy.MakeRotation(Box_2, OZ, Pi_4) + Translation_3 = geompy.MakeTranslation(Rotation_2, L, 0, h4) + + Box_3 = geompy.MakeBoxDXDYDZ(a2, a2, L2) + Rotation_3 = geompy.MakeRotation(Box_3, OZ, Pi_4) + Translation_4 = geompy.MakeTranslation(Rotation_3, L, 0, h4) + + geompy.addToStudy( O, 'O' ) + geompy.addToStudy( OX, 'OX' ) + geompy.addToStudy( OY, 'OY' ) + geompy.addToStudy( OZ, 'OZ' ) + geompy.addToStudy( V_1, 'V_1' ) + geompy.addToStudy( V_2, 'V_2' ) + geompy.addToStudy( Box_1, 'Box_1' ) + geompy.addToStudy( Rotation_1, 'Rotation_1' ) + geompy.addToStudy( Translation_1, 'Translation_1' ) + geompy.addToStudy( Translation_2, 'Translation_2' ) + geompy.addToStudy( Box_2, 'Box_2' ) + geompy.addToStudy( Rotation_2, 'Rotation_2' ) + geompy.addToStudy( Translation_3, 'Translation_3' ) + geompy.addToStudy( Rotation_3, 'Rotation_3' ) + geompy.addToStudy( Translation_4, 'Translation_4' ) + + #geompy.addToStudy( a3D_Sketcher_1, 'a3D_Sketcher_1' ) + #geompy.addToStudy( Face_1, 'Face_1' ) + geompy.addToStudy( Extrusion_1, 'Extrusion_1' ) + #geompy.addToStudy( a3D_Sketcher_2, 'a3D_Sketcher_1' ) + #geompy.addToStudy( Face_2, 'Face_2' ) + geompy.addToStudy( Extrusion_2, 'Extrusion_2' ) + + Radius = r0/(1-alpha) + Sphere_1 = geompy.MakeSphereR(Radius) + Down = geompy.MakeMultiTranslation2D(Sphere_1, OX, L, 3, OY, L, 3) + Up = geompy.MakeTranslation(Down, 0, 0, 2*L) + Up_Down = geompy.MakeMultiTranslation1D(Down, OZ, L, 3) + Cut_1a = geompy.MakeCutList(Translation_1, [Up_Down]) + Cut_1b = geompy.MakeCutList(Translation_2, [Up_Down]) + Cut_2a = geompy.MakeCutList(Translation_3, [Up_Down]) + Cut_2b = geompy.MakeCutList(Translation_4, [Up_Down]) + Cut_3a = geompy.MakeCutList(Extrusion_1, [Up_Down]) + Cut_3b = geompy.MakeCutList(Extrusion_2, [Up_Down]) + Middle = geompy.MakeTranslation(Up_Down, L2, L2, L2) + Pore_1a = geompy.MakeCutList(Cut_1a, [Middle]) + Pore_1b = geompy.MakeCutList(Cut_1b, [Middle]) + Pore_2a = geompy.MakeCutList(Cut_2a, [Middle]) + Pore_2b = geompy.MakeCutList(Cut_2b, [Middle]) + Pore_3a = geompy.MakeCutList(Cut_3a, [Middle]) + Pore_3b = geompy.MakeCutList(Cut_3b, [Middle]) + + geompy.addToStudy( Sphere_1, 'Sphere_' ) + geompy.addToStudy( Down, 'Down_' ) + geompy.addToStudy( Up, 'Up_' ) + geompy.addToStudy( Up_Down, 'Up_Down_' ) + geompy.addToStudy( Cut_1a, 'Cut_1a_' ) + geompy.addToStudy( Cut_1b, 'Cut_1b_' ) + geompy.addToStudy( Middle, 'Middle_' ) + geompy.addToStudy( Pore_1a, 'Pore_1a_' ) + geompy.addToStudy( Pore_1b, 'Pore_1b_' ) + geompy.addToStudy( Pore_2a, 'Pore_2a_' ) + geompy.addToStudy( Pore_2b, 'Pore_2b_' ) + geompy.addToStudy( Pore_3a, 'Pore_3a_' ) + geompy.addToStudy( Pore_3b, 'Pore_3b_' ) + + if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() + + grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True) + grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True) + + grains = geompy.MakeFuseList(grains, False, False) + + return grains, Pore_1a, Pore_3a diff --git a/samples/faceCenteredCubic.py b/samples/faceCenteredCubic.py new file mode 100644 index 0000000..8e8d3d6 --- /dev/null +++ b/samples/faceCenteredCubic.py @@ -0,0 +1,134 @@ +import sys +import salome + +salome.salome_init() + +import GEOM +from salome.geom import geomBuilder +import math +import SALOMEDS + +geompy = geomBuilder.New() + +def faceCenteredCubic(alpha): + O = geompy.MakeVertex(0, 0, 0) + OX = geompy.MakeVectorDXDYDZ(1, 0, 0) + OY = geompy.MakeVectorDXDYDZ(0, 1, 0) + OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) + V = geompy.MakeVectorDXDYDZ(1, 1, 1) + V_1 = geompy.MakeVectorDXDYDZ(1, 1, 0) + V_2 = geompy.MakeVectorDXDYDZ(1, -1, 0) + + L = 1.0 + r0 = L*math.sqrt(2)/4 + a=2*r0 + b=L/2 + #c=b/2 + h=L/math.sqrt(3) + Pi_4 = 45*math.pi/180.0 + + Vertex_1 = geompy.MakeVertex(-a, -a, -b) + Vertex_2 = geompy.MakeVertex(a, a, b) + Vertex_3 = geompy.MakeVertex(-1, 0, -b) # Center of Sphere_1 + Vertex_4 = geompy.MakeVertex(-b, 0, -0) + Vertex_5 = geompy.MakeVertex(0, 0, -b) + + sk = geompy.Sketcher3D() # Rombus + sk.addPointsAbsolute(-b, -b, b) #Vertex_1 of Rombus + sk.addPointsAbsolute(0, -b, 0) #Vertex_2 of Rombus + sk.addPointsAbsolute(0, 0, -b) #Vertex_3 of Rombus + sk.addPointsAbsolute(-b, 0, 0) #Vertex_4 of Rombus + sk.addPointsAbsolute(-b, -b, b) #Vertex_1 of Rombus + a3D_Sketcher_1 = sk.wire() + Face_1 = geompy.MakeFaceWires([a3D_Sketcher_1], 1) + Face_1_Up = geompy.MakeTranslation(Face_1, b, b, 0) + Rhombohedron = geompy.MakeHexa2Faces(Face_1, Face_1_Up) + + sk_2 = geompy.Sketcher3D() # Triangle + sk_2.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Triangle + sk_2.addPointsAbsolute(0, -b, 0) #Vertex_2 of Triangle + sk_2.addPointsAbsolute(-b/3, -b/3, -b/3) #Vertex_3 of Triangle + sk_2.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Triangle + a3D_Sketcher_2 = sk_2.wire() + Face_2 = geompy.MakeFaceWires([a3D_Sketcher_2], 1) + Extrusion_2 = geompy.MakePrismVecH(Face_2, V, h) + + sk_3 = geompy.Sketcher3D() # Hexagon + sk_3.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Hexagon + sk_3.addPointsAbsolute(0, -b, 0) #Vertex_2 of Hexagon + sk_3.addPointsAbsolute(b/3, -2*b/3, -2*b/3) #Vertex_3 of Hexagon + sk_3.addPointsAbsolute(0, 0, -b) #Vertex_4 of Hexagon + sk_3.addPointsAbsolute(-2*b/3, b/3, -2*b/3) #Vertex_5 of Hexagon + sk_3.addPointsAbsolute(-b, 0, 0) #Vertex_6 of Hexagon + sk_3.addPointsAbsolute(-2*b/3, -2*b/3, b/3) #Vertex_1 of Hexagon + a3D_Sketcher_3 = sk_3.wire() + Face_3 = geompy.MakeFaceWires([a3D_Sketcher_3], 1) + Extrusion_3 = geompy.MakePrismVecH(Face_3, V, h) + + Box_1 = geompy.MakeBoxTwoPnt(Vertex_1, Vertex_2) + Rotation_1 = geompy.MakeRotation(Box_1, OZ, Pi_4) + Box_2 = geompy.MakeBoxTwoPnt(Vertex_5, Vertex_2) + Rotation_2 = geompy.MakeRotation(Box_2, OZ, Pi_4) + + geompy.addToStudy( O, 'O' ) + geompy.addToStudy( OX, 'OX' ) + geompy.addToStudy( OY, 'OY' ) + geompy.addToStudy( OZ, 'OZ' ) + geompy.addToStudy( V_1, 'V_1' ) + geompy.addToStudy( V_2, 'V_2' ) + geompy.addToStudy( Box_1, 'Box_1' ) + geompy.addToStudy( Rotation_1, 'Rotation_1' ) + geompy.addToStudy( Box_2, 'Box_2' ) + geompy.addToStudy( Rotation_2, 'Rotation_2_' ) + + geompy.addToStudy( a3D_Sketcher_1, 'a3D_Sketcher_1' ) + geompy.addToStudy( Face_1, 'Face_1' ) + geompy.addToStudy( Face_1_Up, 'Face_1_Up' ) + geompy.addToStudy( Rhombohedron, 'Rhombohedron' ) + geompy.addToStudy( a3D_Sketcher_2, 'a3D_Sketcher_2' ) + geompy.addToStudy( Face_2, 'Face_2' ) + geompy.addToStudy( Extrusion_2, 'Extrusion_2' ) + geompy.addToStudy( a3D_Sketcher_3, 'a3D_Sketcher_3' ) + geompy.addToStudy( Face_3, 'Face_3' ) + geompy.addToStudy( Extrusion_3, 'Extrusion_3' ) + + + Radius = r0/(1-alpha) + Sphere_1 = geompy.MakeSpherePntR(Vertex_3, Radius) + Down = geompy.MakeMultiTranslation2D(Sphere_1, V_1, a, 3, V_2, a, 3) + Up_Down = geompy.MakeMultiTranslation1D(Down, OZ, 1, 2) + Cut_1 = geompy.MakeCutList(Rotation_1, [Up_Down], True) + + Sphere_2 = geompy.MakeSpherePntR(Vertex_4, Radius) + Middle = geompy.MakeMultiTranslation2D(Sphere_2, V_1, a, 2, V_2, a, 2) + Cut_2 = geompy.MakeCutList(Cut_1, [Middle], True) + + Common = geompy.MakeCommonList([Cut_2, Rotation_2], True) + Pore_3 = geompy.MakeCommonList([Rhombohedron, Cut_2], True) + + Cut_3 = geompy.MakeCutList(Extrusion_2, [Up_Down], True) + Cut_4 = geompy.MakeCutList(Cut_3, [Middle], True) + + Cut_5 = geompy.MakeCutList(Extrusion_3, [Up_Down], True) + Cut_6 = geompy.MakeCutList(Cut_5, [Middle], True) + + #geompy.addToStudy( Sphere_1, 'Sphere_' ) + geompy.addToStudy( Down, 'Down_' ) + geompy.addToStudy( Up_Down, 'Up_Down_' ) + geompy.addToStudy( Cut_1, 'Cut_1_' ) + geompy.addToStudy( Middle, 'Middle_' ) + geompy.addToStudy( Cut_2, 'Pore_' ) + geompy.addToStudy( Common, 'Pore_2_' ) + geompy.addToStudy( Pore_3, 'Pore_3_' ) + geompy.addToStudy( Cut_4, 'Pore_3a_' ) + geompy.addToStudy( Cut_6, 'Pore_3b_' ) + + if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() + + grains = geompy.ExtractShapes(Up_Down, geompy.ShapeType["SOLID"], True) + grains += geompy.ExtractShapes(Middle, geompy.ShapeType["SOLID"], True) + + grains = geompy.MakeFuseList(grains, False, False) + + return grains, Common, Pore_3 diff --git a/samples/simpleCubic.py b/samples/simpleCubic.py new file mode 100644 index 0000000..707c415 --- /dev/null +++ b/samples/simpleCubic.py @@ -0,0 +1,103 @@ +import sys +import salome + +salome.salome_init() + +import GEOM +from salome.geom import geomBuilder +import math +import SALOMEDS + +geompy = geomBuilder.New() + +def simpleCubic(alpha): + O = geompy.MakeVertex(0, 0, 0) + OX = geompy.MakeVectorDXDYDZ(1, 0, 0) + OY = geompy.MakeVectorDXDYDZ(0, 1, 0) + OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) + + r0 = 1.0 + L = 2*r0 + h = L + h2 = 2*h + d1 = L*math.sqrt(2) + d2 = L*math.sqrt(3) + d = 1/math.sqrt(3) + pi_4 = 45*math.pi/180.0 + pi_2 = 90*math.pi/180.0 + + Box_1 = geompy.MakeBoxDXDYDZ(d1, d1, h) + Rotation_1 = geompy.MakeRotation(Box_1, OZ, pi_4) + Translation_2 = geompy.MakeTranslation(Rotation_1, h, 0, 0) + Vertex_1 = geompy.MakeVertex(h, 0, 0) + Vertex_2 = geompy.MakeVertex(h, h, 0) + Vertex_3 = geompy.MakeVertex(h, h, h) + Line_1 = geompy.MakeLineTwoPnt(Vertex_2, Vertex_3) + + sk = geompy.Sketcher3D() + sk.addPointsAbsolute(0, 0, h2) #Vertex_1 of Rombus + sk.addPointsAbsolute(h, 0, h) #Vertex_2 of Rombus + sk.addPointsAbsolute(h, h, 0) #Vertex_3 of Rombus + sk.addPointsAbsolute(0, h, h) #Vertex_4 of Rombus + sk.addPointsAbsolute(0, 0, h2) #Vertex_1 of Rombus + + sk_2 = geompy.Sketcher3D() + sk_2.addPointsAbsolute(L, L, L) #Vertex_1 of Hexagon + sk_2.addPointsAbsolute(5*L/3, 2*L/3, 2*L/3) #Vertex_2 of Hexagon + sk_2.addPointsAbsolute(2*L, L, 0) #Vertex_3 of Hexagon + sk_2.addPointsAbsolute(5*L/3, 5*L/3, -L/3) #Vertex_4 of Hexagon + sk_2.addPointsAbsolute(L, 2*L, 0) #Vertex_5 of Hexagon + sk_2.addPointsAbsolute(2*L/3, 5*L/3, 2*L/3) #Vertex_6 of Hexagon + sk_2.addPointsAbsolute(L, L, L) #Vertex_1 of Hexagon + + a3D_Sketcher_1 = sk.wire() + Face_1 = geompy.MakeFaceWires([a3D_Sketcher_1], 1) + Vector_1 = geompy.MakeVectorDXDYDZ(1, 1, 0) + Extrusion_1 = geompy.MakePrismVecH(Face_1, Vector_1, d1) + a3D_Sketcher_2 = sk_2.wire() + Face_2 = geompy.MakeFaceWires([a3D_Sketcher_2], 1) + Vector_2 = geompy.MakeVectorDXDYDZ(1, 1, 1) + Extrusion_2 = geompy.MakePrismVecH(Face_2, Vector_2, d2/3) + + geompy.addToStudy( O, 'O' ) + geompy.addToStudy( OX, 'OX' ) + geompy.addToStudy( OY, 'OY' ) + geompy.addToStudy( OZ, 'OZ' ) + geompy.addToStudy( Vertex_1, 'Vertex_1' ) + geompy.addToStudy( Vertex_2, 'Vertex_2' ) + geompy.addToStudy( Vertex_3, 'Vertex_3' ) + geompy.addToStudy( Line_1, 'Line_1' ) + geompy.addToStudy( Box_1, 'Box_1' ) + geompy.addToStudy( Rotation_1, 'Rotation_1' ) + geompy.addToStudy( Translation_2, 'Translation_2' ) + + geompy.addToStudy( a3D_Sketcher_1, 'a3D_Sketcher_1' ) + geompy.addToStudy( Face_1, 'Face_1' ) + geompy.addToStudy( Vector_1, 'Vector_1' ) + geompy.addToStudy( Extrusion_1, 'Extrusion_1' ) + geompy.addToStudy( a3D_Sketcher_2, 'a3D_Sketcher_2' ) + geompy.addToStudy( Face_2, 'Face_2' ) + geompy.addToStudy( Vector_2, 'Vector_2' ) + geompy.addToStudy( Extrusion_2, 'Extrusion_2' ) + + Sphere_1 = geompy.MakeSphereR(r0/(1-alpha)) + Multi_Translation_2 = geompy.MakeMultiTranslation2D(Sphere_1, OX, 2, 3, OY, 2, 3) + Multi_Translation_3 = geompy.MakeMultiTranslation1D(Multi_Translation_2, OZ, 2, 3) + Cut_1 = geompy.MakeCutList(Translation_2, [Multi_Translation_3]) + Cut_2 = geompy.MakeCutList(Extrusion_1, [Multi_Translation_3]) + Cut_3 = geompy.MakeCutList(Extrusion_2, [Multi_Translation_3]) + Cut_V = geompy.MakeCutList(Cut_1, [Cut_3]) + #Cut_2.SetColor(SALOMEDS.Color(0,0,1)) + + geompy.addToStudy( Sphere_1, 'Sphere_' ) + geompy.addToStudy( Multi_Translation_2, 'Multi-Translation_2_' ) + geompy.addToStudy( Multi_Translation_3, 'Multi-Translation_3_' ) + geompy.addToStudy( Cut_1, 'Pore1_' ) + geompy.addToStudy( Cut_2, 'Pore2_' ) + geompy.addToStudy( Cut_3, 'Pore3_' ) + geompy.addToStudy( Cut_V, 'Cut_V_' ) + + if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() + + return Multi_Translation_3, Cut_1, Cut_2 diff --git a/samples_.py b/samples_.py new file mode 100644 index 0000000..92bb7a4 --- /dev/null +++ b/samples_.py @@ -0,0 +1,84 @@ +from src import geometry_utils +import GEOM + +from src import mesh_utils +import SMESH + +from src import anisotropeCubic +import salome +import math + +import samples + +def genMesh(ctype, theta, flowdirection): + _G = globals() + + #for g in _G: + func = _G.get(ctype) + + if func: + salome.salome_init() + func(theta, flowdirection) + salome.salome_close() + + else: + raise Exception("Unknown type of the sample function") + + +def simpleCubic(theta, flowdirection): + #radius = 1 + #stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi] + theta = theta if theta else 0.1 + #layers = [3, 3, 3] + #grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers) + + #scale = [2 * math.sqrt(2), 2 * math.sqrt(2), 2] + flowdirection = flowdirection if flowdirection else [1, 0, 0] + #style = 0 + #cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style) + grains, cubic, _ = samples.simpleCubic(theta) + boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains) + + fineness = 3 + mesh = mesh_utils.meshCreate(cubic, boundary, fineness) + mesh_utils.meshCompute(mesh) + + +def bodyCenteredCubic(theta, flowdirection): + #radius = 1 + #stackAngle = [0.5 * math.pi, 0.25 * math.pi, 0.25 * math.pi] + theta = theta if theta else 0.1 + #layers = [3, 3, 3] + #grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers) + + #scale = [2 / math.sqrt(2), 2 / math.sqrt(2), 1] + flowdirection = flowdirection if flowdirection else [1, 0, 0] + #style = 0 + #cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style) + grains, cubic, _ = samples.bodyCenteredCubic(theta) + boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains) + + fineness = 3 + mesh = mesh_utils.meshCreate(cubic, boundary, fineness) + mesh_utils.meshCompute(mesh) + + +def faceCenteredCubic(theta, flowdirection): + #radius = 1 + #stackAngle = [0.5 * math.pi, 0.5 * math.pi, 0.5 * math.pi] + theta = theta if theta else 0.1 + #layers = [3, 3, 3] + #grains = anisotropeCubic.StructuredGrains(radius, stackAngle, theta, layers) + + #scale = [1 / math.sqrt(2), 1 / math.sqrt(2), 1] + flowdirection = flowdirection if flowdirection else [1, 0, 0] + #style = 0 + #cubic = anisotropeCubic.AnisotropeCubic(scale, grains, style) + grains, cubic, _ = samples.faceCenteredCubic(theta) + boundary = geometry_utils.boundaryCreate(cubic, flowdirection, grains) + + fineness = 3 + mesh = mesh_utils.meshCreate(cubic, boundary, fineness) + mesh_utils.meshCompute(mesh) + + diff --git a/src/geometry_utils.py b/src/geometry_utils.py index 58e1ca5..36cb230 100644 --- a/src/geometry_utils.py +++ b/src/geometry_utils.py @@ -18,6 +18,7 @@ def rotate(gobj, ang): # yaw rotated = geompy.MakeRotation(gobj, z, ang[2]) + print(rotated) # pitch rotated = geompy.MakeRotation(rotated, y, ang[1]) # roll @@ -42,7 +43,7 @@ def boundaryCreate(gobj, dvec, grains): xvec = geompy.MakeVector( geompy.MakeVertex(0, 0, 0), geompy.MakeVertex(dvec[0], dvec[1], dvec[2])) - xvec = rotate(dvec, self.angle) + #xvec = rotate(dvec, self.angle) yvec = rotate(xvec, [0.5 * math.pi, 0, 0]) zvec = rotate(xvec, [0, 0.5 * math.pi, 0])