.. Salome_Axi documentation master file, created by sphinx-quickstart on Tue Dec 4 11:40:19 2018. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. ################################################ Salome Preprocessing axisymmetric model valve ################################################ :author: Hernando Gasca Garzón .. tabularcolumns:: | p{32pt} | p{54pt} | p{326pt} | +-----------+------------+-------------------------------------------------------------------------------------+ | Version | Date | Description | +===========+============+=====================================================================================+ | 0 | 2018-12-06 | Geometry axisymmetric construction in Salome_Meca for OpenFOAM | +-----------+------------+-------------------------------------------------------------------------------------+ This is a base for the axisymmetric mesh generation for OpenFOAM ===================== PY-A910 Bottom Valve ===================== ---------------- Create Geometry ---------------- .. code-block:: bash Body of Geometry generation - import as .py file on Salome - Geometry d1 = 0.0209 d2 = 0.005 l1 = 0.009854 # Sketch 2D O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) geomObj_1 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) sk = geompy.Sketcher2D() sk.addPoint(0.000000, 0.000000) sk.addSegmentRelative(0.000000, d1/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(l1, d2/2-d1/2) sk.addSegmentRelative(l1, d1/2-d2/2) sk.addSegmentRelative(0, -d1/2) sk.close() Sketch_1 = sk.wire(geomObj_1) body = geompy.MakeFaceWires([Sketch_1], 1) Rotation_1 = geompy.MakeRotation(body, OX, -2.5*math.pi/180.0) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Rotation_1, geompy.ShapeType["FACE"]) Entrada = geompy.CreateGroup(Rotation_1, geompy.ShapeType["EDGE"]) geompy.UnionIDs(Entrada, [3]) Salida = geompy.CreateGroup(Rotation_1, geompy.ShapeType["EDGE"]) geompy.UnionIDs(Salida, [46]) movingWall = geompy.CreateGroup(Rotation_1, geompy.ShapeType["EDGE"]) geompy.UnionIDs(movingWall, [48]) Pared = geompy.CreateGroup(Rotation_1, geompy.ShapeType["EDGE"]) geompy.UnionIDs(Pared, [6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44]) frontAndBack = geompy.CreateGroup(Rotation_1, geompy.ShapeType["FACE"]) geompy.UnionIDs(frontAndBack, [1]) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) geompy.addToStudy( OZ, 'OZ' ) geompy.addToStudy( Sketch_1, 'Sketch_1' ) geompy.addToStudy( body, 'body' ) geompy.addToStudy( Rotation_1, 'Rotation_1' ) geompy.addToStudyInFather( Rotation_1, Entrada, 'Entrada' ) geompy.addToStudyInFather( Rotation_1, Salida, 'Salida' ) geompy.addToStudyInFather( Rotation_1, movingWall, 'movingWall' ) geompy.addToStudyInFather( Rotation_1, Pared, 'Pared' ) geompy.addToStudyInFather( Rotation_1, frontAndBack, 'frontAndBack' ) ------------- Create Mesh ------------- 2D Nodes: Mesh_1 Go to Salome Mesh On object Browser select Rotation_1 Algorithm: NETGEN 1D-2D Hypotesis: NETGEN 2D Parameters Max. Size 0.0004 Min. Size 0.00004 Fineness Moderate Add. Hyotesis Viscous Layes 2D_1 Total thickness 0.0004 Number of layers 5 Stretch factor 2 Mesh: Compute Mesh > create groups on Geometry Select all groups on Geometry > Elements > Apply and Close Revolution Nodes: Mesh_1 Edges: Mesh_1 Faces: Mesh_1 Axis Poiny x=0 y= 0 z= 1e-9 Vector dx=10 Angle Total angle : 5, steps: 1 Tolerance 1e-11 Apply and Close Delete groups on Edges ================= Use on OpenFOAM ================= Export UNV file Mesh_1 and copy un /hgasca/OpenFOAM/run/case .. code-block:: bash ideasUnvToFoam Mesh_1.unv .. code-block:: bash collapseEdges it creates a new time Then replace constant Mesh by new time mesh and review names of boundaries .. code-block:: bash FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "1/polyMesh"; object boundary; } ---------------- openFoam Flies ---------------- Assign patches .. code-block:: bash 6 ( frontAndBack_neg { type wedge; nFaces 18029; startFace 27619; } Entrada { type patch; nFaces 28; startFace 45648; } Salida { type patch; nFaces 28; startFace 45676; } movingWall { type patch; nFaces 0; startFace 45704; } Pared { type wall; nFaces 560; startFace 45704; } frontAndBack_pos { type wedge; nFaces 18029; startFace 46264; } ) Change 6 by 5 an delete movingwall if nFaces = 0 else there is an error in collapse Edges 5 ( frontAndBack_neg { type wedge; nFaces 18029; startFace 27619; } Entrada { type patch; nFaces 28; startFace 45648; } Salida { type patch; nFaces 28; startFace 45676; } Pared { type wall; nFaces 560; startFace 45704; } frontAndBack_pos { type wedge; nFaces 18029; startFace 46264; } ) ------------ Actions ------------ manually delete new time Then .. code-block:: bash checkMesh if errors review your mesh know use pimpleFOAM with one or more processors .. code-block:: bash decomposePar Then .. code-block:: bash mpirun -np 4 pimpleFoam This is not working on kubunto and OpenFOAM6 by now" ------------ Pruebas ------------ .. toctree:: :maxdepth: 2 PY-A910_results