Compilation and execution
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.
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
install.sh file in the PyCAC code package, i.e.,
/opt/local/bin/ranlib: file: libcac.a(constant_para_module.o) has no symbols
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
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
*_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
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
install.sh 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
mpirun -np num_of_proc ./CAC < cac.in
where positive integer
num_of_proc is the number of processors to be used. As an example, see the
run.sh file in the PyCAC code package.
The users may run the PyCAC code on the MATerials Innovation Network (MATIN) at Georgia Tech. Instructions will be added later.