.. Wex Oil damping documentation, created by sphinx-quickstart on Tue Jan 29 11:40:19 2018. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. ################################################ Wex Oil Damping ############################################### :author: Hernando Gasca Garzón .. tabularcolumns:: | p{32pt} | p{54pt} | p{326pt} | +-----------+------------+-------------------------------------------------------------------------------------+ | Version | Date | Description | +===========+============+=====================================================================================+ | 0 | 2019-29-01 | Wes Oil Damping | +-----------+------------+-------------------------------------------------------------------------------------+ In this documentation you can obtain basis for: - Code Saturne Moving Mesh. - Turbulence fluid modeling. =============================== PY-A912 Wes Oil Damping =============================== First steps: As a first approach we will be to model a 2D damper ---------------- Create Geometry ---------------- Run this geometry in Salome .. code-block:: bash -*- coding: utf-8 -*- ### ### This file is generated automatically by SALOME v8.3.0 with dump python functionality ### import sys import salome salome.salome_init() theStudy = salome.myStudy import salome_notebook notebook = salome_notebook.NoteBook(theStudy) sys.path.insert( 0, r'/home/hernando/Escritorio/Oil_damper/2D_1') ### ### GEOM component ### import GEOM from salome.geom import geomBuilder import math import SALOMEDS geompy = geomBuilder.New(theStudy) O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) O_1 = geompy.MakeVertex(0, 0, 0) OX_1 = geompy.MakeVectorDXDYDZ(1, 0, 0) OY_1 = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ_1 = geompy.MakeVectorDXDYDZ(0, 0, 1) geomObj_1 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) Circle_1 = geompy.MakeCircle(None, None, 1.05) Face_1 = geompy.MakeFaceWires([Circle_1], 1) Circle_2 = geompy.MakeCircle(None, None, 0.75) Face_2 = geompy.MakeFaceWires([Circle_2], 1) Cut_1 = geompy.MakeCutList(Face_1, [Face_2], True) Circle_3 = geompy.MakeCircle(None, None, 0.9) Face_3 = geompy.MakeFaceWires([Circle_3], 1) Circle_4 = geompy.MakeCircle(None, None, 0.85) Face_4 = geompy.MakeFaceWires([Circle_4], 1) Cut_2 = geompy.MakeCutList(Face_3, [Face_4], True) geomObj_2 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) sk = geompy.Sketcher2D() sk.addPoint(0.0000000, 0.0000000) sk.addSegmentAbsolute(0.1000000, -1.5000000) sk.addSegmentAbsolute(-0.1000000, -1.5000000) sk.addSegmentAbsolute(0.0000000, 0.0000000) Sketch_1 = sk.wire(Cut_1) Face_5 = geompy.MakeFaceWires([Sketch_1], 1) Cut_3 = geompy.MakeCutList(Cut_2, [Face_5], True) Cut_4 = geompy.MakeCutList(Cut_1, [Cut_3], True) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_4, geompy.ShapeType["FACE"]) tower = geompy.CreateGroup(Cut_4, geompy.ShapeType["EDGE"]) geompy.UnionIDs(tower, [3]) inner = geompy.CreateGroup(Cut_4, geompy.ShapeType["EDGE"]) geompy.UnionIDs(inner, [6]) mass = geompy.CreateGroup(Cut_4, geompy.ShapeType["EDGE"]) geompy.UnionIDs(mass, [12, 9, 20, 18, 16, 14]) body = geompy.CreateGroup(Cut_4, geompy.ShapeType["FACE"]) geompy.UnionIDs(body, [1]) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) geompy.addToStudy( OZ, 'OZ' ) geompy.addToStudy( O_1, 'O' ) geompy.addToStudy( OX_1, 'OX' ) geompy.addToStudy( OY_1, 'OY' ) geompy.addToStudy( OZ_1, 'OZ' ) geompy.addToStudy( Circle_1, 'Circle_1' ) geompy.addToStudy( Face_1, 'Face_1' ) geompy.addToStudy( Circle_2, 'Circle_2' ) geompy.addToStudy( Face_2, 'Face_2' ) geompy.addToStudy( Cut_1, 'Cut_1' ) geompy.addToStudy( Circle_3, 'Circle_3' ) geompy.addToStudy( Face_3, 'Face_3' ) geompy.addToStudy( Circle_4, 'Circle_4' ) geompy.addToStudy( Face_4, 'Face_4' ) geompy.addToStudy( Cut_2, 'Cut_2' ) geompy.addToStudy( Sketch_1, 'Sketch_1' ) geompy.addToStudy( Face_5, 'Face_5' ) geompy.addToStudy( Cut_3, 'Cut_3' ) geompy.addToStudy( Cut_4, 'Cut_4' ) geompy.addToStudyInFather( Cut_4, tower, 'tower' ) geompy.addToStudyInFather( Cut_4, inner, 'inner' ) geompy.addToStudyInFather( Cut_4, mass, 'mass' ) geompy.addToStudyInFather( Cut_4, body, 'body' ) ### ### SMESH component ### import SMESH, SALOMEDS from salome.smesh import smeshBuilder smesh = smeshBuilder.New(theStudy) Damper = smesh.Mesh(Cut_4) NETGEN_2D_1 = Damper.Triangle(algo=smeshBuilder.NETGEN_1D2D) NETGEN_Parameters_2D = NETGEN_2D_1.Parameters() NETGEN_Parameters_2D.SetMaxSize( 0.01 ) NETGEN_Parameters_2D.SetSecondOrder( 0 ) NETGEN_Parameters_2D.SetOptimize( 1 ) NETGEN_Parameters_2D.SetFineness( 3 ) NETGEN_Parameters_2D.SetMinSize( 0.005 ) NETGEN_Parameters_2D.SetUseSurfaceCurvature( 1 ) NETGEN_Parameters_2D.SetFuseEdges( 1 ) NETGEN_Parameters_2D.SetQuadAllowed( 0 ) ViscousLayers2D_0_01 = NETGEN_2D_1.ViscousLayers2D(0.01,4,3) isDone = Damper.Compute() tower_1 = Damper.GroupOnGeom(tower,'tower',SMESH.EDGE) inner_1 = Damper.GroupOnGeom(inner,'inner',SMESH.EDGE) mass_1 = Damper.GroupOnGeom(mass,'mass',SMESH.EDGE) body_1 = Damper.GroupOnGeom(body,'body',SMESH.FACE) [ tower_extruded, inner_extruded, mass_extruded, body_extruded, tower_top, inner_top, mass_top, body_top ] = Damper.ExtrusionSweepObjects( [ Damper ], [], [ Damper ], [ 0, 0, 0.05 ], 1, 1 ) ## Set names of Mesh objects smesh.SetName(NETGEN_2D_1.GetAlgorithm(), 'NETGEN_2D_1') smesh.SetName(ViscousLayers2D_0_01, 'ViscousLayers2D=0.01,4,1,[],True') smesh.SetName(NETGEN_Parameters_2D, 'NETGEN_Parameters_2D') smesh.SetName(body_1, 'body') smesh.SetName(tower_extruded, 'tower_extruded') smesh.SetName(inner_extruded, 'inner_extruded') smesh.SetName(mass_extruded, 'mass_extruded') smesh.SetName(body_top, 'body_top') smesh.SetName(Damper.GetMesh(), 'Damper') smesh.SetName(body_extruded, 'body_extruded') smesh.SetName(tower_1, 'tower') smesh.SetName(mass_1, 'mass') smesh.SetName(inner_1, 'inner') smesh.SetName(inner_top, 'inner_top') smesh.SetName(tower_top, 'tower_top') smesh.SetName(mass_top, 'mass_top') if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(True) -------------- Run Saturne -------------- The geometry is exported as a med file and put in into the saturne case MESH folder .. code-block:: bash 10all[]all[]00.7550.02500.9550.02501.0450.025-0.75500.025-0.95500.025-1.04500.0251101500000.1innermasstowerwall_1wall_2c11=0; c22=0; c33=0; c12=0; c13=0; c23=0; c21=0; c31=0; c32=0;000fx = 0; fy = fluid_fy; fz = 0;000000m11=1; m22=3; m33=1; m12=0; m13=0; m23=0; m21=0; m31=0; m32=0;k11=1; k22=2; k33=1; k12=0; k13=0; k23=0; k21=0; k31=0; k32=0;c11=0; c22=0; c33=0; c12=0; c13=0; c23=0; c21=0; c31=0; c32=0;000fx = 0; fy = 2 * sin(fluid_fy); fz = 0;000000m11=5; m22=5; m33=5; m12=0; m13=0; m23=0; m21=0; m31=0; m32=0;k11=1; k22=2; k33=1; k12=0; k13=0; k23=0; k21=0; k31=0; k32=0;debuggerstandard1109000.311017.240.02495000000all[]0.505000mesh_viscosity_1 = 1;1e-08202velocity[0] = 0.; velocity[1] = -0.8; velocity[2] = 0.;211 ------------ Tests ------------ .. toctree:: :maxdepth: 2 PY-A912-results ------------ References ------------ 1: `An opensource solver for wave-induced FSI problems `_ 2: `A general OpenFOAM adapter for the coupling library preCICE `_ 3: `Couple OpenFOAM with any other solver using preCICE `_ 4: `SIMULATION OF F LUID -S TRUCTURAL I NTERACTION USING O PEN FOAM `_ 5: `Implementation of 6-DoF on axialTurbine tutorial case `_ 6: `A FSI tutorial on the axialTurbine `_ 7: `Fluid-Structure Simulations with OpenFOAM for Aircraft Designs `_