FCIDump
QfFCIDump
struct QfFCIDump
Um hamiltoniano de estrutura eletrônica no formato FCIDump.
Definição
O formato FCIDump foi originalmente definido por Knowles e Handy, em 1989 [1]. É um formato amplamente utilizado para exportar hamiltonianos de estrutura eletrônica em um arquivo de texto simples.
A presente estrutura de dados armazena apenas as informações relevantes para a construção do operador de segunda quantização. No entanto, essa implementação vai além da definição original, pois permite o carregamento de dados de spin sem restrições. A tabela abaixo ilustra como as integrais estão associadas às espécies de spin com base nos intervalos em que os índices se enquadram (supondo um cabeçalho com NORB=n):
Tipo Integral | i | j | k | l |
|---|---|---|---|---|
| Constante | ||||
| alfa de 1 corpo | ||||
| beta de 1 corpo | ||||
| Alfa-alfa de dois corpos | ||||
| Alfa-beta de dois corpos | ||||
| beta-beta de dois corpos |
Os únicos valores necessários são as integrais de spin alfa de um corpo.
[ 1 ]
-
- Knowles e N. C. Handy, Computer Physics Communications 54 (1989), pp. 75-83.
Membros
qf_fcidump_from_file
QfFCIDump *qf_fcidump_from_file(char *file_path)
Analisa um arquivo FCIDump.
Exemplo
Supondo que você tenha um arquivo FCIDump chamado molecule.fcidump, utilize esta função da seguinte maneira:
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");Parâmetros
- file_path – O caminho para o arquivo FCIDump.
Retorna
Um ponteiro para a estrutura de dados FCIDump.
qf_fcidump_free
void qf_fcidump_free(QfFCIDump *fcidump)
Libera uma estrutura de dados FCIDump existente.
Exemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2qf_fcidump_free(fcidump);Parâmetros
- fcidump – Um ponteiro para a estrutura de dados FCIDump a ser liberada.
qf_fcidump_norb
uint32_t qf_fcidump_norb(const QfFCIDump *fcidump)
Obtém o número de orbitais a partir de um FCIDump.
Esse número, , é extraído do campo NORB=n no cabeçalho do arquivo FCIDump.
Exemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t norb = qf_fcidump_norb(fcidump);Parâmetros
- fcidump – Um ponteiro para a estrutura de dados FCIDump a ser liberada.
Retorna
O número de orbitais.
qf_fcidump_nelec
uint32_t qf_fcidump_nelec(const QfFCIDump *fcidump)
Obtém o número de elétrons a partir de um FCIDump.
Esse número, , é extraído do campo NELEC=n no cabeçalho do arquivo FCIDump.
Exemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t nelec = qf_fcidump_nelec(fcidump);Parâmetros
- fcidump – Um ponteiro para a estrutura de dados FCIDump a ser liberada.
Retorna
O número de elétrons.
qf_fcidump_ms2
uint32_t qf_fcidump_ms2(const QfFCIDump *fcidump)
Obtém o número quântico de spin a partir de um FCIDump.
Esse número, , é extraído do campo MS2=S no cabeçalho do arquivo FCIDump.
Exemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2uint32_t ms2 = qf_fcidump_ms2(fcidump);Parâmetros
- fcidump – Um ponteiro para a estrutura de dados FCIDump a ser liberada.
Retorna
O número quântico de spin (multiplicado por 2 para garantir um valor inteiro).
Conversão
As representações de operadores que podem ser construídas a partir de uma instância de QfFCIDump fornecem uma função qf_*_from_fcidump :
qf_ferm_op_from_fcidump
QfFermionOperator *qf_ferm_op_from_fcidump(const QfFCIDump *fcidump)
Cria uma :c:struct:QfFermionOperator a partir de uma :c:structQfFCIDump:.
Exemplo
1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);Parâmetros
- fcidump – Um ponteiro para a estrutura de dados FCIDump.
Retorna
Um ponteiro para o operador criado.