#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   C O U P L E   S T E R E O S C O P I Q U E                                                   #
#         O U   L E S   Q U A R K S   D E   V A L E N C E   D E C R I V E N T   D E S                                                 #
#         O R B I T E S   C I R C U L A I R E S   O R T H O G O N A L E S  :                                                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#                   $xrq/nucleon.L8$Z                                                                                                 #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xrq/nucleon.L8$Z' :                                                                                             #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

source    $Fdivers
                                        # Pour definir les alias 'droite' et 'gauche'...                                              #

set       PROTON="NUCL"

source    $xrq/proton.J9.1$Y
                                        # Definition du choix du directory de generation des images.                                  #

#######################################################################################################################################
#                                                                                                                                     #
#         P A R A M E T R E S   D E   L A   S I M U L A T I O N  :                                                                    #
#                                                                                                                                     #
#######################################################################################################################################

source    $xrq/nucleon.L4.3$Y
                                        # Quelques parametres...                                                                      #

set       Nimages=32
                                        # Definition du nombre d'images a integrer.                                                   #
set       imageV=$imageO
                                        # Definition de la premiere image,                                                            #
set       imageN=$imageO
@         imageN = $imageN + $Nimages
@         imageN = $imageN - 1
                                        # Definition de la derniere image.                                                            #

@         npA = $imageO
                                        # Definition de 'npA' (numero de la premiere periode),                                        #

@         npX = $imageN
                                        # Definition de 'npX' (numero de la derniere periode).                                        #

@         npB = $npX * 1000
@         npB = $npB / 1000

if        ($npB <= $npA) then
          @         npB = $npA + 1
else
endif

set       luminance = "$K_VIDE"
set       luminance = "$luminance ""$K_VIDE"

set       translate = "$K_VIDE"
set       translate = "$translate ""$K_VIDE"

set       zoom      = "$K_VIDE"
set       zoom      = "$zoom ""$K_VIDE"

set       rot_OX    = "$K_VIDE"
set       rot_OX    = "$rot_OX ""$K_VIDE"

set       rot_OY    = "$K_VIDE"
set       rot_OY    = "$rot_OY ""$K_VIDE"

set       rot_OZ    = "$K_VIDE"
set       rot_OZ    = "$rot_OZ ""$K_VIDE"

alias     valeurs   'set       pD=\!:1 ; set rayD=(\!:2) ; set angD=(\!:3) ; set pA=\!:4 ; set rayA=(\!:5) ; set angA=(\!:6)      ;    \\
                     set       Alpha=\!:7 ; set Beta=\!:8 ; set Fval="\!:9"                                                       ;    \\
                     set       D1=1   ; set D2=`expr $D1 + 1` ; set A1=$D1 ; set A2=$D2                                           ;    \\
                     set       Depart  = "D=$pD rD=$rayD[$D1] drD=$rayD[$D2] aD=$angD[$D1] daD=$angD[$D2]"                        ;    \\
                     set       Arrivee = "A=$pA rA=$rayA[$A1] drA=$rayA[$A2] aA=$angA[$A1] daA=$angA[$A2]"                        ;    \\
                     $xci/valeurs_trig$X $Depart $Arrivee alpha=$Alpha beta=$Beta gamma=0.0 cubique=FAUX      >>! $Fval           ;    \\
                     unset     pD rayD angD pA rayA angA Fval Alpha Beta gamma D1 D2 A1 A2 Depart Arrivee'
                                        # Generation incrementale des fichiers des transformations par interpolation lineaire.        #

set       rayon1    = (1.000000 00.000000)
set       rayon2    = (1.000000 00.000000)

set       theta1    = (0.000000 00.000000)
set       theta2    = (6.283185 00.000000)

FileTmpB  FXqRR
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   1.0       0.0       $FXqRR
set       XqRR      = "$K_VIDE"
set       XqRR      = "$XqRR ""X_quark_REEL_ROUGE=$FXqRR"

FileTmpB  FYqRR
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   0.0       1.0       $FYqRR
set       YqRR      = "$K_VIDE"
set       YqRR      = "$YqRR ""Y_quark_REEL_ROUGE=$FYqRR"

FileTmpB  FZqRR
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   0.0       0.0       $FZqRR
set       ZqRR      = "$K_VIDE"
set       ZqRR      = "$ZqRR ""Z_quark_REEL_ROUGE=$FZqRR"

FileTmpB  FXqRV
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   1.0       0.0       $FXqRV
set       XqRV      = "$K_VIDE"
set       XqRV      = "$XqRV ""X_quark_REEL_VERTE=$FXqRV"

FileTmpB  FYqRV
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   0.0       0.0       $FYqRV
set       YqRV      = "$K_VIDE"
set       YqRV      = "$YqRV ""Y_quark_REEL_VERTE=$FYqRV"

FileTmpB  FZqRV
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   0.0       1.0       $FZqRV
set       ZqRV      = "$K_VIDE"
set       ZqRV      = "$ZqRV ""Z_quark_REEL_VERTE=$FZqRV"

FileTmpB  FXqRB
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   0.0       0.0       $FXqRB
set       XqRB      = "$K_VIDE"
set       XqRB      = "$XqRB ""X_quark_REEL_BLEUE=$FXqRB"

FileTmpB  FYqRB
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   1.0       0.0       $FYqRB
set       YqRB      = "$K_VIDE"
set       YqRB      = "$YqRB ""Y_quark_REEL_BLEUE=$FYqRB"

FileTmpB  FZqRB
valeurs   $npA      $rayon1   $theta1   $npB      $rayon2   $theta2   0.0       1.0       $FZqRB
set       ZqRB      = "$K_VIDE"
set       ZqRB      = "$ZqRB ""Z_quark_REEL_BLEUE=$FZqRB"


set       transformation="$luminance $translate $zoom $rot_OX $rot_OY $rot_OZ $XqRR $YqRR $ZqRR $XqRV $YqRV $ZqRV $XqRB $YqRB $ZqRB"
                                        # Definition des differentes transformations geometriques.                                    #

set       Lumiere   = "$K_VIDE"
set       Lumiere   = "$Lumiere ""Lx=1.000000e-15"
set       Lumiere   = "$Lumiere ""Ly=1.000000e-15"
set       Lumiere   = "$Lumiere ""Lz=1.000000e-15"
                                        # Definition de la source lumineuse, telle que pratiquement toutes les particules soient      #
                                        # derriere elle par rapport a l'observateur...                                                #

set       convolutionP=9
set       convolutionC=25
set       convolution="noyau_variable=FAUX cNOIR=VRAI convolution=$convolutionP facteur=0.100"
                                        # Definition des operations de convolution.                                                   #

set       stereo="0.04"
                                        # Definition de la valeur absolue du demi-decalage des yeux...                                #

set       vie="1.000e-25"

set       simulation="$K_VIDE"

set       simulation="$simulation ""graine=1789"

set       simulation="$simulation ""rapide=FAUX"

set       simulation="$simulation ""p0=$imageO pV=$imageV"
set       simulation="$simulation ""ralentissement=1.00"

set       simulation="$simulation ""particules=200"
set       simulation="$simulation ""auto_reguler=FAUX"

set       simulation="$simulation ""injection=VRAI injectionI=VRAI injectionS=VRAI"
set       simulation="$simulation ""nefqv=400"
set       simulation="$simulation ""neq=20000"
set       simulation="$simulation ""neaq=20000"
set       simulation="$simulation ""neg=40000"

set       simulation="$simulation ""1voisinage2=0.0160e-15"
set       simulation="$simulation ""2voisinage2=0.2500e-15"

set       simulation="$simulation ""p_Q___QxG=0.2"
set       simulation="$simulation ""p_AQ___AQxG=0.2"

set       simulation="$simulation ""i_Q___QxG=VRAI"
set       simulation="$simulation ""i_AQ___AQxG=VRAI"

set       simulation="$simulation ""p_QxG___Q=1.0"
set       simulation="$simulation ""p_AQxG___AQ=1.0"

set       simulation="$simulation ""position=0.0100e-15"

set       simulation="$simulation ""dvmqr=$vie"
set       simulation="$simulation ""dvmaqr=$vie"
set       simulation="$simulation ""dvmqv=$vie"
set       simulation="$simulation ""dvmaqv=$vie"
set       simulation="$simulation ""dvmgr=$vie"
set       simulation="$simulation ""dvmgv=$vie"

set       simulation="$simulation ""vol=50.0"
set       simulation="$simulation ""fadv=20.0"

set       simulation="$simulation ""exageration=0.5"
set       simulation="$simulation ""majorer=FAUX"

set       simulation="$simulation ""maximum=1.5"
set       simulation="$simulation ""trainees=FAUX"

set       simulation="$simulation ""randomiser=FAUX"
set       simulation="$simulation ""interieur=1.0"
set       simulation="$simulation ""exterieur=1.0"
set       simulation="$simulation ""seuil=0.9"

set       simulation="$simulation ""vqR=VRAI"

set       simulation="$simulation ""rqR=0.0400e-15"
set       simulation="$simulation ""rqV=0.0400e-15"
set       simulation="$simulation ""rg=0.0100e-15"
set       simulation="$simulation ""nnsG=12"
set       simulation="$simulation ""npsG=12"

set       simulation="$simulation ""caracteristique=FAUX"

set       simulation="$simulation ""trace=FAUX"
set       simulation="$simulation ""messages=FAUX"
set       simulation="$simulation ""parametres=FAUX"
set       simulation="$simulation ""chronometrer=FAUX"
set       simulation="$simulation ""simultanees=$Nimages"

set       accumulation="$K_VIDE"
set       accumulation="$accumulation ""premiere=$imageO derniere=$imageN pas=1"
set       accumulation="$accumulation ""renormaliser=FAUX"
set       accumulation="$accumulation ""attenuation=0.92"
                                        # Definition de l'attenuation pour le calcul des trainees ; cette valeur nulle permet de      #
                                        # calculer automatiquement le facteur d'attenuation, et ceci en fonction du nombre d'images   #
                                        # et de facon a ce que la dynamique des niveaux de gris soit exploitee au mieux (auparavant   #
                                        # la valeur utilisee etait 0.84). Je reviens (provisoirement) a une valeur imposee afin de    #
                                        # conserver bien visibles les images les plus anciennes...                                    #
set       accumulation="$accumulation ""maximum=VRAI"

                                        # ATTENTION, il y avait autrefois ici :                                                       #
                                        #                                                                                             #
                                        #                   Pal                                                                       #
                                        #                                                                                             #
                                        # mais il en fait plus general de choisir le format des images avant l'appel de cette         #
                                        # commande, puisque ce dernier lui est tranmis via l'environnement...                         #

alias     Detruit   'set                 Ar1="\!:1" ; set Ar2="\!:2"                                                              ;    \\
                     $DELETE_VALIDE      $Directory/$PROTON$Ar1$Ar2.*                                >& $nul                      ;    \\
                     unset               Ar1 Ar2'
alias     Simule    'set                 Ar1="\!:1" ; set Ar2="\!:2"                                                              ;    \\
                     $xrq/nucleon.L0$X   np=$Nimages                                                                                   \\
                                         $transformation $Lumiere                                                                      \\
                                         $convolution                                                                                  \\
                                         $simulation   stereo=$Ar1                                                                     \\
                                         R=$Directory/$PROTON$Ar2                                                                      \\
                                                                                                                         $formatI ;    \\
                     unset               Ar1 Ar2'
alias     Accumule  'set                 Ar1="\!:1" ; set Ar2="\!:2"                                                              ;    \\
                     $xci/accumule.01$X  A=$Directory/$PROTON$Ar1$Ar2. $accumulation            R=$Directory/$PROTON$Ar1$Ar2           \\
                                                                                                                         $formatI ;    \\
                     unset               Ar1 Ar2'
alias     Convolue  'set                 Ag1="\!:1" ; set Ag2="\!:2"                                                              ;    \\
                     $xci/convol.01$X    A=$Directory/$PROTON$Ag1$Ag2  points=$convolutionC     R=$Directory/$PROTON$Ag1$Ag2           \\
                                                                                                                         $formatI ;    \\
                     unset               Ag1 Ag2'

alias     Droite    'set                 Ar1="\!:1"                                                                               ;    \\
                     droite              $Directory/$PROTON$DROITE$Ar1                          $Directory/$PROTON$DROITE$Ar1     ;    \\
                     unset               Ar1'
alias     Gauche    'set                 Ar1="\!:1"                                                                               ;    \\
                     gauche              $Directory/$PROTON$GAUCHE$Ar1                          $Directory/$PROTON$GAUCHE$Ar1     ;    \\
                     unset               Ar1'
unalias   Droite
unalias   Gauche
alias     Droite    'set                 Ar1="\!:1"                                                                               ;    \\
                     unset               Ar1'
alias     Gauche    'set                 Ar1="\!:1"                                                                               ;    \\
                     unset               Ar1'
                                        # Pour ne pas titrer...                                                                       #

#######################################################################################################################################
#                                                                                                                                     #
#         N E T T O Y A G E   P R E L I M I N A I R E  :                                                                              #
#                                                                                                                                     #
#######################################################################################################################################

Detruit   $DROITE   $ROUGE
Detruit   $DROITE   $VERTE
Detruit   $DROITE   $BLEUE

Detruit   $GAUCHE   $ROUGE
Detruit   $GAUCHE   $VERTE
Detruit   $GAUCHE   $BLEUE

#######################################################################################################################################
#                                                                                                                                     #
#         V U E   " O E I L   D R O I T "  :                                                                                          #
#                                                                                                                                     #
#######################################################################################################################################

Simule    $stereo   $DROITE

Accumule  $DROITE   $ROUGE
Accumule  $DROITE   $VERTE
Accumule  $DROITE   $BLEUE

if   ($convolutionC > 1) then
     Convolue  $DROITE   $ROUGE
     Convolue  $DROITE   $VERTE
     Convolue  $DROITE   $BLEUE
else
endif

Droite              $ROUGE
Droite              $VERTE
Droite              $BLEUE

Detruit   $DROITE   $ROUGE
Detruit   $DROITE   $VERTE
Detruit   $DROITE   $BLEUE

#######################################################################################################################################
#                                                                                                                                     #
#         V U E   " O E I L   G A U C H E "  :                                                                                        #
#                                                                                                                                     #
#######################################################################################################################################

Simule    -$stereo  $GAUCHE

Accumule  $GAUCHE   $ROUGE
Accumule  $GAUCHE   $VERTE
Accumule  $GAUCHE   $BLEUE

if   ($convolutionC > 1) then
     Convolue  $GAUCHE   $ROUGE
     Convolue  $GAUCHE   $VERTE
     Convolue  $GAUCHE   $BLEUE
else
endif

Gauche              $ROUGE
Gauche              $VERTE
Gauche              $BLEUE

Detruit   $GAUCHE   $ROUGE
Detruit   $GAUCHE   $VERTE
Detruit   $GAUCHE   $BLEUE

sleep     $MINUTE
sleep     $MINUTE
                                        # Cette attente avant la destruction est mise en place afin que dans le cas ou :              #
                                        #                                                                                             #
                                        # set       Simulateur=$NEXIST                                                                #
                                        #                                                                                             #
                                        # le programme de simulation ait le temps de lire les fichiers en cause...                    #
FileTmpE  FXqRR
FileTmpE  FYqRR
FileTmpE  FZqRR
FileTmpE  FXqRV
FileTmpE  FYqRV
FileTmpE  FZqRV
FileTmpE  FXqRB
FileTmpE  FYqRB
FileTmpE  FZqRB
                                        # Et elimination des fichiers des transformations...                                          #



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.