CRYSTAL17

CRYSTAL is a general-purpose program for the study of crystalline solids, and the first which has been distributed publicly. The first version was released in 1988 and then seven next versions have followed: CRYSTAL92, CRYSTAL95, CRYSTAL98, CRYSTAL03, CRYSTAL06, CRYSTAL09 and CRYSTAL14.

The CRYSTAL program computes the electronic structure of periodic systems within Hartree Fock, density functional or various hybrid approximations (global, range-separated and double-hybrids). The Bloch functions of the periodic systems are expanded as linear combinations of atom centred Gaussian functions. Powerful screening techniques are used to exploit real space locality.
Restricted (Closed Shell) and Unrestricted (Spin-polarized) calculations can be performed with all-electron and valence-only basis sets with effective core pseudo-potentials.

License Information

CRYSTAL17 is licensed to the Physics and Chemistry of Solids research group led by Mike Stavola.

Usage

Versionmodule name
1.0.2crystal17/1.0.2

Required modules

  1. intel/2021.3.0
  2. mvapich2/2.3.4 OR mpich/3.3.2


There are several utility scripts available to run CRYSTAL17 that are in your path when you load the crystal17 module. Launch your job by running the scripts by providing the input filename without extension and number of tasks for parallel jobs 

Job TypeRun ScriptOptionExample
Serialruncry17inputfilenameruncry17 inputfilename
Parallelrunmpi17${SLURM_NTASKS} inputfilenamerunmpi17 ${SLURM_NTASKS} inputfilename
Distributed Parallelrunmpi17MPP${SLURM_NTASKS} inputfilenamerunmpi17MPP ${SLURM_NTASKS} inputfilename

Example

Example input files and scripts are available at /share/Apps/examples/crystal/test_cases/inputs.

Serial (/share/Apps/examples/crystal/test_cases/runserial.sh)
#!/bin/bash

#SBATCH -t 12:00:00
#SBATCH -p health
#SBATCH --ntasks-per-node=1
#SBATCH --nodes=1
#SBATCH -J crystal17_serial

module load crystal17/1.0.2

cd ${SLURM_SUBMIT_DIR}
cd serial

# Run a specific example
runcry17 test04
runprop17 test04 test04

# Run all examples
#for id in $(ls test??.* | awk -F. '{print $1}' | sort | uniq | sed -e 's/test//g' | xargs)
#do
#  runcry17 test$id
#  runprop17 test$id test$id
#done
Parallel (/share/Apps/examples/crystal/test_cases/runparallel.sh)
#!/bin/bash

#SBATCH -t 12:00:00
#SBATCH -p health
#SBATCH --ntasks-per-node=12
#SBATCH --nodes=1
#SBATCH -J crystal17_parallel

module load crystal17/1.0.2

cd ${SLURM_SUBMIT_DIR}
cd parallel

# Run a specific example
runmpi17 ${SLURM_NTASKS} test07
runmpi_prop17 ${SLURM_NTASKS} test07 test07

# Run all examples
#for id in $(ls test??.* | awk -F. '{print $1}' | sort | uniq | sed -e 's/test//g' | xargs)
#do
#  runmpi17 ${SLURM_NTASKS} test$id
#  runmpi_prop17 ${SLURM_NTASKS} test$id test$id
#done
Distributed Parallel (/share/Apps/examples/crystal/test_cases/runmpp.sh)
#!/bin/bash

#SBATCH -t 12:00:00
#SBATCH -p health
#SBATCH --ntasks-per-node=12
#SBATCH --nodes=2
#SBATCH -J crystal17_mpp

module load crystal17/1.0.2

cd ${SLURM_SUBMIT_DIR}
cd mpp

# Run a specific example 
runmpi17MPP ${SLURM_NTASKS} test22 
runmpi_prop17 ${SLURM_NTASKS} test22 test22

# Run all examples
#for id in $(ls test??.* | awk -F. '{print $1}' | sort | uniq | sed -e 's/test//g' | xargs)
#do
#  runmpi17MPP ${SLURM_NTASKS} test$id
#  runmpi_prop17 ${SLURM_NTASKS} test$id test$id
#done
#

User ManualÂ