Real world Matrix Inversion Example Using LAPACK routines from MKL, Portland Group and CULA

The programs "fourd.f90 and fourdcu.f90 implement the scattering equations described in J. H. Richmond, "Scattering by a Dielectric Cylinder of Arbitrary Cross Section Shape." IEEE Trans. on Antennas and Propagation, vol AP-13, pp 334-341, May 1965. The output of these programs, out.dat, is a field strength around the dielectric cylinder as a function of angle.

Tar file of source, makefile, data and Readme: agm.tgz

A similar program was used for parameter studies for the design of the AGM-129 Advanced Cruise Missile. See: http://www.fas.org/nuke/guide/usa/bomber/acm.htm and take a close at the picture that shows a number of missiles in the factory.

These programs take two input files, wing.dat and source.dat

The file wing.dat is generated by running the program airfoil.py. This generates a description of a wing. Airfoil.py can be run without any input parameters but it can take the number of cells in the decomposition.

The file source.dat contains three lines. The first gives the method used to solve the linear system. It is one of the following:

*** The cula option is only valid for fourdcu.f90 ***

The second line of source.dat gives the wavelength of the radar in meters.

The third line gives the width of the radar beam in +/- degrees.

The programs mkl.f, mkl.c, nrf.f90, and nrfcuda.f90 are some other test programs.

The makefile contains options for several versions.

fourd.mkl
builds using the mkl version of cgesv and Intel compiler
fourd.pg
use Portland Group compiler and their non-optimized version of cgesv
fourd
use the NAG/g95/gfortran compiler and a version of cgesv based on routines form the Numerical Recipes in Fortran book
fourd.cuda
use the NAG/g95/gfortran compiler and the cula version of cgesv
fourd.intel
use the Intel compiler and a version of cgesv based on routines form the Numerical Recipes in Fortran book

The makefile also creates the wing.dat file if it does not exist.

As of Jan 11, 2010 the Intel compilers are not installed on cuda1. These programs can be compiled on RA and moved to cuda1. The Portland Group compilers are available on cuda1.

****** Settings for cuda1.mines.edu are:

#for cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/cudaprof/bin:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/local/cuda/bin
export PATH=$PATH:$HOME/cuda/bin/linux/release
export MANPATH=$MANPATH:/usr/local/cuda/man
export CUDA_INC_PATH=/usr/local/cuda/include

#for cula 
export CULA_ROOT="/usr/local/cula"
export CULA_INC_PATH="$CULA_ROOT/include"
export CULA_BIN_PATH_64="$CULA_ROOT/bin64"
export CULA_LIB_PATH_64="$CULA_ROOT/lib64"
export LD_LIBRARY_PATH=$CULA_LIB_PATH_64:$LD_LIBRARY_PATH

#for g95
export PATH=$PATH:/home/apps/g95/64/g95-install/bin

#for nag
export NAG_KUSARI_FILE=empower.mines.edu:

Links:

agm.tgz: Tar file of source, makefile, data and Readme
19 KB
List of files
External Link
CULA Linear Algebra Library Version 1.1
External Link