.. 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
1500000.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 `_