Boltzmann equation, conservation laws
Hermite polynomial expansions
Equilibrium distribution
probability distribution function
Force-free Boltzmann equation (dimensionless)
Conservation laws
Definition from generating (weight) function
In[1]:=
omega[x_] = Exp[-x^2/2]/Sqrt[2Pi]
In[2]:=
H[n_,x_]:=Expand[(-1)^n/omega[x] D[omega[x],{x,n}]];
Table[H[n,x],{n,0,5}]
In[3]:=
HHd1=Table[Integrate[omega[x] H[i,x] H[j,x],{x,-Infinity,Infinity}],
{i,0,4},{j,0,4}] // MatrixForm
In[4]:=
Define multivariate generating function
In[4]:=
omega[x_,y_,z_] = Exp[-(x^2+y^2+z^2)/2]/(2Pi)^(3/2)
In[5]:=
In[5]:=
H[n_,i_,j_,k_] :=
Simplify[(-1)^n/omega[x,y,z] D[omega[x,y,z],{x,i},{y,j},{z,k}]];
H[n_]:= H[n] = DeleteCases[Flatten[Table[If[i+j+k==n,H[n,i,j,k],{}],
{k,0,n},{j,0,n},{i,0,n}]],{}];
H[0]
In[6]:=
H[1]
In[7]:=
H[2]
In[8]:=
H[3]
In[9]:=
Seek Hermite expansion of equilibrium function ()
of same form as
Compute coefficients , (scale to thermal velocity)
In[9]:=
aeq[n_] := aeq[n] = Module[{Hn,an,nH,HnE,inf,st},
Hn=H[n]; nH=Length[Hn]; inf=Infinity; st=Sqrt[theta];
HnE = Hn /. {x->st r + u, y->st s + v, z->st t + w};
an=Table[Integrate[ omega[r,s,t] HnE[[k]],
{r,-inf,inf},{s,-inf,inf},{t,-inf,inf}],{k,1,nH}];
Return[rho an] ];
Aeq={aeq[0],aeq[1]}
In[10]:=
AppendTo[Aeq,aeq[2]]
In[11]:=
Simplify[Aeq[[3]][[1]]+Aeq[[3]][[3]]+Aeq[[3]][[6]]]
In[12]:=
In[12]:=
AppendTo[Aeq,aeq[3]];
Aeq[[1]]
In[13]:=
Aeq[[2]]
In[14]:=
Aeq[[3]]
In[15]:=
Aeq[[4]]
In[16]:=
First three terms of Hermite expansion correspond to conserved quantities
In[16]:=
vRules = {x->xi, y->eta, z->zeta};
feqH[xi_,eta_,zeta_] = omega[xi,eta,zeta] Sum[aeq[n].H[n]/n! /. vRules, {n,0,2}]
In[18]:=
inf=Infinity;
Integrate[feqH[xi,eta,zeta],{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[19]:=
Integrate[feqH[xi,eta,zeta] xi,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[20]:=
Integrate[feqH[xi,eta,zeta] eta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[21]:=
Integrate[feqH[xi,eta,zeta] zeta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[22]:=
In[23]:=
Integrate[feqH[xi,eta,zeta] xi xi,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[24]:=
Integrate[feqH[xi,eta,zeta] eta eta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[25]:=
Integrate[feqH[xi,eta,zeta] zeta zeta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[26]:=
Integrate[feqH[xi,eta,zeta] xi eta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[27]:=
Integrate[feqH[xi,eta,zeta] xi zeta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
In[28]:=
Integrate[feqH[xi,eta,zeta] eta zeta,{xi,-inf,inf},{eta,-inf,inf},{zeta,-inf,inf}]
Verify ,
In[29]:=
V={u,v,w}; a0[1] = aeq[1] /. rho -> Subscript[rho,0]
In[30]:=
a0[2] = Outer[Times,a0[1],V]
In[31]:=
aeq[2] /. theta->1
In[32]:=
Third-order
In[32]:=
a0[3] = DeleteDuplicates[Flatten[Outer[Times,a0[2],V]]]
In[33]:=
aeq[3] /. theta->1
In[34]:=
,
In[34]:=
H[2,x]
In[35]:=
Consider a discrete velocity set . The Hermite expansion of the Maxwell-Boltzmann distribution up to second order is
Evaluate the approximation for discrete velocity
In[39]:=
Q[xi_,eta_,zeta_]=Simplify[feqH[xi,eta,zeta]/omega[xi,eta,zeta]/rho]
In[47]:=
Q[xi,0,0] /. theta->1
In[48]:=
For a discrete set of velocities the discrete Boltzmann equation is
Step 1 of operator splitting, ,
Step 2 of operator splitting
In[50]:=
Simplify[DSolve[{fi'[t]==-(fi[t]-fieq)/tau,fi[0]==fi0},fi[t],t]]
In[51]:=