You are on page 1of 11

FACULTAD DE POSTGRADO

ASIGNACIN:
TAREA 2

SUSTENTADO POR:
DANIEL ENRIQUE MENDOZA CORRALES

11513079

MTODOS NUMRICOS

CATEDRTICO: IVN HENRQUEZ

11 DE MAYO DE 2015
TEGUCIGALPA, M.D.C.

HONDURAS, C.A.

Tema: Uso de Freefem++


Objetivo: familiarizarse con el uso del programa Freefem++ para la resolucin de problemas mediante el
mtodo de elementos finitos.
El problema consiste en resolver:
(ku) = f, en
= 0,
Siendo f = , = (0,1)x(0,1)
1) Para k=1
2) Para k=2
2
3) Para k=[
0

0
]
3

Previo a introducir el input del programa, debemos deducir la formulacin dbil del problema el cul lo
obtenemos al multiplicar ambos lados de la ecuacin en su formulacin clsica por una funcin de prueba
v .
(ku)v = fv

Utilizando la igualdad (()) = () + () y sustituyendo para (), en la


ecuacin anterior y aplicando el teorema de divergencia obtenemos:
(ku)v n
+ () = fv

De la condicin de borde v=0, volviendo =0 el primer trmino del lado izquierdo de la ecuacin obteniendo
nuestra formulacin dbil
() fv = 0

Procedimiento
1) Caso donde k=1
Primero debemos definir nuestro borde tal y como est definido = (0,1)x(0,1)
Este debe introducirse en sentido anti horario para que resulte positivo, y lo definimos de la siguiente
manera:

Borde B1(t=0,1) {x=t; y=0;};


Borde B2(t=0,1) {x=1; y=t;};
Borde B3(t=0,1) {x=1-t; y=1;};
Borde B4(t=0,1) {x=0; y=1-t;};

En la Figura 1.1 se aprecia el sentido anti horario que definimos para el borde de .
Una vez, definido nuestro borde, procedemos a declarar la malla Th en funcin del valor n, que nos
permitir una rpida modificacin del tamao de la misma:
int n=50;
mesh Th=buildmesh(B1(n)+B2(n)+B3(n)+B4(n))
En la figura 1.2 observamos una malla para el valor de n=50

Figura 1.1

Figura 1.2

Definimos el espacio por elementos finitos Vh para la malla Th y polinomios de grado 1, las ecuaciones u,
v y el escalar Kappa, as como la funcin fuente f.
fespace Vh(Th,P1); Vh u,v; Vh kappa=1; func f=x*y
Ahora indicamos que resuelva nuestro sistema para una funcin a(u,v) = a la formulacin dbil pero
descrita en funcin de derivadas parciales con respecto a las variables , , para esto debemos resolver el
producto punto de ()

=
+


() ()
Solve a(u,v)= int2d(Th) (kappa*(dx(u)*dx(v) + dy(u)*dy(v)))
- int2d(Th) (f*v)
+ on(B1,u=0)+on(B2,u=0)+on(B3,u=0)+on(B4,u=0);
Para las condiciones de borde u=0 en la frontera.

El resultado obtenido para la funcin u es el siguiente:

Figura 1.3
Observaciones:
Debido al mallado n=50, obtenemos curvas suaves, de igual forma pudimos utilizar una malla de menor
magnitud con polinomios de segundo grado para suavizarla.
De las iso lneas distinguimos que la condicin en los bordes realmente estn iguales a cero.

2) Caso donde k=1


Repetimos el procedimiento del caso donde k=1 modificando nicamente el valor de kappa, el resultado
obtenido es el siguiente:

Figura 2.1
Observaciones:
El resultado en la figura 2.1 es exactamente igual al anterior (figura 1.3), ya que nuestra funcin u es
solucin nica, y el escalar kappa al ser constante, no altera la solucin de la funcin u.


3) Caso donde k=[

Para este caso en particular ya no contamos con un comportamiento isotrpico ya que kappa est
definiendo un comportamiento anisotrpico, es decir, la difusin se comporta de manera diferente para
las diferentes direcciones dentro de .
Para resolver este problema debemos realizar ciertos cambios con respecto a los modelos anteriores y
consiste en la definicin de nuestra solucin a(u,v), para la cual debemos resolver:

11 + 12

11 12
11 12
Donde k=[
], de este modo = [
] () = [
]

21 22
21 22
21 + 22
Luego debemos resolver el producto punto con el gradiente de v

+ 12

= (11
+ 12 )
+ (21
+ 22 )


21
+ 22
)
(

]
[
11

Ahora podemos definir nuestras variables a11, a12, etc. As como la funcin a(u,v) que nos de la solucin
para u.
Vh a11=2; Vh a12=0; Vh a21=0; Vh a22=-3; func f=x*y;
solve a(u,v)= int2d(Th) (a11*dx(u)*dx(v) + a12*dy(u)*dx(v) + a21*dx(u)*dy(v) + a22*dy(u)*dy(v))
- int2d(Th) (f*v)
+ on(B1,u=0)+on(B2,u=0)+on(B3,u=0)+on(B4,u=0);

Figura 3.1
En este caso la solucin de U es diferente dada su
naturaleza anisotrpica, pero resulta en isolneas no tan
suaves como en los casos anteriores, por lo cual
probaremos modificar nuestra malla a 2 veces el valor
del n definido anteriormente.

Figura 3.2
Podemos apreciar que los contornos se encuentran
mejor definidos aunque an presentan ciertas
irregularidades, por lo cual intentaremos una ltima vez,
modificando el grado de los polinomios de Vh.

Figura 3.3
En la ltima Figura (3.3) podemos
apreciar ya mucho ms definidos
los contornos de la solucin u,
para ello hemos comprobado las
observaciones realizadas en el
caso 1, pero se sacrifica tiempo de
cmputo que para nuestros casos
de estudios son irrelevantes, pero
en un modelo de aplicacin ms
complejo pudiera resultar muy
significativo.

Conclusiones:

El programa Freefem++ resulta amigable y de fcil aplicacin para modelos que puedan resolverse
mediante el mtodo de elementos finitos, trabajando con la formulacin dbil del problema, pero
como pudimos observar se deben realizar ciertos clculos previos a la formulacin del problema
en el input del programa, pueda que sea falta de conocimiento del programa pero el alcance de
este ejercicios no pretende profundizar en la programacin del mismo.

Podemos elegir diferentes rutas al momento de suavizar la funcin de solucin, de modo que los
resultados puedan apreciarse de mejor manera tal y como observamos en las interaciones
realizadas en el caso tres, esto depender de la aplicacin que se le deba dar al modelo.

Comprobamos el efecto que tiene el tensor de difusin Kappa, el cual cuando est definido como
escalar para un caso isotrpico no altera los resultados de la funcin u que es solucin nica,
distinto al caso cuando se define un caso anisotrpico, en donde si influye en los resultados del
modelo debido al comportamiento diferente para las diferentes direcciones de la difusin.

Anexos
A continuacin se presenta el cdigo del modelo para el caso 1
//EJERCICIO 1 MODELO DE DIFUSIN CON U=O EN LA FRONTERA Y KAPPA=1
border B1(t=0,1) {x=t; y=0;};
border B2(t=0,1) {x=1; y=t;};
border B3(t=0,1) {x=1-t; y=1;};
border B4(t=0,1) {x=0; y=1-t;}; // SE DELIMITAN LOS BORDES EN SENTIDO ANTI HORARIO
int n=50;
mesh Th=buildmesh(B1(n)+B2(n)+B3(n)+B4(n)); // SE DEFINE LA MALLA Th
//plot(Th,wait=1,ps="rectngulo.eps"); // COMPROBACIN DE LA MALLA
//plot(B1(n)+B2(n)+B3(n)+B4(n),wait=1); // COMPROBACIN DE LOS BORDES
fespace Vh(Th,P1); //DEFINIMOS EL ESPACIO POR ELEMENTOS FINITOS Vh PARA LA MALLA Th Y
POLINOMIOS DE GRADO 1
Vh u,v; // DEFINIMOS LAS ECUACIONES U Y V QUE PERTENECEN AL DOMINIO
Vh kappa=1; // DEFINIMOS EL ESCALAR KAPPA
func f=x*y; // DEFINIMOS LA FUNCION FUENTE f
solve a(u,v)= int2d(Th) (kappa*(dx(u)*dx(v) + dy(u)*dy(v)))
- int2d(Th) (f*v)
+ on(B1,u=0)+on(B2,u=0)+on(B3,u=0)+on(B4,u=0); // RESOLVEMOS LA SOLUCIN a(u,v) DE LA
FORMULACIN DBIL
plot(u); // SE IMPRIME LA SOLUCIN

A continuacin se presenta el cdigo del modelo para el caso 2


//EJERCICIO 1 MODELO DE DIFUSIN CON U=O EN LA FRONTERA Y KAPPA=2
border B1(t=0,1) {x=t; y=0;};
border B2(t=0,1) {x=1; y=t;};
border B3(t=0,1) {x=1-t; y=1;};
border B4(t=0,1) {x=0; y=1-t;}; // SE DELIMITAN LOS BORDES EN SENTIDO ANTI HORARIO
int n=50;
mesh Th=buildmesh(B1(n)+B2(n)+B3(n)+B4(n)); // SE DEFINE LA MALLA Th
//plot(Th,wait=1,ps="rectngulo.eps"); // COMPROBACIN DE LA MALLA
//plot(B1(n)+B2(n)+B3(n)+B4(n),wait=1); // COMPROBACIN DE LOS BORDES
fespace Vh(Th,P1); //DEFINIMOS EL ESPACIO POR ELEMENTOS FINITOS Vh PARA LA MALLA Th Y
POLINOMIOS DE GRADO 1
Vh u,v; // DEFINIMOS LAS ECUACIONES U Y V QUE PERTENECEN AL DOMINIO
Vh kappa=2; // DEFINIMOS EL ESCALAR KAPPA
func f=x*y; // DEFINIMOS LA FUNCIN FUENTE f
solve a(u,v)= int2d(Th) (kappa*(dx(u)*dx(v) + dy(u)*dy(v)))
- int2d(Th) (f*v)
+ on(B1,u=0)+on(B2,u=0)+on(B3,u=0)+on(B4,u=0); // RESOLVEMOS LA SOLUCIN a(u,v) DE LA
FORMULACIN DBIL
plot(u); // SE IMPRIME LA SOLUCIN

A continuacin se presenta el cdigo del modelo para el caso 3


//EJERCICIO 1 MODELO DE DIFUSIN ANISOTRPICA CON U=O EN LA FRONTERA Y KAPPA=matriz
border B1(t=0,1) {x=t; y=0; label=1;};
border B2(t=0,1) {x=1; y=t; label=2;};
border B3(t=0,1) {x=1-t; y=1; label=3;};
border B4(t=0,1) {x=0; y=1-t; label=4;}; // SE DELIMITAN LOS BORDES EN SENTIDO ANTI HORARIO
int n=100;
mesh Th=buildmesh(B1(n)+B2(n)+B3(n)+B4(n)); // SE DEFINE LA MALLA Th
//plot(Th,wait=1,ps="rectngulo.eps"); // COMPROBACIN DE LA MALLA
//plot(B1(n)+B2(n)+B3(n)+B4(n),wait=1); // COMPROBACIN DE LOS BORDES
fespace Vh(Th,P2); //DEFINIMOS EL ESPACIO POR ELEMENTOS FINITOS Vh PARA LA MALLA Th Y
POLINOMIOS DE GRADO 1
Vh u,v; // DEFINIMOS LAS ECUACIONES U Y V QUE PERTENECEN AL DOMINIO
Vh a11=2;
Vh a12=0;
Vh a21=0;
Vh a22=-3; // DEFINIMOS LOS ELEMENTOS DE LA MATRIZ KAPPA
func f=x*y; // DEFINIMOS LA FUNCIN FUENTE f
solve a(u,v)= int2d(Th) (a11*dx(u)*dx(v) + a12*dy(u)*dx(v) + a21*dx(u)*dy(v) + a22*dy(u)*dy(v))
- int2d(Th) (f*v)
+ on(B1,u=0)+on(B2,u=0)+on(B3,u=0)+on(B4,u=0); // RESOLVEMOS LA SOLUCIN a(u,v) DE LA
FORMULACIN DBIL
plot(u); // SE IMPRIME LA SOLUCIN

You might also like