Lectura UDF

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 47

MOVIMIENTO /

DEFORMARCION DE
MALLA

Lectura 8
Función definida por el
usuario (UDF)
INTRODUCCIÓN

• Una UDF es una rutina personalizada (o Macro) que amplía las


capacidades de Fluidez
- Las UDF están escritas en lenguaje 'C' por el usuario
- Se puede vincular dinámicamente con Solver Fluent

• Permite al usuario definir su propio problema específico, yendo


más allá de las características disponible en la GUI Fluent

• Dynamic Mesh hace uso de 3 tipos de macros

Movimiento de cuerpo rígido • DEFINE_CG_MOTION

Deformación • DEFINE_GEOM
• DEFINE_GRID_MOTION

Propiedad • DEFINE_DYNAMIC_ZONE_PROPERTY
• DEFINE_CONTACT
DEFINE_CG_MOTION
Macro
DEFINE_CG_MOTION MACRO
• Esta macro permite el movimiento del objeto como una función
del tiempo
 Traducción
 Rotación
 Combinación de Traducción y Rotación
- En cada caso con respecto al CG (centro de gravedad) del
cuerpo
• CG es especificado por el usuario (no calculado por el
código)
• CG se actualiza continuamente a medida que el cuerpo
se mueve
• Esta macro define un movimiento prescrito
• El objeto se mueve como un cuerpo rígido
- Límite (s)
- Zona (s) de fluido
- En ambos casos, todos los nodos asociados se mueven como
uno,
• sin ningún movimiento relativo (deformación)
DEFINE_CG_MOTION DESCRIPCIÓN

• Parámetros de entrada
- Name: nombre de la UDF para conectarlo
- dt: hilo deformado
- time: hora actual
- dtime: paso de tiempo actual

• Parámetros de salida
- vel: velocidad de traslación
- omega: velocidad de rotación
EJEMPLO I – 2D SEPARACIÓN DEL STORE
Perfil vs UDF

PERFIL

Velocidad angular
Velocidad de traslación

UDF CG

Valores de velocidad inicial

Velocidad de traslación

Velocidad angular
VARIABLES DEPENDIENTES DEL TIEMPO
• Solver Macros para variables dependientes del tiempo
Nombre de macro Devoluciones
CURRENT_TIME Tiempo de flujo de corriente real (en segundos)
CURRENT_TIMESTEP Tamaño de paso de tiempo físico actual real (en
segundos)
PREVIOUS_TIME Tiempo real de flujo anterior (en segundos)
PREVIOUS_2_TIME Tiempo de flujo real dos pasos atrás en el
tiempo (en segundos)
PREVIOUS_TIMESTEP Tamaño de paso de tiempo físico real anterior
(en segundos)
N_TIME Número entero de pasos de tiempo
N_ITER Número entero de iteraciones

Importante: debe incluir el archivo de encabezado inestable.h en su código


fuente UDF cuando usa las macros PREVIOUS_TIME o PREVIOUS_2_TIME ya que
no está incluido en udf.h
ACCESO A DATOS DE SUBPROCESO DINÁMICO
• Macros para variables de malla dinámica definidas en dynamesh_tools.h

Nombre de macro Devoluciones Tipos de argumentos


DT_THREAD (dt Puntero a un hilo Dynamic_Thread *dt
DT_CG (dt) Centro de gravedad del vector Dynamic_Thread *dt
DT_VEL_CG (dt) Vector de velocidad CG Dynamic_Thread *dt
DT_OMEGA_CG (dt) Vector de velocidad angular Dynamic_Thread *dt
DT_THETA (dt) Orientación del eje fijo del Dynamic_Thread *dt
cuerpo vector
DYNAMESH_CURRENT_ Tiempo de malla dinámica N/A
TIME actual
TIME_TO_ABSOLUTE_CR Valor absoluto del ángulo del Tiempo real
ANK _ANGLE (time) cigüeñal

Ejemplo: DT_CG (dt) [1] devuelve la coordenada y actual del CG del cuerpo.
EJEMPLO I -2D SEPARACIÓN DE STORE
• La configuración permanece idéntica, las únicas
diferencias
- Leer un perfil (definir / profiles / ...)
- Compila y carga el UDF
Enganchar el movimiento

Con perfil Con UDF


EJEMPLO I -2D SEPARACIÓN DE STORE
DEFINE_CG_MOTION & ESTADO ESTABLE

• La malla dinámica también se puede usar con el solucionador de estado


estable
- Para definir diferentes posiciones de la paleta para el funcionamiento
constante
- Simulación de interacción de estructura fluida en estado estable (FSI)

• Establecer un caso de "movimiento constante"


- Mayormente similar a uno transitorio

- Mantenga el solucionador en constante


- Use el DEFINE_CG_MOTION UDF
• Para especificar el movimiento del límite
 El tiempo pasado a DEFINE_CG_MOTION UDF es por defecto 1
DEFINE_CG_MOTION & STEADY STATE
DEFINE_CG_MOTION UDF para un caso de estado estable

CG
MOTION
STEADY
Valores de velocidad inicial

Velocidad angular de 5 ° / seg


Esto condujo a un desplazamiento de
5 ° como DTIME = 1
DEFINE_CG_MOTION & ESTADO ESTABLE

Flujo de trabajo para un


estado estable
• Mantener un solucionador de
estado estable
• Activar malla dinámica
• Elija el método de malla correcto
- Configuraciones
• Compila y carga el UDF
DEFINE_CG_MOTION & ESTADO ESTABLE
• Zonas de malla dinámicas
- Definir el tipo correcto
• y parámetros asociados
• Guardar caso
• Vista previa del movimiento de la malla
- Presione: actualizar
• Rotará de 5 ° en cada actualización

Posición inicial
Posición
actualizada
DEFINE_GEOM Macro
DEFINE_GEOM MACRO
• Recuerde que Fluent no conoce la geometría subyacente. Fluent solo conoce
las ubicaciones de nodo de la malla.
- Por lo tanto, para que los nodos se deslicen a lo largo de una superficie, la
forma debe definirse
- solo aplicable a los límites

• 2 formas de geometría simple predefinidas ya existen en Tipo de deformación


- Zona de malla dinámica
• Proyección plana
• Proyección del cilindro

• Para formas más complejas, defina la forma usando la macro "DEFINE_GEOM"

DEFINE_GEOM(parabola, domain, dt, position)


DEFINE_GEOM(parabola, domain, dt, position)
DEFINE_GEOM DESCRIPCIÓN
DEFINE_GEOM(parabola, domain, dt, position)
DEFINE_GEOM(parabola, domain, dt, position)

• Parámetros de entrada
- parábola: nombre de la UDF para conectarlo
- dominio: puntero al dominio
- dt: puntero a la estructura que almacena los atributos dinámicos de
malla

• Parámetros de salida
- posición: puntero a la matriz que almacena las posiciones del nodo
EJEMPLO II - FORMA DE PARÁBOLA
• Geom UDF: forma de parábola
- ecuación de parábola - gira alrededor del eje Z:
𝒚   = −𝟎. 𝟒  ∗  𝒛2 + 𝟎. 𝟓  ∗  𝒛  + 𝟎. 𝟑

DEFINE
DEFINE
GEOM Declaraciones
GEOM de variables

Definición
de variables
Ecuación de
parábola como
una función de z
Posición X
Posición Y
EJEMPLO II - FORMA DE PARÁBOLA
• Forma predefinida simple • Forma (s) más compleja (s)
- Condición de tipo deformante - Usuario definido

Enganche DEFINE_GEOM UDF

Forma predefinida Geom UDF


DEFINE_GRID_MOTION
MACRO
DEFINE_GRID_MOTION MACRO UDF
• Esta macro permite controlar el movimiento de cada nodo de forma
independiente
- Aplicable a
• Zona (s) de frontera
• Zona (s) de fluido
• Esta macro ofrece el nivel máximo de control sobre la malla de deformación
- No se permite cambio de conectividad a través de
- Se llama cada paso de tiempo

• Se puede combinar con movimientos corporales rígidos, deformaciones y


movimientos relativos, o puede usar zonas de proyección al mismo tiempo
- No se permite reescalamiento en el límite (que admite DEFINE_GRID_MOTION)

DEFINE_GRID_MOTION(udfname, d, dt, time, dtime)


DEFINE_GRID_MOTION DESCRIPCIÓN

DEFINE_GRID_MOTION(udfname, d, dt, time, dtime)

• Parámetros de entrada
- udfname: nombre de la UDF para conectarlo
- dominio * d: puntero al dominio
- dt: puntero a la estructura que almacena los
atributos dinámicos de malla
- hora: hora actual
- dtime: time step

• Parámetros de salida
EJEMPLO III - PULSO EN UNA ARTERIA
• AIM: simula el impacto de un pulso de presión a través de una arteria
• Este problema podría combinarse con un código FEA y tratarse como un problema de
FSI

• Para simplificar el problema, se usará una ecuación de onda para simular el pulso de
presión
EJEMPLO III - ONDA SINUSOIDAL
Grid motion UDF: onda sinusoidal Definición del valor
Macro

CUADRÍCULA
CUADRÍCULA

Bucle de caras
Bandera para marcar el nodo
después de que se hayan movido
EJEMPLO III - ONDA SINUSOIDAL

Bucle en los nodos


de una cara

CUADRÍCULA Posición X
CUADRÍCULA
de un nodo

Configuración de la
calcular la nueva posición del nuevo
posición del nodo nodo en la pared
en Y superior

Configuración de la
nueva posición del nodo
en la pared inferior
EJEMPLO III - PULSO EN UNA ARTERIA
• Activar el modelo de malla dinámica
- Mantener el método de malla suavizado
- Configuración: mantener el valor predeterminado
• Tipos de elementos de interruptor
- Todo (porque la malla está hecha de
elementos cuádruples)
EJEMPLO III - PULSO EN UNA ARTERIA

• Compilar y cargar el UDF


• Configuración de zona de malla dinámica
- Seleccione la pared inferior
- Usuario definido
- Atributos de movimiento
• Elija el libudf correcto en Malla de
movimiento UDF
- Opciones de mallado
• Altura de la celda: 0
- No hay una celda adicional

- Pared superior:
• Repite la misma configuración que
abajo
DEFINE_GRID_MOTION

Limitaciones
• El movimiento de un nodo dado se basa en coordenadas absolutas (globales)
- No en coordenadas relativas
• La nueva posición de un nodo dado se basa en su posición en el anterior
hora de caminar,
- no su posición inicial (tiempo = 0)
EJEMPLO IV - BOMBA DE PALETAS
• Descripción de la aplicación
- El fluido se mueve desde la entrada a la cámara
- La cámara de volumen es barrida por la paleta y empujada a la
salida
• El rotor de la bomba no está centrado en la carcasa
- Las paletas tienen un movimiento lineal ya que giran con el
rotor
- Las cámaras cambian de volumen a lo largo del tiempo
• DEFINE_GRID_MOTION UDF
fue utilizado en toda la zona de fluidos
- En una malla Hexa pura
• 100 000 células

• La parte restante del


dominio está lleno de tets

Diámetro del rotor: 6 cm


Velocidad angular: 1500 rpm
EJEMPLO IV - BOMBA DE COMBUSTIBLE VOLUMÉTRICA
EJEMPLO IV - BOMBA DE COMBUSTIBLE VOLUMÉTRICA
EJEMPLO V - GEROTOR CON CAVITACIÓN

Distribución de presión Fracción de masa de vapor


EJEMPLO VI - VOLAR CON ALAS BATIENTES
EJEMPLO VII – DELFÍN NADANDO
DEFINE_DYNAMIC_ZONE
_PROPERTY Macro
DEFINE_DYNAMIC_ZONE_PROPERTY UDF MACRO

• Esta macro se puede usar de 2 formas diferentes


1. Definición del centro Swirl para la aplicación en cilindro
DEFINE_DYNAMIC_ZONE_PROPERTY(swirl_udf, dt, sc)
DEFINE_DYNAMIC_ZONE_PROPERTY(swirl_udf, dt, sc)

• Se convertirá

To be completed
DEFINE_DYNAMIC_ZONE_PROPERTY UDF MACRO

Esta macro se puede usar de 2 formas diferentes


2. Altura de estratificación de celda variable

DEFINE_DYNAMIC_ZONE_PROPERTY(nonconst_height, dt, lh)


DEFINE_DYNAMIC_ZONE_PROPERTY(nonconst_height, dt, lh)

• Para ser utilizado con el método de estratificación


• La altura de la celda puede convertirse
- Una función del tiempo
- O función del ángulo del cigüeñal (con la opción In-Cylinder)
EJEMPLO VIII - ALTURA DE ESTRATIFICACIÓN DE CELDA
• Simple example of a non constant cell layering height
– Based on one cycle piston motion

#include "udf.h"
Propiedad de #include "dynamesh_tools.h“
Propiedad
la zona de
la zona
DEFINE_DYNAMIC_ZONE_PROPERTY(nonconst_height, dt, lh)
{ La altura de la celda permanece
if (CURRENT_TIME < 0.04166667) constante hasta que la hora
actual alcanza este tiempo
*lh = 0.065; objetivo
else
*lh=(*lh - CURRENT_TIMESTEP);
}

La altura de la celda
cambiará de una capa de
celda a otra como resultado
de esta función
EJEMPLO VIII
Flujo de trabajo para establecer un caso con una altura
de celda no Cst
• Activar malla dinámica
• Elija el método de malla de estratificación
- Configuraciones
• Mantener los parámetros predeterminados

• Use la opción In-Cylinder para crear el movimiento

• Escribir, compilar y cargar la altura de celda UDF


EJEMPLO VIII
• Establecer zona de malla dinámica
- Pared inferior
• Atributo de movimiento
- Pistón completo (de la
definición en cilindro)
• Opción de mallado
- Altura de la celda (libudf)

• Vista previa de malla


Un ciclo
DEFINE_CONTACT
MACRO
DEFINE_CONTACT UDF MACRO

• Esta macro permite detectar si el cálculo


el movimiento de malla dará como resultado el contacto
entre una superficie en movimiento y las superficies
circundantes
- Para evitar el volumen negativo de la celda

• En caso de contacto dentro de especificado


tolerancias (Proximity Threshold), el movimiento de malla de
la zona en movimiento se puede modelar de acuerdo con la
física esperada
- El usuario define cómo tratar la región de contacto y si
restringir el flujo
• Tratamiento predeterminado de la zona de medios
porosos
- Ganchos UDF para definir el comportamiento de
Detección de contacto en un caso donde los
contacto lados opuestos de una caja se deforman en un
patrón de onda sinusoidal
DEFINE_CONTACT UDF Macro
• La detección de contacto se puede seleccionar para
• Paredes
• Zonas dinámicas de tipo Cuerpo rígido y definido por el usuario
- Las zonas dinámicas de tipo Sistema de acoplamiento no se
pueden utilizar
• Células adyacentes a las zonas frontales que caen por debajo de la
proximidad Distancia de umbral
• se pueden etiquetar y separar en nuevas zonas de celda durante
el proceso de detección de contacto.
• diferentes condiciones de flujo en regiones de contacto pueden
ser
especificado Se puede imponer una
velocidad inversa para una
• Durante la simulación, bola que cae cuando se
• una vez que las celdas en la región de contacto se han separado en detecta contacto con el piso

nuevas zonas,
• las propiedades físicas especificadas en el flujo con respecto a
zona de control se copian a la zona de celda recién separada.

DEFINE_CONTACT (contact_props, dt, contacts)


DEFINE_CONTACT (contact_props, dt, contacts)
DEFINE_CONTACT UDF Macro
• Activar el modelo de malla dinámica
- Seleccione el método de malla apropiado
• Establecer los parámetros
- Establecer la zona de malla dinámica
• Cuerpos rígidos
• deformación,
• ...

- Activar la opción de detección de contacto


• Haga clic en configuración
- Asegúrese de que se seleccionen los límites
requeridos
- Ingrese un valor para el Umbral de proximidad
- Asegúrese de que contact_props :: libudf esté
seleccionado en UDF
- Presiona OK
EJEMPLO DE DETECCIÓN DE CONTACTO
• La detección de contactos se puede usar para separar automáticamente las celdas que
están en la región de contacto (con o sin usar un UDF)
- Útil para especificar diferentes condiciones de flujo para esta región
• P.ej. porosidad, para imitar una brecha completamente cerrada (ver ejemplo en
la siguiente diapositiva)
- Activar la "separación de zona de contacto" activando el Flow Control
• Crear una nueva zona de control de flujo y especificar las propiedades de contacto
deseadas
• Estas propiedades se copiarán en la zona de contacto separada automáticamente al
contacto
EJEMPLO DE DETECCIÓN DE CONTACTO
En este ejemplo, una bola se mueve hacia la pared inferior, no rebota después del contacto
- Se creará una nueva zona (fluido-16: contacto) cuando la bola y la pared inferior entren
dentro del umbral de proximidad
• Esta zona creada automáticamente copiará propiedades de la zona de control de
flujo (contacto de fluido)
- La zona de "contacto de fluidos" es una zona de celda vacía utilizada para
predefinir las propiedades que se copiarán en la zona de contacto generada
automáticamente (fluido-6: contacto)
- Para este caso, las propiedades predefinidas son porosidad
• Tenga en cuenta que las propiedades se copiarán en segundo plano, las
propiedades no estarán visibles en la GUI para "fluido-16: contacto"

Velocidad
De Entrada
RESUMEN

• Este capítulo ha cubierto algunas capacidades


extendidas de Deformación de malla
- en el uso de Macros UDF
- 3 tipos de macros
• Movimiento del cuerpo rígido
- DEFINE_CG_MOTION
• Deformación
- DEFINE_GEOM
- DEFINE_GRID_MOTION
• Propiedad
- DEFINE_DYNAMIC_ZONE_PROPERTY
- DEFINE_CONTACT

También podría gustarte