Overview

The MADCAP software package
  1. is written in ansi C, and uses standard  MPI and the LAPACK & ScaLAPACK libraries (either C or Fortran) for efficiency and portability.
  2. is communication-intensive, and so works most efficiently when the matrices are dense on the processors.
  3. performs all calculations in core in 8-byte precision, but stores all intermediate data products on disc as unformatted 4-byte float binary files.
  4. stores all matrices on disc in full column-major form, but only guarantees the lower triangle of any symmetric matrix to be correct.
  5. does not have a makefile since parallel systems differ so widely (even on the same hardware at different sites).
  6. should be compiled with linkage to the local MPI, LAPACK & ScaLAPACK (and hence BLAS/BLACS/PBLAS) libraries, as well as the madcap.h header file and madtool.o object file.
madcap.h

The MADCAP header file includes machine-specific pre-processor instructions to make the code machine-independent. These cover

madtool.c

The MADCAP tool code includes I/O and error-handling functions for

  1. converting input/output between a 4-byte float binary file and an 8-byte float variable.
  2. scattering/gathering matrices between disc and processors according to ScaLAPACK block cyclic distribution.
  3. error-checking and distributed error-handling.