#!/bin/csh
#######################################################################################################################################
# #
# G E N E R A T I O N D U F I L M S U R L A D Y N A M I Q U E I N T E R N E D U P R O T O N : #
# #
# #
# Utilisation : #
# #
# $xrq/proton.J0$Z #
# #
# #
# Nota : #
# #
# Cette version est conservee pour des #
# raisons de sentimentalite, mais est #
# remplacee par '$xrq/proton.J1$Z'... #
# #
# #
# Author of '$xrq/proton.J0$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
echo "ATTENTION : ne surtout pas se deloguer sous peine de perdre l'initialisation graphique et X-Window..."
set kill_DKVP=$EXIST
source $Fdisk_video_P
unset kill_DKVP
# Initialisations diverses avec '$xcg/kill$Z', mais a noter que ce dernier ne #
# sera plus fait par la suite lors des appels a '$xci/disk_video_P$Z'. #
set Disque=000000001
set Face=1
# Definition du disque sur lequel ecrire. #
set Sep=$K_sepP
# Definition du separateur des composantes d'un nom. #
set imageO=1
# Definition du numero de la premiere image. #
set imageV=$imageO
# Definition de la premiere image a visualiser. #
set Nimages=1024
# Definition du nombre d'images a generer. #
set Ltrainees=16
# Definition de la longueur des trainees. #
@ simultanees = 2 * $Ltrainees
# Nombre d'images simultanees autorisees. #
set positionnement="p0=$imageO pV=$imageV"
set accumulation="pas=1 renormaliser=FAUX attenuation=0.847 fB=4.0"
set ralentissement="np=$Nimages ralentissement=0.125 nefqv=2500 nuages=VRAI"
# Definition des parametres fondamentaux. #
set imageN=$imageO
@ imageN = $imageN + $Nimages
@ imageN = $imageN - 1
# Definition du numero de la derniere image. #
source $xrq/proton.J0.1$Y
# Definition du choix du directory de generation des images. #
set generation="R=$images couleurs=VRAI trainees=FAUX simultanees=$simultanees synchroniser=FAUX messages=FAUX parametres=VRAI"
# Definition des arguments d'entrees-sorties. #
@ npA = $imageO
@ npE = $npA + $Nimages
@ npE = $npE - 1
@ npB = $npE / 8
@ npC = $npE / 2
@ npD = $npE * 6875
@ npD = $npD / 10000
@ npX = $npE + 1
@ npY = $npX + 1
@ npZ = $npY + 1
set luminance = "$K_VIDE"
set luminance = "$luminance ""npl1=$npA l1=1.000000 dl1=00.000000"
set luminance = "$luminance ""npl2=$npB l2=1.000000 dl2=00.000000"
set luminance = "$luminance ""npl3=$npC l3=1.000000 dl3=00.000000"
set luminance = "$luminance ""npl4=$npD l4=1.000000 dl4=00.000000"
set luminance = "$luminance ""npl5=$npE l5=1.000000 dl5=00.000000"
set translate = "$K_VIDE"
set translate = "$translate ""npOX1=$npA OX1=0.000000 dOX1=00.000000"
set translate = "$translate ""npOX2=$npB OX2=0.000000 dOX2=00.000000"
set translate = "$translate ""npOX3=$npC OX3=0.000000 dOX3=00.000000"
set translate = "$translate ""npOX4=$npD OX4=0.000000 dOX4=00.000000"
set translate = "$translate ""npOX5=$npE OX5=0.000000 dOX5=00.000000"
set translate = "$translate ""npOY1=$npA OY1=0.000000 dOY1=00.000000"
set translate = "$translate ""npOY2=$npB OY2=0.000000 dOY2=00.000000"
set translate = "$translate ""npOY3=$npC OY3=0.000000 dOY3=00.000000"
set translate = "$translate ""npOY4=$npD OY4=0.000000 dOY4=00.000000"
set translate = "$translate ""npOY5=$npE OY5=0.000000 dOY5=00.000000"
set translate = "$translate ""npOZ1=$npA OZ1=0.000000 dOZ1=00.000000"
set translate = "$translate ""npOZ2=$npB OZ2=0.000000 dOZ2=00.000000"
set translate = "$translate ""npOZ3=$npC OZ3=0.000000 dOZ3=00.000000"
set translate = "$translate ""npOZ4=$npD OZ4=0.000000 dOZ4=00.000000"
set translate = "$translate ""npOZ5=$npE OZ5=0.000000 dOZ5=00.000000"
set zoom = "$K_VIDE"
set zoom = "$zoom ""npr1=$npA r1=1.333333 dr1=00.000000"
set zoom = "$zoom ""npr2=$npC r2=1.333333 dr2=00.000000"
set zoom = "$zoom ""npr3=$npD r3=1.866666 dr3=00.000000"
set zoom = "$zoom ""npr4=$npE r4=1.333333 dr4=00.000000"
set zoom = "$zoom ""npr5=$npX r5=1.333333 dr5=00.000000"
set rot_OX = "$K_VIDE"
set rot_OX = "$rot_OX ""npX1=$npA tX1=0.000000 dtX1=00.000000"
set rot_OX = "$rot_OX ""npX2=$npB tX2=0.000000 dtX2=00.000000"
set rot_OX = "$rot_OX ""npX3=$npC tX3=3.141592 dtX3=12.500000"
set rot_OX = "$rot_OX ""npX4=$npD tX4=4.712389 dtX4=07.500000"
set rot_OX = "$rot_OX ""npX5=$npE tX5=6.283185 dtX5=00.000000"
set rot_OY = "$K_VIDE"
set rot_OY = "$rot_OY ""npY1=$npA tY1=0.000000 dtY1=00.000000"
set rot_OY = "$rot_OY ""npY2=$npB tY2=0.000000 dtY2=00.000000"
set rot_OY = "$rot_OY ""npY3=$npC tY3=0.000000 dtY3=00.000000"
set rot_OY = "$rot_OY ""npY4=$npD tY4=0.000000 dtY4=00.000000"
set rot_OY = "$rot_OY ""npY5=$npE tY5=0.000000 dtY5=00.000000"
set rot_OZ = "$K_VIDE"
set rot_OZ = "$rot_OZ ""npZ1=$npA tZ1=0.000000 dtZ1=00.000000"
set rot_OZ = "$rot_OZ ""npZ2=$npC tZ2=0.000000 dtZ2=00.000000"
set rot_OZ = "$rot_OZ ""npZ3=$npD tZ3=0.500000 dtZ3=00.500000"
set rot_OZ = "$rot_OZ ""npZ4=$npE tZ4=0.523599 dtZ4=00.000000"
set rot_OZ = "$rot_OZ ""npZ5=$npX tZ5=0.000000 dtZ5=00.000000"
set transformation="$luminance $translate $zoom $rot_OX $rot_OY $rot_OZ"
# Definition de la suite des transformations. #
Pal
# Definition du format des images 'Pal'... #
$DELETE_VALIDE $images* >& $nul
# Et ce afin, en particulier de ne pas se tromper dans la synchronisation. #
$xrq/nucleon.L0$X $ralentissement $transformation $generation $positionnement $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+L-1). #
set continuer=$EXIST
set imageJ=$imageV
# Premiere image a accumuler (J). #
set imageJpL=$imageO
# Derniere image a accumuler (J+L-1). #
@ imageJ_JpL = $imageO + $Ltrainees
@ imageJ_JpL = $imageJ_JpL - 1
# Pour savoir a partir de quand incrementer 'imageJ'. #
set Tinit="Initialisation"
# La premiere fois on fera une grande initialisation... #
set compteur=1
# Compteur des images. #
while ($continuer == $EXIST)
set numero=`$xci/nombres$X p=$imageJpL d=$imageJpL`
set Snumero=$Sep$numero
# Numero de l'image J+L-1. #
set attendre=$EXIST
# Afin de pouvoir attendre l'image J+L-1. #
while ($attendre == $EXIST)
if ((-e "$images$ROUGE$Snumero") && (-e "$images$VERTE$Snumero") && (-e "$images$BLEUE$Snumero")) then
set attendre=$NEXIST
# Des que l'image J+L-1 existe, on arrete d'attendre, et ainsi, on va pouvoir #
# lancer le calcul des trainees sur la sequence (J,J+1,...,J+L-1). #
else
sleep $TEMPORISATION
# Si l'image n'existe pas, on attend un peu avant de relancer le test... #
endif
end
set DnomT=$xT
set InomT="PROTON"
set RnomT=$DnomT$K_sepS$InomT
set nomT=$RnomT$Snumero
# Nom des images contenant l'accumulation courante, mais on notera que #
# contrairement a d'habitude, on n'utilise pas '`Getmp`', car en effet, #
# sinon, les noms generes sont trop longs... #
if (-e "$nomT$ROUGE") then
$DELETE_VALIDE $nomT$ROUGE
else
endif
if (-e "$nomT$VERTE") then
$DELETE_VALIDE $nomT$VERTE
else
endif
if (-e "$nomT$BLEUE") then
$DELETE_VALIDE $nomT$BLEUE
else
endif
$xci/accumule.01$X A=$images$ROUGE$Sep premiere=$imageJ derniere=$imageJpL $accumulation R=$nomT$ROUGE $formatI
$xci/accumule.01$X A=$images$VERTE$Sep premiere=$imageJ derniere=$imageJpL $accumulation R=$nomT$VERTE $formatI
$xci/accumule.01$X A=$images$BLEUE$Sep premiere=$imageJ derniere=$imageJpL $accumulation R=$nomT$BLEUE $formatI
# Calcul des trainees sur la sequence (J,J+1,...,J+L-1). #
if ($compteur == 1) then
set mode=$debutS_DKVP
else
if ($compteur < $Nimages) then
set mode=$ajoutS_DKVP
else
set mode=$finS_DKVP
endif
endif
Pushd $DnomT
# Ainsi on se place dans le directory des images a cause de '$xci/disk_video_P$Z'. #
$xci/disk_video_P$Z $InomT$Sep $numero $numero $RVB_DKVP $Disque $Face $Tinit $mode "$formatI" $Gamma_proton_JX
# Enregistrement de la trainee courante (J,J+1,...,J+L-1). #
Popd
set Tinit="rien"
# Les fois suivantes on ne fera rien ... #
if (-e "$nomT$ROUGE") then
$DELETE_VALIDE $nomT$ROUGE
else
endif
if (-e "$nomT$VERTE") then
$DELETE_VALIDE $nomT$VERTE
else
endif
if (-e "$nomT$BLEUE") then
$DELETE_VALIDE $nomT$BLEUE
else
endif
if ($imageJpL >= $imageJ_JpL) then
# Cas ou l'on a fait au moins 'Ltrainees' images : #
$DELETE_VALIDE $images$ROUGE$Sep`$xci/nombres$X p=$imageJ d=$imageJ`
$DELETE_VALIDE $images$VERTE$Sep`$xci/nombres$X p=$imageJ d=$imageJ`
$DELETE_VALIDE $images$BLEUE$Sep`$xci/nombres$X p=$imageJ d=$imageJ`
# Destruction de l'image (J). #
@ imageJ = $imageJ + 1
# Changement de premiere image a accumuler (J). #
else
# Cas ou l'on a fait moins de 'Ltrainees' images : on est au debut, on ne touche #
# donc ni a 'imageJ', ni a l'image (J). #
endif
@ imageJpL = $imageJpL + 1
# Changement de derniere image a accumuler (J+L-1). #
if ($imageJpL > $imageN) then
set continuer=$NEXIST
# Et on a fini... #
else
endif
$xci/feu_vert$X feu=$feu_proton_JX
# Et on synchronise '$xrq/nucleon.L0$X' quelle que soit l'option 'simultanees=' #
# dans '$generation'. #
@ compteur = $compteur + 1
# Et comptage des images. #
end
$xci/feu_init$X feu=$feu_proton_JX
$DELETE_VALIDE $images* >& $nul
# Parce que l'on est propre... #
Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.