Anda di halaman 1dari 8

Introducci

on a
FreeFem++
versi
on 1.0

2014
Este documento se distribuye bajo la licencia GPLv3

n
iga
Paulo Zu

Universidad del Bo-Bo UBB

ndice general

1. Introduccin
1.1. Primeros pasos . . . . . . . . . . . .
1.1.1. Instalacin sobre Gnu/Linux
1.1.2. Ejecutar desde la terminal . .
1.2. Editor . . . . . . . . . . . . . . . . .
1.2.1. Gedit . . . . . . . . . . . . .
1.2.2. FreeFem++-cs . . . . . . . .
1.3. Syntaxis c++ . . . . . . . . . . . . .
1.4. Syntaxis FreeFem++ . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

3
3
3
4
5
5
6
6
6

2. Dominio y espacios de elementos finitos


2.1. Dominio . . . . . . . . . . . . . . . . . .
2.1.1. Dominio Poligonal . . . . . . . .
2.1.2. Otros tipos de dominio . . . . . .
2.1.3. Condiciones de frontera . . . . .
2.2. FEspace . . . . . . . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

7
7
7
7
7
7

3. Algunos ejemplos
3.1. Formulacin primal del problema de poisson 2D . . . .
3.1.1. Condiciones de frontera tipo Dirichlet . . . . .
3.1.2. Condiciones de frontera tipo Neumann . . . . .
3.2. Formulacin mixta del problema de poisson 2D . . . .
3.3. Problema de Stokes . . . . . . . . . . . . . . . . . . . .
3.4. Formulacin primal del problema de elasticidad lineal

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

8
8
8
8
8
8
8

.
.
.
.
.
.
.
.

Captulo

Introduccin
En este primer captulo se busca introducir al usuario en la instalacin y configuracin de FreeFem++,
as como tambin en la instalacin de editores que faciliten la escritura y ejecucin de programas.edp. Para
esto , se asumir que el usuario utiliz alguna distribucin Gnu/Linux como Debian o sus derivados (ubuntu,
linuxmint, elementary OS, etc.).
Se adelanta que no es necesario que el lector sea un experto en comandos de terminal o lenguajes de programacin, pues se darn a conocer algunas ideas bsicas de c++ y FreeFem++. Recomendamos actualizar
su sistema antes de proseguir al siguiente paso.

1.1.

Primeros pasos

Antes de compilar FreeFem++, se debe usar el centro de software de ubuntu o synaptic para instalar
los siguientes paquetes: build-essential, linux-headers-generic, y gfortran.
Es importante notar que se puede evitar el proceso de compilacin, ya que FreeFem++ se puede instalar
desde el mismo centro de software de ubuntu, sin embargo la versin que aparece en los repositorios no
est actualizada.

1.1.1.

Instalacin sobre Gnu/Linux

La syntaxis usada en la terminal de Gnu/Linux es muy parecida a la usada en Mac Os X, debido a que
ambos sistemas se originan de unix. En la mayora de las distribuciones Gnu/Linux es posible invocar la
terminal usando la combinacin de teclas CTRL+ALT+T.
Hasta la fecha de edicin de este manual, FreeFem++ se encuentra en la versin 3.32-1 y es posible descargar
su cdigo fuente gratuitamente desde su pagina oficial. Para Ubuntu 14.04 o derivados deben descargar el
archivo freefem++-3.32-1.tar.gz , abrir la terminal y dirigirse al directorio donde se encuentra el archivo
en cuestin. Suponiendo que el usuario se encuentra en el directorio /home/usuario y que el archivo est en
el directorio /home/Descargas; se debe ingresar al directorio Descargas utilizando el comando cd:
user@machine:~$ cd Descargas
El comando ls mostrar los archivos en el directorio Descargas:
user@machine:~/Descargas $ ls
Para descomprimir el archivo.tar.gz:
user@machine:~/Descargas$ tar zxf freefem++-3.32-1.tar.gz

Procedemos a compilar FreeFem++ de la manera ms sencilla. Se ingresa al directorio freefem++-3.32-1:


user@machine:~/Descargas $ cd

freefem++-3.32-1

Como usuario normal deben ejecutar:


user@machine:~/Descargas/ freefem++-3.32-1$ ./configure
En esta parte se debe tener cuidado, pues lo ms probable es que aparezcan muchos mensajes de error debido
a que faltan libreras o herramientas de compilacin. Afortunadamente el mismo mensaje de error entrega el
nombre de los paquetes a instalar y en la mayora de los casos, los comandos a ejecutar. Despus de instalar
cada una de las cosas que se pieden, deben volver a ejecutar ./configure y luego:
user@machine:~/Descargas/freefem++-3.32-1$ sudo make
Para instalar el paquete compilado:
user@machine:~/Descargas/ freefem++-3.32-1$ sudo make install
El comando sudo indica que el comando se ejecutar como usuario root o como administrador, razn por la
cual se les pedir la contrasea para cada sentencia.

1.1.2.

Ejecutar desde la terminal

Consideremos el problema: resolver el sistema de ecuaciones lineales Ax = b. Para escribir el programa en la


terminal se usar el editor nano.
user@machine:~$ sudo apt-get install nano
para abrir el editor, simplemente deben escribir:
user@machine:~$ nano
Luego, copien y peguen el siguiente cdigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

// E s t o e s un c o m e n t a r i o .
// En e s t e p r o gr a m a s e han o m i t i d o l o s a c e n t o s .
r e a l [ i n t , i n t ] B ( 4 , 4 ) ; // s e d e c l a r a l a m a t r i z B
B=[[2 ,1 ,0 ,0] ,[1 ,2 ,1 ,0] ,[0 ,1 ,2 ,1] ,[0 ,0 ,1 ,2]] ;
c o u t <<"B="<<B<<e n d l ; // e s t o e s un m e n s a j e de s a l i d a
m a t r i x A=B ;
// s e c r e a una m a t r i z s p a r s e en b a s e a l a m a t r i z B
c o u t <<"A="<<A<<e n d l ;
real [ int ] b(4);
b (0:3)=1;
// s e o b t i e n e e l mismo r e s u l t a d o h a c i e n d o :
r e a l [ i n t ] b =[1 ,1 ,1 ,1] ;
r e a l [ i n t ] c ( b . n ) ; // c t e n d r a l a misma d i m e n s i o n que b
c=Ab ;
s e t (A , s o l v e r=UMFPACK) ; // E l p a q u e t e UMFPACK e s s i m i l a r a l p a q u e t e LU
r e a l [ i n t ] x (4) ;
x=A^1b ;
// R e s u e l v e e l s i s t e m a Ax=b
c o u t <<" x="<< x <<e n d l ;
// mas t a r d e e x p l i c a r e m o s c a d a comando con mas d e t a l l e .

Para guardar el programa en nano deben teclear CTRL+O. Se les pedir un nombre; deben escribir archivo.edp. Para salir de nano se debe teclear CTRL+X. Para ejecutar el programa:
user@machine:~/directorio_archivos_FreeFem $ FreeFem++ archivo.edp
NOTA: Los programas en FreeFem++ siempre deben llevar la extensin .edp. El programa correr,
siempre y cuando no existan errores de programacin y cuando la terminal est ubicada en el mismo directorio
que el archivo.edp.
4

1.2.

Editor

La eleccin de un editor de texto va a depender de las necesidades del usuario. Sin embargo, para un
programador es til tener un editor que permita corregir errores rpidamente y que entregue ayuda con la
syntaxis correspondiente. Lamentablemente FreeFem++ no viene con una interfaz grfica por defecto y ya
vimos que el uso del editor nano+terminal no es la opcin ms intuitiva.
En esta seccin, trataremos de configurar el editor Gedit y presentaremos FreeFem++-cs; una interfaz grfica
para FreeFem++ que trae muchas vetajas.

1.2.1.

Gedit

Gedit es un editor que viene por defecto en la mayora de las distribuciones Gnu/Linux. Gedit por defecto no
incluye plugins; para instalarlos, deben abrir la terminal y escribir:
user@machine:~$ sudo apt-get install gedit-common gedit-plugins
Para activar los plugins en ubuntu 14.04, deben ir a editar>preferencias>plugins.

Figura 1.1: Plugins en Gedit.

Activen la terminal empotrada y comentarios. La terminal empotrada aparecer cuando activen el panel
inferior del editor: vista>activar panel inferior.
Por defecto Gedit identifica el cdigo y escoge el lenguaje de programacin. De no ser as, escoger la opcin
texto plano. Esta opcin se puede modificar en la parte inferior de la ventana de Gedit, como se logra ver en
la figura 1.1.
La ventaja de usar la terminal empotrada es que podrn ir rpidamente al directorio donde se encuentra el
archivo.edp. Para esto, deben abrir el archivo.edp en Gedit y luego con el botn secundario sobre la terminal
empotrada deben escoger cambiar directorio. Todo est listo para correr el programa.
5

Figura 1.2: Cambio de directorio.

Nota: En la figura 1.2 pueden ver que el texto se ecuentra resaltado. Esto es porque en la parte inferior de
Gedit se escogi c++. La syntaxis de FreeFem++ se basa en la de c++. Para trabajos futuros siempre
debe escoger esta opcin.

1.2.2.

FreeFem++-cs

not yet

1.3.

Syntaxis c++

not yet

1.4.

Syntaxis FreeFem++

not yet

Captulo

Dominio y espacios de elementos finitos


not yet

2.1.

Dominio

not yet

2.1.1.

Dominio Poligonal

not yet

2.1.2.

Otros tipos de dominio

not yet

2.1.3.

2.2.

Condiciones de frontera

FEspace

not yet

Captulo

Algunos ejemplos
not yet

3.1.

Formulacin primal del problema de poisson 2D

not yet

3.1.1.

Condiciones de frontera tipo Dirichlet

not yet

3.1.2.

Condiciones de frontera tipo Neumann

not yet

3.2.

Formulacin mixta del problema de poisson 2D

not yet

3.3.

Problema de Stokes

not yet

3.4.

Formulacin primal del problema de elasticidad lineal

not yet

Anda mungkin juga menyukai