#!/bin/csh

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

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

set       PROTON="NUCL"
set       mPROTON="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.                                                            #

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"

set       transformation="$luminance $translate $zoom $rot_OX $rot_OY $rot_OZ"
                                        # 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=1
set       convolution="noyau_variable=FAUX cNOIR=VRAI convolution=$convolutionP facteur=0.100"
                                        # Definition des operations de convolution.                                                   #

set       stereo="0.08"
                                        # 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=80000"
set       simulation="$simulation ""neaq=80000"
set       simulation="$simulation ""neg=160000"

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...                         #

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

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     Droite    'set                 Ar1="\!:1"                                                                               ;    \\
                     droite              $Ar1$ROUGE          $Ar1$ROUGE                                                           ;    \\
                     droite              $Ar1$VERTE          $Ar1$VERTE                                                           ;    \\
                     droite              $Ar1$BLEUE          $Ar1$BLEUE                                                           ;    \\
                     unset               Ar1'
alias     Gauche    'set                 Ar1="\!:1"                                                                               ;    \\
                     gauche              $Ar1$ROUGE          $Ar1$ROUGE                                                           ;    \\
                     gauche              $Ar1$VERTE          $Ar1$VERTE                                                           ;    \\
                     gauche              $Ar1$BLEUE          $Ar1$BLEUE                                                           ;    \\
                     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

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

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

#######################################################################################################################################
#                                                                                                                                     #
#         O U T I L S   D E   B R U M E  :                                                                                            #
#                                                                                                                                     #
#######################################################################################################################################

set       noyau02=200
set       noyau10=1000
                                        # Definition des tailles de noyau de convolution...                                           #
alias     Convolue  'set                 Ag1="\!:1" ; set Ag2="\!:2" ; set Ag3="\!:3"                                             ;    \\
                     $xci/convol.01$X    A=$Ag1                                  R=$Ag2                                                \\
                                         carre=FAUX                                                                                    \\
                                         points=$Ag3                                                                                   \\
                                         saut=0                                                                                        \\
                                         renormaliser=FAUX                                                                             \\
                                                                                                                         $formatI ;    \\
                     unset               Ag1 Ag2 Ag3'
alias     Convol02  'set                 Ar1="\!:1" ; set Ar2="\!:2" ; set Ar3="\!:3"                                             ;    \\
                     Convolue            $Directory/$PROTON$Ar1$Ar2              $Directory/$mPROTON$Ar3$Ar1$Ar2         $noyau02 ;    \\
                     unset               Ar1 Ar2 Ar3'
alias     Convol10  'set                 Ar1="\!:1" ; set Ar2="\!:2" ; set Ar3="\!:3"                                             ;    \\
                     Convolue            $Directory/$PROTON$Ar1$Ar2              $Directory/$mPROTON$Ar3$Ar1$Ar2         $noyau10 ;    \\
                     unset               Ar1 Ar2 Ar3'
                                        # Definition des commandes de convolution.                                                    #

alias     Acces     'set                 Ar1="\!:1" ; set Ar2="\!:2" ; set Ar3="\!:3" ; set Ar4="\!:4"                            ;    \\
                     $xci/acces$X        A=$Directory/$mPROTON$Ar1$Ar3$Ar4       R=$Directory/$mPROTON$Ar2$Ar3$Ar4       r=VRAI        \\
                                                                                                                         $formatI ;    \\
                     unset               Ar1 Ar2 Ar3 Ar4'
                                        # Definition de la commande de renormalisation des niveaux apres convolution.                 #

set       STEP1=".1"
set       STEP2=".2"
set       STEP3=".3"
set       STEP4=".4"
                                        # Definition des differentes etapes de convolution :                                          #
                                        #                                                                                             #
                                        # STEP1   : Convol02($PROTON),                                                                #
                                        # STEP2   : Acces(Convol02($PROTON)),                                                         #
                                        #                                                                                             #
                                        # STEP3   : Convol10($PROTON),                                                                #
                                        # STEP4   : Acces(Convol10($PROTON)).                                                         #
set       STEPI1=".1"
set       STEPI2=".2"
set       STEPV1=".3"
set       STEPV2=".4"
                                        # Definition des differentes etapes possibles :                                               #
                                        #                                                                                             #
                                        # STEPI1  : $xci/interpole.11$Z(),                                                            #
                                        # STEPI2  : $xci/interpole.11$Z($xci/interpole.11$Z()),                                       #
                                        #                                                                                             #
                                        # STEPV1  : $xci/vitre.53$Z(),                                                                #
                                        # STEPV2  : $xci/vitre.53$Z($xci/vitre.53$Z()).                                               #

set       Alpha=0.5
set       Beta=0.5
                                        # Definition des parametres numeriques de 'v $xci/interpole.11$Z' :                           #
                                        #                                                                                             #
                                        # Alpha : ponderation de l'image du proton,                                                   #
                                        # Beta  : ponderation de la brume dans laquelle doit baigner le proton.                       #

#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   E F F E T   D E   B R U M E   F A I B L E  :                                                #
#                                                                                                                                     #
#######################################################################################################################################

Convol02  $DROITE   $ROUGE    $STEP1
Convol02  $DROITE   $VERTE    $STEP1
Convol02  $DROITE   $BLEUE    $STEP1
                                        # Convolution.                                                                                #

Acces     $STEP1    $STEP2    $DROITE   $ROUGE
Acces     $STEP1    $STEP2    $DROITE   $VERTE
Acces     $STEP1    $STEP2    $DROITE   $BLEUE
                                        # Renormalisation.                                                                            #

Convol02  $GAUCHE   $ROUGE    $STEP1
Convol02  $GAUCHE   $VERTE    $STEP1
Convol02  $GAUCHE   $BLEUE    $STEP1
                                        # Convolution.                                                                                #

Acces     $STEP1    $STEP2    $GAUCHE   $ROUGE
Acces     $STEP1    $STEP2    $GAUCHE   $VERTE
Acces     $STEP1    $STEP2    $GAUCHE   $BLEUE
                                        # Renormalisation.                                                                            #

$xci/interpole.11$Z $Alpha    $Directory/$PROTON$DROITE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP1$DROITE                                                                          \
                    $Directory/$mPROTON$STEP1$STEPI1$DROITE
Droite              $Directory/$mPROTON$STEP1$STEPI1$DROITE
$xci/interpole.11$Z $Alpha    $Directory/$PROTON$GAUCHE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP1$GAUCHE                                                                          \
                    $Directory/$mPROTON$STEP1$STEPI1$GAUCHE
Gauche              $Directory/$mPROTON$STEP1$STEPI1$GAUCHE

$xci/interpole.11$Z $Alpha    $Directory/$PROTON$DROITE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP2$DROITE                                                                          \
                    $Directory/$mPROTON$STEP2$STEPI1$DROITE
Droite              $Directory/$mPROTON$STEP2$STEPI1$DROITE
$xci/interpole.11$Z $Alpha    $Directory/$PROTON$GAUCHE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP2$GAUCHE                                                                          \
                    $Directory/$mPROTON$STEP2$STEPI1$GAUCHE
Gauche              $Directory/$mPROTON$STEP2$STEPI1$GAUCHE
                                        # Effet de brume par interpolation.                                                           #

$xci/vitre.53$Z     $Directory/$PROTON$DROITE                                                                                           \
                    $Directory/$mPROTON$STEP1$DROITE                                                                                    \
                    $Directory/$mPROTON$STEP1$STEPV1$DROITE
Droite              $Directory/$mPROTON$STEP1$STEPV1$DROITE
$xci/vitre.53$Z     $Directory/$PROTON$GAUCHE                                                                                           \
                    $Directory/$mPROTON$STEP1$GAUCHE                                                                                    \
                    $Directory/$mPROTON$STEP1$STEPV1$GAUCHE
Gauche              $Directory/$mPROTON$STEP1$STEPV1$GAUCHE

$xci/vitre.53$Z     $Directory/$PROTON$DROITE                                                                                           \
                    $Directory/$mPROTON$STEP2$DROITE                                                                                    \
                    $Directory/$mPROTON$STEP2$STEPV1$DROITE
Droite              $Directory/$mPROTON$STEP2$STEPV1$DROITE
$xci/vitre.53$Z     $Directory/$PROTON$GAUCHE                                                                                           \
                    $Directory/$mPROTON$STEP2$GAUCHE                                                                                    \
                    $Directory/$mPROTON$STEP2$STEPV1$GAUCHE
Gauche              $Directory/$mPROTON$STEP2$STEPV1$GAUCHE
                                        # Effet de brume par transparence.                                                            #

                                        # ATTENTION : les images intermediaires calculees '$mPROTON' ne sont pas detruites, et ce     #
                                        # afin de pouvoir etre re-utilisees "a la main" avec d'autres parametres...                   #

#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   E F F E T   D E   B R U M E   F O R T  :                                                    #
#                                                                                                                                     #
#######################################################################################################################################

Convol10  $DROITE   $ROUGE    $STEP3
Convol10  $DROITE   $VERTE    $STEP3
Convol10  $DROITE   $BLEUE    $STEP3
                                        # Convolution.                                                                                #

Acces     $STEP3    $STEP4    $DROITE   $ROUGE
Acces     $STEP3    $STEP4    $DROITE   $VERTE
Acces     $STEP3    $STEP4    $DROITE   $BLEUE
                                        # Renormalisation.                                                                            #

Convol10  $GAUCHE   $ROUGE    $STEP3
Convol10  $GAUCHE   $VERTE    $STEP3
Convol10  $GAUCHE   $BLEUE    $STEP3
                                        # Convolution.                                                                                #

Acces     $STEP3    $STEP4    $GAUCHE   $ROUGE
Acces     $STEP3    $STEP4    $GAUCHE   $VERTE
Acces     $STEP3    $STEP4    $GAUCHE   $BLEUE
                                        # Renormalisation.                                                                            #

$xci/interpole.11$Z $Alpha    $Directory/$PROTON$DROITE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP3$DROITE                                                                          \
                    $Directory/$mPROTON$STEP3$STEPI1$DROITE
Droite              $Directory/$mPROTON$STEP3$STEPI1$DROITE
$xci/interpole.11$Z $Alpha    $Directory/$PROTON$GAUCHE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP3$GAUCHE                                                                          \
                    $Directory/$mPROTON$STEP3$STEPI1$GAUCHE
Gauche              $Directory/$mPROTON$STEP3$STEPI1$GAUCHE

$xci/interpole.11$Z $Alpha    $Directory/$PROTON$DROITE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP4$DROITE                                                                          \
                    $Directory/$mPROTON$STEP4$STEPI1$DROITE
Droite              $Directory/$mPROTON$STEP4$STEPI1$DROITE
$xci/interpole.11$Z $Alpha    $Directory/$PROTON$GAUCHE                                                                                 \
                    $Beta     $Directory/$mPROTON$STEP4$GAUCHE                                                                          \
                    $Directory/$mPROTON$STEP4$STEPI1$GAUCHE
Gauche              $Directory/$mPROTON$STEP4$STEPI1$GAUCHE
                                        # Effet de brume par interpolation.                                                           #

$xci/vitre.53$Z     $Directory/$PROTON$DROITE                                                                                           \
                    $Directory/$mPROTON$STEP3$DROITE                                                                                    \
                    $Directory/$mPROTON$STEP3$STEPV1$DROITE
Droite              $Directory/$mPROTON$STEP3$STEPV1$DROITE
$xci/vitre.53$Z     $Directory/$PROTON$GAUCHE                                                                                           \
                    $Directory/$mPROTON$STEP3$GAUCHE                                                                                    \
                    $Directory/$mPROTON$STEP3$STEPV1$GAUCHE
Gauche              $Directory/$mPROTON$STEP3$STEPV1$GAUCHE

$xci/vitre.53$Z     $Directory/$PROTON$DROITE                                                                                           \
                    $Directory/$mPROTON$STEP4$DROITE                                                                                    \
                    $Directory/$mPROTON$STEP4$STEPV1$DROITE
Droite              $Directory/$mPROTON$STEP4$STEPV1$DROITE
$xci/vitre.53$Z     $Directory/$PROTON$GAUCHE                                                                                           \
                    $Directory/$mPROTON$STEP4$GAUCHE                                                                                    \
                    $Directory/$mPROTON$STEP4$STEPV1$GAUCHE
Gauche              $Directory/$mPROTON$STEP4$STEPV1$GAUCHE
                                        # Effet de brume par transparence.                                                            #

                                        # ATTENTION : les images intermediaires calculees '$mPROTON' ne sont pas detruites, et ce     #
                                        # afin de pouvoir etre re-utilisees "a la main" avec d'autres parametres...                   #

#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   E F F E T   D E   B R U M E   F A I B L E   E T   F O R T   A   L A   F O I S  :            #
#                                                                                                                                     #
#######################################################################################################################################

$xci/interpole.11$Z $Alpha    $Directory/$mPROTON$STEP2$STEPI1$DROITE                                                                   \
                    $Beta     $Directory/$mPROTON$STEP4$DROITE                                                                          \
                    $Directory/$mPROTON$STEP4$STEPI2$DROITE
$xci/interpole.11$Z $Alpha    $Directory/$mPROTON$STEP2$STEPI1$GAUCHE                                                                   \
                    $Beta     $Directory/$mPROTON$STEP4$GAUCHE                                                                          \
                    $Directory/$mPROTON$STEP4$STEPI2$GAUCHE
                                        # Effet de brume par interpolation.                                                           #

$xci/vitre.53$Z     $Directory/$mPROTON$STEP2$STEPV1$DROITE                                                                             \
                    $Directory/$mPROTON$STEP4$DROITE                                                                                    \
                    $Directory/$mPROTON$STEP4$STEPV2$DROITE
$xci/vitre.53$Z     $Directory/$mPROTON$STEP2$STEPV1$GAUCHE                                                                             \
                    $Directory/$mPROTON$STEP4$GAUCHE                                                                                    \
                    $Directory/$mPROTON$STEP4$STEPV2$GAUCHE
                                        # Effet de brume par transparence.                                                            #

                                        # ATTENTION : les images intermediaires calculees '$mPROTON' ne sont pas detruites, et ce     #
                                        # afin de pouvoir etre re-utilisees "a la main" avec d'autres parametres...                   #




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