#!/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.J4$Z # # # # # # Author of '$xrq/proton.J4$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=355 # Definition du nombre d'images a generer. # set simultanees=8 # Nombre d'images simultanees autorisees (autrefois, je prenais '32', mais depuis # # l'introduction de l'option 'Pal', je suis passe a '8'...). # set positionnement="p0=$imageO pV=$imageV" set convolution="convolution=9 cNOIR=FAUX" set accumulation="trainees=VRAI renormaliser=VRAI attenuation_des_trainees=0.90 attenuation_des_images=0.10 mode=0" set evenements="np=$Nimages ralentissement=0.1100 particules=3100" # Definition des parametres fondamentaux. # set evenements="$evenements ""nefqv=120" set evenements="$evenements ""nuages=VRAI neq=44000 neaq=44000 neg=88000 reduction=0.0" set evenements="$evenements ""pq=0.0" set evenements="$evenements ""paq=0.0" set evenements="$evenements ""pg=0.0" set evenements="$evenements ""p_GxGxGxG___V=0.0" set evenements="$evenements ""p_GxGxG___V=0.0" set evenements="$evenements ""p_QxAQxG___V=0.0" set evenements="$evenements ""p_QxG___Q=0.0" set evenements="$evenements ""p_AQxG___AQ=0.0" set evenements="$evenements ""p_QxAQ___G=0.0" set evenements="$evenements ""p_GxG___G=0.0" # Definition des evenements possibles. # 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="PROT" # 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.J1.1$Y # Definition du choix du directory de generation des images. # set images="$DnomT$InomT" set generation="R=$images couleurs=VRAI vqr=FAUX simultanees=$simultanees synchroniser=FAUX messages=FAUX parametres=VRAI" # Definition des arguments d'entrees-sorties. # @ npA = $imageO @ npC = $npA + $Nimages @ npC = $npC - 1 @ npB = $npC * 335 @ npB = $npB / 355 @ npD = $npC + 1 @ npE = $npD + 1 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 @ npX = $npE + 1 @ npY = $npX + 1 @ npZ = $npY + 1 set luminance = "$K_VIDE" set luminance = "$luminance ""npl1=$npA l1=1.000 dl1=0" set luminance = "$luminance ""npl2=$npB l2=1.000 dl2=0" set luminance = "$luminance ""npl3=$npC l3=0.125 dl3=0" set luminance = "$luminance ""npl4=$npD l4=1.000 dl4=0" set luminance = "$luminance ""npl5=$npE l5=1.000 dl5=0" set translate = "$K_VIDE" set translate = "$translate ""npOX1=$npA OX1=0 dOX1=0" set translate = "$translate ""npOX2=$npB OX2=0 dOX2=0" set translate = "$translate ""npOX3=$npC OX3=0 dOX3=0" set translate = "$translate ""npOX4=$npD OX4=0 dOX4=0" set translate = "$translate ""npOX5=$npE OX5=0 dOX5=0" set translate = "$translate ""npOY1=$npA OY1=0 dOY1=0" set translate = "$translate ""npOY2=$npB OY2=0 dOY2=0" set translate = "$translate ""npOY3=$npC OY3=0 dOY3=0" set translate = "$translate ""npOY4=$npD OY4=0 dOY4=0" set translate = "$translate ""npOY5=$npE OY5=0 dOY5=0" set translate = "$translate ""npOZ1=$npA OZ1=0 dOZ1=0" set translate = "$translate ""npOZ2=$npB OZ2=0 dOZ2=0" set translate = "$translate ""npOZ3=$npC OZ3=0 dOZ3=0" set translate = "$translate ""npOZ4=$npD OZ4=0 dOZ4=0" set translate = "$translate ""npOZ5=$npE OZ5=0 dOZ5=0" set zoom = "$K_VIDE" set zoom = "$zoom ""npr1=$npA r1=1.00 dr1=0.0" set zoom = "$zoom ""npr2=$npB r2=1.00 dr2=0.0" set zoom = "$zoom ""npr3=$npC r3=1.00 dr3=0.0" set zoom = "$zoom ""npr4=$npE r4=1.00 dr4=0.0" set zoom = "$zoom ""npr5=$npX r5=1.00 dr5=0.0" set rot_OX = "$K_VIDE" set rot_OX = "$rot_OX ""npX1=$npA tX1=0 dtX1=0" set rot_OX = "$rot_OX ""npX2=$npB tX2=0 dtX2=0" set rot_OX = "$rot_OX ""npX3=$npC tX3=0 dtX3=0" set rot_OX = "$rot_OX ""npX4=$npE tX4=0 dtX4=0" set rot_OX = "$rot_OX ""npX5=$npX tX5=0 dtX5=0" set rot_OY = "$K_VIDE" set rot_OY = "$rot_OY ""npY1=$npA tY1=0 dtY1=0" set rot_OY = "$rot_OY ""npY2=$npB tY2=0 dtY2=0" set rot_OY = "$rot_OY ""npY3=$npC tY3=0 dtY3=0" set rot_OY = "$rot_OY ""npY4=$npD tY4=0 dtY4=0" set rot_OY = "$rot_OY ""npY5=$npE tY5=0 dtY5=0" set rot_OZ = "$K_VIDE" set rot_OZ = "$rot_OZ ""npZ1=$npA tZ1=0 dtZ1=0" set rot_OZ = "$rot_OZ ""npZ2=$npB tZ2=0 dtZ2=0" set rot_OZ = "$rot_OZ ""npZ3=$npC tZ3=0 dtZ3=0" set rot_OZ = "$rot_OZ ""npZ4=$npD tZ4=0 dtZ4=0" set rot_OZ = "$rot_OZ ""npZ5=$npE tZ5=0 dtZ5=0" # ATTENTION : la forme simplifiee des constantes flottantes ('1' a la place de '1.000000' # # par exemple) est liee au fait que la valeur des variables du C-Shell a une longueur # # limitee (4096 octets ?), et que pour eviter le message d'erreur "Word too long.", j'en # # suis venu a ces extremites... # 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 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. # nohup $xrq/nucleon.L0$X $evenements $transformation $convolution $accumulation $positionnement $Lumiere \ $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). # if ("$mHOTE" == "$mDKVP") then set continuer=$EXIST set imageJ=$imageV # Premiere image a enregistrer (J). # 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=$imageJ d=$imageJ` set Snumero=$Sep$numero # Numero de l'image J. # set attendre=$EXIST # Afin de pouvoir attendre l'image J. # 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 existe, on arrete d'attendre, et ainsi, on va pouvoir l'enregistrer. # else sleep $TEMPORISATION # Si l'image n'existe pas, on attend un peu avant de relancer le test... # endif end 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'. # $MV $InomT$ROUGE$Snumero $InomT$Snumero$ROUGE $MV $InomT$VERTE$Snumero $InomT$Snumero$VERTE $MV $InomT$BLEUE$Snumero $InomT$Snumero$BLEUE # On notera que durant l'operation '$xci/disk_video_P$Z' les images '$InomT$ROUGE$Snumero', # # '$InomT$VERTE$Snumero' et '$InomT$BLEUE$Snumero' ont change de nom (permutation de # # l'indice de couleur et du numero) et qu'ainsi '$xrq/nucleon.L0$X' les considere comme # # inexistantes (voir l'option 'simultanees='), leur destruction reelle n'ayant lieu qu'apres. # $xci/disk_video_P$Z $InomT$Sep $numero $numero $RVB_DKVP $Disque $Face $Tinit $mode "$formatI" $Gamma_proton_JX # Enregistrement de l'image courante. # $DELETE_VALIDE $InomT$Snumero$ROUGE $DELETE_VALIDE $InomT$Snumero$VERTE $DELETE_VALIDE $InomT$Snumero$BLEUE Popd set Tinit="rien" # Les fois suivantes on ne fera rien ... # @ imageJ = $imageJ + 1 # Changement de premiere image a accumuler (J). # if ($imageJ > $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... # else endif