Como instalar e usar o programa xTB

xtb é um programa de estrutura eletrônica molecular que usa métodos semi-empíricos extended tight-binding (xTB) recentemente publicados (Grimme (2017), Bannwarth (2019)). Esses métodos prometem ser robustos e acurados, tendo sido parametrizados para estruturas, frequências vibracionais e interações não-covalentes da maior parte da tabela periódica. São muito rápidos e funcionam bastante bem para moléculas grandes, o que é perfeito para uma infinidade de aplicações, incluindo explorações preliminares de superfícies de energia potencial.

Baixar o pacote

O programa é obtido na página do projeto no GitHub. Vá em releases e baixe o pacote mais recente (no presente momento isso significa o arquivo xtb-191213.tar.xz).

Instalação

Descompacte o conteúdo do arquivo em uma pasta:

tar xf xtb-191213.tar.xz

Caso tenta dificuldades na descompactação, tente instalar xz-utils (no Ubuntu, use o comando sudo apt install xz-utils). Eu costumo instalar programas em /opt, então movo a pasta com o conteúdo descompactado para /opt/xtb:

sudo mv xtb_6.3.pre1 /opt/xtb

(Caso esteja atualizando, talvez seja interessante executar sudo rm -rf /opt/xtb antes, para limpar a versão anterior. Use esse comando com muito cuidado.) Neste momento, executar /opt/xtb/bin/xtb --version irá resultar aproximadamente na seguinte saída:

$ /opt/xtb/bin/xtb --version
      -----------------------------------------------------------
     |                   =====================                   |
     |                           x T B                           |
     |                   =====================                   |
     |                         S. Grimme                         |
     |          Mulliken Center for Theoretical Chemistry        |
     |                    University of Bonn                     |
      -----------------------------------------------------------

   * xtb version 6.3.0 (preview) compiled by '<ehlert@majestix>' on 2019-12-12

normal termination of xtb

Configurando o programa

Agora precisamos configurar o programa. A recomendação é adicionar as seguintes linhas ao arquivo ~/.bashrc (ou ~/.zshrc se você usa Zsh):

export MKL_NUM_THREADS=4
export OMP_NUM_THREADS=4
export OMP_STACKSIZE=1G
export OMP_MAX_ACTIVE_LEVELS=1
ulimit -s unlimited
export XTBHOME=/opt/xtb
source $XTBHOME/share/xtb/config_env.bash

(Veja o manual do programa para mais detalhes sobre cada linha acima.) Atenção: onde se diz *THREADS está sendo especificada a quantidade de processos que podem rodar simultaneamente no computador. (Essas configurações também podem constar em um script de submissão.)

Atualize as configurações executando source ~/.bashrc e tente executar xtb --version. A mesma saída anterior deve aparecer.

Fazendo um teste simples

Agora vamos rodar um cálculo de teste e nos certificarmos que ele roda em paralelo. Crie um arquivo h2.xyz com dois átomos de hidrogênio a uma distância de 1 Å. Você pode usar um editor de texto para isso (ou usar o Avogadro, por exemplo); o conteúdo será semelhante ao seguinte:

2

H   0.0   0.0   0.0
H   0.0   0.0   1.0

Agora rode uma otimização com frequências (o tee permite salvar a saída e vê-la ao mesmo tempo):

xtb h2.xyz --ohess | tee h2.ohess.out

Após algumas informações sobre citações, o programa indica o início do cálculo com informações sobre o sistema, número de processadores, etc.:

* started run on 2020/01/02 at 12:17:21.304

          -------------------------------------------------
         |                Calculation Setup                |
          -------------------------------------------------

         program call               : xtb h2.xyz --ohess
         coordinate file            : h2.xyz
         omp threads                :                     4
         number of atoms            :                     2
         number of electrons        :                     2
         charge                     :                     0
         spin                       :                   0.0
         first test random number   :      0.94702239823383

A mensagem abaixo indica convergência da geometria:

*** GEOMETRY OPTIMIZATION CONVERGED AFTER 6 CYCLES ***

Após o cálculo de frequências, algumas informações são dadas. Observe o número de frequências e quantas delas são imaginárias:

...................................................
:                      SETUP                      :
:.................................................:
:  # frequencies                           1      :
:  # imaginary freq.                       0      :
:  linear?                              true      :
:  only rotor calc.                    false      :
:  symmetry                              din      :
:  rotational number                       2      :
:  scaling factor                  1.0000000      :
:  rotor cutoff                   50.0000000 cm⁻¹ :
:  imag. cutoff                  -20.0000000 cm⁻¹ :
:.................................................:

Por fim, a geometria otimizada é escrita no arquivo xtbopt.xyz. Eu costumo sobrescrever o arquivo de coordenadas original:

mv xtbopt.xyz h2.xyz

A distância final obtida é 0.776 Å (menos de 5% do valor indicado pelo NIST). Essa geometria final pode ser agora submetida a cálculos mais precisos.

Aqui fizemos apenas uma otimização com frequências; você pode obter mais informações sobre tudo que o xtb é capaz de fazer no manual online, ou então executar xtb --help.

Referências