wiki:u/johannjc/scratchpad

Version 11 (modified by Jonathan, 11 years ago) ( diff )

Momentum Conserving Self Gravity Source Terms in AstroBEAR

  • q - initial state
  • qLx - left edge of x - interface in predictor
  • qLy - lower edge of y - interface in predictor
  • qRy - upper edge of y - interface in predictor
  • q2 - intermediate cell centered quantities
  • q2Lx - updated left edge of x - interface used for final riemann solve
  • fx - predictor x flux
  • f2x - final x flux
  • q3 - new values

Normal CTU:

  • qLx = Reconstruct(q), etc… (for all 6 qxx states)
  • fx=Riemann_Solve(qLx,qRx), etc… (for all 3 edges)
  • q2 = q+fx+fy+fz
  • q2Lx=qLx+fy+fz etc… (for all 6 q2xx states)
  • f2x=Riemann_Solve(q2Lx,q2Rx) (for all 3 edges)
  • q3=q+f2x+f2y+f2z

Strang split self-gravity:

  • q = q + SG(q, phi)*hdt
  • qLx = Reconstruct(q), etc… (for all 6 qxx states)
  • fx=Riemann_Solve(qLx,qRx), etc… (for all 3 edges)
  • q2 = q+fx+fy+fz
  • q2Lx=qLx+fy+fz etc… (for all 6 q2xx states)
  • f2x=Riemann_Solve(q2Lx,q2Rx) (for all 3 edges)
  • q3=q+f2x+f2y+f2z
  • q3=q3+SG(q3, phi)*hdt

Momentum conserving self-gravity

  • qLx = Reconstruct(q), etc… (for all 6 qxx states)
  • qLx(px) =qLx(px)+SG_x(q,phi)*hdt
  • qLy(py) = qLy(py)+SG_y(q,phi)*hdt
  • qLy(pz) = qLy(pz)+SG_z(q,phi)*hdt
  • fx=Riemann_Solve(qLx,qRx), etc… (for all 3 edges)
  • q2 = q+fx+fy+fz + SG(q,phi)
  • q2Lx=qLx+fy+fz etc… (for all 6 q2xx states)
  • q2Lx=q2Lx+SG_y(q,phi)+SG_z(q,phi) (for all 6 q2xx states)
  • f2x=Riemann_Solve(q2Lx,q2Rx) (for all 3 edges)
  • f2x(p)=f2x(p)+SG_PFlux_x(phi) (same for y and z)
  • q3=q+f2x+f2y+f2z+SG_EFlux_(f2x(rho),f2y(rho), f2z(rho), phi)

SG_x has two non-zero terms…

while SG_PFlux_x(phi) has only 1 non-zero term

and SG_EFlux(f2x, f2y, f2z, phi) is

Making the momentum be conserved requires recasting the gravitational force as a total differential

so we need to find such that

Since

we can substitute for and we have

which is equivalent (in 1D) to

where we can identify the equivalent momentum flux tensor as

  • In more than 1D we have
Note: See TracWiki for help on using the wiki.