GROMACS
Nesta seção:
Descrição
De acordo com o manual do GROMACS, GROMACS é um motor para realizar simulações de dinâmica molecular e minimização de energia. É projetado para biomoléculas como proteínas, lipídeos e ácidos nucleicos, mas também é usado em pesquisa de materiais.
Versões Disponíveis
gromacs/4.5.4
gromacs/4.5.4-sbm1.0
gromacs/5.1.4
gromacs/2016.3 (default)
gromacs/2018.2
gromacs/2025.2
Submissão de Jobs Seriais
submit_gromacs_serial.sh
#!/bin/bash
#SBATCH -J gromacs_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G
export INPUT="*.tpr *.edr *.gro *.log"
export OUTPUT="*.trr"
module load gromacs/2025.2
CASE=simulation
job-nanny mdrun -v -nt 1 -s ${CASE}.tpr -o ${CASE}.trr \
-e ${CASE}.edr -c after_${CASE}.gro -g ${CASE}.log
Submissão de Jobs com OpenMP
submit_gromacs_omp.sh
#!/bin/bash
#SBATCH -J gromacs_omp
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 7-00:00:00
#SBATCH --mem=32G
export INPUT="conf.gro topol.top"
export OUTPUT="*.trr *.edr *.log"
module load gromacs/2025.2
# Script para execução de múltiplas etapas
job-nanny ./run_omp.sh
run_omp.sh
#!/bin/bash
# Minimização
gmx grompp -f Min.mdp -c conf.gro -p topol.top -o Min.tpr
gmx mdrun -nt $SLURM_CPUS_PER_TASK -v -deffnm Min
# NVT equilibração
gmx grompp -f NVT.mdp -c Min.gro -t Min.trr -p topol.top -o NVT.tpr
gmx mdrun -nt $SLURM_CPUS_PER_TASK -deffnm NVT
# NPT equilibração
gmx grompp -f NPT.mdp -c NVT.gro -t NVT.cpt -p topol.top -o NPT.tpr
gmx mdrun -nt $SLURM_CPUS_PER_TASK -deffnm NPT
# Produção
gmx grompp -f MD.mdp -c NPT.gro -t NPT.cpt -p topol.top -o MD.tpr
gmx mdrun -v -nt $SLURM_CPUS_PER_TASK -s MD.tpr -o MD.trr \
-e MD.edr -c after_MD.gro -g MD.log
Submissão de Jobs MPI
submit_gromacs_mpi.sh
#!/bin/bash
#SBATCH -J gromacs_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=28
#SBATCH -t 48:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="*.tpr *.edr *.gro"
export OUTPUT="*.trr"
module load gromacs/2025.2
job-nanny srun -n $SLURM_NTASKS mdrun_mpi -v -s simulation.tpr \
-o simulation.trr -e simulation.edr \
-c after_simulation.gro -g simulation.log
Submissão de Jobs Híbridos (MPI+OpenMP)
submit_gromacs_hybrid.sh
#!/bin/bash
#SBATCH -J gromacs_hybrid
#SBATCH -N 2
#SBATCH --ntasks-per-node=4
#SBATCH -c 7
#SBATCH -t 72:00:00
#SBATCH --mem-per-cpu=2G
export INPUT="*.tpr *.edr *.gro"
export OUTPUT="*.trr"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
module load gromacs/2025.2
job-nanny srun -n $SLURM_NTASKS mdrun_mpi -v -s simulation.tpr \
-ntomp $OMP_NUM_THREADS \
-o simulation.trr -e simulation.edr \
-c after_simulation.gro -g simulation.log
Submissão de Jobs com GPU
submit_gromacs_gpu.sh
#!/bin/bash
#SBATCH -J gromacs_gpu
#SBATCH -p gpu
#SBATCH --gres=gpu:1
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=32G
export INPUT="*.tpr"
export OUTPUT="*.trr *.edr *.log"
module load gromacs/2025.2
module load cuda/12.9
job-nanny mdrun -v -ntmpi 1 -ntomp $SLURM_CPUS_PER_TASK \
-s simulation.tpr -o simulation.trr \
-e simulation.edr -c after.gro -g simulation.log \
-nb gpu -pme gpu -bonded gpu -update gpu
Arquivos de Parâmetros MDP
Minimização (Min.mdp)
Min.mdp
title = Minimization
define = -DFLEXIBLE
integrator = steep
emtol = 1000.0
emstep = 0.01
nsteps = 50000
nstlist = 1
ns_type = grid
rlist = 1.0
coulombtype = PME
rcoulomb = 1.0
vdwtype = cutoff
rvdw = 1.0
pbc = xyz
NVT Equilibração (NVT.mdp)
NVT.mdp
title = NVT equilibration
define = -DPOSRES
integrator = md
dt = 0.002
nsteps = 50000
nstxout = 500
nstvout = 500
nstenergy = 500
nstlog = 500
continuation = no
constraint_algorithm = lincs
constraints = h-bonds
lincs_iter = 1
lincs_order = 4
ns_type = grid
nstlist = 20
rlist = 1.0
coulombtype = PME
rcoulomb = 1.0
vdwtype = cutoff
rvdw = 1.0
tcoupl = V-rescale
tc-grps = Protein Non-Protein
tau_t = 0.1 0.1
ref_t = 300 300
pcoupl = no
pbc = xyz
gen-vel = yes
gen-temp = 300
gen-seed = -1
NPT Equilibração (NPT.mdp)
NPT.mdp
title = NPT equilibration
define = -DPOSRES
integrator = md
dt = 0.002
nsteps = 50000
nstxout = 500
nstvout = 500
nstenergy = 500
nstlog = 500
continuation = yes
constraint_algorithm = lincs
constraints = h-bonds
lincs_iter = 1
lincs_order = 4
ns_type = grid
nstlist = 20
rlist = 1.0
coulombtype = PME
rcoulomb = 1.0
vdwtype = cutoff
rvdw = 1.0
tcoupl = V-rescale
tc-grps = Protein Non-Protein
tau_t = 0.1 0.1
ref_t = 300 300
pcoupl = Parrinello-Rahman
pcoupltype = isotropic
tau_p = 2.0
compressibility = 4.5e-5
ref_p = 1.0
pbc = xyz
gen-vel = no
Produção (MD.mdp)
MD.mdp
title = MD production
integrator = md
dt = 0.002
nsteps = 5000000
nstxout = 5000
nstvout = 5000
nstenergy = 5000
nstlog = 5000
continuation = yes
constraint_algorithm = lincs
constraints = h-bonds
lincs_iter = 1
lincs_order = 4
ns_type = grid
nstlist = 20
rlist = 1.0
coulombtype = PME
rcoulomb = 1.0
vdwtype = cutoff
rvdw = 1.0
tcoupl = V-rescale
tc-grps = Protein Non-Protein
tau_t = 0.1 0.1
ref_t = 300 300
pcoupl = Parrinello-Rahman
pcoupltype = isotropic
tau_p = 2.0
compressibility = 4.5e-5
ref_p = 1.0
pbc = xyz
Job Array para Múltiplas Simulações
submit_gromacs_array.sh
#!/bin/bash
#SBATCH -J gromacs_array
#SBATCH --array=1-10
#SBATCH -N 1
#SBATCH -c 28
#SBATCH -t 7-00:00:00
#SBATCH --mem=64G
TEMPS=(280 285 290 295 300 305 310 315 320 325)
TEMP=${TEMPS[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="template.tpr template.gro"
export OUTPUT="run_${TEMP}K/"
module load gromacs/2025.2
mkdir -p run_${TEMP}K
cd run_${TEMP}K
# Modificar temperatura no arquivo .mdp
cp ../MD_template.mdp MD.mdp
sed -i "s/ref_t.*/ref_t = $TEMP $TEMP/" MD.mdp
# Preparar e executar
gmx grompp -f MD.mdp -c ../conf.gro -p ../topol.top -o MD.tpr
gmx mdrun -v -nt $SLURM_CPUS_PER_TASK -deffnm MD
Análise de Trajetórias
analyze_gromacs.sh
#!/bin/bash
#SBATCH -J gromacs_analysis
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 04:00:00
#SBATCH --mem=8G
export INPUT="traj.xtc topol.tpr"
export OUTPUT="analysis/"
module load gromacs/2025.2
mkdir -p analysis
cd analysis
# RMSD
echo "4 4" | gmx rms -s ../topol.tpr -f ../traj.xtc -o rmsd.xvg
# Raio de giração
echo "1" | gmx gyrate -s ../topol.tpr -f ../traj.xtc -o gyrate.xvg
# Flutuação quadrática média (RMSF)
echo "1" | gmx rmsf -s ../topol.tpr -f ../traj.xtc -o rmsf.xvg -res
# Distâncias
echo "4 5" | gmx distance -s ../topol.tpr -f ../traj.xtc -o dist.xvg
# Ligações de hidrogênio
echo "4 5" | gmx hbond -s ../topol.tpr -f ../traj.xtc -num hbond.xvg
# Energia
gmx energy -f ../MD.edr -o energy.xvg < energy.in
Referências
Documentação: https://manual.gromacs.org/
Tutoriais: http://www.gromacs.org/@api/deki/files/177/=tutorial.pdf
Mailing list: https://mailman-1.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users
Ver também
NAMD - Alternativa para dinâmica molecular
Amber - Alternativa para dinâmica molecular
Processando Simulações - Como submeter jobs