Skip to main content
IBM Quantum Platform

Crie e execute um modelo de função do Qiskit para simulação de estrutura eletrônica com um modelo de solvente implícito

Esse modelo, desenvolvido em colaboração com a Cleveland Clinic, consiste em um fluxo de trabalho para calcular a energia do estado fundamental e a energia livre de solvatação de uma molécula em um solvente implícito [1]. Essas simulações são baseadas no método de diagonalização quântica baseada em amostra (SQD) [2-6] e no modelo de continuum polarizável do formalismo de equação integral (IEF-PCM) do solvente [7].

Para um guia passo a passo desse mesmo fluxo de trabalho com um exemplo prático, consulte o tutorial “Cálculos com solvente implícito usando o Qiskit Serverless ”.

Esse guia utiliza o modelo com uma molécula de metanol como soluto, cuja estrutura eletrônica é simulada explicitamente, e a água como solvente, aproximada como um meio dielétrico contínuo. Para levar em conta os efeitos de correlação de elétrons no metanol e, ao mesmo tempo, manter o equilíbrio entre o custo computacional e a precisão, incluímos apenas os orbitais σ\sigma, σ\sigma^{*} e o par solitário no espaço ativo simulado com o SQD IEF-PCM. Essa seleção de orbital é feita com o método de espaço ativo de valência atômica (AVAS) usando os componentes de orbital atômico [C2s,2p], [O2s,2p] e [H1s], o que resulta no espaço ativo de 14 elétrons e 12 orbitais ( 14e,12o ). Os orbitais de referência são calculados com Hartree Fock de casca fechada usando o conjunto de base cc-pvdz.


Introdução ao fluxo de trabalho

Este guia interativo mostra como carregar esse modelo de função no Qiskit Serverless e executar uma carga de trabalho de exemplo. O modelo é estruturado como um padrão Qiskit com quatro etapas:

1. Colete informações e identifique o problema

Essa etapa usa a geometria da molécula, o espaço ativo selecionado, o modelo de solvatação, as opções LUCJ e as opções SQD como entrada. Em seguida, ele produz o arquivo PySCF Checkpoint, que contém os dados Hartree-Fock (HF) IEF-PCM. Esses dados serão usados na parte SQD do fluxo de trabalho. Para a parte LUCJ do fluxo de trabalho, a seção de entrada também gera os dados HF da fase gasosa, que são armazenados internamente no formato PySCF FCIDUMP.

As informações da simulação de fase de gás HF e a definição do espaço ativo são usadas como entrada. É importante ressaltar que ele também usa as informações definidas pelo usuário da seção de entrada referentes à supressão de erros, ao número de disparos, ao nível de otimização do transpilador de circuitos e ao layout do qubit.

Ele gera integrais de um elétron e de dois elétrons dentro do espaço ativo definido. As integrais são então usadas para realizar cálculos CCSD clássicos, que retornam amplitudes t2 que usamos para parametrizar o circuito LUCJ.

2. Otimize o circuito

O circuito LUCJ é então transpilado em um circuito ISA para o hardware de destino. Uma primitiva Sampler é então instanciada com um conjunto padrão de opções de atenuação de erros para gerenciar a execução.

3. Execute o circuito

Os cálculos LUCJ retornam as cadeias de bits para cada medição, onde essas cadeias de bits correspondem às configurações de elétrons do sistema estudado. As cadeias de bits são então usadas como entrada para o pós-processamento.

4. Pós-processamento usando SQD

Essa etapa final usa como entrada o arquivo PySCF Checkpoint que contém as informações do HF IEF-PCM, as cadeias de bits que representam as configurações de elétrons previstas pelo LUCJ e as opções de SQD definidas pelo usuário selecionadas na seção de entrada. Como resultado, ele produz a energia total SQD IEF-PCM do lote de menor energia e a energia livre de solvatação correspondente.

Opções

Para esse modelo, você deve especificar as opções para gerar o circuito LUCJ e os parâmetros de execução do SQD.

Opções LUCJ

Quando o circuito quântico LUCJ é executado, é produzido um conjunto de amostras que representam os estados da base computacional da distribuição de probabilidade do sistema molecular. Para equilibrar a profundidade do circuito LUCJ e sua expressividade, os qubits correspondentes aos orbitais de spin com o spin oposto têm as portas de dois qubits aplicadas entre eles quando esses qubits são vizinhos por meio de um único qubit ancilla. Para implementar essa abordagem no hardware IBM com uma topologia heavy-hex, os qubits que representam os orbitais de spin com o mesmo spin são conectados por meio de uma topologia de linha em que cada linha assume uma forma de zigue-zague devido à conectividade heavy-hex do hardware de destino, enquanto os qubits que representam os orbitais de spin com o spin oposto só têm uma conexão a cada quatro qubits.

  • O usuário deve fornecer a matriz initial_layout correspondente aos qubits que satisfazem esse padrão de ziguezague na seção lucj_options da função SQD IEF-PCM. No caso das simulações SQD IEF-PCM ( 14e,12o )/cc-pvdz do metanol, escolhemos o layout inicial do qubit correspondente à diagonal principal do Eagle R3 QPU. Aqui, os primeiros 12 elementos da matriz initial_layout [0, 14, 18, 19, 20, 33, 39, 40, 41, 53, 60, 61, ...] correspondem aos orbitais de spin alfa. Os últimos 12 elementos [... 2, 3, 4, 15, 22, 23, 24, 34, 43, 44, 45, 54] correspondem a orbitais de spin beta.

    É importante ressaltar que o usuário precisa determinar o number_of_shots, que corresponde ao número de medições no circuito LUCJ. O número de disparos precisa ser suficientemente grande porque a primeira etapa do procedimento S-CORE depende das amostras no setor de partículas correto para obter a aproximação inicial da distribuição do número de ocupação do estado fundamental.

    O número de disparos é altamente dependente do sistema e do hardware, mas estudos de SQD não covalentes, baseados em fragmentos e com solvente implícito sugerem que é possível alcançar a precisão química seguindo essas diretrizes:

    • 20.000 - 200.000 disparos para sistemas com menos de 16 orbitais moleculares (32 orbitais de spin)
    • 200.000 disparos para sistemas com 16 a 18 orbitais moleculares
    • 200.000 - 2.000.000 de disparos para sistemas com mais de 18 orbitais moleculares

    O número necessário de cálculos é influenciado pelo número de orbitais de spin no sistema estudado e pelo tamanho do espaço de Hilbert correspondente ao espaço ativo selecionado dentro do sistema estudado. Geralmente, instâncias com espaços de Hilbert menores requerem menos tentativas. Outras opções disponíveis do LUCJ são o nível de otimização do transpiler de circuitos e as opções de supressão de erros. Observe que essas opções também afetam o número necessário de disparos e a precisão resultante.

Opções SQD

As opções importantes nas simulações de SQD incluem sqd_iterations, number_of_batches e samples_per_batch. Em geral, o número menor de amostras por lote pode ser compensado com mais lotes (number_of_batches) e mais iterações do S-CORE (sqd_iterations). Com mais lotes, podemos obter amostras de mais variações dos subespaços configuracionais. Como o lote de menor energia é considerado a solução para a energia do estado fundamental do sistema, mais lotes podem melhorar os resultados por meio de estatísticas melhores. As iterações adicionais do S-CORE permitem que mais configurações sejam recuperadas da distribuição LUCJ original se o número de amostras no setor de partículas correto for baixo. Isso pode permitir que o número de amostras por lote seja reduzido.

  • Uma estratégia alternativa é usar mais amostras por lote, o que garante que a maioria das amostras LUCJ iniciais no espaço de partículas correto seja usada durante o procedimento S-CORE, e que os subespaços individuais encapsulem uma variedade suficiente de configurações de elétrons. Por sua vez, isso reduz o número de etapas necessárias do S-CORE, em que apenas duas ou três iterações do SQD são necessárias se o número de amostras por lote for grande o suficiente. No entanto, mais amostras por lote resultam em um custo computacional mais alto de cada etapa de diagonalização. Portanto, o equilíbrio entre a precisão e o custo computacional nas simulações de SQD pode ser alcançado escolhendo-se sqd_iterations, number_of_batches e samples_per_batch de forma otimizada.

    O estudo SQD IEF-PCM mostra que, quando três iterações do S-CORE são usadas, a precisão química pode ser alcançada seguindo essas diretrizes:

    • 600 amostras por lote em simulações de metanol SQD IEF-PCM ( 14e,12o )
    • 1500 amostras por lote em simulações de metilamina SQD IEF-PCM ( 14e,13o )
    • 6.000 amostras por lote em simulações de água SQD IEF-PCM ( 8e,23o )
    • 16.000 amostras por lote em simulações de etanol SQD IEF-PCM ( 20e,18o )

    Assim como o número necessário de disparos no LUCJ, o número necessário de amostras por lote usado no procedimento S-CORE é altamente dependente do sistema e do hardware. Os exemplos acima podem ser usados para estimar o ponto inicial para o benchmark do número necessário de amostras por lote. O tutorial sobre o benchmark sistemático do número necessário de amostras por lote pode ser encontrado aqui.


Implemente e execute a função SQD IEF-PCM do modelo

Autenticação

Use qiskit-ibm-catalog para se autenticar em QiskitServerless com sua chave de API (token), que pode ser encontrada no painel da IBM Quantum Platform. Isso permite a instanciação do cliente sem servidor para fazer upload ou executar a função selecionada:

from qiskit_ibm_catalog import QiskitServerless

serverless = QiskitServerless(
    channel="ibm_quantum_platform",
    instance="INSTANCE_CRN",
    # For `token`, use the 44-character API_KEY you created
    # and saved from the IBM Quantum Platform Home dashboard
    token="YOUR_API_KEY"
)

Opcionalmente, use save_account() para salvar suas credenciais em um ambiente local (consulte o guia Configurar sua conta IBM Cloud ). Observe que isso grava suas credenciais no mesmo arquivo que QiskitRuntimeService.save_account():

QiskitServerless.save_account(token="YOUR_API_KEY",
    channel="ibm_quantum_platform", instance="INSTANCE_CRN")

Se a conta estiver salva, não há necessidade de fornecer o token para autenticação:

from qiskit_ibm_catalog import QiskitServerless

serverless = QiskitServerless()

Carregue o modelo

Para carregar uma função personalizada do Qiskit, você deve primeiro instanciar um objeto QiskitFunction que define o código-fonte da função. O título permitirá que você identifique a função quando ela estiver no cluster remoto. O ponto de entrada principal é o arquivo que contém if __name__ == "__main__". Se o seu fluxo de trabalho exigir arquivos de origem adicionais, você poderá definir um diretório de trabalho que será carregado junto com o ponto de entrada.

from qiskit_ibm_catalog import QiskitFunction

template = QiskitFunction(
    title="sqd_pcm_template",
    entrypoint="sqd_pcm_entrypoint.py",
    # all files in `working_dir` will be uploaded
    working_dir="./source_files/",
    dependencies=[
        "ffsim==0.0.54",
        "pyscf==2.9.0",
        "qiskit_addon_sqd==0.10.0",
    ],
)
print(template)

Output:

QiskitFunction(sqd_pcm_template)

Quando a instância estiver pronta, faça o upload dela para o serverless:

serverless.upload(template)

Output:

QiskitFunction(sqd_pcm_template)

Para verificar se o upload do programa foi bem-sucedido, use serverless.list():

serverless.list()

Output:

[QiskitFunction(sqd_pcm_template),
 QiskitFunction(hamiltonian_simulation_template)]

Carregue e execute o modelo remotamente

O modelo de função foi carregado, para que você possa executá-lo remotamente com o Qiskit Serverless. Primeiro, carregue o modelo pelo nome:

template = serverless.load("sqd_pcm_template")
print(template)

Output:

QiskitFunction(sqd_pcm_template)

Em seguida, execute o modelo com as entradas em nível de domínio para SQD-IEF PCM. Este exemplo especifica uma carga de trabalho baseada em metanol.

molecule = {
    "atom": """
    O -0.04559 -0.75076 -0.00000;
    C -0.04844 0.65398 -0.00000;
    H 0.85330 -1.05128 -0.00000;
    H -1.08779 0.98076 -0.00000;
    H 0.44171 1.06337 0.88811;
    H 0.44171 1.06337 -0.88811
    """,  # Must be specified
    "basis": "cc-pvdz",  # default is "sto-3g"
    "spin": 0,  # default is 0
    "charge": 0,  # default is 0
    "verbosity": 0,  # default is 0
    "number_of_active_orb": 12,  # Must be specified
    "number_of_active_alpha_elec": 7,  # Must be specified
    "number_of_active_beta_elec": 7,  # Must be specified
    "avas_selection": [
        "%d O %s" % (k, x) for k in [0] for x in ["2s", "2px", "2py", "2pz"]
    ]
    + ["%d C %s" % (k, x) for k in [1] for x in ["2s", "2px", "2py", "2pz"]]
    + ["%d H 1s" % k for k in [2, 3, 4, 5]],  # default is None
}

solvent_options = {
    # See https://manual.q-chem.com/5.4/topic_pcm-em.html for all methods
    "method": "IEF-PCM",  # other available methods are COSMO, C-PCM, SS(V)PE
    "eps": 78.3553,  # value for water
}

lucj_options = {
    "initial_layout": [
        0,
        14,
        18,
        19,
        20,
        33,
        39,
        40,
        41,
        53,
        60,
        61,
        2,
        3,
        4,
        15,
        22,
        23,
        24,
        34,
        43,
        44,
        45,
        54,
    ],
    "dynamical_decoupling_choice": True,
    "twirling_choice": True,
    "number_of_shots": 200000,
    "optimization_level": 2,
}

sqd_options = {
    "sqd_iterations": 3,
    "number_of_batches": 10,
    "samples_per_batch": 1000,
    "max_davidson_cycles": 200,
}

backend_name = "ibm_sherbrooke"
job = template.run(
    backend_name=backend_name,
    molecule=molecule,
    solvent_options=solvent_options,
    lucj_options=lucj_options,
    sqd_options=sqd_options,
)
print(job.job_id)

Output:

39f8fb70-79b2-43ca-b723-84e6b6135821

Verifique o status detalhado do trabalho:

import time

t0 = time.time()
status = job.status()
if status == "QUEUED":
    print(f"time = {time.time()-t0:.2f}, status = QUEUED")
while True:
    status = job.status()
    if status == "QUEUED":
        continue
    print(f"time = {time.time()-t0:.2f}, status = {status}")
    if status == "DONE" or status == "ERROR":
        break

Output:

time = 2.35, status = DONE

Enquanto o trabalho estiver em execução, você poderá obter os registros criados a partir das saídas do site logger.info . Eles podem fornecer informações acionáveis sobre o progresso do fluxo de trabalho SQD IEF-PCM. Por exemplo, as mesmas conexões orbitais de spin ou a profundidade de dois qubits do circuito ISA final destinado à execução no hardware.

print(job.logs())

A chamada para o resultado do trabalho bloqueia o restante do programa até que um resultado esteja disponível. Depois que o trabalho for concluído, você poderá recuperar os resultados. Isso inclui a energia livre de solvatação, bem como informações sobre o lote de energia mais baixa, o valor de energia mais baixo e outras informações úteis, como a duração total do solver.

result = job.result()

result

Output:

{'total_energy_hist': array([[-115.14768518, -115.1368396 , -114.19181692, -115.13745429,
         -115.1445012 , -114.19673326, -115.1547003 , -114.20563866,
         -115.13748344, -115.14764974],
        [-115.15768392, -115.15850126, -115.15857275, -115.15770916,
         -115.15801684, -115.15822125, -115.15833521, -115.15844051,
         -115.15735538, -115.15862354],
        [-115.15795148, -115.15847925, -115.15856677, -115.15811156,
         -115.15815602, -115.15785171, -115.1583672 , -115.1585533 ,
         -115.15833528, -115.15808791]]),
 'spin_squared_value_hist': array([[5.37327508e-03, 1.32981759e-02, 1.36214922e-02, 8.84413615e-03,
         7.26723578e-03, 1.94875195e-02, 3.03153152e-03, 6.07543106e-03,
         1.04951849e-02, 5.36529204e-03],
        [6.39397528e-04, 1.36814350e-04, 9.09054260e-05, 5.99361358e-04,
         3.64261739e-04, 2.54905866e-04, 2.32540370e-04, 1.53181990e-04,
         7.23519739e-04, 6.80737671e-05],
        [4.53776416e-04, 1.63043449e-04, 1.05317263e-04, 3.82912836e-04,
         3.41047803e-04, 5.18620393e-04, 2.06819142e-04, 1.17086537e-04,
         2.32357159e-04, 4.26071537e-04]]),
 'solvation_free_energy_hist': array([[-0.00725018, -0.00743955, -0.01132905, -0.0073377 , -0.00722221,
         -0.01136705, -0.00719279, -0.01072829, -0.00733404, -0.00725961],
        [-0.00719252, -0.00718315, -0.00718074, -0.00719325, -0.00717703,
         -0.00718391, -0.00718354, -0.00717928, -0.00719887, -0.0071801 ],
        [-0.00719351, -0.00718255, -0.00718198, -0.00718429, -0.00718349,
         -0.00718329, -0.0071882 , -0.00718363, -0.00718549, -0.00718814]]),
 'occupancy_hist': [[array([0.99712298, 0.99278936, 0.99083163, 0.97328469, 0.98959809,
          0.98922134, 0.720333  , 0.25683194, 0.01939338, 0.02840332,
          0.00946988, 0.0327204 ]),
   array([0.99712298, 0.99278936, 0.99083163, 0.97328469, 0.98959809,
          0.98922134, 0.720333  , 0.25683194, 0.01939338, 0.02840332,
          0.00946988, 0.0327204 ])],
  [array([0.9959042 , 0.9922607 , 0.99018862, 0.99265843, 0.98927447,
          0.9900833 , 0.99403876, 0.00989025, 0.01120814, 0.01137717,
          0.01152871, 0.01158725]),
   array([0.9959042 , 0.9922607 , 0.99018862, 0.99265843, 0.98927447,
          0.9900833 , 0.99403876, 0.00989025, 0.01120814, 0.01137717,
          0.01152871, 0.01158725])],
  [array([0.99590079, 0.99222193, 0.99016753, 0.99265045, 0.98927264,
          0.99007179, 0.99407207, 0.00986684, 0.01125181, 0.01141439,
          0.01150733, 0.01160243]),
   array([0.99590079, 0.99222193, 0.99016753, 0.99265045, 0.98927264,
          0.99007179, 0.99407207, 0.00986684, 0.01125181, 0.01141439,
          0.01150733, 0.01160243])]],
 'lowest_energy_batch': 2,
 'lowest_energy_value': -115.1585667736213,
 'solvation_free_energy': -0.007181981952470838,
 'sci_solver_total_duration': 493.997501373291,
 'metadata': {'resources_usage': {'RUNNING: MAPPING': {'CPU_TIME': 6.080063343048096},
   'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU_TIME': 1.999896764755249},
   'RUNNING: WAITING_FOR_QPU': {'CPU_TIME': 6.2850868701934814},
   'RUNNING: EXECUTING_QPU': {'QPU_TIME': 21.639373540878296},
   'RUNNING: POST_PROCESSING': {'CPU_TIME': 495.40831995010376}},
  'num_iterations_executed': 3}}

Observe que os metadados do resultado incluem um resumo do uso de recursos que permite estimar melhor o tempo de QPU e CPU necessário para cada carga de trabalho (este exemplo foi executado em um dispositivo fictício, portanto, os tempos reais de uso de recursos podem ser diferentes).

Depois que o trabalho for concluído, toda a saída de registro estará disponível.

print(job.logs())

Output:

2025-06-27 08:42:41,358	INFO job_manager.py:531 -- Runtime env is setting up.
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,015: Starting runtime service
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,621: Backend: ibm_sherbrooke
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:46,809: Initializing molecule object
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,599: Performing CCSD
Parsing /tmp/ray/session_2025-06-27_08-42-13_898146_1/runtime_resources/working_dir_files/_ray_pkg_4bc93dcc58c04b91/output_sqd_pcm/2025-06-27_08-42-45.fcidump.txt
Overwritten attributes  get_ovlp get_hcore  of <class 'pyscf.scf.hf_symm.SymAdaptedRHF'>
/usr/local/lib/python3.11/site-packages/pyscf/gto/mole.py:1293: UserWarning: Function mol.dumps drops attribute energy_nuc because it is not JSON-serializable
  warnings.warn(msg)
/usr/local/lib/python3.11/site-packages/pyscf/gto/mole.py:1293: UserWarning: Function mol.dumps drops attribute intor_symmetric because it is not JSON-serializable
  warnings.warn(msg)
converged SCF energy = -115.049680672847
E(CCSD) = -115.1519910037652  E_corr = -0.1023103309180226
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,694: Same spin orbital connections: [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10), (10, 11)]
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,694: Opposite spin orbital connections: [(0, 0), (4, 4), (8, 8)]
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,718: Optimization level: 2, ops: OrderedDict([('rz', 2438), ('sx', 1496), ('ecr', 766), ('x', 185), ('measure', 24), ('barrier', 1)]), depth: 391
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,736: Two-qubit gate depth: 94
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,737: Submitting sampler job
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:54,273: Job ID: d1f5j3lqbivc73ebqpj0
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:54,313: Job Status: QUEUED
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,813: Starting configuration recovery iteration 0
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,841: Batch 0 subspace dimension: 531441
2025-06-27 08:43:24,844	INFO worker.py:1588 -- Using address 172.17.16.124:6379 set in the environment variable RAY_ADDRESS
2025-06-27 08:43:24,847	INFO worker.py:1723 -- Connecting to existing Ray cluster at address: 172.17.16.124:6379...
2025-06-27 08:43:24,876	INFO worker.py:1908 -- Connected to Ray cluster. View the dashboard at http://172.17.16.124:8265 
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,945: Batch 1 subspace dimension: 519841
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,950: Batch 2 subspace dimension: 543169
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,955: Batch 3 subspace dimension: 532900
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,960: Batch 4 subspace dimension: 534361
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,964: Batch 5 subspace dimension: 531441
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,969: Batch 6 subspace dimension: 540225
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,974: Batch 7 subspace dimension: 524176
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,979: Batch 8 subspace dimension: 537289
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,983: Batch 9 subspace dimension: 540225
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,006: Lowest energy batch: 6
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Lowest energy value: -115.15470029849135
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Corresponding g_solv value: -0.0071927910374866375
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: -----------------------------------
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Starting configuration recovery iteration 1
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,564: Batch 0 subspace dimension: 413449
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,572: Batch 1 subspace dimension: 399424
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,578: Batch 2 subspace dimension: 438244
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,583: Batch 3 subspace dimension: 422500
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,589: Batch 4 subspace dimension: 409600
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,596: Batch 5 subspace dimension: 404496
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,601: Batch 6 subspace dimension: 410881
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,605: Batch 7 subspace dimension: 442225
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,611: Batch 8 subspace dimension: 409600
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,618: Batch 9 subspace dimension: 405769
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Lowest energy batch: 9
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Lowest energy value: -115.15862353596414
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Corresponding g_solv value: -0.0071800982859467006
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,918: -----------------------------------
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,918: Starting configuration recovery iteration 2
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,501: Batch 0 subspace dimension: 399424
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,508: Batch 1 subspace dimension: 412164
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,514: Batch 2 subspace dimension: 432964
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,519: Batch 3 subspace dimension: 400689
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,524: Batch 4 subspace dimension: 432964
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,529: Batch 5 subspace dimension: 418609
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,533: Batch 6 subspace dimension: 418609
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,538: Batch 7 subspace dimension: 425104
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,543: Batch 8 subspace dimension: 404496
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,548: Batch 9 subspace dimension: 429025
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,900: Lowest energy batch: 2
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,900: Lowest energy value: -115.1585667736213
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: Corresponding g_solv value: -0.007181981952470838
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: -----------------------------------
sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: SCI_solver totally takes: 493.997501373291 seconds


Cite este projeto

Caso utilize o modelo SQD IEF-PCM em sua pesquisa, consulte o repositório para obter informações detalhadas sobre como citá-lo.


Próximas etapas

Recomendações

Referências

[1] Danil Kaliakin, Akhil Shajan, Fangchun Liang e Kenneth M. Merz Jr. Implicit Solvent Sample-Based Quantum Diagonalization, The Journal of Physical Chemistry B, 2025, DOI: 10.1021/acs.jpcb.5c01030

[2] Javier Robledo-Moreno, et al, Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer (Química além das soluções exatas em um supercomputador centrado em quantum ), arXiv:2405.05068 [quant-ph].

[3] Jeffery Yu, et al, Algoritmo centrado em quantum para diagonalização de Krylov baseada em amostra, arXiv:2501.09702 [quant-ph].

[4] Keita Kanno, et al, Interação de configuração selecionada por quantum: diagonalização clássica de Hamiltonianos em subespaços selecionados por computadores quânticos, arXiv:2302.11320 [quant-ph].

[5] Kenji Sugisaki, et al, Interação de configuração quântica selecionada baseada em simulação hamiltoniana para cálculos de estrutura eletrônica em larga escala com um computador quântico, arXiv:2412.07218 [quant-ph].

[6] Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].

[7] Herbert, John M. Dielectric continuum methods for quantum chemistry. WIREs Computational Molecular Science, 2021, 11, 1759-0876.

[8] Saki, A. A.; Barison, S.; Fuller, B.; Garrison, J. R.; Glick, J. R.; Johnson, C.; Mezzacapo, A.; Robledo-Moreno, J.; Rossmannek, M.; Schweigert, P. et al. Complemento Qiskit: diagonalização quântica baseada em amostra, 2024; https://github.com/Qiskit/qiskit-addon-sqd

[9] Asun, Q.; Zhang, X.; Banerjee, S.; Bao, P.; Barbry, M.; Blunt, N. S.; Bogdanov, N. A.; Booth, G. H.; Chen, J.; Cui, Z.-H. PySCF: Python -simulações baseadas na estrutura química, 2025; https://github.com/pyscf/pyscf

[10] Kevin J. Sung; et al, FFSIM: simulações mais rápidas de circuitos quânticos fermiônicos, 2024. https://github.com/qiskit-community/ffsim

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.