Compilation and execution

Please note that these instructions are for compilation and direct execution of the CAC simulator. To run CAC simulations using the GUI, please see the section titled: Graphical user interface


The PyCAC code is fully parallelized with Message Passing Interface (MPI). Some functions in MPI-3 standard are employed. It works with Open MPI version 2.1, Intel MPI version 5.1, MPICH version 3.3, and MVAPICH2 version 2.3.

Fortran compiler

Some intrinsic functions in Fortran 2008 is employed in the code, so compilers that fully support Fortran 2008 are preferred. For example, GNU Fortran version 7.0 and Intel Fortran version 17.0 work with the PyCAC code.

To compile the code, simply run the file in the PyCAC code package, i.e.,


Note that the compilation process has not been tested on Microsoft Windows. On macOS, a message

/opt/local/bin/ranlib: file: libcac.a(constant_para_module.o) has no symbols

may occur. The users are suggested to compile and run the PyCAC code on Linux, which dominates the high performance computing systems.



In compilation, the first step is to create a static library libcac.a from the 56 module files *_module.f90 in the module directory. There are five types of module files:


There is only one *_comm_module.f90 file: precision_comm_module.f90. It controls the precision of the integer and real numbers.


There are 25 *_para_module.f90 files. They define single value variables that may be used globally.


There are 24 *_array_module.f90 files. They define arrays that may be used globally. With a few exceptions, the *_para_module.f90 and *_array_module.f90 files come in pairs.


There are 5 *_function_module.f90 files. They define interatomic potential formulations, arithmetic/linear algebra calculations, unit conversion, etc.


There is only one *_tab_module.f90 file: eam_tab_module.f90. It contains algorithms that extract the EAM potential-based values from numerical tables.

Note that these module files should be compiled in this order (see that the file) in creating the static library libcac.a. Otherwise, an error may occur.


Then, an executable, named CAC, is compiled using one main program (main.f90) plus 175 subroutines (*.f90) in the src directory and linked with the static library libcac.a.


In execution, the executable CAC, the input file, and the potential files are moved into the same directory. It follows that

mpirun -np num_of_proc ./CAC <

where positive integer num_of_proc is the number of processors to be used. As an example, see the file in the PyCAC code package.