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
stage
donde ocurre la acción de nuestra simulación. Este contendrá una clase abstractaspatialDecomposition
que podremos implementar posteriormente en las clases derivadasbsptree, octree, kdtree,
linkedList
y que utilizaremos para selección de partículas vecinas incluso con $latex h$ variable. También necesitamos una clasemesh/grid
para ir resolviendo las ecuaciones de campo de Einstein, que constituyen un problema PDE elíptico, e ir obteniendo el campo gravitacional en el que se mueve nuestro fluido. Por tanto, también necesitaremos unellipticSolver
que derivaremos enspectralSolver
ofiniteDifferenceSolver.
- Necesitamos una clases
fluid
que almacenará toda la información referente a un fluido . - Los fluidos nos permitiran modelar
compactObject
s comoblackHole, neutronStar, strangeStar
… y en donde dispondremos de una operacionmerge.
- Y también la clase
particle
que permitirá almacenar la información de cada una de las partículas de nuestros fluidos. - La clase
kernel
nos permitirá evaluar la función kernel. Como ya comentamos en un post, para ofrecer la posibilidad de utilizar diferentes funciones kernel, la clasekernel
será abstracta ofreciendo métodos virtuales que implementaremos en las clases derivadasgaussianKernel, quadraticKernel, cubicKernel, quinticKernel, tensorialKernel
. - Necesitamos también una clase
odeSolver
que utilizaremos para resolver las distintas ODE que aparecen al «discretizar» las ecuaciones de la hidrodinámica. Como tenemos diferentes posibilidades, la implementaremos en una clase abstracta cuyos métodos virtuales los implementaranrungeKutta2OdeSolver, rungeKutta4OdeSolver, velocityStormerVerletOdeSolver, leapfrogOdeSolver, modifiedEulerOdeSolver
y que nos permitirá utilizar cualquiera de ellos indistintamente. - La clase abstracta
eos
nos permitirá trabajar con diferentes ecuaciones de estado. - Desde el punto de vista matemático, necesitamos definir una clase
tensor
y sus casos particularesscalar
,vector
ymatrix
.
Dejar un comentario