ESPResSo
In this section:
Description
According to the documentation of ESPResSo, ESPResSo (Extensible Simulation Package for Research on Soft Matter) is a highly versatile software package for performing and analyzing many-body molecular dynamics simulations, used in soft matter physics, chemistry, and molecular biology.
Available Versions
espresso/3.3.1 (default)
Loading the Module
# Load ESPResSo
module load espresso/3.3.1
# Verify installation
Espresso -h
Serial Job Submission
submit_espresso_serial.sh
#!/bin/bash
#SBATCH -J espresso_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 05:00:00
#SBATCH --mem=4G
export INPUT="simulation.tcl"
export OUTPUT="*.out *.dat"
module load espresso
job-nanny Espresso simulation.tcl
MPI Job Submission
submit_espresso_mpi.sh
#!/bin/bash
#SBATCH -J espresso_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 24:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="simulation.tcl"
export OUTPUT="*.out *.dat"
module load espresso
job-nanny srun -n $SLURM_NTASKS Espresso simulation.tcl
Tcl Script Example
simulation.tcl
# Sistema básico de polímeros
set n_part 100
set box_l 10.0
# Configure sistema
setmd box_l $box_l $box_l $box_l
setmd periodic 1 1 1
# Create partículas
for {set i 0} {$i < $n_part} {incr i} {
part $i pos [expr rand()*$box_l] [expr rand()*$box_l] [expr rand()*$box_l]
}
# Configure interações
inter 0 0 lennard-jones 1.0 1.0 1.12246 0.25 0.0 0.0
# Thermalization
setmd time_step 0.01
setmd skin 0.4
thermostat langevin 1.0 1.0
# Minimization
integrate 1000
# Production
for {set i 0} {$i < 10} {incr i} {
integrate 1000
puts "Energia: [analyze energy total]"
}
Simulation with LB (Lattice Boltzmann)
submit_espresso_lb.sh
#!/bin/bash
#SBATCH -J espresso_lb
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 48:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="lb_simulation.tcl"
export OUTPUT="*.out *.dat"
module load espresso
job-nanny srun -n $SLURM_NTASKS Espresso lb_simulation.tcl
lb_simulation.tcl
# Lattice Boltzmann com partículas
set box_l 20.0
setmd box_l $box_l $box_l $box_l
# Create fluido LB
lbfluid gpu grid 1.0 dens 1.0 visc 3.0 tau 0.01
# Adicionar partículas coloidais
set n_col 10
for {set i 0} {$i < $n_col} {incr i} {
part $i pos [expr rand()*$box_l] [expr rand()*$box_l] [expr rand()*$box_l] \
type 0 radius 1.0
}
# Acoplamento partícula-fluido
lbbounce 0 1
# Integração
integrate 10000
Job Array for Parameter Scan
submit_espresso_array.sh
#!/bin/bash
#SBATCH -J espresso_array
#SBATCH --array=1-5
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 12:00:00
#SBATCH --mem=8G
export INPUT="template.tcl"
export OUTPUT="run_${SLURM_ARRAY_TASK_ID}/"
module load espresso
# Parameters for scan
TEMPS=(1.0 1.5 2.0 2.5 3.0)
TEMP=${TEMPS[$SLURM_ARRAY_TASK_ID-1]}
mkdir -p run_${SLURM_ARRAY_TASK_ID}
cd run_${SLURM_ARRAY_TASK_ID}
# Modify temperatura no script
sed "s/TEMPERATURA/$TEMP/g" ../template.tcl > simulation.tcl
job-nanny Espresso simulation.tcl
References
Documentation: https://espressomd.org/html/doc/
Tutorials: https://espressomd.org/tutorials/
See also
LAMMPS - Alternative for molecular dynamics
GROMACS - Alternative for molecular dynamics
Running Simulations - How to submit jobs