ColibriTD Référence de l'API QUICK-PDE
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.
Guide des fonctions QUICK-PDE pour 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 |
|---|---|---|---|---|
| CFD | a | float | Coefficient des valeurs initiales d' | 1.0 |
| CFD | b | float | Décalage des valeurs initiales d' | 1.0 |
| MD | t | float | contrainte de surface | 12.0 |
| MD | K | float | module de compressibilité | 100.0 |
| MD | n | int | loi de puissance | 4.0 |
| MD | b | float | force par unité de masse | 10.0 |
| MD | epsilon_0 | float | limite de contrainte proportionnelle | 0.1 |
| MD | sigma_0 | float | limite de déformation proportionnelle | 5.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 arraysolution = {
"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".