ORCA
Nesta seção:
Descrição
De acordo com a página do ORCA, ORCA é um pacote de software de química quântica que fornece métodos avançados nas áreas de teoria do funcional da densidade (DFT) e métodos baseados em função de onda correlacionada. É amplamente utilizado em química computacional.
Versões Disponíveis
orca/4.0.1 (default)
orca/4.2.1
orca/5.0.3
orca/5.0.4
orca/6.0.0
orca/6.0.1
orca/6.1.0
Carregando o Módulo
# Carregar ORCA
module load orca/6.1.0
# Verificar instalação
orca --version
Submissão de Jobs Seriais
#!/bin/bash
#SBATCH -J orca_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G
export INPUT="water.inp"
export OUTPUT="water.out"
module load orca/6.1.0
job-nanny orca water.inp
Submissão de Jobs Paralelos (OpenMP)
#!/bin/bash
#SBATCH -J orca_omp
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=32G
export INPUT="benzene.inp"
export OUTPUT="benzene.out"
module load orca/6.1.0
# ORCA usa threads automaticamente
job-nanny orca benzene.inp
Nota
O número de threads deve ser especificado no arquivo de entrada ORCA usando a diretiva %pal nprocs.
Submissão de Jobs MPI
#!/bin/bash
#SBATCH -J orca_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=14
#SBATCH -t 72:00:00
#SBATCH --mem-per-cpu=4G
export INPUT="large.inp"
export OUTPUT="large.out"
module load orca/6.1.0
module load openmpi/4.1.8
# ORCA chama mpirun internamente, não usar mpirun explicitamente
job-nanny $ORCA_BIN large.inp
Importante
ORCA gerencia a execução MPI internamente. Não use mpirun diretamente, bastando usar apenas $ORCA_BIN large.inp. O número de processos deve ser especificado no arquivo de entrada.
É possível que ocorra falha no Orca ao utilizar paralelização MPI com 2 ou mais nós. Neste caso, uma possível solução seria criar um arquivo contendo o nomes dos nós através do comando srun hostname -s | sort -u > hosts.$SLURM_JOB_ID:
#!/bin/bash
#SBATCH -J orca_mpi
#SBATCH -N 2
#SBATCH --ntasks-per-node=14
#SBATCH -t 72:00:00
#SBATCH --mem-per-cpu=4G
export INPUT="large.inp"
export OUTPUT="large.out"
module load orca/6.1.0
module load openmpi/4.1.8
srun hostname -s | sort -u > hosts.$SLURM_JOB_ID
# ORCA chama mpirun internamente, não usar mpirun explicitamente
job-nanny $ORCA_BIN large.inp
Exemplo de Arquivo de Entrada
! RHF SVP OPT
%pal
nprocs 8 ! Número de threads/processos
end
%base "water"
* xyz 0 1
O 0.000000 0.000000 0.000000
H 0.000000 0.757000 0.586000
H 0.000000 -0.757000 0.586000
*
Cálculo DFT com Otimização
#!/bin/bash
#SBATCH -J orca_dft
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 48:00:00
#SBATCH --mem=32G
export INPUT="dft_opt.inp"
export OUTPUT="dft_opt.out"
module load orca/6.1.0
job-nanny orca dft_opt.inp
! B3LYP DEF2-TZVP OPT FREQ
%pal
nprocs 8
end
%maxcore 4000
%scf
maxiter 500
tole 1e-6
end
* xyz 0 1
C 0.000000 0.000000 0.000000
C 1.400000 0.000000 0.000000
H -0.550000 0.940000 0.000000
H -0.550000 -0.940000 0.000000
H 1.950000 0.940000 0.000000
H 1.950000 -0.940000 0.000000
*
Cálculo de Propriedades (NMR, TD-DFT)
#!/bin/bash
#SBATCH -J orca_props
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 36:00:00
#SBATCH --mem=32G
export INPUT="nmr.inp"
export OUTPUT="nmr.out"
module load orca/6.1.0
job-nanny orca nmr.inp
! B3LYP DEF2-TZVP NMR
%pal
nprocs 8
end
%eprnmr
nuclei = all C {shift}
nuclei = all H {shift}
end
* xyz 0 1
C 0.000000 0.000000 0.000000
H 1.089000 0.000000 0.000000
H -0.363000 1.026000 0.000000
H -0.363000 -0.513000 -0.889000
H -0.363000 -0.513000 0.889000
*
! B3LYP DEF2-TZVP TDDFT
%pal
nprocs 8
end
%tddft
nroots 10
end
* xyz 0 1
C 0.000000 0.000000 0.000000
C 1.400000 0.000000 0.000000
H -0.550000 0.940000 0.000000
H -0.550000 -0.940000 0.000000
H 1.950000 0.940000 0.000000
H 1.950000 -0.940000 0.000000
*
Job Array para Varredura de Parâmetros
#!/bin/bash
#SBATCH -J orca_array
#SBATCH --array=1-5
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 24:00:00
#SBATCH --mem=16G
PARAMS=(
"B3LYP"
"PBE0"
"M06"
"wB97X"
"TPSS"
)
METHOD=${PARAMS[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="template.inp"
export OUTPUT="${METHOD}/"
module load orca/6.1.0
mkdir -p ${METHOD}
cd ${METHOD}
# Modificar método no arquivo de entrada
sed "s/FUNCTIONAL/${METHOD}/g" ../template.inp > input.inp
job-nanny orca input.inp
Análise de Resultados
#!/bin/bash
#SBATCH -J analyze_orca
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 00:30:00
#SBATCH --mem=2G
# Extrair energia final
grep "FINAL SINGLE POINT ENERGY" *.out | awk '{print $6}' > energies.txt
# Extrair geometria otimizada
for out in *.out; do
echo "Geometria otimizada para $out:" >> optimized.txt
awk '/CARTESIAN COORDINATES/,/CARTESIAN COORDINATES/ {
if(NF==4 && $1!="CARTESIAN") print $0
}' $out >> optimized.txt
echo "" >> optimized.txt
done
# Extrair frequências vibracionais
grep "FREQUENCIES IN CM" -A 5 *.out > frequencies.txt
# Extrair orbital HOMO/LUMO
grep "HOMO" *.out | awk '{print $3, $5}' > homo_lumo.txt
# Extrair gaps
grep "GAP" *.out | awk '{print $3}' > gaps.txt
# Extrair tempos de excitação (TD-DFT)
grep "STATE" *.out | grep -v "TOTAL" > excitations.txt
Referências
Documentação: https://www.faccts.de/orca/
Manuais: https://www.faccts.de/docs/orca/
Ver também
GAMESS - Química quântica ab initio
Gaussian - Química quântica comercial
Processando Simulações - Como submeter jobs