Está en la página 1de 12

UNIVERSIDAD DE LA SERENA

DEPARTAMENTO DE INGENIERÍA MECÁNICA


FACULTAD DE INGENIERÍA
TALLER DE TITULACIÓN I

Profesores: Dr. ing. Carlos Garrido Soto.


Dr. Ing. Mauricio Godoy Seura.

Alumno: Eric Pallero Castillo.

“Taller de DualSPHysics tutorial Ejecución


ejemplo Case Floating Sphere”.

Resumen:

Este taller-tutorial describe y enseña la ejecución de un ejemplo de un problema de


interacción fluido-sólido de una cilindro que se va hundiendo, utilizando el programa
DualSPHysics versión 4.0, por medio de el método de partículas hidrodinámicamente
suavizadas SPH corrido por medio de CPU y visualizado en el programa Paraview 5.0 .
Situación Física:

La situación física del problema tal como se muestra en la figura consiste en un volumen de agua
que se encuentra soportando por un tanque de 15 metros de alto por 10 metros de ancho y el
cilindro se encuentra en el centro con radio 1 metro. En el cual este cilindro con el trascurso del
paso del tiempo se hundirá. Las propiedades se darán más adelante en la demostración del caso en
2D pero se trata al fluido como: newtonianos, ligeramente compresible, con propiedades
constantes. El proceso transiente de interacción es isotérmico.
Ecuaciones involucradas en el modelo SPH:

Continuidad:

Δ= δ=0.1: delta SPH se muestra en parámetros en la parte de ejecución del archivo

Momento

Γ: Términos de disipación

Viscosidad artificial:

Πab : Término de viscosidad

Estado:
Case Def: este es un archivo que en este caso se llama CaseFloating_Def.xml define el caso, con sus
propiedades físicas y la situación física, dimensiones etc. (más bien donde creamos el caso de
estudio) en el caso si la geometría es importada acepta los formatos mencionados a la derecha.

GenCase: Adapta todo lo creado en el Case_Def para que puede ser leído por el DualSPHysics, toda
la geometría y propiedades propuestas lo genera físicamente.

DualSPHysics: Lee y calcula el problema y genera los archivos Part_XXX para que un posterior
programa los pueda visualizar en el post proceso como el Paraview.

PartVTK: arroja los valores de presión del fluido por cada paso de tiempo movimiento del fluido.

Isosurface: aplica a un efecto renderizado o efecto HD a la visualización de los archivos Part.

Measuretool: Hace cálculos numéricos más general calcula en el mismo punto de dominio para cada
archivo Part_XXX arrojados.
Explicación del archive CaseFloatingSphereVal2D_Def.xml
<?xml version="1.0" encoding="UTF-8" ?>

<case> <!--PARTE 1 DEFINICION DEL CASO--> <!--PROPIEDADES FISICAS-->

casedef>

<constantsdef>

<lattice bound="1" fluid="1" />


<gravity x="0" y="0" z="-9.81" comment="Gravitational acceleration" units_comment="m/s^2" />
<rhop0 value="1000" comment="Reference density of the fluid" units_comment="kg/m^3" />
<hswl value="0.8" auto="false" comment="Maximum still water level to calculate speedofsound using coefsound" units_comment="metres (m)" />
<gamma value="7" comment="Polytropic constant for water used in the state equation" />
<speedsystem value="0" auto="true" comment="Maximum system speed (by default the dam-break propagation is used)" />
<coefsound value="30" comment="Coefficient to multiply speedsystem" />
<speedsound value="0" auto="true" comment="Speed of sound to use in the simulation (by default speedofsound=coefsound*speedsystem)" />
<coefh value="1.2" comment="Coefficient to calculate the smoothing length (h=coefh*sqrt(3*dp^2) in 3D)" />
<cflnumber value="0.2" comment="Coefficient to multiply dt" />

Lattice : es el mallado para crear las partículas , puede ser de 2 tipos , mallado simple (una partícula por punto =1) y una más refinado ( o 2 partículas. Por punto =2)
<!-- DEFINICION DEL CASO -->
</constantsdef>
<mkconfig boundcount="230" fluidcount="10"> <! 230 niveles para partículas de contorno y 10 niveles para partículas de fluido -->
<mkorientfluid mk="0" orient="Xyz" /> <! --- orientación de las partículas >
</mkconfig>
<!-- mk : etiqueta que se utiliza para : 1 )define los objetos de orden que se crean y 2) se aplica características específicas a los diferentes conjunto de puntos tales como el
movimiento, movimiento rígido ...-->
<geometry>
<!--DEFINICION DEL DOMINIO DONDE LAS PARTICULAS SON CREADAS -->
<definition dp="0.05" units_comment="metres (m)"> <!-- dp DEFINE LA DISTANCIA ENTRE PARTICULAS SI SE CAMBIA LAS CANTIDAD D PARTICULAS ES MODIFICADA -->
<! DEFINEN LA DIMENSION DEL DOMINIO DONDE LAS PARTICULAS SERAN CREDAS -->
<pointmin x="-5.05" y="5.0" z="-0.05" />
<pointmax x="5.05" y="5.0" z="15.05" />
</definition>
<commands>
<mainlist>
<setshapemode>dp | real | bound</setshapemode> <!-- setshapemode DEFINE LA OPERACION DE DIBUJO PARA CREAR LOS ARCHIVOS VTK -->
<! USA COORDENADAS REALES -->
<setdrawmode mode="full" /> <!-- FULL: COMBINA CARA Y SOLIDO-->
<setmkfluid mk="0" /> <! CREACION DE PARTICULAS DE FLUIDO CAJA DE AGUA --> <!-- VOLUMEN DEL FLUIDO -->

<drawbox> <--!Dibuja una caja con un punto inicial y su tamaño -->


<boxfill>solid</boxfill> <--!Indica si es un sólido o una cara y las caras que se ocultan-->
<point x="-5" y="0" z="0.0" />
<size x="10" y="10" z="14" />
</drawbox>
<!-- CREATION DEL CONTORNO DE PARTICULAS (PAREDES DEL TANQUE)-->
<setdrawmode mode="face" /> <!-- DIBUJA CARAS-->
<setmkbound mk="20" /> <!-- ESPECIFICA LAS CARAS DE LA CAJA O RECIPIENTE DONDE SE CREAN LAS PARTICULAS -->
<drawbox>
<boxfill>bottom</boxfill>
<point x="-5" y="0" z="0.0" />
<size x="10.0" y="10.0" z="8.5" />
</drawbox>
<shapeout file="Boundary"/>
<setdrawmode mode="full" /> <!-- FULL: COMBINA CARA Y SOLIDO-->
<setmkbound mk="51" />

<!--Dibujo del cilindro con 2 puntos y el radio (2D) mask=0 ningura cara oculta -->

<drawcylinder radius="1.0" mask="0">


<point x="0" y="2" z="14" />
<point x="0" y="8" z="14" />
</drawcylinder>
<! shapeout : crea los archivos VTK en este caso los objetos se van creando y son guardados en diferentes archivos vtk-->
<shapeout file="" reset="true" />
</mainlist>
</commands>
</geometry>

<initials>
<!--Velocidades iniciales para el mkfluid=0 (fluido) en este caso se pueden agregar más para algunos cuerpos-->
<velocity mkfluid="0" x="0.0" y="0.0" z="0.0" />
</initials>

<floatings> <!-- Indica que un conjunto de partículas que presenten el mismo mk (conjunto de caracteristica y orden) constituye un objeto flotante -->

<floating mkbound="51" relativeweight="1.20" />


</floatings>
</casedef>
<execution>
<!--Parte 2 Ejecución-> <!--PARAMETROS COMO ECUACIONES A UTILIZAR, VARIABLES DE TIEMPO-->

<parameters>
<parameter key="PosDouble" value="2" comment="Precision in particle interaction 0:Simple, 1:Double, 2:Uses and saves double (default=0)" />

<parameter key="Kernel" value="2" comment="Interaction Kernel 1:Cubic Spline, 2:Wendland (default=2)" />
<parameter key="ViscoTreatment" value="2" comment="Viscosity formulation 1:Artificial, 2:Laminar+SPS (default=1)" />
<parameter key="Visco" value="0.000001" comment="Viscosity value" units_comment="m^2/s" />
<parameter key="ViscoBoundFactor" value="1" comment="Multiply viscosity value with boundary (default=1)" />
<parameter key="DeltaSPH" value="0.1" comment="DeltaSPH value, 0.1 is the typical value, with 0 disabled (default=0)" />
<parameter key="#Shifting" value="0" comment="Shifting mode 0:None, 1:Ignore bound, 2:Ignore fixed, 3:Full (default=0)" />
<parameter key="#ShiftCoef" value="-2" comment="Coefficient for shifting computation (default=-2)" />
<parameter key="#ShiftTFS" value="1.5" comment="Threshold to detect free surface. Typically 1.5 for 2D and 2.75 for 3D (default=0)" />
<parameter key="RigidAlgorithm" value="1" comment="Rigid Algorithm 1:SPH, 2:DEM (default=1)" />
<parameter key="FtPause" value="1.0" comment="Time to freeze the floatings at simulation start (warmup) (default=0)" units_comment="seconds" />
<parameter key="CoefDtMin" value="0.05" comment="Coefficient to calculate minimum time step dtmin=coefdtmin*h/speedsound (default=0.05)" />
<parameter key="#DtIni" value="0.0001" comment="Initial time step (default=h/speedsound)" units_comment="seconds" />
<parameter key="#DtMin" value="0.00001" comment="Minimum time step (default=coefdtmin*h/speedsound)" units_comment="seconds" />
<parameter key="#DtFixed" value="DtFixed.dat" comment="Dt values are loaded from file (default=disabled)" />
<parameter key="DtAllParticles" value="0" comment="Velocity of particles used to calculate DT. 1:All, 0:Only fluid/floating (default=0)" />
<parameter key="TimeMax" value="8.5" comment="Time of simulation" units_comment="seconds" />
<parameter key="TimeOut" value="0.1" comment="Time out data" units_comment="seconds" />
<parameter key="IncZ" value="0.2" comment="Increase of Z+" units_comment="decimal" />
<parameter key="PartsOutMax" value="1" comment="%/100 of fluid particles allowed to be excluded from domain (default=1)" units_comment="decimal" />
<parameter key="RhopOutMin" value="700" comment="Minimum rhop valid (default=700)" units_comment="kg/m^3" />
<parameter key="RhopOutMax" value="1300" comment="Maximum rhop valid (default=1300)" units_comment="kg/m^3" />
<parameter key="XPeriodicIncZ" value="0" comment="Periodic BC in X-Y" units_comment="metres (m)" />
</parameters>
</execution>
</case>
ESTOS PARAMETROS EN ORDEN POR COLORES INDICAN: DOBLE PRESICION, ESQUEMA DE
INTEGRACION DE TIEMPO, FUNCION DE KERNEL (WENDLAND), TRATAMIENTO DE VISCOSIDAD,
FORMULACION DELTA SPH, ALGORITMO SHIFTING (DE CAMBIO), INTERACCION ENTRE SOLIDOS,
PASO DE TIEMPO COMPUTACIONAL, TIEMPO FISICO Y FRECUENCIA DE ALMACENACION DE
DATOS, EN LOS QUE SE EXCLUYEN PARTICULAS POR POSICION Y OTRO QUE SE EXCLUYEN
PARTICULAS POR DENSIDAD, Y LA PERIODICIDAD

A) LA FUNCION DE KERNEL QUE SE OCUPA EN ESTE CASO QUE SE EMPLEA EN LA ECUACION


DE VISCOSIDAD ARTIFICIAL:

B) EN EL TRATAMIENTO DE LA VISCOSIDAD: ( VISCOSIDAD LAMINAR)

C) TIEMPO FISICO Y FRECUENCIA DE ALMACENACION DE DATOS:

En esta Parte seleccionamos cuantos archivos queremos crear para la visualización (archivos
Part_XXX)

Number of output files = TimeMax/ TimeOut = 8.5/0.1= 85 archivos en este caso.


Ejecución del Caso:

Para correr este ejemplo y todos los ejemplos modificables básicos que trae este programa
se necesita crear una carpeta la cual en este caso llame cilindro 2D, en ella copiare los datos
que se encuentran en 2 carpetas del archivo .rar , que contiene el DualSPHysics que se
descarga de la página http://dual.sphysics.org/index.php/downloads: cabe recordar que
se está ejecutando con la versión 4 del programa la cual trae los siguientes archivos:

Se copian los 19 archivos que contiene la carpeta


EXCES y en la carpeta RUN_DIRECTORY ir a la
carpeta del ejemplo en este caso el 8 que se llama
8_CASEFLOATING y también de ella copiar los 18
elementos que contiene en nuestra carpeta
Cilindro 2D , se nos repetirá el archivo Command
Prompt el cual aplicamos copiar y reemplazar (37
elementos). También dentro de nuestra carpeta
Cilindro 2D crearemos una carpeta llamada
all_out que futuramente ocuparemos.

Luego buscaremos el archivo


CaseFloatingSphereVal2D_Def.xml y lo
copiaremos cambiándole el nombre para mayor
comodidad con el nombre case2 fichero que fue
explicado anteriormente. Cabe recordar que en
ese fichero cambiándole el dp=0.05 que es este
caso abriéndolo con block de notas modificamos
el número de partículas, mientras más grande ese
número menos es el número de partículas
creadas lo que lleva a un menor tiempo de cálculo
pero hace que nuestro resultado no sea tan real.

A continuación para correr y


generar el caso abrimos el
archivo Command Propt y
escribimos el siguiente
comando: GenCase4_win64
case2 all.
Esta operación está
terminada en unos pocos
segundos y nos enseñara la
cantidad de partículas
generadas de acuerdo al
dp=0.05 es este caso arrojo
56844 y se crearán 5
archivos de nombre "all"
necesarios para correr el
programa.
El siguiente paso es escribir el siguiente comando DualSPHysics4CPU_win64 all el cual hará
que funcione el programa DualSPHysics, mostrara todas las propiedades envueltas en el
caso generado y creará los archivos Part_XXXX.bi4 los cuales como se dijo anterior mente
ya están previstos en este caso serán 85 partes más el Part_0000 y 3 archivos (.fbi4 ; .ibi4 y
.obi4 )que se determinó de la relación de tiempo máximo y tiempo se salida.

Próximo todos esos archivos Part_XXXX.bi4 más los otros 3 archivos generados hay que
copiarlos a la carpeta all_out. Esto se hace para utilizar el próximo comando el cual nos
permitirá visualizar todas esas partes en el programa Paraview 5.0.

Con ese comando se trasformaran los archivos .bi4 en archivos .vtk.

Visualización en el programa Paraview 5.0.1:

Una vez hecho los pasos anteriores abrir el programa Paraview y


arrastrar las 86 partes .vtk a la ventana Pipeline Browser y luego en
Propiedades (Properties) apretar Apply (aplicar) .
Seleccionamos con este botón cambiar la orientación de nuestro
caso para adecuarnos a la orientación de los casos de estudio de
los papers (Fekken, 2004] and [Moyo and Greenhow, 2000] y la
validación de [Canelas et al., 2015]).

Para ver cómo funciona la animación:

1.- En Animation View >>> 2.- Mode: Real time >>> 3.- seleccionar Play y luego >> 4.-
visualizar el tiempo real en la imagen 50.0 que equivale a 5 [s] de tiempo real.

También podría gustarte