Skip to main content
IBM Quantum Platform

ColibriTD Référence de l'API QUICK-PDE

  • Qiskit Functions

    Qiskit Functions — des outils prêts à l'emploi développés par des organisations partenaires — permettent d'abstraire certaines étapes du processus de développement logiciel afin de simplifier et d'accélérer la découverte d'algorithmes et le développement d'applications à grande échelle. Cliquez ici pour consulter le guide de cette fonction Qiskit.


Entrées

use_case

Type: `Literal['MD', 'CFD']`

Cochez cette case pour sélectionner le système d'équations différentielles à résoudre

  • Spécifique à un cas d'utilisation : Non
  • Exemple:"CFD"

parameters

Type: `dict[str, Any]`

Les paramètres de l'équation différentielle (paramètres physiques et condition aux limites), qui doivent respecter le format indiqué :

Cas d'utilisation
Clé
Type de valeur
Description
Exemple
CFDafloatCoefficient des valeurs initiales d' uu1.0
CFDbfloatDécalage des valeurs initiales d' uu1.0
MDtfloatcontrainte de surface12.0
MDKfloatmodule de compressibilité100.0
MDnintloi de puissance4.0
MDbfloatforce par unité de masse10.0
MDepsilon_0floatlimite de contrainte proportionnelle0.1
MDsigma_0floatlimite de déformation proportionnelle5.0
  • Spécifique à un cas d'utilisation : Non
  • Exemple:{"a": 1.0, "b": 1.0}

nb_qubits

Type: `Optional[dict[str, dict[str, int]]]`

Nombre de qubits par fonction et par variable. Les valeurs optimisées sont choisies par la fonction, mais si vous souhaitez essayer de trouver une meilleure combinaison, vous pouvez remplacer les valeurs par défaut.

  • Spécifique à un cas d'utilisation : Non
  • Exemple:{"u": {"x": 1, "t":3}}

depth

Type: `Optional[dict[str, int]]`

Profondeur de l'ansatz par fonction. Les valeurs optimisées sont choisies par la fonction, mais si vous souhaitez essayer de trouver une meilleure combinaison, vous pouvez remplacer les valeurs par défaut.

  • Spécifique à un cas d'utilisation : Non
  • Exemple:{"u": 4}

optimizer

Type: `Optional[list[str]]`

Optimiseurs à utiliser : soit « CMAES » de la bibliothèque cma Python, soit l'un des optimiseurs de SciPy

  • Cas d'utilisation spécifique : MD
  • Exemple:"SLSQP"

shots

Type: `Optional[list[int]]`

Nombre de coups utilisés pour effectuer chaque circuit. Étant donné que plusieurs étapes d'optimisation sont nécessaires, la longueur de la liste doit être égale au nombre d'optimiseurs utilisés (4 dans le cas de la CFD). Les valeurs par défaut sont [50_000] * nb_optimizers pour la mécanique des fluides (MD) et [5_00, 2_000, 5_000, 10_000] pour la dynamique des fluides computationnelle (CFD).

  • Spécifique à un cas d'utilisation : Non
  • Exemple:[15_000, 30_000]

optimizer_options

Type: `Optional[dict[str, Any]]`

Options à transmettre à l'optimiseur. Les détails de cette entrée dépendent de l'optimiseur utilisé; pour plus de précisions, consultez la documentation de l'optimiseur utilisé.

  • Cas d'utilisation spécifique : MD
  • Exemple:{"maxiter": 50 }

initialization

Type: `Optional[Literal['RANDOM', 'PHYSICALLY_INFORMED']]`

Valeur par défaut: `PHYSICALLY_INFORMED`

Faut-il commencer par des angles choisis au hasard ou par des angles judicieusement choisis? Sachez toutefois que des angles de prise de vue bien choisis ne fonctionnent pas forcément dans tous les cas.

  • Spécifique à un cas d'utilisation : Non
  • Exemple:"RANDOM"

backend_name

Type: `Optional[str]`

Le nom du backend à utiliser.

  • Spécifique à un cas d'utilisation : Non
  • Exemple:ibm_torino

mode

Type: `Optional[Literal['job', 'session', 'batch']]`

Valeur par défaut: `job`

Le mode d'exécution à utiliser.

  • Spécifique à un cas d'utilisation : Non
  • Exemple:"job"

Sortie

Le résultat est un dictionnaire contenant la liste des points d'échantillonnage, ainsi que les valeurs des fonctions en chacun de ces points :

from numpy import array
solution = {
    "functions": {
        "u": array(
            [
                [0.01, 0.1, 1],
                [0.02, 0.2, 2],
                [0.03, 0.3, 3],
                [0.04, 0.4, 4],
            ]
        ),
    },
    "samples": {
        "t": array([0.1, 0.2, 0.3, 0.4]),
        "x": array([0.5, 0.6, 0.7]),
    },
}

La forme d'un tableau de solutions dépend des échantillons des variables :

assert len(solution["functions"]["u"].shape) == len(solution["samples"])
for col_size, samples in zip(
    solution["functions"]["u"].shape, solution["samples"].values()
):
    assert col_size == len(samples)

La mise en correspondance entre les points d'échantillonnage des variables de la fonction et la dimension du tableau de solutions s'effectue selon l'ordre alphanumérique des noms des variables. Par exemple, si les variables sont "t" et "x", une ligne de solution["functions"]["u"] représente les valeurs de la solution pour un donné "t", et une colonne de solution["functions"]["u"] représente les valeurs de la solution pour un donné "x".

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.