Télécharger

Télécharger les codes sources des programmes de simulation de l’expérience de Bell

Télécharger au format zip la version 1.3 pour Linux et Windows ( ~ 90 Ko )

Télécharger au format tar.gz la version 1.3 pour Linux et Windows ( ~40 Ko )

 

 

Apercevoir l’arborescence de fichiers


fichier README fr

Qcheck version 1.2 , pour Linux et Windows

Déployez le zip ou le tar.gz. Cela créera le répertoire qCheck dédié à l’application.

Pour des calculs plus rapides sur le même PC, il faut utiliser le langage C++ ou C.

Qcheck c’est 4+4 petits scripts C++ avec des entiers ou des flottants qui tentent de simuler une vraie expérience EPR-Bell. Le même code tourne sur les 2 systèmes mais ce sont des fichiers distincts dans la distribution.

Pour Windows, la solution qCheck se trouve dans le répertoire vs . Elle contient 8 projets , 4 pour les entiers et 4 pour les flottants. Pour générer les programmes, simplement ouvrez la solution dans Visual Studio Express , acceptez les conversions de versions et générez la solution pour retrouver les commandes dans le répertoire bin. A part le signe slash inversé pour les chemins de fichiers et le nom du seul script de shell , tous les scripts se comportent de la même manière et utilisent la même syntaxe, y compris ceux du shell.

Notez que Dos n’accepte pas plus de 9 arguments. S’il vous en faut plus, essayez d’en fixer une partie avec les valeurs par défaut dans le script.

Ces scripts sont disposés différemment pour linux. Dans les 2 cas, il faudra se rendre en mode console sur le répertoire d’extraction de l’application et utiliser les scripts bat.sh ou batdos.bat selon le système pour générer des fichiers de résultats dans data.

On note de toutes petites variations de qualité selon les compilateurs, dues essentiellement à l’implémentation de la conversion entre int et doubles. C’est un détail non essentiel quoique perfectible.

qgenHid.cpp
va sortir le fichier des variables cachées communes aléatoires

– qRotat.cpp , à exécuter pour chaque bras
va sortir le fichier des rotations aléatoires propres à chaque bras et non échangés entre eux

qPolarize.cpp , à exécuter pour chaque bras
va sortir une simulation de réponses du polariseur double canal dans un fichier

qStat.cpp

va procéder à quelques calculs pour produire un fichier csv compatible avec les tableurs

Ces scripts utilisent des angles , des rotations et des variables communes en nombres flottants. Les résultats sont moyennés et regrouper sur des angles et des differences d’angles entiers.

Il n’y a pas d’include , les scripts sont courts et faciles à vérifier, modifier et étendre.

Les mêmes 4 scripts , prefixes par un ‘i’ , utilisent des entiers pour les angles , rotations et variables communes.

Installation

Verifier les unix owners des fichiers.

En esperant que votre systeme dispose des librairies math++ et m , allez dans le répertoire de qcheck tapez

make

Ou alors adaptez Makefile a votre environement.
Une version Windows sera disponible sous peu.

Exécuter les commandes

bat.sh va prendre vos arguments ou utiliser les valeurs par défaut et appeler les 4 scripts pour produire des fichiers dans le répertoire data.
Vous pouvez aussi exécutier les commandes directement.

* Syntaxe de bat.sh

bash bat.sh argument valeur …
Si un argument est absent, sa valeur par defaut sera utilisée.
ex : bash bat.sh largarc 20 section 5 doors 12

Toutes les valeurs par défaut peuvent être modifiées sur la ligne de commande.
Vous pouvez aussi éditer les valeurs par défaut dans bat.sh.

V «  » # version avec les nombres flottants ; mettez V i pour la version avec entiers ou seulement  i

num_pat 10000000 # numbre de paires générées

num_test 1 # index du test pour un historique

arm1 alice # un prénom pour chaque bras du dispositif
arm2 bob

largarc 16 # taille de l’arc de couronne autour de l’angle, en degrés

section 7 # nombre de sections de l’arc de couronne

doors 20 # nombre de portes du potentiel

R « 4 » # ne randomiser les rotations que sur 4 angles, pour l’instant en dur dansle code ; sinon ignorer et tirer au sort entre -90 et 90

Exemple avec des entiers :
bash bat.sh V i num_pat 10000000 num_test 1 arm1 alice arm2 bob largarc 16 section 7 doors 20

avec des flottants :
bash bat.sh num_pat 10000000 num_test 1 arm1 alice arm2 bob largarc 16 section 7 doors 20

 

* Syntaxe de qgenHid

./bin/qgenHid num_pat outfile
num_pat , nombre de paires initiales
outfile , nom du fichier de sortie

5000000 variables cachées flottantes dans data/hidden.test1
./bin/qgenHid 5000000 data/hidden.test1

3500000 variables cachées entières dans data/hidden.test1
./bin/iqgenHid 5000000 data/hidden.test1

* Syntaxe de qRotat

Commande à exécuter pour chaque bras
./bin/qRotat num_pat outfile
num_pat , nombre de paires initiales
outfile , nom du fichier de sortie

5000000 rotations  flottantes  dans r.alice.test1
./bin/qRotat 5000000 data/r.alice.test1

5000000 rotations  flottantes  dans r.bob.test1
./bin/qRotat 5000000 data/r.bob.test1

3500000 rotations  entières  dans r.bob.test1
./bin/iqRotat 3500000 data/r.bob.test1
etc

* Syntaxe de qPolarize

Commande à exécuter pour chaque bras
./bin/qPolarize largarc section doors hiddenvarfile rotationfile outfile
hiddenvarfile , le fichier des variables partagées par les 2 polariseurs
rotationfile , le fichiers des rotations propres
outfile , nom du fichier de sortie
largarc section doors comme décrits plus haut

./bin/qPolarize 16 5 12 data/hidden.test1 data/r.bob.test1 data/pol.bob.test1

 

* Syntaxe de qStat

./bin/qStat alice_polarizer bob_polarizer outfile
alice_polarizer , le fichier de sortie du polarieur d’Alice
bob_polarizer , le fichier de sortie du polarieur de Bob
outfile , nom du fichier de sortie

./bin/qStat data/pol.alice.test1 data/pol.bob.test1 data/alice-bob.test.result