Diagrama de clases UML 2: clases, objetos, atributos y métodos.

Cada instanciación de una clase define un objeto: Persona es una clase, Jose es un objeto, una instancia de Persona. La clase es una plantilla que permite crear objetos. Una clase almacena un estado: un conjunto de atributos que guardan información del objeto; y un comportamiento: un conjunto de métodos que nos permiten trabajar con el […]

Variedades diferenciables, de Riemann, pseudoriemannianas y de Lorentz.

En el libro «Geometria Diferencial i Relativitat» de J. Girbau, encontramos que una variedad diferenciable de dimensión $latex n$ y de clase $latex C^k$ es un par $latex (M,mathcal{A})$ formado por un conjunto $latex M$ y una estructura diferenciable $latex mathcal{A}$ de dimensión $latex n$ y clase $latex C^k$ (de aquí en adelante supondremos dimensión […]

Diagrama de clases UML 2: relaciones de asociación y agregación.

Cuando modelamos sistemas, ciertos componentes pueden estar relacionados con otros y estas interrelaciones deben ser modeladas. La relación de asociación es el tipo de relación básico entre dos clases. Se representa mediante una linea donde podemos incluir roles, cardinalidades, dirección y restricciones. Suele implementarse como variables de instancia de una clase en otra. Con respecto […]

Diagrama de clases UML 2: nombres de clases y relaciones de generalización

La lista de clases obtenida junto con sus relaciones de generalización: (Diagrama realizado con Visual Paradigm for UML) El diagrama de clases muestra los bloques con los que construiremos un sistema orientado a objetos. Describen la vida estática del modelo, mostrando que atributos y comportamientos ocurren sin entrar a detallar de que manera se realizan. […]

Individual brainstorming para la obtención de las clases del diagrama de clases UML

Vamos a hacer una lista con todas las clases que creemos que vamos a necesitar para la implementación del método SPH y aplicarlo a simulaciones de problemas astrofísicos. A continuación pensaremos en sus atributos y métodos. Finalmente, interrelacionaremos las clases entre si. Para todo ello, nos apoyaremos en el Visual Paradigm. Empecemos: Dispondremos de un […]

Análisis dimensional: unidades geometrizadas y unidades naturales.

La siguiente operación en física: $latex a+b+c = d+e$ solamente la podremos realizar si todas las variables están en las mismas unidades. En física solemos medir longitudes ($latex L$), masas ($latex M$), tiempos ($latex T$), temperaturas ($latex K$), etc. La idea es disponer de unas unidades de manera que ciertas constantes universales tomen el valor $latex […]

Clases abstractas, métodos virtuales y clases concretas derivadas

En C++ podemos definir clases abstractas. Son clases pensadas para definir un comportamiento, es decir, un conjunto de métodos sin implementación. Sus clases derivadas están obligadas a implementar estos métodos, siempre i cuando queramos que sean clases concretas instanciables. Los métodos sin implementación de las clases abstractas reciben el nombre de métodos virtuales. En el […]

Deconstruyendo a LORENE con Visual Paradigm for UML

LORENE (Langage Objet pour la RElativité NumériquE), tal y como aparece en la página web de la sección Meudon del Observatorio de Paris, es un conjunto de clases C++ pensada para resolver varios problemas que aparecen en relatividad numérica, y de manera mas amplia en astrofísica computacional. Proporciona una serie de herramientas para resolver ecuaciones […]

Detalles de implementación del método SPH

En [Monaghan 1992] comenta algunos detalles de implementación del método SPH. La inicialización de un cálculo SPH comienza especificando la masa, posición, velocidad y energía térmica de cada partícula. Si calculamos la densidad mediante la forma alternativa: $latex frac{d}{dt}rho_a = sum_b m_b v_{ab} nabla_a W_{ab}$ donde $latex v_{ab} = v_a – v_b$ y que tiene algunas […]

Magnetohidrodinámica en relatividad general (GRMHD)

Trabajando en GRMHD nos encontramos el siguiente problema de Cauchy: Ecuaciones de Einstein: $latex (gamma,K)_{t=0} longrightarrow (gamma,K)_t$ Hidrodinámica: $latex (rho,q,tau)_{t=0} longrightarrow (rho,q,tau)_t$ Electromagetismo: $latex (E,B)_{t=0} longrightarrow (E,B)_t$ donde $latex gamma$ es la métrica y $latex K$ la curvatura extrinseca; $latex rho$ es la densidad de masa, $latex q$ la densidad de momento, $latex tau$ la densidad […]

Carácter involutivo de la ecuaciones de Maxwell.

Para un observador inicial, si denotamos con $latex vec{E}$ al campo eléctrico, $latex vec{B}$ al campo magnético, $latex rho$ a la densidad de carga y $latex vec{J}$ a la densidad de corriente, entonces tenemos las ecuaciones de Maxwell: $latex nabla cdot vec{E} = rho$ $latex nabla times vec{E} + vec{B}_t = 0$ $latex nabla cdot […]

Discretización de las ecuciones de la hidrodinámica en forma Lagrangiana

En [Rosswog 2009] tenemos las ecuaciones de la hidrodinámica en forma Lagrangiana discretizadas y en su forma mas básica. Las partículas avanzaran en el tiempo siguiendo las siguientes ecuaciones: Para empezar, no hay necesidad de resolver la ecuación de continuidad ya que la masa de las partículas permanece fija. Podemos obtener las densidades mediante: $latex […]

Problema del Instituto Clay de Matemáticas sobre las ecuaciones de Navier-Stokes

En las Jornadas sobre los problemas del milenio celebradas en Barcelona del 1 al 3 de junio de 2011, Diego Córdoba dió una charla sobre el problema Clay de las ecuaciones de Navier-Stokes para la que escribió estas notas. Un fluido es ideal si es incompresible, homogéneo  y perfecto. La idea del problema consiste en […]

Eclipse, C++ y UML

Eclipse es un IDE multiplataforma Open Source desarrollado por la Eclipse Foundation. Utiliza módulos, plug-in, para proporcionar diferentes funcionalidades, ya que se basa en la filosofía RCP (Rich Client Platform), de manera que tenemos una plataforma ligera en la que el usuario va añadiendo lo que realmente necesita. El plug-in CDT (C/C++ Development Toolkit) permite […]

SPH y Relatividad Especial

En [Monaghan 1992] comenta el caso del método SPH en relatividad especial. Para empezar asumimos que el fluido está constituido por bariones, por lo que el tensor de energia-momento es: $latex T^{mu nu} = (n m_0 c^2 + n tau + P) U^mu U^nu + P g^{mu nu}$ donde los indices griegos van de $latex 0$ […]

SPH en la Olimpiadas de Barcelona :-)

Según Monaghan en [Monaghan, 1992], uno de los padres del método, buscaban un método con el que fuera fácil trabajar y diera buenos resultados y encontraron eso y mucho mas. Además de no  necesitar malla para calcular las derivadas, puesto que se calculan de manera analítica a partir de una fórmula de interpolación, las ecuaciones […]

Ecuaciones de la hidrodinámica en forma Lagrangiana.

En el artículo [Rosswog 2009], Stephan Rosswog hace un repaso detallado del método SPH centrandose especialmente en sus aplicaciones en astrofísica. Repasamos el apartado que hace referencia a las ecuaciones de la hidrodinámica en forma Lagrangiana. A diferencia de los metodos basados en malla, que son Eulerianos, es decir, métodos donde  describimos el fluido desde […]

Los Nachlass de Riemann: hidrodinámica e hipótesis de Riemann.

La hipótesis de Rieman dice que todos los ceros no triviales de la función zeta de Riemann: $latex zeta(z) = sum_{n=1}^{infty} frac{1}{n^z}$ tienen parte real $latex frac{1}{2}$. En el entretenido libro «La música de los números primos» de Marcus de Sautoy, éste comenta la posibilidad de que la teoría de números y la física estén […]

Herramientas CASE, UML y generación automática de código.

Las heramientas CASE (Computer Aided Software Engineering) pretenden aplicar los métodos de la ingenieria a la producción de software y surgen en respuesta a la crisis del software de finales de los sesenta. Cubren todas las etapas del ciclo de vida del software y básicamente pretende generar software de calidad minimizando tiempo y costes tanto […]

Varias propuestas para la función kernel de SPH, derivadas y propiedades.

Existen diferentes posibilidades a la hora de definir una función kernel: Gaussiana [Gingold & Monaghan, 1977]:$latex W(r,h) = alpha_D cdot e^{-q^2}$ con $latex 0 leq q leq 2$ donde $latex q=frac{r}{h}$, $latex r$ es la distancia entre dos partículas determinadas y $latex alpha_D$, el factor dimensional, que es $latex frac{1}{pi h^2}$ en dos dimensiones y […]

Clases en C++

El siguiente código muestra la definición de una clase en el lenguaje C++. En el podemos ver los elementos típicos de las mismas. En el fichero Complex.h, tendriamos la representación del tipo: [sourcecode languaje=»cpp»] #ifndef ComplexH #define ComplexH class Complex { private: //atributos double re; double im; public: //constructores Complex(); Complex(double re, double im); //metodos […]

Fortran y la Orientación a Objetos

Una de las funcionalidades soportadas a partir de Fortran 2003 es la orientación a objetos. De esta manera, tenemos herencia, abstracción y polimorfismo en el lenguaje para computación de altas prestaciones por excelencia. Sin embargo, cuando hablamos de Fortran 2003 nos referimos al estandar correspondiente, cuya implementación corresponde a los diferentes compiladores. En particular, el […]

Propiedades de la función kernel en SPH

En el artíclo [Gingold & Monaghan, 1977] se introducen La función kernel, $latex W(vec{r}-vec{r’},h)$, es una función que permite interpolar los valores de cualquier propiedad del fluido en función del valor de las partículas del entorno. Su papel es similar al de los diferentes esquemas de diferencias en el ámbito de las Diferencias Finitas o […]

Orígenes del Smoothed Particle Hydrodynamics (SPH)

En el artículo  [Gingold & Monaghan, 1977] se presenta por primera vez el método Smoothed Particle Hydrodynamics. Los autores, originalmente, buscaban un método que permitiera tratar problemas en astrofísica asimétricos (sin simetría esférica, sin simetría axial, etc.) . En estos casos, los métodos de diferencias finitas no se adaptan bien, pues requieren elevar el número […]

Ecuaciones de la hidrodinámica en relatividad especial

En relatividad especial, o relatividad restringida, podemos generalizar las ecuaciones de Euler clásicas que determinan la evolución de los fluidos. Para ello, definimos el tensor de energia-impulso de la siguiente manera: $latex T^{alpha beta} = (rho + frac{p}{c^2}) u^alpha u^beta + p eta^{alpha beta}$ De esta manera: $latex frac{partial}{partial x^beta} T^{alpha beta} = 0$ generaliza […]

Agujeros negros, estrellas de neutrones y estrellas extrañas

Las estrellas con una masa mayor a 8 masas solares finalizan su evolución hidroestática con una supernova. El remanente de este evento puede ser tanto un agujero negro, en el caso de las estrellas mas masivas , o una estrella compacta, comunmente llamada estrella de neutrones, para el resto de estrellas. Existe la posibilidad de […]

SIMD, GPUs, CUDA y OpenCL

En arquitectura de computadores, la taxonomía de Flynn clasifica a las mismas en función del número de instrucciones que se pueden ejecutar de forma concurrente y el número de datos por instrucción. Una de las posibilidades es la arquitectura  SIMD (Single Instruction Multiple Data), que explota el paralelismo a nivel de datos, puesto que cada […]

Ecuaciones de la hidrodinámica en física Newtoniana.

Las ecuaciones de Euler gobiernan la dinámica de los fluidos compresibles, como gases o líquidos a alta presión, cuando consideramos despreciables las fuerzas de cuerpo, las tensiones viscosas y los flujos de calor. Forman un sistema de PDE no lineal hiperbólico. En el caso clásico, deducidas por Leonhard Euler, las leyes de conservación son las […]

Hidrodinámica y magnetohidrodinámica clásicas y relativistas.

La hidrodinámica (HD) es la parte de la física que estudia la dinámica de los fluidos tanto incompresibles, los líquidos, como compresibles, los gases o los líquidos a alta presión (de hecho, todos los fluidos son compresibles, siendo la incompresibilidad una aproximación para simplificar las ecuaciones que describen su dinámica). La magnetohidrodinámica (MHD) estudia la […]