tenMomentFluidSrc

Computes the “lorentz force” for a 10 moment fluid given, particle mass, charge and permittivity.

\[\notag \begin{align} s=\left( \begin{array}{c} 0 \\ r\,\rho\left(E_{x}+u_{y}B_{z}-u_{z}B_{y}\right)\\ r\,\rho\left(E_{y}+u_{z}B_{x}-u_{x}B_{z}\right)\\ r\,\rho\left(E_{z}+u_{x}B_{y}-u_{y}B_{x}\right)\\ 2\,r\,\rho\,u_{x}E_{x}+2r\left(B_{z}\mathbf{P_{x\,y}}-B_{y}\mathbf{P_{x\,z}}\right)\\ r\,\rho\left(u_{x}E_{y}+u_{y}E_{x}\right)+r\left(B_{z}\mathbf{P_{y\,y}}+B_{y}\mathbf{P_{y\,z}}-B_{z}\mathbf{P_{x\,x}}+B_{x}\mathbf{P_{x\,z}}\right)\\ r\,\rho\left(u_{x}E_{z}+u_{z}E_{x}\right)+r\left(B_{z}\mathbf{P_{y\,z}}+B_{y}\mathbf{P_{x\,x}}-B_{y}\mathbf{P_{x\,x}}-B_{x}\mathbf{P_{y\,y}}\right)\\ 2r\,\rho\,u_{y}E_{y}+2r\left(B_{x}\mathbf{P_{y\,z}}-B_{z}\mathbf{P_{x\,y}}\right)\\ r\,\rho\left(u_{y}E_{z}+u_{z}E_{y}\right)+r\left(B_{y}\mathbf{P_{x\,y}}-B_{z}\mathbf{P_{x\,z}}+B_{x}\mathbf{P_{z\,z}}-B_{x}\mathbf{P_{y\,y}}\right)\\ 2r\,\rho\,u_{z}E_{z}+2r\left(B_{y}\mathbf{P_{x\,z}}-B_{x}\mathbf{P_{y\,z}}\right)\\ \end{array} \right) \end{align}\]

where \(q\) is the species charge, \(m\) is the species mass \(\epsilon_{0}\) is the permittivity, \(\rho\) is the fluid mass density, \(u_{x}\) is the fluid x velocity, \(u_{y}\) is the fluid y velocity, \(u_{z}\) is the fluid z velocity, \(E_{x}\) is the x electric field, \(E_{y}\) is the y electric field, \(E_{z}\) is the z electric field, \(B_{x}\) is the x magnetic field, \(B_{y}\) is the y magnetic field and \(B_{z}\) is the z magnetic field. \(\mathbf{P_{i\,j}}=P_{i\,j}+\rho\,u_{i}u_{j}\) with \(P_{i\,j}\) the pressure tensor and \(\rho\) the mass density and \(r=q/m\) the charge to mass ratio.

Parameters

mass (float)
The mass of the fluid species
charge (float)
The charge of the fluid species
type (string, default=`unsplit`)
One of either split or unsplit

Data

inputVariables (string vector)

1st Variable (nodalArray)

  1. \(\rho\) mass density
  2. \(\rho\,u_{x}\) x momentum density
  3. \(\rho\,u_{y}\) y momentum density
  4. \(\rho\,u_{z}\) z momentum density
  5. \(\rho\,u_{x}^{2}+P_{x\,x}\) xx energy density
  6. \(\rho\,u_{x}\,u_{y}+P_{x\,y}\) xy energy density
  7. \(\rho\,u_{x}\,u_{z}+P_{x\,z}\) xz energy density
  8. \(\rho\,u_{y}^{2}+P_{y\,y}\) yy energy density
  9. \(\rho\,u_{y}\,u_{z}+P_{y\,z}\) yz energy density
  10. \(\rho\,u_{z}^{2}+P_{z\,z}\) zz energy density

2nd Variable (nodaArray)

  1. \(E_{x}\) x electric field
  2. \(E_{y}\) y electric field
  3. \(E_{z}\) z electric field
  4. \(B_{x}\) x magnetic field
  5. \(B_{y}\) y magnetic field
  6. \(B_{z}\) z magnetic field

Parent Updater Data

in (string vector, required)

The nodalArrays should match the inputVariables in the source block.

1st Variable (nodalArray)

  1. \(\rho\) mass density
  2. \(\rho\,u_{x}\) x momentum density
  3. \(\rho\,u_{y}\) y momentum density
  4. \(\rho\,u_{z}\) z momentum density
  5. \(\rho\,u_{x}^{2}+P_{x\,x}\) xx energy density
  6. \(\rho\,u_{x}\,u_{y}+P_{x\,y}\) xy energy density
  7. \(\rho\,u_{x}\,u_{z}+P_{x\,z}\) xz energy density
  8. \(\rho\,u_{y}^{2}+P_{y\,y}\) yy energy density
  9. \(\rho\,u_{y}\,u_{z}+P_{y\,z}\) yz energy density
  10. \(\rho\,u_{z}^{2}+P_{z\,z}\) zz energy density

2nd Variable (nodaArray)

  1. \(E_{x}\) x electric field
  2. \(E_{y}\) y electric field
  3. \(E_{z}\) z electric field
  4. \(B_{x}\) x magnetic field
  5. \(B_{y}\) y magnetic field
  6. \(B_{z}\) z magnetic field
out (string vector, required)
The output nodalArray is a length 10 vector, but the first component is 0 so that it works simply as a fluid source for the ten moment equations.

Example

<Updater hyperIons>
  kind = classicMuscl2d
  onGrid = domain
  timeIntegrationScheme = none
  numericalFlux = hlleFlux
  preservePositivity = true
  limiter = [mc,none]

  variableForm = conservative

  in = [ions, em]
  out = [ionsNew]

  cfl = CFL
  equations = [euler]
  sources = [lorentz]

  <Equation euler>
    kind = tenMomentEqn
    basementDensity = BASEMENT_DENSITY
    basementPressure = BASEMENT_PRESSURE
  </Equation>

  <Source lorentz>
    kind = tenMomentFluidSrc
    type = split
    inputVariables = [ions, em]
    mass = ION_MASS
    charge = ION_CHARGE
  </Source>

</Updater>