Grupo de Modelacion Matematica y Computacional Instituto de Goefisica Universidad Nacional Autonoma de Mexico Mexico D.F. Autores: Ismael Herrera Revilla Robert Yates Smit Antonio Carrillo Ledesma Alberto Rosas Medina Codigo liberado bajo la licencia GPL ver. 2.0 Fuentes del codigo del metodo de DVS-DDM secuencial como paralelo, el cual se separo en una estructura de directorios para un manejo mas facil, la estructura queda de la siguiente manera: DVS Implementacion de DVS-DDM Methods Implementacion de los distintos metodos de DVS Library Biblioteca de funciones Problems Implementacion de los problemas que resuelve el sistema Parallel Implementacion paralela que reusa todo el codigo secuencial ParallelMethods Implementacion de los distintos metodos de DVS en paralelo ParallelSchemeME Implementacion del Esquema Maestro-Esclavo en paralelo ParallelImplementation Implementacion paralela usando el equivalente de ligas simbolicas al codigo SequentialImplementation Implementacion secuencial usando el equivalente de ligas simbolicas al codigo ClassHierarchy Contiene lo necesario para generar la jerarquia de clases en HTML, PDF y XML Para compilar y correr la aplicacion segun sea el caso usar: + Codigo secuencial: $ cd SequentialImplementation $ ./Link $ make deps $ make $ make run o bien usar $ ./DVS-DDM file SimetricoExpXY -m MF1 -p 3 -Nx 10 -Ny 4 -Mx 10 -My 10 $ make clean $ ./UnLink + Codigo paralelo: $ cd ParallelImplementation $ ./Link $ make deps $ make correr con make de ejemplo por omsion $ make run correr usando MPICH 1.x $ mpirun.mpich -np 4 DVS-DDM file SimetricoExpXY -m MF1 -p 3 -Nx 10 -Ny 4 -Mx 10 -My 10 correr usando MPICH 2.x $ mpirun.mpich2 -np 4 DVS-DDM file SimetricoExpXY -m MF1 -p 3 -Nx 10 -Ny 4 -Mx 10 -My 10 correr usando MPI $ mpirun -np 4 DVS-DDM file SimetricoExpXY -m MF1 -p 3 -Nx 10 -Ny 4 -Mx 10 Limpiar archivos de compilación $ make clean $ ./UnLink También es posible usar la compilación indicada en cada caso sin usar makefile especificada en README.txt del directorio correspondiente. Parametros usados en la ejecución de DVS-DDM Problema: file Malla: Malla gruesa: -Nx -Ny -Nz Malla en cada subdominio -Mx -My -Mz Método -m Visualizacion de resultados -p <0 | 1 | 2 | 3> ^ ^ ^ ^ | | | |______visualiza todos los nodos x,y[,z],valor | | |__________visualiza por subdominio todos los nodos x,y[,z],valor | |______________visualiza solo nodos de frontera interior x,y[,z],valor |__________________no visualiza Nota: Dependiendo de problema a correr, es necesario tener en cuenta el metodo numerico usado para la resolucion de los sistemas lineales locales, si se quiere tener la mayor precision posible es mejor usas metodos directos (como LU), pero esto ocasiona un consumo importante de memoria RAM y decrece en rendimiento al refinar la malla local. La otra opcion es usar metodos iterativos en la resolucion de los sistemas lineales locales. En el archivo Definiciones.hpp se puede seleccionar USAR_LOCAL_MET_ITER haciendo #define USAR_LOCAL_MET_ITER en lugar de #undef USAR_LOCAL_MET_ITER Para el control en las iteraciones y tolerancia para los metodos globales se usan NMAXITER y EPSILON respectivamente, para definir las iteraciones y tolerancia local en los subdominios se usa NMAXITER_LOCAL y EPSILON_LOCAL respectivamente. En el caso de tener instalado la biblioteca GMM++, i.e. libgmm++-dev entonces es posible usar dicha biblioteca activando en Definiciones.hpp las opciones #define GMM y dentro de ella podemos usar #define SIN_PRECONDICIONADOR o en su defecto #define PRECONDICIONADOR_ILDLTT Para instalar en Linux Debian la biblioteca GMM++ usar: # aptitude install libgmm++-dev