![]() ![]() ![]() |
This appendix contains a sample SMP
computation of the macroscopic equations for the hexagonal lattice cellular automaton fluid model of Section 2.
The SMP definitions are as follows:
/* two-dimensional case */ d:2
/* define position and velocity vectors */ r:{x,y} u:{ux,uy}
/* generate polygonal set of lattice vectors */ < XTrig polygon[$n] :: (e:Ar[$n,{Cos[2Pi $/$n],Sin[2Pi $/$n]}])
/* calculate terms in number density, momentum vector and stress tensor */ suma[$x] :: Ex[Sum[$x,{a,1,Len[e]}]] nterm[$f] :: suma[$f[a]] uterm[$f] :: suma[e[a] $f[a]] piterm[$f] :: suma[e[a]**e[a] $f[a]]
/* define vector analysis operators */ egrad[$x,$a] :: Sum[e[$a][i] Dt[$x,r[i]],{i,1,d}] div[$x] :: Sum[Dt[$x[i],r[i]],{i,1,d}]
/* terms in Chapman-Enskog expansion */ n : f Len[e] ce0[$a] : f ce1[$a] : f e[$a].u ce2[$a] : f ((e[$a].u)^2 - u.u/2) ce2d[$a] : f (egrad[e[$a].u,$a] - div[u]/2) celist : {ce0,ce1,ce2,ce2d}
/* specify commutativity of second derivatives */ Dt[$f,$1,{$2_=(Ord[$2,$1]> 0),1}] :: Dt[$f,$2,$1]
/* define printing of derivatives */ _Dt[Pr][[$1,$2]]::Fmt[{{0,0},{1,-1},{2,0}},D,$2,$1] _Dt[Pr][[$1,$2{$3,1}]]::Fmt[{{0,0},{1,-1},{2,-1},{3,0}},D,$2,$3,$1]
The following is a transcript of an interactive SMP session:
#I[1]:: < "cafluid.smp" /* load definitions */
#I[2]:: polygon[6] /* set up for hexagonal lattice */
1/2 1/2 1/2 1/2 3 3 - 3 -3 #0[2]: {{1/2,----},{-1/2,----},{-1,0},{-1/2,------},{1/2,------},{1,0}} 2 2 2 2
#I[3]:: Map[nterm,celist] /* find contributions to number density from terms in Chapman-Enskog expansion */
#O[3]: {6f,0,0,0}
#I[4]:: Map[uterm,celist] /* find contributions to momentum vector */
#O[4]: {{0,0},{3f ux,3f uy},{0,0},{0,0}}
#I[5]:: Map[piterm,celist] /* stress tensor */
#O[5]:* {{{3f,0},{0,3f}},{{0,0},{0,0}},
2 2 2 2 3f ux 3f uy 3f ux uy 3f ux uy -3f ux 3f uy {{------ - ------,--------},{--------,-------- + ------}}, 4 4 2 2 4 4
3f D ux 3f D uy 3f D ux 3f D uy x y y x {{------- - -------,------- + -------}, 4 4 4 4
3f D ux 3f D uy -3f D ux 3f D uy y x x y {------- + -------,-------- + -------}}} 4 4 4 4
#I[6]:: Dt[f,$$]:0 ; /* make incompressibility approximation */
#I[7]:: Fac[Map[div,@5]] /* contributions to momentum equation */
3f (ux D ux + ux D uy + uy D ux - uy D uy) x y y x #O[7]:* {{0,0},{0,0},{------------------------------------------, 2 -3f (ux D ux - ux D uy - uy D ux - uy D uy) y x x y -------------------------------------------}, 2
3f (D ux + D ux) 3f (D uy + D uy) xx yy xx yy {------------------,------------------}} 4 4