ESPResSo

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

See also