resitiveOperator (1d, 2d, 3d)

The resistiveOperator computes sources terms for the MHD equations using a conservative least squares gradient method:

\[\notag \begin{align} \mathcal{S} \left(\mathbf{w} \right) = \left[ \begin{array}{c} S _{E} \left(\mathbf{w} \right) \\ S _{\mathbf{B}} \left(\mathbf{w} \right) \end{array} \right] = \left[ \begin{array}{c} \nabla \cdot \left( \mu^{-1}_{0} \mathbf{E}_{\mathrm{Extended}} \times \mathbf{B} \right) \\ \nabla \times \mathbf{E}_{\mathrm{Extended}} \end{array} \right] \\ \mathbf{E}_{\mathrm{Extended}} = \mu^{-1}_{0} \left[ \eta_{\mathrm{Ohmic}} \nabla \times \mathbf{B} - \eta_{\mathrm{Hall}} \left( \nabla \times \mathbf{B} \right) \times \mathbf{B} \right] \\ \eta_{\mathrm{Hall}} = -\left( \frac{\rho Q Z}{m_{\mathrm{ion}}} \right)^{-1} \end{align}\]

Here, \(\eta_{\mathrm{Ohmic}}\) is the Ohmic resistvity, \(\eta_{\mathrm{Hall}}\) is the Hall coefficient, \(rho\) is the fluid density, \(Q\) is the charge on a proton, \(Z\) is the ion charge state and \(m_{\mathrm{ion}}\) is the ion mass.


in (string vector of 4, required)
Magnetic field (nodalArray, 3-components, required)
  1. \(B_{\hat{\mathbf{i}}} = \mathbf{B} \cdot \hat{\mathbf{i}}\): magnetic field in the \(\hat{\mathbf{i}}\) direction
  2. \(B_{\hat{\mathbf{j}}} = \mathbf{B} \cdot \hat{\mathbf{j}}\): magnetic field in the \(\hat{\mathbf{j}}\) direction
  3. \(B_{\hat{\mathbf{k}}} = \mathbf{B} \cdot \hat{\mathbf{k}}\): magnetic field in the \(\hat{\mathbf{k}}\) direction
Ohmic Resistivity (nodalArray, 1-components, optional)
Scalar ohmic resistivity, \(\eta_{\mathrm{Ohmic}}\); required if enableOhmicTerm = true (see below).
Mass density (nodalArray, 1-components, optional)
Fluid mass density, \(\rho\); required if enableHallTerm = true (see below).
Charge State (nodalArray, 1-components, optional)
Fluid charge state, \(Z\); required if enablePartiallyIonized = true (see below).


The resistiveOperator updater accepts the parameters below, in addition to those required by Updater:

orderAccuracy (integer, required)
Order of the polynomial that is used to form the operator. Choice of 1, 2 or 3 corresponding, respectively to first, second and third order accuracy. The appropriate choice of order varies on the problem type and the mesh used.
numberOfInterpolationPoints (integer, required)

Number of points to be considerd for the least squares fit. This parameter varies from mesh to mesh and should be determined by computing a known function on the mesh.

The numberOfInterpolationPoints must be greater than (or equal to) the number of coefficients in the polynomial approximation. This means that in 1d the value is 4, in 2D the value is at least 6 and in 3D the value is at least 10.

These choices do not guarantee that a matrix inverse will be found. The following values though appear to be adequate in general: in 1D 4; in 2D 8 and in 3D 20.

coefficient (float, required)
Constant floating point value, c that multiplies the output of the diffusion updater.
permeability (float, required)
The permeability of free space, \(\mu_0\).
enableOhmicTerm (bool, optional)
Include Ohmic resistivity, \(\eta_{\mathrm{Ohmic}} \nabla \times \mathbf{B}\) in the extended MHD electric field. Default: true.
enableHallTerm (bool, optional)

Include the Hall effect, \(\eta_{\mathrm{Hall}} \left( \nabla \times \mathbf{B} \right) \times \mathbf{B}\) in the extended MHD electric field. Default: false.

If enableHallTerm = true, then the following parameters are available:

ionMass (float, optional) The mass of an ion. Default value is 1.0.

fundamentalCharge (float, optional) The charge of a proton. Default value is 1.0.

enablePartiallyIonized (bool, optional) Whether to include the ion ionization state in the Hall effect. Default is false, in which case the ion is assumed to be singly ionized.


<Updater computeResistiveSources>
  kind = resistiveOperator2d
  onGrid = domain

  coefficient = 1.0
  permeability = 1.0

  numberOfInterpolationPoints = 8

  in = [magneticField, resistivity]
  out = [source]