Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Esquemas de tomados en clases, Esquemas y mapas conceptuales de Procesos de Producción

consiste en esquemas realizados en clases

Tipo: Esquemas y mapas conceptuales

2021/2022

Subido el 29/07/2023

aima-luciana-estela
aima-luciana-estela 🇦🇷

3 documentos

1 / 111

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Apuntes sobre
Din´amica de Fluidos Computacional
Rev. 0.6.0
Adri´an Lozano Dur´an
adrian@torroja.dmt.upm.es
adrianld@stanford.edu
29 de abril de 2019
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Esquemas de tomados en clases y más Esquemas y mapas conceptuales en PDF de Procesos de Producción solo en Docsity!

Apuntes sobre

Din´amica de Fluidos Computacional

Rev. 0.6.

Adri´an Lozano Dur´an

adrian@torroja.dmt.upm.es

adrianld@stanford.edu

29 de abril de 2019

Este documento est´a publicado seg´un la siguiente licencia:

GNU Free Documentation License

Copyright ©c 2015 Adri´an Lozano Dur´an. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Inva- riant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.

La ´ultima revisi´on de este documento y sus fuentes se pueden descargar aqu´ı

  • ´Indice
    • 1 Computaci´on Cient´ıfica - tem´aticos 1.1 El ordenador como herramienta para resolver problemas ma-
      • 1.2 Representaci´on de n´umeros
        • 1.2.1 Representaci´on y aritm´etica de punto flotante
        • 1.2.2 Round off error o error de redondeo
      • 1.3 Introducci´on a los lenguajes de programaci´on
      • 1.4 Arquitectura del ordenador
        • 1.4.1 Procesador
        • 1.4.2 Memoria
        • 1.4.3 Redes
      • 1.5 Introducci´on al c´alculo en paralelo
        • 1.5.1 ¿Cu´ando es necesario?
        • 1.5.2 Paradigmas de programaci´on en paralelo
    • 2 Planteamiento del problema CFD
      • 2.1 Ideas generales de la discretizaci´on temporal
      • 2.2 Ideas generales de la discretizaci´on espacial
        • 2.2.1 Clasificaci´on de m´etodos de discretizaci´on espacial
        • 2.2.2 Clasificaci´on de mallas
        • 2.2.3 Generaci´on de mallas
    • 3 Discretizaci´on temporal
      • 3.1 Problema de condiciones iniciales
      • 3.2 Clasificaci´on de esquemas num´ericos
      • 3.3 Obtenci´on de esquemas num´ericos
      • 3.4 Errores de la soluci´on num´erica
      • 3.5 An´alisis de esquemas num´ericos
        • ferencial 3.5.1 Existencia y unicidad de la soluci´on de la ecuaci´on di-
      • 3.5.2 Estabilidad de la soluci´on de la ecuaci´on diferencial
        • num´erico 3.5.3 Consistencia, estabilidad y convergencia del esquema
    • de Fluidos 4 Estrategias de resoluci´on de las ecuaciones de la Mec´anica
    • 4.1 Formulaci´on con presi´on
      • 4.1.1 M´etodo de proyecci´on
    • 4.2 Formulaci´on sin presi´on
      • 4.2.1 Vorticidad-funci´on de corriente
      • 4.2.2 Vorticidad-velocidad
  • 5 Discretizaci´on espacial: diferencias finitas
    • 5.1 Obtenci´on de esquemas
    • 5.2 An´alisis de errores
      • 5.2.1 Error de truncaci´on
      • 5.2.2 Error de disipaci´on y dispersi´on
      • 5.2.3 An´alisis de onda modificada
    • 5.3 Estabilidad de la discretizaci´on espacio-temporal
    • 5.4 Mallas de colocaci´on y mallas staggered
  • 6 Aplicaci´on a problemas 1D y 2D
    • 6.1 Aplicaci´on a problemas 1D
      • 6.1.1 Ecuaci´on de onda
      • 6.1.2 Ecuaci´on del calor
      • 6.1.3 Ecuaci´on de Burgers viscosa
    • 6.2 Aplicaci´on a problemas 2D: turbulencia is´otropa
      • 6.2.1 Descripci´on del problema
      • 6.2.2 Resoluci´on Num´erica
      • 6.2.3 Discretizaci´on temporal
      • 6.2.4 Esquema de resoluci´on
      • 6.2.5 Aproximaci´on para v´ortices puntuales
      • 6.2.6 Resultados
      • 6.2.7 C´odigo
    • 6.3 Aplicaci´on a problemas 2D: la cavidad
      • 6.3.1 Planteamiento del problema
      • 6.3.2 Discretizaci´on temporal
      • 6.3.3 Discretizaci´on espacial
      • 6.3.4 Organizaci´on matricial de las ecuaciones
  • 6.3.5 Condiciones de contorno
  • 6.3.6 C´odigo

ni redondeo) y utilizando s´ımbolos o variables. En muchos campos de investigaci´on es necesario procesar largas expresiones algebraicas lo que resulta un trabajo largo y tedioso. Por ello, siempre que sean perfecta- mente conocidos los pasos que hay que seguir para obtener el resultado, se puede aplicar la resoluci´on simb´olica por ordenador. A´un as´ı, no est´a exento de problemas por la inevitable existencia de bugs (errores) en los c´odigos y la dificultad de obtener resultados lo suficientemente simpli- ficados. Los inicios del software del ´algebra computacional comienza en 1964 con ALPAK, desarrollado por Bell Labs y seguido de FORMAC de IBM. Actualmente algunos de los software m´as comunes son Maple y Mathematica entre otros.

  • Resoluci´on num´erica. C´alculo num´erico. Se trata de la concepci´on y estudio de m´etodos de c´alculo que aproxi- men la soluci´on de problemas previamente formulados matem´aticamen- te mediante el uso de algoritmos. Definimos algoritmo como secuencias finitas de operaciones algebraicas y l´ogicas que producen una soluci´on al problema dado. En este caso el resultado final no es simb´olico sino valores num´ericos. Existen multitud de problemas que pueden ser re- sueltos mediante el c´alculo num´erico tales como integraci´on definida, derivaci´on, interpolaci´on, sistemas de ecuaciones algebraicas, ecuacio- nes diferenciales ordinarias, ecuaciones diferenciales en derivadas par- ciales (CFD). Las soluciones son aproximadas pero se pueden resolver aquellos problemas que no tienen soluci´on anal´ıtica o que en el caso de tenerla es dif´ıcil de obtener. El CFD se puede entender como aquel conjunto de herramientas del c´alculo num´erico aplicadas a la resoluci´on de problemas fluido din´amicos.

La siglas CFD son el acr´onimo de Din´amica de Fluidos Computacional (Computational Fluid Mechanics). La f´ısica de los fluidos puede ser expresa- da en t´erminos de ecuaciones diferenciales ordinarias o integro-diferenciales dif´ıciles de resolver anal´ıticamente excepto en casos muy concretos de poco inter´es pr´actico. Para obtener la soluci´on aproximada num´ericamente es ne- cesario discretizar las ecuaciones diferenciales en ecuaciones algebraicas que ser´an resueltas mediante los algoritmos apropiados ejecutados por lo general en ordenadores. Entre las grandes ventajas que ofrece el CFD se encuentra el bajo coste que presentan la simulaci´on de prototipos en comparaci´on con ensayos de modelos a escala real o reducida. Adem´as existe la libertad para imponer condiciones de contorno y obtenemos la informaci´on de todas las variables en gran cantidad de puntos del espacio, algo imposible en experi- mentos. Hay que tener en cuenta que muchas veces es complicado fijar los

Figura 1.1: Tabla con ejemplos de c´alculos realizados mediante c´alculo num´erico (columna de la izquierda) o simb´olico (columna de la derecha).

par´ametros adimensionales en los experimentos para que coincida con los del caso que se quiere analizar, especialmente cuando hay que imponer varios de ellos como por ejemplo el n´umero de Reynolds y n´umero de Froude. Por otro lado, el CFD tambi´en presenta limitaciones. Uno de los inconvenientes m´as importantes es lo costoso que resulta resolver todas las escalas de las ecuaciones de Navier-Stokes cuando el fluido se encuentra en r´egimen turbu- lento, lo que obligar a reducir el tama˜no de la simulaci´on usando modelos en las ecuaciones que pueden dar lugar a soluciones no solo cuantitativamente incorrectas sino tambi´en cualitativamente.

1.2 Representaci´on de n´umeros

Los computadores manejan datos representados como una secuencia discreta de bits. Cada bit puede estar en dos valores diferentes a los que simb´olicamen- te se asocian los estados 0 y 1, por ello, utilizan de forma natural el sistema en base 2. Los datos almacenados pueden ser num´ericos y no num´ericos. Los n´umeros se pueden representar en el sistema de numeraci´on binario y ´esta es la base para la representaci´on de n´umeros en los ordenadores. Puesto que cualquier entero dado s´olo tiene un n´umero finito de d´ıgitos, se pueden repre- sentar exactamente todos los n´umeros enteros por debajo de un cierto l´ımite. Los n´umeros reales no son numerables y son m´as complicados dado que se necesita una cantidad infinita de d´ıgitos para representar la mayor´ıa de ellos, sin importar qu´e sistema de numeraci´on utilicemos. En general, con n bits podemos representar 2n^ n´umeros. Lo n´umeros enteros se suelen almacenar como punto/coma fijo mientras que los reales se guardan con punto/coma flotante.

Figura 1.3: Representaci´on de n´umeros en punto flotante para simple preci- si´on en el est´andar IEEE 754.

  1. Otro concepto importante es la precisi´on de la m´aquina o ǫ de la m´aquina definido como el menor n´umero que cumple

ǫ + 1 6 = 1. (1.2)

Representa la exactitud relativa de la aritm´etica en punto flotante y es conse- cuencia del redondeo. Decimos que ocurre underflow cuando el resultado de una operaci´on es menor en magnitud que el n´umero m´as peque˜no que puede ser almacenado por el ordenador. Normalmente el resultado se redondea a ce- ro. Por el contrario, decimos que ocurre overflow cuando el resultado de una operaci´on es mayor en magnitud al mayor n´umero que puede representar el ordenador. Normalmente se redondea el resultado a ±Inf. N´otese que en la representaci´on de punto flotante el espaciado entre n´umeros es mayor cuanto mayor es la magnitud del n´umero. El ǫ de la m´aquina de la m´aquina puede ser entendido como un underflow en la mantisa, mientras que el underflow y overflow est´an relacionados con el exponente.

1.2.2 Round off error o error de redondeo

La representaci´on en el ordenador de n´umeros no enteros en punto flotante se hace con un n´umero fijo de bits. Esto significa que la mayor´´ ıa de los n´umeros no enteros no se pueden representar sin cometer un error que normalmente se conoce como roundoff error o error de redondeo. Existe, por lo tanto, un error simplemente por el hecho de almacenar un n´umero. Adem´as, la mayor´ıa de los c´alculos (sumas, restas, multiplicaciones, divisiones...) con n´umeros en punto flotante producir´an m´as errores de redondeo. En la mayor´ıa de las situaciones estos errores ser´an peque˜nos, pero en una larga cadena de c´alculos hay un alto riesgo de que los errores se acumulen y contaminen gravemente el resultado final. Es importante ser capaz de reconocer cu´ando un c´alculo dado va a ser propenso a este tipo de problemas y saber si el resultado es

fiable. Consideremos un n´umero a y una aproximaci´on ˜a. Vamos a definir dos formas de medir el error de dicha aproximaci´on.

  • Error absoluto: |a−˜a|. Es la forma m´as obvia de medir el error. Presenta ciertos inconvenientes, por ejemplo, para a = 100 y ˜a = 100.1 el error absoluto es el mismo que para a = 1 y ˜a = 1.1, cuando parece intuitivo pensar que el error cometido es mayor en el ´ultimo caso. Por ello, en ciertas ocasiones es mejor utilizar el error relativo.
  • Error relativo: |a − ˜a|/|a|, que supone escalar el error absoluto obtenido con el tama˜no del n´umero que es aproximado. En el ejemplo anterior los errores relativos ser´ıan, 10−^3 y 0.1 lo cual resulta m´as razonable. Un propiedad importante del error relativo es que cuando

r =

|a − ˜a| |a|

≈ 10 −m, (1.3)

con m un entero, entonces el n´umero de cifras que tienen en com´un a y ˜a es aproximadamente m y por lo tanto la precisi´on del sistema nos indica indirectamente el error relativo que se comete al almacenar un n´umero en punto flotante. Por otro lado, si intercambiamos los papeles y suponemos que a es una aproximaci´on de ˜a se cumple que

|a − ˜a| |˜a|

r 1 − r

Los errores en la aritm´etica de punto flotante son mucho m´as sutiles que los errores en aritm´etica de enteros. A diferencia de los n´umeros enteros, los n´umeros de punto flotante pueden estar ligeramente mal. Un resultado que parece ser razonable contiene errores y puede ser dif´ıcil juzgar cu´an grandes son. Tal y como se mencion´o en la secci´on anterior, en la mayor´ıa de los ordenadores los n´umeros se representan en punto flotante y la aritm´etica se realiza de acuerdo con la norma IEEE 754, cuidadosamente dise˜nada para proporcionar un buen control de errores de redondeo. Sin embargo, el uso de n´umeros en punto flotante conduce inevitablemente a errores en la mayor´ıa de los casos de inter´es pr´actico. En general, las operaciones de adici´on y sustracci´on producen mayores errores que el producto y la divisi´on. El esquema general del proceso de adici´on (o sustracci´on) es:

  • Partimos de dos n´umeros reales a y b con |a| > |b| y queremos realizar la operaci´on c = a + b
  • Escribimos a en forma normalizada a = α × 10 n^ y b de tal manera que tenga el mismo exponente b = β × 10 n.

Figura 1.4: Arquitectura de von Neumann. Es el modelo que siguen a grandes rasgos casi todos los ordenadores actuales.

El desarrollo de los Lenguajes de programaci´on ha sido impresionante en los ´ultimos 60 a˜nos. Los primeros lenguajes de alto nivel aparecieron en la d´ecada de los 50 con FORTRAN (Formula Translating System, creado por John Backus), COBOL, LISP... Despu´es surgir´ıan otros como Algol, Basic, C, Pascal, C++... Para dar lugar a los m´as actuales y modernos como C#, Python, Java, PHP... Algunos de los lenguajes de programaci´on m´as usados actualmente en el c´alculo num´erico son: FORTRAN, C, (est´aticos), Octave, Matlab, Python (din´amicos). En otras ocasiones se utilizan programas ya compilados como OpenFoam. Muchas veces, en el dise˜no de un algoritmo se utilizan diagramas de flujo y pseudoc´odigos como lenguaje intermedio entre el lenguaje de programaci´on y el lenguaje natural.

1.4 Arquitectura del ordenador

La arquitectura del ordenador es un tema amplio y complicado en el que evidentemente no deseamos entrar en gran detalle. Sin embargo, los c´odigos CFD que usamos acaban ejecut´andose en un ordenador y es necesario tener un idea general de su funcionamiento. A continuaci´on resaltamos los aspectos m´as importantes relacionados con el uso de programas CFDs. Casi todos los ordenadores siguen a grandes rasgos el esquema propuesto en el modelo de von Neumann. Los ordenadores con esta arquitectura constan de cinco partes: La unidad aritm´etico-l´ogica (ALU) que junto con la unidad de control forman el procesador, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.

Intel I7 3930K 5Ghz 104 GFLOPS AMD Phenom II 1090t 4.2Ghz 80 GFLOPS Intel Core i5-2320 3.0Ghz 44 GFLOPS Intel Core 2 Duo E6550 2.3Ghz 6 GFLOPS Intel Atom N455 1.66 GHz 1 GFLOPS

Cuadro 1.1: FLOPS para diferentes procesadores.

1.4.1 Procesador

El procesador o CPU es el encargado de ejecutar los programas. S´olo ejecuta instrucciones programadas en lenguaje de m´aquina, realizando operaciones aritm´eticas y l´ogicas simples, tales como sumas, restas, multiplicaciones, di- visiones, l´ogicas binarias y accesos a memoria. Un par´ametro importante del procesador son los FLOPS (FLoating-point Operations Per Second) que indica el n´umero de operaciones en punto flo- tante que el procesador es capaz de realizar por segundo. Los ordenadores de sobremesa actuales tienen del orden de Giga FLOPS. La tabla 1.1 recoge algunos procesadores y una estimaci´on sus respectivos FLOPS. En la pr´actica, se puede estimar cu´al ser´a la capacidad de c´alculo de los procesadores dentro de unos a˜nos usando la Ley de Moore: el n´umero de transistores en un procesador (´ıntimamente ligado a la capacidad de c´alculo) se duplica aproximadamente cada 18 meses. Se trata de una observaci´on, una ley emp´ırica formulada por Gordon E. Moore, en 1965, cuyo cumplimiento se ha mantenido hasta nuestros d´ıas. Un procesador con muchos FLOPS no es la soluci´on a todo problema y en general un buen algoritmo reduce en mayor medida el tiempo de c´alculo que disponer de procesadores muy r´apidos. Adem´as, en los ´ultimos a˜nos el sector inform´atico est´a dando mucha importancia a factores como el consumo de electricidad y el rendimiento por vatio. Los procesadores de ordenadores de sobremesa suelen consumir entre 60 y 100 Watios, mientras que los de los port´atiles consumen entre 20 y 40 Watios. Hay que tener en cuenta que en el c´alculo en paralelo (ver siguiente apartado) se pueden llegar a usar cientos de miles de procesadores a la vez y el consumo se convierte en un factor importante.

1.4.2 Memoria

El correcto uso de la memoria es un tema fundamental para obtener bue- nos rendimientos de los c´odigos CFD. La figura 1.6 muestra las diferentes

Figura 1.6: Jerarqu´ıa de memorias en un ordenador. Los tama˜nos y veloci- dades dados son valores de referencia.

jerarqu´ıas de memorias en un ordenador: Disco duro, RAM y cach´e.

  • Memoria cach´e: Es la memoria m´as r´apida de la cual dispone el procesador. Se utiliza para tener alcance directo a datos que predeciblemente ser´an utilizados en las siguientes operaciones, sin tener que acudir a la memoria RAM, reduciendo as´ı el tiempo de espera para adquisici´on de datos. Casi todos los procesadores poseen la llamada cach´e interna de primer nivel o L encapsulada en el procesador. Los m´as modernos incluyen tambi´en en su interior otro nivel de cach´e, m´as grande, aunque algo menos r´apida, es la cach´e de segundo nivel o L2 e incluso los hay con memoria cach´e de nivel 3, o L3.
  • Memoria RAM: Es la memoria de acceso aleatorio. Es una memoria r´apida que permi- te acceder a los datos en cualquier orden. En ella se almacenan todos los programas que se est´an ejecutando. Tanto la memoria RAM como la cach´e son vol´atiles, y pierden la informaci´on si se dejan de alimen- tar/energizar.
  • Disco duro: Sistema de almacenamiento digital no vol´atil. Suele ser la memoria m´as lenta de todas, pero la que tiene mayor tama˜no.

Es importante resaltar que cuanto m´as lejos nos movemos del procesador, el nivel de memoria se convierte en 10 veces m´as lento (de picosegundos a milisegundos) y 1000 veces m´as grande (de bytes a terabytes). Normalmente el programador puede controlar directamente el flujo entre la memoria RAM y el disco duro pero no entre la memoria RAM y la cach´e, aunque dicho control se puede hacer indirectamente siguiendo ciertas pautas de programaci´on.

Figura 1.7: Esquema de ejecuci´on de un programa en serie.

Existe una forma equivalente a la Ley de Moore para el almacenamiento en disco duro llamada Ley de Kryder: la cantidad de bits por unidad de volumen en un disco duro se duplica aproximadamente cada 13 meses. Se trata de una ley experimental enunciada por Mark Kryder (ingeniero de Seagate Technology). Una consecuencia de comparar la Ley de Moore con la Ley de Kryder es que la capacidad de almacenamiento crece m´as r´apidamente que la de procesamiento. Adem´as, los tiempos de acceso a memoria tambi´en se han reducido m´as lentamente lo que plantea problemas de cuello de botella en el flujo de datos entre el disco duro y el procesador.

1.4.3 Redes

En algunas ocasiones los c´odigos CFD no son ejecutados en un solo ordenador sino que es necesario el c´alculo en paralelo mediante el uso de un array de ordenadores conectados en red. En esos casos es, la red pasa a ser, junto con el procesador y la memoria, otro elemento fundamental a tener en cuenta.

1.5 Introducci´on al c´alculo en paralelo

Tradicionalmente, los programas se han desarrollado para el c´alculo en serie, es decir, est´an preparados para ejecutarse en un ordenador con un ´unico procesador. El problema es dividido en un conjunto de instrucciones que son ejecutadas secuencialmente. El c´alculo en paralelo consiste en usar m´ultiples recursos simult´aneamente para resolver un problema dado. El problema es dividido en partes inde- pendientes que son ejecutadas simult´aneamente en varios procesadores. Las figuras 1.7 y 1.8 muestran los esquemas de ejecuci´on en serie y paralelo. El c´alculo en paralelo se realiza en los llamados centros de supercomputaci´on. En ellos, arrays de nodos de c´alculo se conectan entre s´ı mediante una red r´apida. En la web http://www.top500.org se pueden encontrar estad´ısticas y datos interesantes sobre estos centros, como su uso por pa´ıses, las aplicacio- nes, sistemas operativos que usan... La figura 1.9 muestra la evoluci´on de los ordenadores m´as r´apidos del mundo.

Figura 1.9: Evoluci´on de los ordenadores m´as potentes del mundo. Fuente: http://www.top500.org.

Figura 1.10: Paradigmas de c´alculo en paralelo. Memoria compartida.

Figura 1.11: Paradigmas de c´alculo en paralelo. Memoria distribuida.

  • Ordenadores h´ıbridos. Grupos de CPUs comparten la misma memoria (y tal vez GPU) y se comunican con otros grupos a trav´es de una red.