# # ###################################################################### # Poiseuille par PYL, sauver dans "pois2.gfs" # 01/10 # valeurs de dimension Define L0 10 Define H0 1 Define a 0.3 Define Re 750. 1 0 GfsSimulation GfsBox GfsGEdge{} { # attention la boite est L0xL0 PhysicalParams { L = L0 } # on s'arrete au bout du temps 500 quoiqu'il arrive Time {end = 500 } # viscosite Re SourceViscosity {} 1./Re # le domaine est de longuer L0, les deux plans sont entre y=0 et y=H0 # paroi sup Solid (-y+H0-a*H0*exp(-pow((x)/H0,2))) #paroi inf Solid ( y+0.-a*H0*exp(-pow((x)/H0,2))) # au moins 64 cases, soir dx=0.16 Refine 6 # raffinement pour la paroi... RefineSolid 9 # on a Poiseuille entre y=0 et y=H0 Init {} { U = (1 - (y/H0))*(y/H0) } # pour essayer de recupere le frottement, ca ne marche pas! Init { istep = 1 } { TU = dy("U") } # adaptation automatique de maillage sur la vorticite # dx=L0/2^7=10/128=0.08 AdaptVorticity { istep = 1 } { maxlevel = 7 cmax = 1e-2 } OutputSimulation { istep = 10 } stdout OutputTime { istep = 10 } stderr # sortie des valeurs dans un fichier OutputSimulation { step= 10 } VAL/knd-%f.gfs OutputSimulation { start = end } VAL/end.gfs # sortie sur une ligne au milieu definie par le fichier "Paroi_bas.dat" OutputLocation { istep = 10 } VAL/Centre.data Paroi_bas.dat #test d'arret affaibli EventStop { istart = 20 istep = 1} U 1e-1 DU # OutputScalarStats { istep = 5 } { awk '{ print $3,$5; fflush (stdout); }' > d2} { v = D2 } } #condition de vitesse en entree donnee # et pression nulle en sortie ainsi que dx(U)=0 GfsBox { left = GfsBoundary { GfsBcDirichlet U (1 - (y/H0))*(y/H0)} right = GfsBoundary { GfsBcDirichlet P 0 GfsBcNeumann U 0 } } ##################################################################### on le sauve pois2.gfs on vérifie que le directory VAL existe tjrs, sinon mkdir VAL on lance avec l'option "-m" qui permet de tenir compte des "Define" gerris2D -m pois2.gfs | gfsview2D vue1.gfv |
On
met ceci dans run.sh
(on le sauve run.sh) #!/bin/bash # # export LANG=C echo "lancement du calcul" rm VAL/knd* file="Paroi_bas.dat" awk 'BEGIN{ L0 = 10 H0 = 1 r = 0.3*H0 wd = L0/2. xc = -0.*L0/10. print -0.501 * L0 " " 0.0 " " 0.0 for (x = -wd ; x <= wd; x += 0.01) print x " " (0.001 + r*exp(-(x-xc)/H0*(x-xc)/H0)) " 0 "; print 0.501 * L0 " " 0.0 " " 0.0 }' > $file gerris2D -m pois2.gfs | gfsview2D vue1.gfv echo "fin normale ?" gfs2oogl2D -c P -o -i < VAL/end.gfs > VAL/a.dat On peut mettre ensuite ceci dans le fichier fin.sh #!/bin/bash # # export LANG=C echo "liigne de test dans z.txt" echo "awk '{if (\$1>=tt) print \$0 }' VAL/Centre.data > VAL/Cf.data" > z.txt echo "extrait le temps final mis dans tfinal.txt" tfinal=`tail -n 1 VAL/Centre.data` echo $tfinal > tfinal.txt awk '{print $1}' tfinal.txt > dump.txt echo `cat dump.txt` rm tfinal.txt echo "substit" echo "s/tt/"`cat dump.txt`"/g">b.txt sed `cat b.txt` z.txt>zz.txt echo `head -n 1 VAL/Cf.data` echo "transfer des dernieres donnes dans Cf.data" source zz.txt rm b.txt rm z.txt rm zz.txt gfs2oogl2D -c P -o -i < `ls VAL/k* | tail -n 1 ` > VAL/a.dat |
![]() |
![]() |