Paratec documentation can be found on the web at
http://www.nersc.gov/projects/paratec
paratec the executable input the input file Si_POT.DAT the pseudopotential files O_POT.DAT ...
STRUC_CONVERGE contains the progress of the structural relaxation
STRUC_LOG a detailed log about the relaxation steps performed
ELASTO_PHONON information from the H matrix: Bulk modulus, phonon
frequencies
PW_LOG a log about all the PW calls done
OUT output file of the current plane wave job
CHECKPOINT contains all the information to continue a
structural relaxation. Also has the Hessian matrix
*.dx files for visualization with the IBM Data Explorer
*.kh files for visualization with Khoros
Note: As of paratec 4.5c, the output file OUT._0 has been changed to OUT.
Having obtained a gzipped tar file of the source e.g. paratec.xxx.tar.gz, unpack the source by typing
gzip -d -c paratec.xxx.tar.gz | tar -xf -
Then enter the paratec directory and run the configuration
script by typing
cd paratec
./configure
For a summary of the options accepted by the global Makefile,
see Table 1.1 or just type
make
The machines currently supported are listed in Table 1.2 for reference. For each machine, a working directory in the source tree is created e.g. paratec/src/para/machine where the value of machine is given in the second column of Table 1.2. The binary files are placed in paratec/bin/machine. This facility allows the same source tree to be used by more than one machine simultaneously without any conflicts arising between object files.
Due to heavy use of optimized library routines, paratec is not easy to port. Here are some steps on the way to port to a new architecture.
| File | advice |
| flibcalls.m4h | Has some system dependencies on the use |
| of blas routines, i.e Cray versus the | |
| rest of the world. Will most likely need | |
| no changes. | |
| all_to_all.f90p | May need some tweeking if there are hickups |
| data_gather.f90p | in the MPI implementation. Look for the |
| gspace_gather.f90p | machine-specific ifdefs there. Most likely will |
| isort_gather.f90p | need no changes. |
| setup_packinfo.f90p | |
| symmetrize_tensor_global.f90p | |
| zdiag_scalapack.fp | Scalapack on the Cray uses Shmem, and that |
| rdiag_scalapack.fp | requires some ugly workarounds. |
Don't forget to provide for workspace in fft_workspace.fp90, and for a list of acceptable FFT lengths in adjust_fft.f90p. Once you have that done, you are through the worst. Have a look at fourier_transform.f90p. If the fourier transform interfaces are awkward, you might have to make some changes there as well. Make use of optimized routines to perform the convolution, rather than using the vanilla loop. Try if the preprocessor option FAST_CONVOLUTE results in any speedup - it usually does for machines where no multiple-FFT routines are available.
At some point, the code was running also on cray vector machines. This is no longer the case, although still all the code is there, and it should not be too much work to get it going again.
To make FFTW work on a new platform, make sure the sysvars file includes the path of the FFTW library (for example, see sysvars.sgio200). Secondly, you must make sure that if the platform also supports a native FFT package that M4FFTFLAG is defined (again, see sgio200), and that adjustfft.fp uses that value.
I think that is all that should be needed.
If you make a change to paratec, please make note of the change you make in the CHANGES file. This way you (and others) can tell what has changed in each version.
When you want to archive a version of the code, or give it to someone else, use the make dist target of the makefile. This saves only the necesary files, and not all the object files or binaries you may have generated. It then tars up the results and gzips them for your convenience. Use make dist-pub if you have the full version ( with NMR and the untested td-dft), and you want to strip the code of these parts.
make dist also prompts you for a new version number. It modifies the current version number (which is printed out in the OUT and PW_LOG files, and shows up at the top of this documentation. It also updates the time stamp, which shows up in the OUT and PW_LOG files. Then it names the tarball after the new version number. You can, of course, give it the same name as the old version, but if you change the number you will be able to keep track of which binary originated from which version of the code.
WARNING! make dist assumes your source code directory is called ``paratec''. If you keep it in a directory with any other name, these may end up saving the wrong source code, or doing something else nasty.
If you add a new file to paratec, make sure to add it to the lists in the Makefile for the dist target.