Experiencias elípticas con Chombo

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:

Desacoplamiento de los sistemas para las X^i y beta^i de la discretización en cartesianas de la reformulación covariante del sector elíptico de la aproximación CFC en términos de CoCoNuT

En la discretización que hicimos teníamos dos sistemas acoplados, uno para las $latex X^i$ y otro para las $latex beta^i$. Procedemos ahora a desacoplarlos. Para empezar, tomamos la divergencia (plana) del sistema: $latex Delta X^i = 8 pi f^{ij} S^*_j – frac{1}{3}mathcal{D}^i mathcal{D}_j X^j$ y, teniendo en cuenta que $latex mathcal{D}$ conmuta con $latex Delta$ …

Discretización de la reformulación covariante del sector elíptico de la aproximación CFC en términos de CoCoNuT

Vamos a discretizar las ecuaciones que comentamos en este post. Para ello, discretizaremos las derivadas de la siguiente manera: $latex partial_x u = frac{u_{i+1,j,k}-u_{i-1,j,k}}{2h_x}$, $latex partial_y u = frac{u_{i,j+1,k}-u_{i,j-1,k}}{2h_y}$, $latex partial_z u = frac{u_{i,j,k+1}-u_{i,j,k-1}}{2h_z}$, $latex partial_{xx} u = frac{u_{i-1,j,k}-2u_{i,j,k}+u_{i+1,j,k}}{h_x^2}$, $latex partial_{yy} u = frac{u_{i,j-1,k}-2u_{i,j,k}+u_{i,j+1,k}}{h_y^2}$, $latex partial_{zz} u = frac{u_{i,j,k-1}-2u_{i,j,k}+u_{i,j,k+1}}{h_z^2}$, $latex partial_{xy} u = frac{u_{i-1,j-1,k}-u_{i+1,j-1,k}-u_{i-1,j+1,k}+u_{i+1,j+1,k}}{4h_xh_y}$, $latex …

La cara del error…

Hace tiempo que no escribo nada pues estoy intentando terminar un programa que ya va tocando… Para que no se diga, añado a continuación una imagen que he obtenido hace un momento, y que me ha hecho gracia, cuando pintaba el error entre la solución analítica de un problema de Poisson tridimensional y mi solución …

Reescritura en cartesianas de la reformulación covariante del sector elíptico de la aproximación CFC en términos de CoCoNuT

Ya escribimos al respecto en este post. Aquí lo que haremos es reescribir las expresiones allí introducidas En primer lugar, teniamos:  $latex Delta X^i = 8 pi f^{ij}S_j^* – frac{1}{3}mathcal{D}^i mathcal{D}_j X^j$ donde: $latex S_j^* := sqrt{ frac{gamma}{f} } S = psi^6 S_j$, $latex S_j := rho h w^2 v_j$. En el caso de estar …

Reescritura de la reformulación del sector elíptico de la aproximación CFC en términos de CoCoNuT

CoCoNuT es un código que permite realizar simulaciones de colapso estelar. Reescribimos las ecuaciones CFC, que son un caso particular de la aproximación FCF haciendo que las $latex h^{ij}$ sean cero, en terminos de las variables que éste utiliza. Empezamos con una auxilar:  $latex Delta X^i = 8 pi f^{ij}S_j^* – frac{1}{3}mathcal{D}^i mathcal{D}_j X^j$ donde: …

PDE de tipo Poisson con solución analítica

Una manera sencilla de tener una ecuación de Poisson en $latex 3D$ de la que conocer su solución analítica es la siguiente. Para empezar, consideramos una función: $latex u(x,y,z)$ a la que le aplicamos el operador $latex Delta$ y obtendremos otra función: $latex s(x,y,z)$. Ya tenemos $latex Delta u = s$, es decir, $latex frac{partial^2}{partial …

¿Qué pasa con tres o todas las fronteras Neumann en 2D?

Vamos a suponer $latex n=3$ para reducir el tamaño de las matrices. Empezamos suponiendo que conocemos: $latex frac{partial}{partial x}|_{0,0,}u, frac{partial}{partial x}|_{0,1}u, frac{partial}{partial x}|_{0,2}u$ $latex frac{partial}{partial y}|_{0,0}u, frac{partial}{partial y}|_{1,0}u$ $latex frac{partial}{partial y}|_{0,2}u, frac{partial}{partial y}|_{1,2}u$ $latex u|_{2,0}, u|_{2,1}, u|_{2,2}$ Discretizamos: $latex frac{u_{-1,0}-2u_{0,0}+u_{1,0}}{h^2} + frac{u_{0,-1}-2u_{0,0}+u_{0,1}}{h^2} = f_{0,0}$ $latex frac{u_{-1,1}-2u_{0,1}+u_{1,1}}{h^2} + frac{u_{0,0}-2u_{0,1}+u_{0,2}}{h^2} = f_{0,1}$ $latex frac{u_{-1,2}-2u_{0,2}+u_{1,2}}{h^2} + frac{u_{0,1}-2u_{0,2}+u_{0,3}}{h^2} = …

Discretización de PDEs, matrices por bloques, simetrizaciones y rangos.

Suponemos $latex Delta u = f$ en $latex 2D$, es decir, $latex frac{partial^2}{partial x^2}u(x,y) + frac{partial^2}{partial y^2}u(x,y) = f(x,y)$. Miraremos como queda la matriz del sistema al discretizar, como simetrizarla y su rango en tres casos: condición Neuman respecto $latex x$ en una frontera, condición Neumann respecto $latex y$ en una frontera y condición Neumann …

Ejemplo sencillo de frontera Neumann en 2D

Suponemos $latex n=5$. En el caso de tener todas las fronteras con condiciones Dirichlet: $latex frac{u_{0,1} -2u_{1,1} + u_{2,1}}{h^2} + frac{u_{1,0} -2u_{1,1} + u_{1,2}}{h^2} = f_{1,1}$ para $latex i,j=1,1$, $latex frac{u_{0,2} -2u_{1,2} + u_{2,2}}{h^2} + frac{u_{1,1} -2u_{1,2} + u_{1,3}}{h^2} = f_{1,2}$ para $latex i,j=1,2$, $latex frac{u_{0,3} -2u_{1,3} + u_{2,3}}{h^2} + frac{u_{1,2} -2u_{1,3} + u_{1,4}}{h^2} = …

Condiciones de contorno tipo Neumann

En el post anterior hablamos sobre condiciones de frontera y su transferencia entre mallas pero no comentamos en el caso de que las condición haga referencia al valor de la derivada y no al de la función: condición de Neumann. En $latex 1D$ supongamos que ahora tenemos $latex frac{partial^2}{partial x^2}u = f$ en $latex [a,b]$ …