#!/bin/csh

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

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

set       imageV=$imageO
                                        # Definition de la premiere image a visualiser.                                               #
set       Nimages=128
                                        # Definition du nombre d'images a generer.                                                    #
set       simultanees=$Nimages
                                        # Nombre d'images simultanees autorisees (autrefois, je prenais '32', mais depuis             #
                                        # l'introduction de l'option 'Pal', je suis passe a '8'...). En fait, ce parametre n'a plus   #
                                        # d'importance (voir 'Fstore_fichier_non_formatte(...)' dans 'v $xig/fonct$vv$FON').          #

set       positionnement="p0=$imageO pV=$imageV"

set       convolution="noyau_variable=FAUX cNOIR=FAUX convolution=1 facteur=0.100"
set       accumulation="trainees=VRAI renormaliser=VRAI attenuation_des_trainees=0.85 attenuation_des_images=1.00 mode=1"

set       evenements="graine=2001"
set       evenements="$evenements ""ralentissement=0.1100 particules=1800"
set       evenements="$evenements ""auto_reguler=VRAI Eregulation=1 Cregulation=40.0"
set       evenements="$evenements ""injection=VRAI injectionI=FAUX injectionS=VRAI neq=22000 neaq=22000 neg=44000 nefqv=2400"
set       evenements="$evenements ""caracteristique=FAUX"
                                        # Definition des parametres fondamentaux.                                                     #

set       imageN = $imageO
@         imageN = $imageN + $Nimages
@         imageN = $imageN - 1
                                        # Definition du numero de la derniere image.                                                  #

set       stereo0="0.00"
set       stereoD="0.04"
set       stereoG="-0.04"

set       stereo=$stereo0
set       Stereo="stereo=$stereo"
                                        # Choix du mode stereoscopique.                                                               #
                                        #                                                                                             #
                                        # 'stereo0' --> absent,                                                                       #
                                        # 'stereoD' --> DROITE,                                                                       #
                                        # 'stereoG' --> GAUCHE.                                                                       #

set       InomT="NUCL.3"
                                        # On choisit un nom court afin de ne pas avoir de problemes avec la                           #
                                        # constante 'LONGUEUR_MAXIMALE_D_UN_NOM_RELATIF_DE_FICHIER'.                                  #
switch    ("$stereo")
                                        # Definition du nom relatif des images.                                                       #
     case "$stereo0":
          breaksw
     case "$stereoD":
          set       InomT="$InomT$DROITE"
          breaksw
     case "$stereoG":
          set       InomT="$InomT$GAUCHE"
          breaksw
     default:
          EROR      "Mode stereoscopique non reconnu."
          breaksw
endsw

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

source    $xrq/nucleon.L2.3$Y
                                        # Pour fixer ou modifier des parametres de derniere minute...                                 #

set       images="$DnomT$InomT"

set       generation="R=$images queue=VRAI"
set       generation="$generation ""simultanees=$simultanees synchroniser=FAUX"
set       generation="$generation ""trace=FAUX messages=FAUX parametres=FAUX chronometrer=FAUX"
set       generation="$generation ""randomiser=FAUX interieur=1.0 exterieur=1.0 seuil=0.9 vqR=VRAI"
set       generation="$generation ""rqR=0.0320e-15 rqV=0.0320e-15 rg=0.0120e-15 nnsG=4 npsG=4 dvG=0.4"
                                        # Definition des arguments d'entrees-sorties ; plusieurs possibilites :                       #
                                        #                                                                                             #
                                        # nnsG=16 npsG=16 dvG=0.1     : bien esthetiquement, mais tres lent,                          #
                                        # nnsG=8  npsG=8  dvG=0.2                                                                     #
                                        # nnsG=4  npsG=4  dvG=0.4     : quatre fois plus rapide, et degradation acceptable...         #
                                        #                                                                                             #

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

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

@         npB = $npX * 8
@         npB = $npB / 100

@         npC = $npX * 20
@         npC = $npC / 100

@         npD = $npX * 50
@         npD = $npD / 100

@         npE = $npX * 60
@         npE = $npE / 100

@         npF = $npX * 80
@         npF = $npF / 100

@         npG = $npX * 90
@         npG = $npG / 100

@         npH = $npX * 95
@         npH = $npH / 100

@         npI = $npX * 100
@         npI = $npI / 100

if        ($npB <= $npA) then
          @         npB = $npA + 1
else
endif
if        ($npC <= $npB) then
          @         npC = $npB + 1
else
endif
if        ($npD <= $npC) then
          @         npD = $npC + 1
else
endif
if        ($npE <= $npD) then
          @         npE = $npD + 1
else
endif
if        ($npF <= $npE) then
          @         npF = $npE + 1
else
endif
if        ($npG <= $npF) then
          @         npG = $npF + 1
else
endif
if        ($npH <= $npG) then
          @         npH = $npG + 1
else
endif
if        ($npI <= $npH) then
          @         npI = $npH + 1
else
endif

alias     valeurs   'set       valD=(\!:1) ; set valA=(\!:2) ; set Fval="\!:3"                                                    ;    \\
                     set       D1=1   ; set D2=`expr $D1 + 1` ; set D3=`expr $D2 + 1` ; set SvalD=FAUX                            ;    \\
                     set       A1=$D1 ; set A2=$D2            ; set A3=$D3            ; if (-e $Fval) set SvalD=VRAI              ;    \\
                     set       Depart  = "D=$valD[$D1] vD=$valD[$D2] dD=$valD[$D3] Cunique=$SvalD Cnumero=$valD[$D1]"             ;    \\
                     set       Arrivee = "A=$valA[$A1] vA=$valA[$A2] dA=$valA[$A3]"                                               ;    \\
                     $xci/valeurs_inte$X $Depart $Arrivee cubique=VRAI                               >>! $Fval                    ;    \\
                     unset     valD valA Fval D1 D2 D3 A1 A2 A3 SvalD Depart Arrivee'
                                        # Generation incrementale des fichiers des transformations par interpolation cubique.         #

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

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

FileTmpB  Fzoom
set       zoom1     = ($npA 0.700000 00.000000)
set       zoom2     = ($npC 1.000000 00.000000)
set       zoom3     = ($npD 2.000000 00.000000)
set       zoom4     = ($npG 2.000000 00.000000)
set       zoom5     = ($npI 0.500000 00.000000)
valeurs   $zoom1    $zoom2    $Fzoom
valeurs   $zoom2    $zoom3    $Fzoom
valeurs   $zoom3    $zoom4    $Fzoom
valeurs   $zoom4    $zoom5    $Fzoom
set       zoom      = "$K_VIDE"
set       zoom      = "$zoom ""ZOOM=$Fzoom"

FileTmpB  Frot_OX
set       rot_OX1   = ($npA 00.000000 00.000000)
set       rot_OX2   = ($npB 00.000000 00.000000)
set       rot_OX3   = ($npD 04.712389 18.000000)
set       rot_OX4   = ($npF 06.283185 22.000000)
set       rot_OX5   = ($npI 06.283185 00.000000)
valeurs   $rot_OX1  $rot_OX2  $Frot_OX
valeurs   $rot_OX2  $rot_OX3  $Frot_OX
valeurs   $rot_OX3  $rot_OX4  $Frot_OX
valeurs   $rot_OX4  $rot_OX5  $Frot_OX
set       rot_OX    = "$K_VIDE"
set       rot_OX    = "$rot_OX ""ROTATION_OX=$Frot_OX"

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

FileTmpB  Frot_OZ
set       rot_OZ1   = ($npA 00.000000 00.000000)
set       rot_OZ2   = ($npF 00.000000 00.000000)
set       rot_OZ3   = ($npI 12.566370 22.000000)
valeurs   $rot_OZ1  $rot_OZ2  $Frot_OZ
valeurs   $rot_OZ2  $rot_OZ3  $Frot_OZ
set       rot_OZ    = "$K_VIDE"
set       rot_OZ    = "$rot_OZ ""ROTATION_OZ=$Frot_OZ"

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

set       transformation="$luminance $translate $zoom $rot_OX $rot_OY $rot_OZ"
                                        # Definition de la suite des transformations.                                                 #

set       visualisation="$K_VIDE"
set       visualisation="$visualisation ""siR=$GRIS_4 ssR=$BLANC"
set       visualisation="$visualisation ""siV=$GRIS_4 ssV=$BLANC"
set       visualisation="$visualisation ""siB=$GRIS_4 ssB=$BLANC"
set       visualisation="$visualisation ""ZminimumT=0.75 ZmaximumT=1.00"
                                        # Definition des conditions de visualiation...                                                #

Pal
                                        # Definition du format des images 'Pal'...                                                    #

$DELETE_VALIDE      $images*                                                                        >& $nul
                                        # Et ce afin, en particulier de ne pas se tromper dans la synchronisation.                    #
nohup     $xrq/nucleon.L0$X   np=$Nimages $evenements $transformation $convolution $accumulation $positionnement $Lumiere               \
                              $visualisation $Stereo $generation $formatI                                                         &
                                        # Le programme de simulation est lance en parallele, et se synchronise sur                    #
                                        # les etats d'espace disque insuffisant, quant au programme de calcul des                     #
                                        # trainees, il se synchronise sur l'existence de l'image (J).                                 #

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  Fzoom
FileTmpE  Frot_OX
FileTmpE  Frot_OZ
                                        # 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.