Chombo

You are currently browsing articles tagged Chombo.

Para empezar, vamos a calcular numéricamente, y en mecánica clásica,  el campo creado por una partícula con masa en el espacio.

Si colocamos las fronteras de nuestro dominio $latex Omega in mathbb{R}^3$ lo suficientemente lejos, el cálculo del potencial gravitatorio se reduce a resolver la ecuación de Poisson

$latex Delta u(x,y,z) = 4 pi G rho(x,y,z)$ si $latex (x,y,z) in Omega$

con

$latex u(bar{x},bar{y},bar{z}) = 0$ si $latex (bar{x},bar{y},bar{z}) in partial Omega$,

y donde $latex rho(x,y,z)$ es la densidad de masa.

Aunque en estos casos tenemos solución analítica utilizando la función de Green, vamos a calcularla numéricamente utilizando Chombo, y mediante superposición, extenderlo a un sistema de masas puntuales.

Para empezar con la aproximación, utilizaremos gaussianas para simular las funciones $latex delta$ correspondientes a la distribución de masa puntual (mas similares a una $latex delta$ cuanto mas estrechas sean).

A continuación, colocaremos una partícula en el centro de un cubo y utilizaremos un malla adaptativa, definida manualmente (aunque Chombo también capaz de hacerlo automáticamente), que se hará mas fina a medida que se acerque a la misma. Esto permitirá tener resolución y tiempo de cálculo donde realmente se necesita:

masPun1masPun2

Colocamos fronteras Dirichlet homogeneas, y ejecutamos. El resultado es:

masPunSol1

que, al ser tridimensional, cuesta un poco de ver. Básicamente, es un campo con simétria esférica. A continuación cortamos con un plano por el centro del campo

masPunSol2masPunSol2b masPunSol2c

y lo elevamos, pues es campo gravitatorio se puede pensar como una curvatura 🙂

masPunSol3b masPunSol3

Suponemos ahora dos masas puntuales y procedemos de la misma manera. El tamaño de la partícula representa su masa.

2masPunSol1

Como se puede apreciar, hemos añadido un poco mas de resolución en la parte de la partícula mas masiva. Lo que obtenemos es (en 3D y en corte):

Finalmente, si elevamos los cortes, obtenemos:

2masPunSol3 2masPunSol3b

Finalmente, algunas gráficas correspondientes a dos nuevos casos en los que separo cada vez mas las partículas:

Tags: , , , ,

En el libro de Análisis numérico de Burden y Faires aparecen una serie de ejemplos y ejercicios resueltos de PDEs elípticas en 2D. Vamos a intentar resolverlos utilizando Chombo…

La primera ecuación corresponde con un ejemplo y es

$latex frac{partial^2}{partial x^2}u(x,y) + frac{partial^2}{partial y^2}u(x,y) = 0$

en

$latex Omega = { (x,y): 0<x<0.5, 0<y<0.5}$

y cuyas condiciones en la frontera $latex partial Omega$ son

$latex u(x,0)=0, u(0,y)=0, u(x,0.5)=200x, u(0.5,y)=200y$.

El resultado es:

ejeM1

Para el ejercicio 12.1.1

$latex u_{xx} + u_{yy} = 4$

en

$latex Omega = { (x,y): 0<x<1, 0<y<2}$

y cuyas condiciones en la frontera $latex partial Omega$ son

$latex u(x,0)=x^2, u(0,y)=y^2, u(x,2)=(x-2)^2, u(1,y)=(y-1)^2$.

El resultado es:

ejeR1

A continuación, para el 12.1.3.a

$latex u_{xx} + u_{yy} = 0$

en

$latex Omega = { (x,y): 0<x<1, 0<y<1}$

y cuyas condiciones en la frontera $latex partial Omega$ son

$latex u(x,0)=0, u(0,y)=0, u(x,1)=x, u(1,y)=y$.

El resultado es:

ejeR3a

En el 12.1.3.b encontramos

$latex Delta u = -(cos(x+y)+cos(x-y))$

en

$latex Omega = { (x,y): 0<x<pi, 0<y<frac{pi}{2}}$

y

$latex u(x,0)=cos x , u(0,y)=cos y, u(x,frac{pi}{2})=0, u(pi,y)=-cos y$,

obteniendo:

 ejeR3b ejeR3b2

Tags: , ,

El software Chombo, del Berkeley Lab, combina los métodos en diferencias finitas con las mallas adaptativas (AMR) para resolver, entre otras, PDEs elípticas.

Las siguientes imágenes, en 2D y 3D, se han obtenido a partir de su AMRPoisson:

schSolSouschSol

Tags: , , ,

FireStats icon Powered by FireStats