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:

\frac{d}{dt}\rho_a = \sum_b m_b v_{ab} \nabla_a W_{ab}

donde v_{ab} = v_a - v_b y que tiene algunas ventajas (evita la oscilación de los bordes del fluido y es computacionalmente mas eficiente el calculo de la tasa de cambio de todas las variables físicas), necesitamos asignar la densidad inicial de cada partícula. También la mezcla de elementos de cada partícula puede ser necesaria.

Para inicializar las partículas, es conveniente situarlas en una malla regular, que puede ser una malla Cartesiana regular con igual espaciado o una malla cúbica centrada en el cuerpo en tres dimensiones (mejor representación de las integrales por sumas, mejor detección de vecinos y mejor distribución de partículas en caso de compresión planar). Además, si el tamaño de celda asociado con una partícula a es \Delta V_a entonces m_a se toma como \rho \Delta V_a.

Si utilizamos la misma h para cada partícula, entonces basta trabajar con listas enlazadas. Si el kernel esta basado en splines, las celdas enlazadas por la lista deben ser de 2h de ancho de manera que solo las celdas vecinas pueden contribuir en las partículas en una celda dada.

Si cada partícula tiene su propia h entonces el calculo de las sumas del SPH pueden formar parte de un calculo en arbol que es el método natural para calcular las fuerzas autogravitantes de un conjunto de partículas. Este codigo en arbol puede ser vectorizado.

Anuncios