#!/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.K4$Z # # # # # # Author of '$xrq/proton.K4$Z' : # # # # Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). # # # ####################################################################################################################################### source $xrq/proton.K2.2$Y # Definition du choix des machines a utiliser pour generer le film. # source $xrq/nucleon.L4.1$Y # Preparation eventuelle de l'enregistrement... # source $xrq/nucleon.L4.2$Y # Quelques parametres... # 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" set evenements="$evenements ""nefqv=120" set evenements="$evenements ""injection=VRAI injectionI=VRAI injectionS=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 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="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.K2.1$Y # Definition du choix du directory de generation des images. # set images="$DnomT$InomT" set generation="R=$images 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 dl1=0" set luminance = "$luminance ""npl2=$npB l2=1 dl2=0" set luminance = "$luminance ""npl3=$npC l3=1 dl3=0" set luminance = "$luminance ""npl4=$npD l4=1 dl4=0" set luminance = "$luminance ""npl5=$npE l5=1 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=$npD r4=1.00 dr4=0.0" set zoom = "$zoom ""npr5=$npE r5=1.00 dr5=0.0" set rot_OX = "$K_VIDE" set rot_OX = "$rot_OX ""npX1=$npA tX1=0 dtX1=00.00" set rot_OX = "$rot_OX ""npX2=$npB tX2=0 dtX2=00.00" set rot_OX = "$rot_OX ""npX3=$npC tX3=0 dtX3=00.00" set rot_OX = "$rot_OX ""npX4=$npD tX4=0 dtX4=10.00" set rot_OX = "$rot_OX ""npX5=$npE tX5=0 dtX5=12.00" 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'... # if ($Simulateur == $EXIST) then $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). # else endif if ($Enregistreur == $EXIST) then 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 SIZE $images$ROUGE$Snumero @ tROUGE=$Fsize SIZE $images$VERTE$Snumero @ tVERTE=$Fsize SIZE $images$BLEUE$Snumero @ tBLEUE=$Fsize if (($tROUGE == $tailleI) && \ ($tVERTE == $tailleI) && \ ($tBLEUE == $tailleI)) then set attendre=$NEXIST # Des que l'image J existe (avec la bonne taille), on arrete d'attendre, et ainsi, et ainsi, # # on va pouvoir l'enregistrer. Cette mecanique est destinee a permettre certaines erreurs # # d'entrees-sorties (voir le probleme dans 'xig/fonct$vv$FON' avec 'NFS' dans la fonction # # 'Fstore_fichier_non_formatte(...)'). # else sleep $TEMPORISATION # Si l'image n'a pas la bonne taille, on attend un peu avant de relancer le test... # endif 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_KX # 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_KX # 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_KX $DELETE_VALIDE $images* >& $nul # Parce que l'on est propre... # else endif else endif