Skip to main content
IBM Quantum Platform

Crear y ejecutar una plantilla de Qiskit Function para la simulación de la estructura electrónica con un modelo de disolvente implícito

Esta plantilla, desarrollada en colaboración con la Clínica Cleveland, consiste en un flujo de trabajo para calcular la energía de estado fundamental y la energía libre de solvatación de una molécula en un disolvente implícito [1]. Estas simulaciones se basan en el método de diagonalización cuántica basado en muestras (SQD) [2-6] y en el modelo continuo polarizable del formalismo de ecuaciones integrales (IEF-PCM) del disolvente [7].

Para ver una guía paso a paso de este mismo flujo de trabajo con un ejemplo práctico, consulta el tutorial «Cálculos con disolvente implícito utilizando Qiskit Serverless ».

Esta guía utiliza la plantilla con una molécula de metanol como soluto, cuya estructura electrónica se simula explícitamente, y agua como disolvente, aproximada como un medio dieléctrico continuo. Para tener en cuenta los efectos de correlación de electrones en el metanol, manteniendo el equilibrio entre el coste computacional y la precisión, sólo incluimos los orbitales σ\sigma, σ\sigma^{*}, y de par solitario en el espacio activo simulado con SQD IEF-PCM. Esta selección de orbitales se realiza con el método del espacio activo de valencia atómica (AVAS ) utilizando los componentes orbitales atómicos C2s[,2p], O2s[,2p] y [H1s], lo que da como resultado el espacio activo de 14 electrones y 12 orbitales ( 14e,12o ). Los orbitales de referencia se calculan con Hartree Fock de envolvente cerrada utilizando el conjunto de bases cc-pvdz.


Introducción al flujo de trabajo

Esta guía interactiva muestra cómo cargar esta plantilla de función en Qiskit Serverless y ejecutar una carga de trabajo de ejemplo. La plantilla está estructurada como un patrón Qiskit con cuatro pasos:

1. Recopilar información y analizar el problema

Este paso toma como entrada la geometría de la molécula, el espacio activo seleccionado, el modelo de solvatación, las opciones LUCJ y las opciones SQD. A continuación, produce el archivo PySCF Checkpoint, que contiene los datos Hartree-Fock (HF) IEF-PCM. Estos datos se utilizarán en la parte SQD del flujo de trabajo. Para la parte LUCJ del flujo de trabajo, la sección de entrada también genera los datos HF en fase gaseosa, que se almacenan internamente en formato PySCF FCIDUMP.

Se toma como entrada la información de la simulación de fase gaseosa HF y la definición del espacio activo. Es importante destacar que también utiliza la información definida por el usuario en la sección de entrada relativa a la supresión de errores, el número de disparos, el nivel de optimización del transpilador de circuitos y la disposición de los qubits.

Genera integrales de uno y dos electrones dentro del espacio activo definido. A continuación, las integrales se utilizan para realizar cálculos CCSD clásicos, que devuelven t2 amplitudes que utilizamos para parametrizar el circuito LUCJ.

2. Optimizar el circuito

A continuación, el circuito LUCJ se transpila a un circuito ISA para el hardware de destino. A continuación, se instancia una primitiva Sampler con un conjunto predeterminado de opciones de mitigación de errores para gestionar la ejecución.

3. Ejecutar el circuito

Los cálculos LUCJ devuelven las cadenas de bits de cada medida, donde estas cadenas de bits corresponden a configuraciones de electrones del sistema estudiado. A continuación, las cadenas de bits se utilizan como entrada para el postprocesamiento.

4. Procesamiento posterior mediante SQD

Este paso final toma como entrada el archivo PySCF Checkpoint que contiene la información HF IEF-PCM, las cadenas de bits que representan las configuraciones de electrones predichas por LUCJ y las opciones SQD definidas por el usuario y seleccionadas en la sección de entrada. Como salida, produce la energía total SQD IEF-PCM del lote de menor energía y la correspondiente energía libre de solvatación.

Opciones

Para esta plantilla debe especificar las opciones para generar el circuito LUCJ, y los parámetros de ejecución SQD.

Opciones LUCJ

Cuando se ejecuta el circuito cuántico LUCJ, se produce un conjunto de muestras que representan los estados base computacionales de la distribución de probabilidad del sistema molecular. Para equilibrar la profundidad del circuito LUCJ y su expresividad, los qubits correspondientes a los orbitales de espín con el espín opuesto tienen las puertas de dos qubits aplicadas entre ellos cuando estos qubits son vecinos a través de un único qubit ancilla. Para implementar este enfoque en el hardware IBM con una topología heavy-hex, los qubits que representan los orbitales de espín con el mismo espín se conectan a través de una topología de línea donde cada línea adopta una forma de zig-zag debido a la conectividad heavy-hex del hardware de destino, mientras que los qubits que representan los orbitales de espín con el espín opuesto sólo tienen una conexión en cada cuarto qubit.

  • El usuario debe proporcionar la matriz initial_layout correspondiente a los qubits que satisfacen este patrón en zig-zag en la sección lucj_options de la función SQD IEF-PCM. En el caso de las simulaciones SQD IEF-PCM ( 14e,12o )/cc-pvdz de metanol, elegimos la disposición inicial de qubits correspondiente a la diagonal principal del QPU de Eagle R3. Aquí, los 12 primeros elementos de la matriz initial_layout [0, 14, 18, 19, 20, 33, 39, 40, 41, 53, 60, 61, ...] corresponden a los orbitales de espín alfa. Los 12 últimos elementos [... 2, 3, 4, 15, 22, 23, 24, 34, 43, 44, 45, 54] corresponden a orbitales de espín beta.

    Es importante que el usuario determine el number_of_shots, que corresponde al número de mediciones en el circuito LUCJ. El número de disparos tiene que ser suficientemente grande porque el primer paso del procedimiento S-CORE se basa en las muestras del sector de partículas derecho para obtener la aproximación inicial a la distribución del número de ocupación del estado basal.

    El número de disparos depende en gran medida del sistema y del hardware, pero los estudios SQD no covalentes, basados en fragmentos y con disolventes implícitos sugieren que se puede alcanzar la precisión química siguiendo estas directrices:

    • 20.000 - 200.000 disparos para sistemas con menos de 16 orbitales moleculares (32 orbitales de espín)
    • 200.000 disparos para sistemas con 16 - 18 orbitales moleculares
    • 200.000 - 2.000.000 disparos para sistemas con más de 18 orbitales moleculares

    El número de simulaciones necesarias depende del número de orbitales de espín del sistema estudiado y del tamaño del espacio de Hilbert correspondiente al espacio activo seleccionado dentro de dicho sistema. Por lo general, los casos con espacios de Hilbert más pequeños requieren menos iteraciones. Otras opciones disponibles de LUCJ son el nivel de optimización del transpilador de circuitos y las opciones de supresión de errores. Ten en cuenta que estas opciones también influyen en el número de disparos necesarios y en la precisión resultante.

Opciones SQD

Algunas opciones importantes en las simulaciones SQD son sqd_iterations, number_of_batches y samples_per_batch. En general, el menor número de muestras por lote puede contrarrestarse con más lotes (number_of_batches) y más iteraciones de S-CORE (sqd_iterations). Con más lotes podemos muestrear más variaciones de los subespacios configuracionales. Dado que el lote de menor energía se toma como solución para la energía del estado fundamental del sistema, un mayor número de lotes puede mejorar los resultados gracias a mejores estadísticas. Las iteraciones adicionales de S-CORE permiten recuperar más configuraciones a partir de la distribución LUCJ original si el número de muestras en el sector de partículas correcto es bajo. Esto puede permitir reducir el número de muestras por lote.

  • Una estrategia alternativa es utilizar más muestras por lote, lo que garantiza que la mayoría de las muestras LUCJ iniciales en el espacio de partículas correcto se utilicen durante el procedimiento S-CORE, y que los subespacios individuales encapsulen una variedad suficiente de configuraciones de electrones. A su vez, esto reduce el número de pasos necesarios de S-CORE, donde sólo se necesitan dos o tres iteraciones de SQD si el número de muestras por lote es lo suficientemente grande. Sin embargo, un mayor número de muestras por lote se traduce en un mayor coste computacional de cada paso de diagonalización. Por lo tanto, el equilibrio entre la precisión y el coste computacional en las simulaciones SQD puede lograrse eligiendo sqd_iterations, number_of_batches, y samples_per_batch de forma óptima.

    El estudio SQD IEF-PCM muestra que cuando se utilizan tres iteraciones de S-CORE, se puede alcanzar la precisión química siguiendo estas directrices:

    • 600 muestras por lote en metanol Simulaciones SQD IEF-PCM ( 14e,12o )
    • 1500 muestras por lote en simulaciones SQD IEF-PCM con metilamina ( 14e,13o )
    • 6000 muestras por lote en agua Simulaciones SQD IEF-PCM ( 8e,23o )
    • 16000 muestras por lote en etanol Simulaciones SQD IEF-PCM ( 20e,18o )

    Al igual que el número necesario de disparos en LUCJ, el número necesario de muestras por lote utilizado en el procedimiento S-CORE depende en gran medida del sistema y del hardware. Los ejemplos anteriores pueden utilizarse para estimar el punto inicial de la referencia del número necesario de muestras por lote. El tutorial sobre la evaluación comparativa sistemática del número necesario de muestras por lote puede consultarse aquí.


Implementar y ejecutar la función SQD IEF-PCM de la plantilla

Autenticación

Utilice qiskit-ibm-catalog para autenticarse en QiskitServerless con su clave API (token), que puede encontrar en el panel de control de IBM Quantum Platform. Esto permite instanciar el cliente sin servidor para cargar o ejecutar la función seleccionada:

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, utilice save_account() para guardar sus credenciales en un entorno local (consulte la guía Configure su cuenta IBM Cloud ). Tenga en cuenta que esto escribe sus credenciales en el mismo archivo que QiskitRuntimeService.save_account():

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

Si la cuenta está guardada, no es necesario proporcionar el token para autenticarse:

from qiskit_ibm_catalog import QiskitServerless

serverless = QiskitServerless()

Subir la plantilla

Para cargar una Función Qiskit personalizada, primero debe instanciar un objeto QiskitFunction que defina el código fuente de la función. El título le permitirá identificar la función una vez que esté en el grupo remoto. El principal punto de entrada es el archivo que contiene if __name__ == "__main__". Si su flujo de trabajo requiere archivos fuente adicionales, puede definir un directorio de trabajo que se cargará junto con el punto 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)

Una vez que la instancia esté lista, súbela a serverless:

serverless.upload(template)

Output:

QiskitFunction(sqd_pcm_template)

Para comprobar si el programa se ha cargado correctamente, utilice serverless.list():

serverless.list()

Output:

[QiskitFunction(sqd_pcm_template),
 QiskitFunction(hamiltonian_simulation_template)]

Cargar y ejecutar la plantilla de forma remota

La plantilla de la función se ha cargado, por lo que se puede ejecutar de forma remota con Qiskit Serverless. En primer lugar, cargue la plantilla por su nombre:

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

Output:

QiskitFunction(sqd_pcm_template)

A continuación, ejecute la plantilla con las entradas a nivel de dominio para SQD-IEF PCM. Este ejemplo especifica una carga de trabajo basada en 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

Compruebe el estado detallado del trabajo:

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

Mientras se ejecuta el trabajo, puede recuperar los registros creados a partir de las salidas de logger.info . Estos pueden proporcionar información procesable sobre el progreso del flujo de trabajo SQD IEF-PCM. Por ejemplo, las mismas conexiones orbitales de espín, o la profundidad de dos qubits del circuito ISA final destinado a la ejecución en hardware.

print(job.logs())

La llamada al resultado del trabajo bloquea el resto del programa hasta que el resultado esté disponible. Una vez realizado el trabajo, puedes recuperar los resultados. Estos incluyen la energía libre de solvatación, así como información sobre el lote de energía más bajo, el valor de energía más bajo y otra información útil como la duración total del 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}}

Ten en cuenta que los metadatos de los resultados incluyen un resumen del uso de recursos que te permite estimar mejor el tiempo de QPU y CPU necesario para cada carga de trabajo (este ejemplo se ejecutó en un dispositivo ficticio, por lo que los tiempos reales de uso de recursos pueden diferir).

Una vez finalizada la tarea, estará disponible toda la salida de registro.

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


Citar este proyecto

Si utilizas la plantilla SQD IEF-PCM en tu investigación, consulta el repositorio para obtener información detallada sobre cómo citarla.


Próximos pasos

Recomendaciones

Referencias

[1] Danil Kaliakin, Akhil Shajan, Fangchun Liang y 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, arXiv:2405.05068 [quant-ph].

[3] Jeffery Yu, et al., Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].

[4] Keita Kanno, et al., Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].

[5] Kenji Sugisaki, et al., Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, 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: diagonalización cuántica basada en muestras, 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 -simulaciones basadas en el marco de la química, 2025; https://github.com/pyscf/pyscf

[10] Kevin J. Sung; et al., FFSIM: simulaciones más rápidas de circuitos cuánticos fermiónicos, 2024. https://github.com/qiskit-community/ffsim

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.