Next: Makemol utility Up: Execution Previous: Memory considerations

## Program structure

The program consists of several Fortran files, each contains one or several Fortran units. The files are:

- `main.f` (Part 1) - the main module.

  This is the main program unit taking care of all what follows.

- `dimpar.h` is the file defining maximum sizes of working arrays. The code must be recompiled after any change in this file.

- `prcm.h` is a header file common for most of program units. It contains static dimensioning of the working fields and definition of all global parameters. Practically all modules depend somehow on it.

- `input.f` (Part 2) This file contains subroutines which read the main input file and .mmol files.

- `setup.f` (Part 3) This file setup units, reference arrays and data structures

- `mdstep.f` (Part 4) This file contains MD integration algorithms, including thermostats and barostats as well as SHAKE algorithm for constraint dynamics

- `forces.f` (Part 5) This file contains subroutines responsible for calculations of different forces. Forces are divided into two groups: slow and fast forces. This division is essential only if the double time step algorithm is used. Procedure for updating the lists of neighbors is also included into this file

- `mpi.f` (Part 6) contains collection of MPI calls for creating parallel executable code. This is the standard version of this file, which uses real*4 size of data during communications.

  `mpi_cray.f` is Cray version of MPI calls for parallel execution

  `mpi_double.f` is a version of MPI calls for parallel execution with double precision for the data transfer

  `mpi_safe.f` is a version of MPI calls with some additional controls for communications.

  `scalar.f` is collection of dummy MPI calls which is used in a single-processor version of the code

- `restart.f` (Part 7)

  This file contains subroutines responsible for writing and reading restart file, dumping trajectories and other operations with input/output files

- `aver.f` (Part 8) collecting averages, including RDFs

- `tcf.f` (Part 9) calculation of time correlation functions

- `service.f` (Part 10) is a collection of some procedures specific for molecular dynamics

- `util.f` (Part 11) is a collection of some other auxiliary procedures

- `cpu_*.f` are different variants of counting cpu time; `getcpu.c` is a C-function to count CPU-time

Next: Makemol utility Up: Execution Previous: Memory considerations