solución automatizada de ecuaciones diferenciales en ... · soluci on automatizada de ecuaciones...
TRANSCRIPT
Solucion Automatizada de Ecuaciones Diferencialesen Paralelo usando el Metodo de Elemento Finito
Seminario de Modelacion Matematica y Computacional9o Ciclo
Luis M. de la Cruz
Instituto de GeofısicaUniversidad Nacional Autonoma de Mexico
Septiembre de 2012
LMCS (IGF-UNAM) 2012 1 / 51
Contenido
1 Modelacion Matematica y Computacional
2 Metodo de Elemento Finito
3 FEniCS projectFlujo en medios porososSolucion de flujo monofasicoConveccion forzadaComputo ParaleloProblemas no lineales
LMCS (IGF-UNAM) 2012 2 / 51
Modelacion Matematica y Computacional
MMC
LMCS (IGF-UNAM) 2012 3 / 51
Modelacion Matematica y Computacional
MMC
LMCS (IGF-UNAM) 2012 4 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.
Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.
Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
Modelo Conceptual
Definicion del problema:
Escalas.Leyes que intervienen.Datos conocidos.
Ejemplos presentados en el SMMC:
Simulaciones numericas de flujosastrofısicos, A. Raga, ICN.
(The Astrophysical Journal, 725, 2010, 1466)
Simulacion de deformaciones ycortes de tejido en una cirugıa deprostata, F. Arambula, CCADET.
(Comp & Graph, 28, 5, 2004, pp 767)
LMCS (IGF-UNAM) 2012 5 / 51
Modelacion Matematica y Computacional
MMC
LMCS (IGF-UNAM) 2012 6 / 51
Modelacion Matematica y Computacional
Modelo Matematico
El problema se describe en terminos de ecuaciones matematicas∫B(t)
∂ψ
∂tdx+
∫B(t)
∇ · Fdx =
∫B(t)
qdx,
Funcion de flujo : F = vψ − τ .
Simulaciones numericas de flujos astrofısicos (Raga et al.)
∂U
∂t+∂F
∂x+∂G
∂y= S
Simulacion de deformaciones y cortes de tejido en unacirugıa de prostata (Arambula et al.)
mid2xidt2
+ γidxidt
+ gi(t,xi) = fi(t,xi)
LMCS (IGF-UNAM) 2012 7 / 51
Modelacion Matematica y Computacional
Modelo Matematico
El problema se describe en terminos de ecuaciones matematicas∫B(t)
∂ψ
∂tdx+
∫B(t)
∇ · Fdx =
∫B(t)
qdx,
Funcion de flujo : F = vψ − τ .
Simulaciones numericas de flujos astrofısicos (Raga et al.)
∂U
∂t+∂F
∂x+∂G
∂y= S
Simulacion de deformaciones y cortes de tejido en unacirugıa de prostata (Arambula et al.)
mid2xidt2
+ γidxidt
+ gi(t,xi) = fi(t,xi)
LMCS (IGF-UNAM) 2012 7 / 51
Modelacion Matematica y Computacional
Modelo Matematico
El problema se describe en terminos de ecuaciones matematicas∫B(t)
∂ψ
∂tdx+
∫B(t)
∇ · Fdx =
∫B(t)
qdx,
Funcion de flujo : F = vψ − τ .
Simulaciones numericas de flujos astrofısicos (Raga et al.)
∂U
∂t+∂F
∂x+∂G
∂y= S
Simulacion de deformaciones y cortes de tejido en unacirugıa de prostata (Arambula et al.)
mid2xidt2
+ γidxidt
+ gi(t,xi) = fi(t,xi)
LMCS (IGF-UNAM) 2012 7 / 51
Modelacion Matematica y Computacional
MMC
LMCS (IGF-UNAM) 2012 8 / 51
Modelacion Matematica y Computacional
Modelo Numerico (ejemplo simple ∇2ψ = f)
Diferencias Finitas:
ψi+1,j − 2ψi,j + ψi−1,j
∆x+ψi,j+1 − 2ψi,j + ψi,j−1
∆y= fi,j
N = Nx ∗ Ny;f o r ( i n t i = 1 ; i <= N; i++)
f o r ( i n t j = 1 ; j <= N; j++) a ( i , j ) = −(2 / de l t a x + 2 / de l t a y ) ;a ( i +1, j ) = a ( i −1, j ) = 1 / de l t a x ; a ( i , j +1) = a ( i , j−1) = 1 / de l t a y ;
Volumen Finito:
aPψP = aEψE + aWψW + aNψN + aSψS + SP
aE = 1/∆xe; aW = 1/∆xw; aN = 1/∆yn; aS = 1/∆ys; aP = aE , aW , aN , aS ; SP = f∆x∆y
f o r ( i n t i = 1 ; i <= Nx; i++) f o r ( i n t j = 1 ; j <= Ny; j++)
aE( i , j ) = aW( i , j ) = 1 / de l t a x ; aN( i , j ) = aS ( i , j ) = 1 / de l t a y ;aP( i , j ) = aE( i , j ) + aW( i , j ) + aN( i , j ) + aS ( i , j ) ;S ( i , j ) = f ( i , j ) ∗ de l t a x ∗ de l t a y ;
LMCS (IGF-UNAM) 2012 9 / 51
Modelacion Matematica y Computacional
Modelo Numerico (ejemplo simple ∇2ψ = f)
Diferencias Finitas:
ψi+1,j − 2ψi,j + ψi−1,j
∆x+ψi,j+1 − 2ψi,j + ψi,j−1
∆y= fi,j
N = Nx ∗ Ny;f o r ( i n t i = 1 ; i <= N; i++)
f o r ( i n t j = 1 ; j <= N; j++) a ( i , j ) = −(2 / de l t a x + 2 / de l t a y ) ;a ( i +1, j ) = a ( i −1, j ) = 1 / de l t a x ; a ( i , j +1) = a ( i , j−1) = 1 / de l t a y ;
Volumen Finito:
aPψP = aEψE + aWψW + aNψN + aSψS + SP
aE = 1/∆xe; aW = 1/∆xw; aN = 1/∆yn; aS = 1/∆ys; aP = aE , aW , aN , aS ; SP = f∆x∆y
f o r ( i n t i = 1 ; i <= Nx; i++) f o r ( i n t j = 1 ; j <= Ny; j++)
aE( i , j ) = aW( i , j ) = 1 / de l t a x ; aN( i , j ) = aS ( i , j ) = 1 / de l t a y ;aP( i , j ) = aE( i , j ) + aW( i , j ) + aN( i , j ) + aS ( i , j ) ;S ( i , j ) = f ( i , j ) ∗ de l t a x ∗ de l t a y ;
LMCS (IGF-UNAM) 2012 9 / 51
Modelacion Matematica y Computacional
Modelo Numerico (ejemplo simple ∇2ψ = f)
Diferencias Finitas:
ψi+1,j − 2ψi,j + ψi−1,j
∆x+ψi,j+1 − 2ψi,j + ψi,j−1
∆y= fi,j
N = Nx ∗ Ny;f o r ( i n t i = 1 ; i <= N; i++)
f o r ( i n t j = 1 ; j <= N; j++) a ( i , j ) = −(2 / de l t a x + 2 / de l t a y ) ;a ( i +1, j ) = a ( i −1, j ) = 1 / de l t a x ; a ( i , j +1) = a ( i , j−1) = 1 / de l t a y ;
Volumen Finito:
aPψP = aEψE + aWψW + aNψN + aSψS + SP
aE = 1/∆xe; aW = 1/∆xw; aN = 1/∆yn; aS = 1/∆ys; aP = aE , aW , aN , aS ; SP = f∆x∆y
f o r ( i n t i = 1 ; i <= Nx; i++) f o r ( i n t j = 1 ; j <= Ny; j++)
aE( i , j ) = aW( i , j ) = 1 / de l t a x ; aN( i , j ) = aS ( i , j ) = 1 / de l t a y ;aP( i , j ) = aE( i , j ) + aW( i , j ) + aN( i , j ) + aS ( i , j ) ;S ( i , j ) = f ( i , j ) ∗ de l t a x ∗ de l t a y ;
LMCS (IGF-UNAM) 2012 9 / 51
Modelacion Matematica y Computacional
Modelo Numerico (ejemplo simple ∇2ψ = f)
Diferencias Finitas:
ψi+1,j − 2ψi,j + ψi−1,j
∆x+ψi,j+1 − 2ψi,j + ψi,j−1
∆y= fi,j
N = Nx ∗ Ny;f o r ( i n t i = 1 ; i <= N; i++)
f o r ( i n t j = 1 ; j <= N; j++) a ( i , j ) = −(2 / de l t a x + 2 / de l t a y ) ;a ( i +1, j ) = a ( i −1, j ) = 1 / de l t a x ; a ( i , j +1) = a ( i , j−1) = 1 / de l t a y ;
Volumen Finito:
aPψP = aEψE + aWψW + aNψN + aSψS + SP
aE = 1/∆xe; aW = 1/∆xw; aN = 1/∆yn; aS = 1/∆ys; aP = aE , aW , aN , aS ; SP = f∆x∆y
f o r ( i n t i = 1 ; i <= Nx; i++) f o r ( i n t j = 1 ; j <= Ny; j++)
aE( i , j ) = aW( i , j ) = 1 / de l t a x ; aN( i , j ) = aS ( i , j ) = 1 / de l t a y ;aP( i , j ) = aE( i , j ) + aW( i , j ) + aN( i , j ) + aS ( i , j ) ;S ( i , j ) = f ( i , j ) ∗ de l t a x ∗ de l t a y ;
LMCS (IGF-UNAM) 2012 9 / 51
Modelacion Matematica y Computacional
Modelo Numerico (ejemplo simple ∇2ψ = f)
Diferencias Finitas:
ψi+1,j − 2ψi,j + ψi−1,j
∆x+ψi,j+1 − 2ψi,j + ψi,j−1
∆y= fi,j
N = Nx ∗ Ny;f o r ( i n t i = 1 ; i <= N; i++)
f o r ( i n t j = 1 ; j <= N; j++) a ( i , j ) = −(2 / de l t a x + 2 / de l t a y ) ;a ( i +1, j ) = a ( i −1, j ) = 1 / de l t a x ; a ( i , j +1) = a ( i , j−1) = 1 / de l t a y ;
Volumen Finito:
aPψP = aEψE + aWψW + aNψN + aSψS + SP
aE = 1/∆xe; aW = 1/∆xw; aN = 1/∆yn; aS = 1/∆ys; aP = aE , aW , aN , aS ; SP = f∆x∆y
f o r ( i n t i = 1 ; i <= Nx; i++) f o r ( i n t j = 1 ; j <= Ny; j++)
aE( i , j ) = aW( i , j ) = 1 / de l t a x ; aN( i , j ) = aS ( i , j ) = 1 / de l t a y ;aP( i , j ) = aE( i , j ) + aW( i , j ) + aN( i , j ) + aS ( i , j ) ;S ( i , j ) = f ( i , j ) ∗ de l t a x ∗ de l t a y ;
LMCS (IGF-UNAM) 2012 9 / 51
Modelacion Matematica y Computacional
Modelo Numerico (ejemplo simple ∇2ψ = f)
Diferencias Finitas:
ψi+1,j − 2ψi,j + ψi−1,j
∆x+ψi,j+1 − 2ψi,j + ψi,j−1
∆y= fi,j
N = Nx ∗ Ny;f o r ( i n t i = 1 ; i <= N; i++)
f o r ( i n t j = 1 ; j <= N; j++) a ( i , j ) = −(2 / de l t a x + 2 / de l t a y ) ;a ( i +1, j ) = a ( i −1, j ) = 1 / de l t a x ; a ( i , j +1) = a ( i , j−1) = 1 / de l t a y ;
Volumen Finito:
aPψP = aEψE + aWψW + aNψN + aSψS + SP
aE = 1/∆xe; aW = 1/∆xw; aN = 1/∆yn; aS = 1/∆ys; aP = aE , aW , aN , aS ; SP = f∆x∆y
f o r ( i n t i = 1 ; i <= Nx; i++) f o r ( i n t j = 1 ; j <= Ny; j++)
aE( i , j ) = aW( i , j ) = 1 / de l t a x ; aN( i , j ) = aS ( i , j ) = 1 / de l t a y ;aP( i , j ) = aE( i , j ) + aW( i , j ) + aN( i , j ) + aS ( i , j ) ;S ( i , j ) = f ( i , j ) ∗ de l t a x ∗ de l t a y ;
LMCS (IGF-UNAM) 2012 9 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:
1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).u es la funcion a ser aproximada (trial function).Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.3 Realizar una integracion por partes en los terminos que tengan
segundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).u es la funcion a ser aproximada (trial function).Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.3 Realizar una integracion por partes en los terminos que tengan
segundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).
u es la funcion a ser aproximada (trial function).Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.3 Realizar una integracion por partes en los terminos que tengan
segundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).u es la funcion a ser aproximada (trial function).
Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.3 Realizar una integracion por partes en los terminos que tengan
segundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).u es la funcion a ser aproximada (trial function).Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.3 Realizar una integracion por partes en los terminos que tengan
segundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).u es la funcion a ser aproximada (trial function).Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.
3 Realizar una integracion por partes en los terminos que tengansegundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Metodo de Elemento Finito (MEF)
Problema original:
Lu(x) = f(x) en Ω
u(x) = u0, x sobre ∂Ωdonde L es un operadordiferencial, x ∈ Ω y Ω ⊂ Rd.
Formulacion variacional:1 Multiplicar Lu = f por una funcion de prueba v.
v es la funcion de prueba (test function).u es la funcion a ser aproximada (trial function).Especificar espacios de funciones donde u y v esten bien definidas.
2 Integrar la ecuacion resultante sobre Ω.3 Realizar una integracion por partes en los terminos que tengan
segundas derivadas.
LMCS (IGF-UNAM) 2012 10 / 51
Metodo de Elemento Finito
Ecuacion de Poisson: L = −∆ ≡ −∇2
Problema variacional
Encontrar u ∈ V tal que∫Ω∇u · ∇vdx =
∫Ωfvdx ∀v ∈ V .
V = v ∈ H1(Ω) : v = 0 sobre ∂Ω,
V = v ∈ H1(Ω) : v = u0 sobre ∂Ω.
H1(Ω) contiene funciones v tal que v2 y ||∇v||2 tienen integralesfinitas sobre Ω.
LMCS (IGF-UNAM) 2012 11 / 51
Metodo de Elemento Finito
Ecuacion de Poisson
Problema variacional discreto
Encontrar uh ∈ Vh ⊂ V tal que∫Ω∇uh · ∇vdx =
∫Ωfvdx ∀v ∈ Vh ⊂ V .
La eleccion de Vh y Vh se sigue directamente del tipo de elementosfinitos que se deseen aplicar.
Polinomios
Pr(K) = v : v es un polinomio de grado ≤ r, x ∈ K.P1(K) es el espacio de polinomios de primer grado definidos en K: v(x) = α00 + α10x+ α01y, con x = (x, y) ∈ K y αij ∈ R.
LMCS (IGF-UNAM) 2012 12 / 51
Metodo de Elemento Finito
Ecuacion de Poisson
Problema variacional discreto
Encontrar uh ∈ Vh ⊂ V tal que∫Ω∇uh · ∇vdx =
∫Ωfvdx ∀v ∈ Vh ⊂ V .
La eleccion de Vh y Vh se sigue directamente del tipo de elementosfinitos que se deseen aplicar.
Polinomios
Pr(K) = v : v es un polinomio de grado ≤ r, x ∈ K.P1(K) es el espacio de polinomios de primer grado definidos en K: v(x) = α00 + α10x+ α01y, con x = (x, y) ∈ K y αij ∈ R.
LMCS (IGF-UNAM) 2012 12 / 51
Metodo de Elemento Finito
Ecuacion de Poisson
Problema variacional discreto
Encontrar uh ∈ Vh ⊂ V tal que∫Ω∇uh · ∇vdx =
∫Ωfvdx ∀v ∈ Vh ⊂ V .
La eleccion de Vh y Vh se sigue directamente del tipo de elementosfinitos que se deseen aplicar.
Polinomios
Pr(K) = v : v es un polinomio de grado ≤ r, x ∈ K.P1(K) es el espacio de polinomios de primer grado definidos en K: v(x) = α00 + α10x+ α01y, con x = (x, y) ∈ K y αij ∈ R.
LMCS (IGF-UNAM) 2012 12 / 51
Metodo de Elemento Finito
Ecuacion de Poisson
LMCS (IGF-UNAM) 2012 13 / 51
Metodo de Elemento Finito
MMC
LMCS (IGF-UNAM) 2012 14 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Objetivo: automatizar los diferentes aspectos de la MMC.
Generalidad
EficienciaSimplicidad
Autores (intelectuales y materiales) principales: Claes Johnson,Ridgway Scott, Johan Hoffman y Anders Logg.
Instituciones involucradas (hasta ahora):
Royal Institute of Technology KTHUniversity of ChicagoSimula Research LaboratoryDelft University of TechnologyArgonne National LaboratoryTexas Tech UniversityUniversity of CambridgeChalmers University of Technology
LMCS (IGF-UNAM) 2012 15 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Objetivo: automatizar los diferentes aspectos de la MMC.
GeneralidadEficiencia
Simplicidad
Autores (intelectuales y materiales) principales: Claes Johnson,Ridgway Scott, Johan Hoffman y Anders Logg.
Instituciones involucradas (hasta ahora):
Royal Institute of Technology KTHUniversity of ChicagoSimula Research LaboratoryDelft University of TechnologyArgonne National LaboratoryTexas Tech UniversityUniversity of CambridgeChalmers University of Technology
LMCS (IGF-UNAM) 2012 15 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Objetivo: automatizar los diferentes aspectos de la MMC.
GeneralidadEficienciaSimplicidad
Autores (intelectuales y materiales) principales: Claes Johnson,Ridgway Scott, Johan Hoffman y Anders Logg.
Instituciones involucradas (hasta ahora):
Royal Institute of Technology KTHUniversity of ChicagoSimula Research LaboratoryDelft University of TechnologyArgonne National LaboratoryTexas Tech UniversityUniversity of CambridgeChalmers University of Technology
LMCS (IGF-UNAM) 2012 15 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Objetivo: automatizar los diferentes aspectos de la MMC.
GeneralidadEficienciaSimplicidad
Autores (intelectuales y materiales) principales: Claes Johnson,Ridgway Scott, Johan Hoffman y Anders Logg.
Instituciones involucradas (hasta ahora):
Royal Institute of Technology KTHUniversity of ChicagoSimula Research LaboratoryDelft University of TechnologyArgonne National LaboratoryTexas Tech UniversityUniversity of CambridgeChalmers University of Technology
LMCS (IGF-UNAM) 2012 15 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Objetivo: automatizar los diferentes aspectos de la MMC.
GeneralidadEficienciaSimplicidad
Autores (intelectuales y materiales) principales: Claes Johnson,Ridgway Scott, Johan Hoffman y Anders Logg.
Instituciones involucradas (hasta ahora):
Royal Institute of Technology KTHUniversity of ChicagoSimula Research LaboratoryDelft University of TechnologyArgonne National LaboratoryTexas Tech UniversityUniversity of CambridgeChalmers University of Technology
LMCS (IGF-UNAM) 2012 15 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Objetivo: automatizar los diferentes aspectos de la MMC.
GeneralidadEficienciaSimplicidad
Autores (intelectuales y materiales) principales: Claes Johnson,Ridgway Scott, Johan Hoffman y Anders Logg.
Instituciones involucradas (hasta ahora):
Royal Institute of Technology KTHUniversity of ChicagoSimula Research LaboratoryDelft University of TechnologyArgonne National LaboratoryTexas Tech UniversityUniversity of CambridgeChalmers University of Technology
LMCS (IGF-UNAM) 2012 15 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Contiene herramientas para mallas, formulaciones variacionales,solucion de ODEs y algoritmos de algebra lineal (Licencia GNULGPL V3 o mayor).
Unified Form Language (UFL) es una interfaz flexible paraseleccionar espacios de elemento finito y definir expresiones para lasformas debiles en notacion muy parecida a la matematica.FEniCS Form Compiler (FFC) traduce las formulacionesvariacionales de PDEs a codigos eficientes, combinando generalidady eficiencia. Genera codigo en C o C++ de formas multilinealesdadas en notacion matematica.DOLFIN is una interfaz C++/Python de FEniCS, que provee unambiente de solucion de problemas (PSE) consistente para PDEs yODEs.Otras: Dorsal, FIAT, Instant, Viper, UFC.
LMCS (IGF-UNAM) 2012 16 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Contiene herramientas para mallas, formulaciones variacionales,solucion de ODEs y algoritmos de algebra lineal (Licencia GNULGPL V3 o mayor).
Unified Form Language (UFL) es una interfaz flexible paraseleccionar espacios de elemento finito y definir expresiones para lasformas debiles en notacion muy parecida a la matematica.
FEniCS Form Compiler (FFC) traduce las formulacionesvariacionales de PDEs a codigos eficientes, combinando generalidady eficiencia. Genera codigo en C o C++ de formas multilinealesdadas en notacion matematica.DOLFIN is una interfaz C++/Python de FEniCS, que provee unambiente de solucion de problemas (PSE) consistente para PDEs yODEs.Otras: Dorsal, FIAT, Instant, Viper, UFC.
LMCS (IGF-UNAM) 2012 16 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Contiene herramientas para mallas, formulaciones variacionales,solucion de ODEs y algoritmos de algebra lineal (Licencia GNULGPL V3 o mayor).
Unified Form Language (UFL) es una interfaz flexible paraseleccionar espacios de elemento finito y definir expresiones para lasformas debiles en notacion muy parecida a la matematica.FEniCS Form Compiler (FFC) traduce las formulacionesvariacionales de PDEs a codigos eficientes, combinando generalidady eficiencia. Genera codigo en C o C++ de formas multilinealesdadas en notacion matematica.
DOLFIN is una interfaz C++/Python de FEniCS, que provee unambiente de solucion de problemas (PSE) consistente para PDEs yODEs.Otras: Dorsal, FIAT, Instant, Viper, UFC.
LMCS (IGF-UNAM) 2012 16 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Contiene herramientas para mallas, formulaciones variacionales,solucion de ODEs y algoritmos de algebra lineal (Licencia GNULGPL V3 o mayor).
Unified Form Language (UFL) es una interfaz flexible paraseleccionar espacios de elemento finito y definir expresiones para lasformas debiles en notacion muy parecida a la matematica.FEniCS Form Compiler (FFC) traduce las formulacionesvariacionales de PDEs a codigos eficientes, combinando generalidady eficiencia. Genera codigo en C o C++ de formas multilinealesdadas en notacion matematica.DOLFIN is una interfaz C++/Python de FEniCS, que provee unambiente de solucion de problemas (PSE) consistente para PDEs yODEs.
Otras: Dorsal, FIAT, Instant, Viper, UFC.
LMCS (IGF-UNAM) 2012 16 / 51
FEniCS project
The FEniCS Project : automation of computational mathematical modeling
Contiene herramientas para mallas, formulaciones variacionales,solucion de ODEs y algoritmos de algebra lineal (Licencia GNULGPL V3 o mayor).
Unified Form Language (UFL) es una interfaz flexible paraseleccionar espacios de elemento finito y definir expresiones para lasformas debiles en notacion muy parecida a la matematica.FEniCS Form Compiler (FFC) traduce las formulacionesvariacionales de PDEs a codigos eficientes, combinando generalidady eficiencia. Genera codigo en C o C++ de formas multilinealesdadas en notacion matematica.DOLFIN is una interfaz C++/Python de FEniCS, que provee unambiente de solucion de problemas (PSE) consistente para PDEs yODEs.Otras: Dorsal, FIAT, Instant, Viper, UFC.
LMCS (IGF-UNAM) 2012 16 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.
2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.
3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.
4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.
5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.
6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.
7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.
8 Adicionalmente se pueden calcular cantidades derivadas comogradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project
Metodologıa para resolver un problema con FEniCS
FEniCS puede ser usado con C++ y Python.
Resolver PDEs con FEniCS es realmente simple:
A. Identificar las PDEs y sus condiciones de frontera.B. Reformular las PDEs como un problema variacional.C. Construir un programa en Python (o C++) para:
1 Definir los datos de entrada del problema.2 Crear o importar la malla del dominio de estudio.3 Definir espacios de funciones.4 Definir las condiciones iniciales y de frontera.5 Definir expresiones para la forma variacional del problema.6 Calcular la solucion del problema varicional discreto.7 Visualizar resultados.8 Adicionalmente se pueden calcular cantidades derivadas como
gradientes, ası como visulizar los resultados.
LMCS (IGF-UNAM) 2012 17 / 51
FEniCS project Flujo en medios porosos
Flujo monofasico en medios porosos: Problema original
φCt∂p
∂t− K
µ∇2p = 0 en Ω× [0, T ]
Condiciones de frontera
PA PB
L x
L y
y
x
No flujo
Condicion inicialp = 1 atm en t = 0
Coeficientes
Ct = 1E − 4 atm−1, φ = 0.2, µ = 1 cp, K = 1 d
LMCS (IGF-UNAM) 2012 18 / 51
FEniCS project Flujo en medios porosos
Flujo monofasico en medios porosos: Formulacion variacional
Usando un esquema implıcito
φCt
(pn − pn−1
∆t
)− K
µ∇2pn = 0
Multiplicando por una funcion v e integrando por partes:∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
Problema variacional
Dado pn−1 ∈ V , encontrar pn ∈ V para todo v ∈ V y n = 1, 2 . . . talque:
a(pn, v) = L(v)
LMCS (IGF-UNAM) 2012 19 / 51
FEniCS project Flujo en medios porosos
Flujo monofasico en medios porosos: Formulacion variacional
Usando un esquema implıcito
φCt
(pn − pn−1
∆t
)− K
µ∇2pn = 0
Multiplicando por una funcion v e integrando por partes:∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
Problema variacional
Dado pn−1 ∈ V , encontrar pn ∈ V para todo v ∈ V y n = 1, 2 . . . talque:
a(pn, v) = L(v)
LMCS (IGF-UNAM) 2012 19 / 51
FEniCS project Flujo en medios porosos
Flujo monofasico en medios porosos: Formulacion variacional
Usando un esquema implıcito
φCt
(pn − pn−1
∆t
)− K
µ∇2pn = 0
Multiplicando por una funcion v e integrando por partes:∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
Problema variacional
Dado pn−1 ∈ V , encontrar pn ∈ V para todo v ∈ V y n = 1, 2 . . . talque:
a(pn, v) = L(v)
LMCS (IGF-UNAM) 2012 19 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
1 Importar los paquetes necesarios: dolfin y scitools
from d o l f i n import ∗import s c i t o o l s . ea syv i z as evfrom s c i t o o l s . BoxField import ∗
2 Definir los parametros de entrada constantes
Ct = 1E−4phi = 0 .2mu = 1K = 1
3 Se define el dominio y la malla
mesh = Rectangle (0 ,0 ,300 ,10 ,20 ,10 , ’ l e f t ’ )
4 Se define el espacio discreto de funciones V :
V = FunctionSpace (mesh , ”CG” , 1)
CG significa Continuous Galerking, i.e. elementos de Lagrange estandar (se puede usarLagrange). El grado es 1 (linear triangle). La u calculada sera continua y lineal en xy y dentro de cada elemento. Se pueden usar polinomios de mas alto orden usandodegree = X en el tercer argumento. Tambien es posible usar DG en el segundoargumento lo cual dara espacios de funciones para metodos de Galerkin Discontinuo.
LMCS (IGF-UNAM) 2012 20 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
1 Importar los paquetes necesarios: dolfin y scitools
from d o l f i n import ∗import s c i t o o l s . ea syv i z as evfrom s c i t o o l s . BoxField import ∗
2 Definir los parametros de entrada constantes
Ct = 1E−4phi = 0 .2mu = 1K = 1
3 Se define el dominio y la malla
mesh = Rectangle (0 ,0 ,300 ,10 ,20 ,10 , ’ l e f t ’ )
4 Se define el espacio discreto de funciones V :
V = FunctionSpace (mesh , ”CG” , 1)
CG significa Continuous Galerking, i.e. elementos de Lagrange estandar (se puede usarLagrange). El grado es 1 (linear triangle). La u calculada sera continua y lineal en xy y dentro de cada elemento. Se pueden usar polinomios de mas alto orden usandodegree = X en el tercer argumento. Tambien es posible usar DG en el segundoargumento lo cual dara espacios de funciones para metodos de Galerkin Discontinuo.
LMCS (IGF-UNAM) 2012 20 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
1 Importar los paquetes necesarios: dolfin y scitools
from d o l f i n import ∗import s c i t o o l s . ea syv i z as evfrom s c i t o o l s . BoxField import ∗
2 Definir los parametros de entrada constantes
Ct = 1E−4phi = 0 .2mu = 1K = 1
3 Se define el dominio y la malla
mesh = Rectangle (0 ,0 ,300 ,10 ,20 ,10 , ’ l e f t ’ )
4 Se define el espacio discreto de funciones V :
V = FunctionSpace (mesh , ”CG” , 1)
CG significa Continuous Galerking, i.e. elementos de Lagrange estandar (se puede usarLagrange). El grado es 1 (linear triangle). La u calculada sera continua y lineal en xy y dentro de cada elemento. Se pueden usar polinomios de mas alto orden usandodegree = X en el tercer argumento. Tambien es posible usar DG en el segundoargumento lo cual dara espacios de funciones para metodos de Galerkin Discontinuo.
LMCS (IGF-UNAM) 2012 20 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
1 Importar los paquetes necesarios: dolfin y scitools
from d o l f i n import ∗import s c i t o o l s . ea syv i z as evfrom s c i t o o l s . BoxField import ∗
2 Definir los parametros de entrada constantes
Ct = 1E−4phi = 0 .2mu = 1K = 1
3 Se define el dominio y la malla
mesh = Rectangle (0 ,0 ,300 ,10 ,20 ,10 , ’ l e f t ’ )
4 Se define el espacio discreto de funciones V :
V = FunctionSpace (mesh , ”CG” , 1)
CG significa Continuous Galerking, i.e. elementos de Lagrange estandar (se puede usarLagrange). El grado es 1 (linear triangle). La u calculada sera continua y lineal en xy y dentro de cada elemento. Se pueden usar polinomios de mas alto orden usandodegree = X en el tercer argumento. Tambien es posible usar DG en el segundoargumento lo cual dara espacios de funciones para metodos de Galerkin Discontinuo.
LMCS (IGF-UNAM) 2012 20 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
5 Condiciones de frontera
def on boundary L (x ) :re turn abs (x [ 0 ] ) < t o l
pL = Constant (2 )bcL = Dir ichletBC (V, pL , on boundary L )
de f on boundary R (x ) :re turn abs (x [0]−300) < t o l
pR = Constant (1)bcR = Dir ichletBC (V, pR, on boundary R )
El arreglo x contiene las coordenadas de los nodos y x[0] = x, x[1] = y y x[2] = z.Las dos condiciones de frontera se pueden almacenar en un arreglo para su posterioruso:
bcs = [ bcL , bcR ]
6 Condiciones iniciales
p 0 = Constant (1 ) p0 = i n t e r p o l a t e ( p 0 ,V)
LMCS (IGF-UNAM) 2012 21 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
5 Condiciones de frontera
def on boundary L (x ) :re turn abs (x [ 0 ] ) < t o l
pL = Constant (2 )bcL = Dir ichletBC (V, pL , on boundary L )
de f on boundary R (x ) :re turn abs (x [0]−300) < t o l
pR = Constant (1)bcR = Dir ichletBC (V, pR, on boundary R )
El arreglo x contiene las coordenadas de los nodos y x[0] = x, x[1] = y y x[2] = z.Las dos condiciones de frontera se pueden almacenar en un arreglo para su posterioruso:
bcs = [ bcL , bcR ]
6 Condiciones iniciales
p 0 = Constant (1 ) p0 = i n t e r p o l a t e ( p 0 ,V)
LMCS (IGF-UNAM) 2012 21 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
5 Condiciones de frontera
def on boundary L (x ) :re turn abs (x [ 0 ] ) < t o l
pL = Constant (2 )bcL = Dir ichletBC (V, pL , on boundary L )
de f on boundary R (x ) :re turn abs (x [0]−300) < t o l
pR = Constant (1)bcR = Dir ichletBC (V, pR, on boundary R )
El arreglo x contiene las coordenadas de los nodos y x[0] = x, x[1] = y y x[2] = z.Las dos condiciones de frontera se pueden almacenar en un arreglo para su posterioruso:
bcs = [ bcL , bcR ]
6 Condiciones iniciales
p 0 = Constant (1 ) p0 = i n t e r p o l a t e ( p 0 ,V)
LMCS (IGF-UNAM) 2012 21 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
5 Condiciones de frontera
def on boundary L (x ) :re turn abs (x [ 0 ] ) < t o l
pL = Constant (2 )bcL = Dir ichletBC (V, pL , on boundary L )
de f on boundary R (x ) :re turn abs (x [0]−300) < t o l
pR = Constant (1)bcR = Dir ichletBC (V, pR, on boundary R )
El arreglo x contiene las coordenadas de los nodos y x[0] = x, x[1] = y y x[2] = z.Las dos condiciones de frontera se pueden almacenar en un arreglo para su posterioruso:
bcs = [ bcL , bcR ]
6 Condiciones iniciales
p 0 = Constant (1 )
p0 = i n t e r p o l a t e ( p 0 ,V)
LMCS (IGF-UNAM) 2012 21 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
5 Condiciones de frontera
def on boundary L (x ) :re turn abs (x [ 0 ] ) < t o l
pL = Constant (2 )bcL = Dir ichletBC (V, pL , on boundary L )
de f on boundary R (x ) :re turn abs (x [0]−300) < t o l
pR = Constant (1)bcR = Dir ichletBC (V, pR, on boundary R )
El arreglo x contiene las coordenadas de los nodos y x[0] = x, x[1] = y y x[2] = z.Las dos condiciones de frontera se pueden almacenar en un arreglo para su posterioruso:
bcs = [ bcL , bcR ]
6 Condiciones iniciales
p 0 = Constant (1 ) p0 = i n t e r p o l a t e ( p 0 ,V)
LMCS (IGF-UNAM) 2012 21 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
9 Problema variacional en FEniCS∫ΩφCtp
nv dx+
∫Ω
∆tK
µ∇pn · ∇v dx︸ ︷︷ ︸
a(pn,v)
=
∫ΩφCtp
n−1v dx︸ ︷︷ ︸L(v)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx + dt ∗ K / mu ∗ i nner ( grad (p ) , grad (v ) ) ∗ dxL = phi ∗ Ct ∗ p0 ∗ v ∗ dx
10 Solucion del problema
T = 800∗dtt = dtiT = 0p = Function (V)whi le t <= T:
so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
El sistema lineal se resuelve conPETSc, uBLAS, Epetra o MTL4.En la distribucion de Ubuntu se usaPETSc por omision, y utiliza LUpara sistemas dispersos deUMFPACK. Se pueden usar otrosalgoritmos (CG, GMRES,BICGSTAB, etc.).
La formulacion variacional se escribe de manera muy simple en Python!(el trabajo lo hace el Unifed Form Language y el FEniCS Form Compiler).
LMCS (IGF-UNAM) 2012 22 / 51
FEniCS project Solucion de flujo monofasico
Flujo monofasico en medios porosos: Solucion numerica usando FEniCS
Codigo completo. (ejecutar con: % python mono.py)
from d o l f i n import ∗import s c i t o o l s . ea syv i z as evfrom s c i t o o l s . BoxField import ∗
Ct = 1E−4phi = 0 .2mu = 1K = 1nx = 20ny = 10mesh = Rectangle (0 , 0 , 300 , 10 , nx , ny ,
’ l e f t ’ )V = FunctionSpace (mesh , ’CG’ , 1)
de f on boundary L (x ) :t o l=1e−15return abs (x [ 0 ] ) < t o l
de f on boundary R (x ) :t o l=1e−15return abs (x [0]−300) < t o l
pL = Constant (2)pR = Constant (1)
bcL = Dir ichletBC (V, pL , on boundary L )bcR = Dir ichletBC (V, pR, on boundary R )
bcs = [ bcL , bcR ]p 0 = Constant (1 )p0 = i n t e r p o l a t e ( p 0 ,V)
v = TestFunction (V)p = Tria lFunct ion (V)dt = 0.0005
a = phi ∗ Ct ∗ p ∗ v ∗ dx +dt ∗ K / mu ∗i nner ( grad (p ) , grad (v ))∗dx
L = phi ∗ Ct ∗ p0 ∗ v ∗ dx
T = 800∗dtt = dtiT = 0p = Function (V)
whi le t <= T:so l v e ( a==L , p , bcs )p0 . a s s i gn (p)t+=dtiT=iT+1p lo t (p)
i n t e r a c t i v e ( )
LMCS (IGF-UNAM) 2012 23 / 51
FEniCS project Conveccion forzada
Conveccion forzada
Problema original
∂T
∂t+∇ · (uT − Γ∇T ) = 0
∂T∂y =0
HT =0.5 T =−0.5C
∂T∂y =0
x=0
y=0
x=1
y=1
~u = (u, v)
u = −A ∗ cos(ωπy) ∗ sin(ωπx)
v = A ∗ sin(ωπy) ∗ cos(ωπx)
A: Amplitud;
ω: Numero de celdas
LMCS (IGF-UNAM) 2012 24 / 51
FEniCS project Conveccion forzada
Conveccion forzada
Problema variacional
Encontrar u ∈ V tal que
a(Tn, v) = L(v) ∀v ∈ V
donde
a(Tn, v) =
∫ΩTnvdx− Γ∆t
∫Ω∇Tn · ∇vdx+ ∆t
∫Ωu · ∇Tnvdx
L(v) =
∫ΩTn−1vdx
LMCS (IGF-UNAM) 2012 25 / 51
FEniCS project Conveccion forzada
Formulacion variacional
a(Tn, v) =
∫Ω
Tnvdx−
Γ∆t
∫Ω
∇Tn · ∇vdx+
∆t
∫Ω
u · ∇Tnvdx
a = T ∗ v ∗ dx +G ∗ dt ∗ i nner ( grad (T) , grad (v ) ) ∗ dx +dt ∗ dot ( ve l o c i t y , grad (T) ) ∗ v ∗ dx
L(v) =
∫Ω
Tn−1vdx
L = ( T prev + dt ∗ f ) ∗ v ∗ dx
LMCS (IGF-UNAM) 2012 26 / 51
FEniCS project Conveccion forzada
Conveccion Forzada: Solucion numerica usando FEniCS
Codigo completo
from d o l f i n import ∗import s c i t o o l s . ea syv i z as evfrom s c i t o o l s . BoxField import ∗
parameters [ ” l i n e a r a l g eb ra backend ” ] = ”PETSc”
Nodes = 25mesh = UnitSquare ( Nodes , Nodes )
V = FunctionSpace (mesh , ’CG’ ,1)v = TestFunction (V)T = Tria lFunct ion (V)f = Constant ( 0 . 0 )
W = VectorFunctionSpace (mesh , ’CG’ ,1)c a l c V e l c = Express ion ( ( ”−100∗ cos (3 .141592∗x [ 1 ] ) ∗ s i n (3 .141592∗x [ 0 ] ) ” ,
”100∗ s i n (3 .141592∗x [ 1 ] ) ∗ cos (3 .141592∗x [ 0 ] ) ” ) )v e l o c i t y = i n t e r p o l a t e ( ca l c Ve l c , W)
T prev = Function (V)
de f on boundary L ( x ) :t o l=1e−15return abs ( x [ 0 ] ) < t o l
de f on boundary R ( x ) :t o l=1e−15return abs ( x [ 0 ] − 1 .0 ) < t o l
LMCS (IGF-UNAM) 2012 27 / 51
FEniCS project Conveccion forzada
Conveccion Forzada: Solucion numerica usando FEniCS
def on boundary D ( x ) :t o l=1e−15return abs ( x [ 1 ] ) < t o l
de f on boundary T ( x ) :t o l=1e−15return abs ( x [ 1 ] − 1 .0 ) < t o l
TL = Constant ( 0 . 5 )TR = Constant (−0.5)TD = Constant ( 0 . 0 )TT = Constant ( 0 . 0 )
bcL = Dir ichletBC (V, TL, on boundary L )bcR = Dir ichletBC (V, TR, on boundary R )bcD = Dir ichletBC (V, TD, on boundary D )bcT = Dir ichletBC (V, TT, on boundary T )bc = [ bcL , bcR , bcD , bcT ]
G = 1.0dt = 0.0001
a = T ∗ v ∗ dx +G ∗ dt ∗ i nner ( grad (T) , grad (v ))∗dx +dt ∗ dot ( v e l o c i t y , grad (T) ) ∗ v∗dx
L = ( T prev + dt ∗ f ) ∗ v ∗ dx
A = assemble ( a )
T = Function (V)
Steps = 1000t = dtTmax = Steps ∗ dt
T f i l e = F i l e ( ” temperature . pvd” )V f i l e = F i l e ( ” v e l o c i t y . pvd” )V f i l e << ( v e l o c i t y , t )
whi le t <= Tmax :b = assemble (L)f o r cond i t i on in bc :
cond i t i on . apply (A, b)s o l v e (A, T. vec tor ( ) , b , ”gmres” )T prev . a s s i gn (T)t += dtp lo t (T, wireframe=True )p r in t tT f i l e << (T, t )
p r in t ”\n THE END”
i n t e r a c t i v e ( )
LMCS (IGF-UNAM) 2012 28 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria compartida : arquitecturas con
multiples nucleos de calculo que comparten la
memoria entre ellos a traves de un bus de alta
velocidad. El ensamble de las matrices y los
vectores de FEM se hace usando OpenMP.
Esta caracterıstica se habilita con: parameters["num threads"] = 4;
Durante el ensamble, DOLFIN recorre las celdas y/o las caras de una malla ycalcula las contribuciones locales a las matrices y vectores globales.
Cada hilo es responsable de una colleccion de celdas y/o caras de la malla.
Para evitar problemas de race condition, se utilizan graficas coloreadas, de talmanera que las celdas del mismo color se ensamblan al mismo tiempo. Estasceldas no comparten informacion.
Se utizan bibliotecas como Boost Graph Library o Zoltan.
El solver LU de PaStiX, que se usa via PETSc, soporta multi-hilos.
LMCS (IGF-UNAM) 2012 29 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria distribuida : procesadores separados
cada uno con su propia memoria, comparten
informacion a traves de una red externa, que
puede ser de alta velocidad. En este caso se utiliza
MPI, y se debe utilizar un software de algebra
lineal que soporte este tipo de paralelismo (PETSc
o Trillinos).
Para ejecutar un programa en paralelo se usa:
En C++ : mpirun −n 16 . / myprogramEn Python : mpirun −n 16 python myprogram . py
Cada procesador tendra una porcion de la malla sobre la cual trabajara.
La particion la hace con ParMETIS o SCOTCH, esto se define con:parameters["mesh partitiones"] = "SCOTCH"; (o "ParMETIS").
Cuando un programa se ejecuta con MPI y esta habilitado un software dealgebra lineal paralelo (PETSc por ejemplo), las operaciones de algebra linealse realizaran en paralelo.
LMCS (IGF-UNAM) 2012 30 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria distribuida : procesadores separados
cada uno con su propia memoria, comparten
informacion a traves de una red externa, que
puede ser de alta velocidad. En este caso se utiliza
MPI, y se debe utilizar un software de algebra
lineal que soporte este tipo de paralelismo (PETSc
o Trillinos).
Para ejecutar un programa en paralelo se usa:
En C++ : mpirun −n 16 . / myprogramEn Python : mpirun −n 16 python myprogram . py
Cada procesador tendra una porcion de la malla sobre la cual trabajara.
La particion la hace con ParMETIS o SCOTCH, esto se define con:parameters["mesh partitiones"] = "SCOTCH"; (o "ParMETIS").
Cuando un programa se ejecuta con MPI y esta habilitado un software dealgebra lineal paralelo (PETSc por ejemplo), las operaciones de algebra linealse realizaran en paralelo.
LMCS (IGF-UNAM) 2012 30 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria distribuida : procesadores separados
cada uno con su propia memoria, comparten
informacion a traves de una red externa, que
puede ser de alta velocidad. En este caso se utiliza
MPI, y se debe utilizar un software de algebra
lineal que soporte este tipo de paralelismo (PETSc
o Trillinos).
Para ejecutar un programa en paralelo se usa:
En C++ : mpirun −n 16 . / myprogramEn Python : mpirun −n 16 python myprogram . py
Cada procesador tendra una porcion de la malla sobre la cual trabajara.
La particion la hace con ParMETIS o SCOTCH, esto se define con:parameters["mesh partitiones"] = "SCOTCH"; (o "ParMETIS").
Cuando un programa se ejecuta con MPI y esta habilitado un software dealgebra lineal paralelo (PETSc por ejemplo), las operaciones de algebra linealse realizaran en paralelo.
LMCS (IGF-UNAM) 2012 30 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria distribuida : procesadores separados
cada uno con su propia memoria, comparten
informacion a traves de una red externa, que
puede ser de alta velocidad. En este caso se utiliza
MPI, y se debe utilizar un software de algebra
lineal que soporte este tipo de paralelismo (PETSc
o Trillinos).
Para ejecutar un programa en paralelo se usa:
En C++ : mpirun −n 16 . / myprogramEn Python : mpirun −n 16 python myprogram . py
Cada procesador tendra una porcion de la malla sobre la cual trabajara.
La particion la hace con ParMETIS o SCOTCH, esto se define con:parameters["mesh partitiones"] = "SCOTCH"; (o "ParMETIS").
Cuando un programa se ejecuta con MPI y esta habilitado un software dealgebra lineal paralelo (PETSc por ejemplo), las operaciones de algebra linealse realizaran en paralelo.
LMCS (IGF-UNAM) 2012 30 / 51
FEniCS project Computo Paralelo
Modelos de computo en paralelo en DOLFIN
Memoria distribuida : procesadores separados
cada uno con su propia memoria, comparten
informacion a traves de una red externa, que
puede ser de alta velocidad. En este caso se utiliza
MPI, y se debe utilizar un software de algebra
lineal que soporte este tipo de paralelismo (PETSc
o Trillinos).
Para ejecutar un programa en paralelo se usa:
En C++ : mpirun −n 16 . / myprogramEn Python : mpirun −n 16 python myprogram . py
Cada procesador tendra una porcion de la malla sobre la cual trabajara.
La particion la hace con ParMETIS o SCOTCH, esto se define con:parameters["mesh partitiones"] = "SCOTCH"; (o "ParMETIS").
Cuando un programa se ejecuta con MPI y esta habilitado un software dealgebra lineal paralelo (PETSc por ejemplo), las operaciones de algebra linealse realizaran en paralelo.
LMCS (IGF-UNAM) 2012 30 / 51
FEniCS project Computo Paralelo
PETSc
(P)ortable, (E)xtensible (T)oolkit for (S)cientific (c)omputation
Estructuras de datos y algoritmos escalables para la solucion desistemas algebraicos de ecuaciones en paralelo. Desarrollado desde 1991en la Math. and Comp. Science Div., ANL.
Caracterısticas
Metodos paralelos del subespacio deKrylov.Modelo de memoria distribuida(MPI).Incorpora recientemente el uso deGPUs vıa THRUST.Software libre, extensadocumentacion y ejemplos.
LMCS (IGF-UNAM) 2012 31 / 51
FEniCS project Computo Paralelo
PETSc
Facts:Simulaciones con 5× 1011 incognitas (Cray XT5 Jaguar).Se ha ejecutado en 224000 cores (IBM BG/P).Desempeno alcanzado: 22 Teraflops (Cray XT5).R & D 100 Award (2009)Top Ten Advances in Computational Science Accomplishments ofthe U.S. Department of Energy(2008).Usuarios de PETSc han ganado 4 Premios Gordon Bell ( 1999,2002, 2003 y 2004)
LMCS (IGF-UNAM) 2012 32 / 51
FEniCS project Problemas no lineales
Problemas no lineales: −∇ · (q(u)∇u) = 0
Formulacion variacional
Encontrar u ∈ V tal que
F (u; v) = 0 ∀v ∈ V donde F (u; v) =
∫Ω
q(u)∇u · ∇vdx
Iteracion de Picard: dada una solucion uk, resolver el problema linealizado:−∇ · (q(uk)∇uk+1) = 0. La iteracion termina cuando ||uk+1 − uk|| < ε.
Formulacion variacional
Encontrar uk+1 ∈ V tal que
F (uk+1; v) = 0 ∀v ∈ V k = 0, 1, . . .
donde F (uk+1; v) =
∫Ω
q(uk)∇uk+1 · ∇vdx
LMCS (IGF-UNAM) 2012 33 / 51
FEniCS project Problemas no lineales
Problemas no lineales: −∇ · (q(u)∇u) = 0
Formulacion variacional
Encontrar u ∈ V tal que
F (u; v) = 0 ∀v ∈ V donde F (u; v) =
∫Ω
q(u)∇u · ∇vdx
Iteracion de Picard: dada una solucion uk, resolver el problema linealizado:−∇ · (q(uk)∇uk+1) = 0. La iteracion termina cuando ||uk+1 − uk|| < ε.
Formulacion variacional
Encontrar uk+1 ∈ V tal que
F (uk+1; v) = 0 ∀v ∈ V k = 0, 1, . . .
donde F (uk+1; v) =
∫Ω
q(uk)∇uk+1 · ∇vdx
LMCS (IGF-UNAM) 2012 33 / 51
FEniCS project Problemas no lineales
Problemas no lineales: −∇ · (q(u)∇u) = 0
Formulacion variacional
Encontrar u ∈ V tal que
F (u; v) = 0 ∀v ∈ V donde F (u; v) =
∫Ω
q(u)∇u · ∇vdx
Iteracion de Picard: dada una solucion uk, resolver el problema linealizado:−∇ · (q(uk)∇uk+1) = 0. La iteracion termina cuando ||uk+1 − uk|| < ε.
Formulacion variacional
Encontrar uk+1 ∈ V tal que
F (uk+1; v) = 0 ∀v ∈ V k = 0, 1, . . .
donde F (uk+1; v) =
∫Ω
q(uk)∇uk+1 · ∇vdx
LMCS (IGF-UNAM) 2012 33 / 51
FEniCS project Problemas no lineales
Flujo bifasico: Formulacion presion-saturacion
∇ ·(−κλ∇p+ κλω
dpcdS ∇S
)= 0 en Ω× [0, T ]
φ∂S∂t +∇ ·(−κλω∇p+ κλω
dpcdS ∇S
)= 0
Se(S); λω(S); λ(S) y Pc(S).Usando esquema implıcito en tiempo
−∇ ·(κλn−1∇pn
)= −∇ ·
(κλn−1
ωdpn−1
cdS ∇S
n−1)
Sn +∆t
φ∇ ·(κλn−1
ω
dpn−1c
dS∇Sn
)= Sn−1 + ∆t
φ ∇ ·(κλn−1
ω ∇pn)
LMCS (IGF-UNAM) 2012 34 / 51
FEniCS project Problemas no lineales
Formulacion variacional
Multiplicando por vp y vs e integrando por partes...
ap(pn, vp) =
∫Ωκλn−1∇pn · ∇vp dx
Lp(vp) =
∫Ωκλn−1
ω
dpn−1c
dS∇Sn−1 · ∇vp dx+
∫∂Ω1
ginp vp ds
as(Sn, vs) =
∫ΩSnvs dx+
∆t
φ
∫Ωκλn−1
ω
dpn−1c
dS∇Sn · ∇vs dx
Ls(vs) =
∫ΩSn−1vs dx+
∆t
φ
∫Ωκλn−1
ω ∇pn · ∇vs dx
+∆t
φ
∫∂Ω1
gins vs ds+∆t
φ
∫∂Ω2
κλω∇pn · nvs ds
LMCS (IGF-UNAM) 2012 35 / 51
FEniCS project Problemas no lineales
Formulacion variacional
Notacion corta
Dado pn−1 y Sn−1 encontrar pn Tal que:
ap(pn, vp) = Lp(vp)
para todo vp ∈ V .Dado pn y Sn−1 encontrar Sn Tal que:
as(Sn, vs) = Ls(vs)
para todo vs ∈ V
LMCS (IGF-UNAM) 2012 36 / 51
FEniCS project Problemas no lineales
FEniCS
Problema variacional el FEniCS
dt = 1 # paso de t iempoN = FacetNormal (mesh ) # ve c t o r normal a l a f r o n t e r a
vp = TestFunction (V)p = Tria lFunct ion (V)Sp = TestFunction (V)S = Tria lFunct ion (V)
pn = Function (V) #guarda s o l u c i o n a c t u a l de p r e s i on
ap = inner (k∗Lambda( S0 )∗ grad (p ) , grad (vp ))∗dx #ap (p , vp )
Lp = gp L∗vp∗ds (1) #Lp( vp )+ k∗Lambda w( S0 )∗ dPc( S0 )∗ i nner ( grad ( S0 ) , grad (vp ))∗dx
aS = S∗vS∗dx #aS (S , vs )− ( dt/ phi )∗ i nner (k∗Lambda w( S0 )∗dPc( S0 )∗ grad (S ) , grad (vS ))∗dx
LS = S0∗vS∗dx #LS( vs )− ( dt/ phi )∗ i nner (k∗Lambda w( S0 )∗ grad (pn ) , grad (vS ))∗dx+ ( dt/ phi )∗ gS L∗vS∗ds (1)+ ( dt/ phi )∗ dot (k∗Lambda w( S0 )∗ grad (pn ) ,N)∗vS∗ds (2)
LMCS (IGF-UNAM) 2012 37 / 51
FEniCS project Problemas no lineales
FEniCS
Solucion del problema variacional
T = 900∗dt # tiempo maximot = dt # tiempo a c t u a l
pn = Function (V) #so l u c i o n a c t u a l de l a p r e s i onSn = Function (V) #so l u c i o n a c t u a l de l a s a t u r a c i on
#c i c l o de t iempowhi le t<=T:
#r e s u e l v e l a p r e s i onAp = assemble ( ap , e x t e r i o r f a c e t d o m a i n s=f r o n t e r a )bp = assemble (Lp , e x t e r i o r f a c e t d o m a i n s=f r o n t e r a )bcpR . apply (Ap, bp)s o l v e (Ap, pn . vec tor ( ) , bp)
#r e s u e l v e l a s a t u r a c i onAS = assemble ( aS , e x t e r i o r f a c e t d o m a i n s=f r o n t e r a )bS = assemble (LS , e x t e r i o r f a c e t d o m a i n s=f r o n t e r a )s o l v e (AS, Sn . vec tor ( ) , bS)
p0 . a s s i gn (pn) # a c t u a l i z a l a s o l u c i o n an t e r i o rS0 . a s s i gn (Sn)t+=dt
#g r a f i c ap lo t (Sn)p lo t (pn)
LMCS (IGF-UNAM) 2012 38 / 51
FEniCS project Problemas no lineales
Flujo en una fase no lineal
c(ρ)∂p
∂t−∇ · (a(ρ)∇p) = 0
a(ρ)∇p · n = 0 en ∂Ω
p(., 0) = p0 en Ω
Formulacion Variacional discreta(c(ρh)
∂ph∂t
, v
)+ (a(ρ)∇ph,∇v) = 0 ∀v ∈ Vh
Vh ⊂ V = H1(Ω)
LMCS (IGF-UNAM) 2012 39 / 51
FEniCS project Problemas no lineales
Flujo en una fase no lineal
c(ρ)∂p
∂t−∇ · (a(ρ)∇p) = 0
a(ρ)∇p · n = 0 en ∂Ω
p(., 0) = p0 en Ω
Formulacion Variacional discreta(c(ρh)
∂ph∂t
, v
)+ (a(ρ)∇ph,∇v) = 0 ∀v ∈ Vh
Vh ⊂ V = H1(Ω)
LMCS (IGF-UNAM) 2012 39 / 51
FEniCS project Problemas no lineales
Flujo en una phase no lineal
(A(pn) +
1
∆tnC(pn)
)pn −
(1
∆tnC(pn)
)pn−1︸ ︷︷ ︸
F(pn)
= 0
Newton Raphson :
v0 = pn−1
Until ||vk − vk−1|| < ε or k > Nmax
G(vk−1)dk = −F(vk−1)vk = vk−1 + dk
k = k + 1
G =
(∂Fi
∂pj
)i,j=1,2,...,M
(Ejemplo desarrollado por Emilio Zavala Sosa.)
LMCS (IGF-UNAM) 2012 40 / 51
FEniCS project Problemas no lineales
Flujo en una phase no lineal
(A(pn) +
1
∆tnC(pn)
)pn −
(1
∆tnC(pn)
)pn−1︸ ︷︷ ︸
F(pn)
= 0
Newton Raphson :
v0 = pn−1
Until ||vk − vk−1|| < ε or k > Nmax
G(vk−1)dk = −F(vk−1)vk = vk−1 + dk
k = k + 1
G =
(∂Fi
∂pj
)i,j=1,2,...,M
(Ejemplo desarrollado por Emilio Zavala Sosa.)LMCS (IGF-UNAM) 2012 40 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
Dominios irregulares y subdominios con diferentes materiales.
Algoritmos de solucion: lu, cholesky, cg, gmres, bicgstab,
minres, tfqmr, richardson.
Precondicionadores: ilu, icc, jacobi, bjacobi, sor, amg,
additive schwarz, hypre amg, hypre euclid,
hypre parasails, ml amg
Calculo de derivadas y funcionales.
Visualizacion: Viper, Scitools, VTK, Paraview, VisIt, Maya Vi2.
Elementos finitos soportados: Argyris, Arnold-Winther,Brezzi-Douglas-Marini, Crouzeix-Raviart, Discontinuous Lagrange,Hermite, Lagrange, Mardal-Tai-Winther, Morley, Nedelec 1st kindH(curl), Nedelec 2st kind H(curl), Raviart-Thomas.
LMCS (IGF-UNAM) 2012 41 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
Dominios irregulares y subdominios con diferentes materiales.
Algoritmos de solucion: lu, cholesky, cg, gmres, bicgstab,
minres, tfqmr, richardson.
Precondicionadores: ilu, icc, jacobi, bjacobi, sor, amg,
additive schwarz, hypre amg, hypre euclid,
hypre parasails, ml amg
Calculo de derivadas y funcionales.
Visualizacion: Viper, Scitools, VTK, Paraview, VisIt, Maya Vi2.
Elementos finitos soportados: Argyris, Arnold-Winther,Brezzi-Douglas-Marini, Crouzeix-Raviart, Discontinuous Lagrange,Hermite, Lagrange, Mardal-Tai-Winther, Morley, Nedelec 1st kindH(curl), Nedelec 2st kind H(curl), Raviart-Thomas.
LMCS (IGF-UNAM) 2012 41 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
Dominios irregulares y subdominios con diferentes materiales.
Algoritmos de solucion: lu, cholesky, cg, gmres, bicgstab,
minres, tfqmr, richardson.
Precondicionadores: ilu, icc, jacobi, bjacobi, sor, amg,
additive schwarz, hypre amg, hypre euclid,
hypre parasails, ml amg
Calculo de derivadas y funcionales.
Visualizacion: Viper, Scitools, VTK, Paraview, VisIt, Maya Vi2.
Elementos finitos soportados: Argyris, Arnold-Winther,Brezzi-Douglas-Marini, Crouzeix-Raviart, Discontinuous Lagrange,Hermite, Lagrange, Mardal-Tai-Winther, Morley, Nedelec 1st kindH(curl), Nedelec 2st kind H(curl), Raviart-Thomas.
LMCS (IGF-UNAM) 2012 41 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
Dominios irregulares y subdominios con diferentes materiales.
Algoritmos de solucion: lu, cholesky, cg, gmres, bicgstab,
minres, tfqmr, richardson.
Precondicionadores: ilu, icc, jacobi, bjacobi, sor, amg,
additive schwarz, hypre amg, hypre euclid,
hypre parasails, ml amg
Calculo de derivadas y funcionales.
Visualizacion: Viper, Scitools, VTK, Paraview, VisIt, Maya Vi2.
Elementos finitos soportados: Argyris, Arnold-Winther,Brezzi-Douglas-Marini, Crouzeix-Raviart, Discontinuous Lagrange,Hermite, Lagrange, Mardal-Tai-Winther, Morley, Nedelec 1st kindH(curl), Nedelec 2st kind H(curl), Raviart-Thomas.
LMCS (IGF-UNAM) 2012 41 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
Dominios irregulares y subdominios con diferentes materiales.
Algoritmos de solucion: lu, cholesky, cg, gmres, bicgstab,
minres, tfqmr, richardson.
Precondicionadores: ilu, icc, jacobi, bjacobi, sor, amg,
additive schwarz, hypre amg, hypre euclid,
hypre parasails, ml amg
Calculo de derivadas y funcionales.
Visualizacion: Viper, Scitools, VTK, Paraview, VisIt, Maya Vi2.
Elementos finitos soportados: Argyris, Arnold-Winther,Brezzi-Douglas-Marini, Crouzeix-Raviart, Discontinuous Lagrange,Hermite, Lagrange, Mardal-Tai-Winther, Morley, Nedelec 1st kindH(curl), Nedelec 2st kind H(curl), Raviart-Thomas.
LMCS (IGF-UNAM) 2012 41 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
Dominios irregulares y subdominios con diferentes materiales.
Algoritmos de solucion: lu, cholesky, cg, gmres, bicgstab,
minres, tfqmr, richardson.
Precondicionadores: ilu, icc, jacobi, bjacobi, sor, amg,
additive schwarz, hypre amg, hypre euclid,
hypre parasails, ml amg
Calculo de derivadas y funcionales.
Visualizacion: Viper, Scitools, VTK, Paraview, VisIt, Maya Vi2.
Elementos finitos soportados: Argyris, Arnold-Winther,Brezzi-Douglas-Marini, Crouzeix-Raviart, Discontinuous Lagrange,Hermite, Lagrange, Mardal-Tai-Winther, Morley, Nedelec 1st kindH(curl), Nedelec 2st kind H(curl), Raviart-Thomas.
LMCS (IGF-UNAM) 2012 41 / 51
FEniCS project Problemas no lineales
Otras caracterısticas de FEniCS
DOLFIN Interface:
LMCS (IGF-UNAM) 2012 42 / 51
Appendix Bibliografıa
Referencias I
FEniCS Projet Homepage
http://www.fenicsproject.org
The FEniCS project in Knol: A unit of knowledge by Claes Johnson
http://knol.google.com/k/claes-johnson/the-fenics-project/yvfu3xg7d7wt/83#
FEniCS components in Launchpad
https://launchpad.net/fenics-project
Launchpad : software collaboration plataform
http://launchpad.net
Lista de libros de Python
http://wiki.python.org/moin/PythonBooks.
The python tutorial
http://docs.python.org/tutorial/
LMCS (IGF-UNAM) 2012 43 / 51
Appendix Bibliografıa
Referencias II
Claes Johnson Homepage
http://www.csc.kth.se/ cgjoh/
Claes Johnson
Numerical Solution of Partial Differential Equations by the Finite ElementMethod
Dover Publications 2009.
H. P. Langtangen
A Primer on Scientific Programming with Python. Texts in ComputationalScience and Engineering
vol 6. Springer, 2009.
H. P. Langtangen,
Python Scripting for Computational Science
Springer, third edition, 2009.
LMCS (IGF-UNAM) 2012 44 / 51
Instalacion Linux
Debian y Ubuntu 10.10/Maverick: % sudo apt-get install fenics
En Ubuntu se recomienda usar PPA (Personal Package Archives), loque permite obtener paquetes actualizados (vıa Launchpad [4, 3]).% sudo add-apt-repository ppa:fenics/ppa
% sudo apt-get update
% sudo apt-get install fenics
Instalacion en otras distribuciones usando Dorsal ( Debian,
Fedora 13, Gentoo Linux, Mac OS X (Snow Leopard), openSUSE 11.3,
Ubuntu(10.04/Lucid and 10.10/Maverick)).
1 Obtener Dorsal: https://launchpad.net/dorsal2 Descomprimir: % dorsal-0.8.2.tar.bz23 % cd dorsal-0.8.2 y modificar el archivo dorsal.cfg.4 Ejecutar: % ./dorsal.sh5 Dorsal (intentara) configurara todo de acuerdo al sistema y
plataforma, y dara una lista de comandos que se deben ejecutar.6 Una vez realizados los comandos, dar <enter> para instalar
FEniCS. La instalacion toma un rato.7 Una vez que termine la instalacion seguir las instrucciones
post-instalacion antes de comenzar con los demos.
LMCS (IGF-UNAM) 2012 45 / 51
Instalacion Linux
Instalacion manual usando los fuentesObtener e instalar los paquetes de Python: FCC, FIAT, Instant,Viper y UFL:
1 Descomprimir cada paquete y moverse al directorio correspondiente.2 % sudo python setup.py install
Obtener e instalar los paquetes de C++/Python: DOLPHIN yUFC:
1 Asegurarse de tener instalado CMake >= 2.82 Descomprimir cada paquete y moverse al directorio correspondiente.3 % cmake . o cmake -DCMAKE_INSTALL_PREFIX=/mypath/ .4 % make5 % sudo make install
LMCS (IGF-UNAM) 2012 46 / 51
Instalacion Linux
Software adicionalFEniCS se basa en varias bibliotecas:
MPI (openmpi), PETSc, GNUplot, Paraview, etc.
Para configurar openmpi usar:% sudo update-alternatives mpi
There are 2 choices for the alternative mpi (providing /usr/include/mpi).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/include/mpich2 40 auto mode
1 /usr/include/mpich2 40 manual mode
* 2 /usr/lib/openmpi/include 40 manual mode
Press enter to keep the current choice[*], or type selection number:
Para visualizacion se requiere scitools.easyviz. En Ubuntu instalacon: % sudo apt-get install python-scitools
LMCS (IGF-UNAM) 2012 47 / 51
Instalacion Mac OSX
Snow Leopard >= 10.6
Binario para procesador Intel, version beta basada en paquetes noestables de FEniCS 1, 2. Se requiere XCode 3.Se baja el .dmg y se ejecuta:
Si el ıcono de FEniCS no se muestra, ejecute la siguiente instruccionen una terminal: killall -KILL Dock
LMCS (IGF-UNAM) 2012 48 / 51
Instalacion Mac OSX
Para iniciar FEniCS, hacer doble click en el ıcono correspondiente.
Para correr programas de FEniCS desde cualquier terminal:% source /Applications/FEniCS.app/Contents/Resources/share/fenics/fenics.conf
Poner esta instruccion en el archivo .profile, para alistar FEniCScada vez que se abra una terminal.
1”We encourage you to test and report issues”2”This binary package is built against system Python and will not work
with MacPorts Python or similar.”LMCS (IGF-UNAM) 2012 49 / 51
Instalacion Windows
Windows
Bajar el archivo fenics-snpashot-mingw32.exe y ejecutarlo.Este ejecutable funciona en XP, Vista y Windows 7.Se instalara todo lo necesario para correr FEniCS en Windows:
Compilador MinGWPythonCMakeSWIG (software que conecta codigos de C/C++ con lenguajes scriptde alto nivel Perl, PHP, Python, Tcl y Ruby, http://www.swig.org )Etcetera.
Una vez terminada la instalacion, iniciar FEniCS en una ventana decomandos.
LMCS (IGF-UNAM) 2012 50 / 51
Instalacion Windows
GRACIAS !
LMCS (IGF-UNAM) 2012 51 / 51