Anomalous transport

HallThruster has a few anomalous transport models built in and allows users to define their own. This page describes these models and the process by which algebraic and multi-equation transport models can be added by the user.

Built-in Models

HallThruster.BohmType
Bohm(c) <: AnomalousTransportModel

Model where the anomalous collision frequency scales with the electron cyclotron frequency as νan = c * ωce.

Fields

  • c::Float64: Nonnegative inverse Hall parameter.
source
HallThruster.TwoZoneBohmType
TwoZoneBohm(c1, c2) <: AnomalousTransportModel

Model where the anomalous collision frequency has two values: c1 * ωce inside the channel and c2 * ωce outside it. The transition between these values is smoothed over params.transition_length.

Fields

  • c1::Float64: Nonnegative inverse Hall parameter inside the channel.

  • c2::Float64: Nonnegative inverse Hall parameter outside the channel.

source
HallThruster.ScaledGaussianBohmType
ScaledGaussianBohm(anom_scale, barrier_scale, width, center) <: AnomalousTransportModel

Model in which the anomalous collision frequency is Bohm-like (νan ~ ω_ce), except in a Gaussian-shaped region defined centered on z = center, where the collision frequency is lower. Reparameterized version of the GaussianBohm model to make parameters non-dimensional and closer to O(1)

Fields

  • anom_scale::Float64: The maximum inverse hall parameter. Must be positive.

  • barrier_scale::Float64: The factor by which transport is reduced by the baseline value at the center of the trough, must be in [0,1].

  • width::Float64: The standard deviation of the Gaussian trough, in channel lengths. Must be positive.

  • center::Float64: The axial position of the mean of the Gaussian trough, in channel lengths. Must be positive.

source
HallThruster.GaussianBohmType
GaussianBohm(hall_min, hall_max, center, width) <: AnomalousTransportModel

Model in which the anomalous collision frequency is Bohm-like (νan ~ ωce), with a Gaussian trough centered at center. The inverse Hall parameter is hall_max far from the trough and hall_min * hall_max at its center.

Fields

  • hall_min::Float64: Fraction of hall_max retained at the trough center; must be in [0, 1].

  • hall_max::Float64: Inverse Hall parameter far from the trough; must be positive.

  • center::Float64: Finite axial position of the center of the Gaussian trough, in meters.

  • width::Float64: Positive standard deviation of the Gaussian trough, in meters.

source
HallThruster.MultiLogBohmType
MultiLogBohm(zs, cs) <: AnomalousTransportModel

Model similar to that employed in Hall2De, where the anomalous collision frequency is Bohm-like (i.e. νan(z) = c(z) * ωce(z)) and z is in meters.

The function c(z) is defined by a sequence of nodes (z, c) provided by the user. At z = z[1], c(z) = c[1], and so forth.

At z[i] < z < z[i+1], log(c) is defined by linearly interpolating between log(c[i]) and log(c[i+1]).

For z < z[1], c = c[1] and for z > z[end], c(z) = c[end].

The zs values must be finite and strictly increasing. The cs values must be finite and positive because their logarithms are interpolated. Both arrays must be nonempty and have the same length.

Fields

  • zs::Vector{Float64}: Finite, strictly increasing axial node positions in meters.

  • cs::Vector{Float64}: Positive inverse Hall parameters at the axial nodes.

source
HallThruster.SimpleLogisticShiftType
SimpleLogisticShift(model, shift_length, midpoint_pressure, slope)

A wrapper model that allows a transport profile to shift axially in response to changes in background pressure. As with LogisticPressureShift, the displacement/shift of the transport profile follows a logistic curve. However, the parameterization is different, so that the shift is zero when the background pressure is zero. As such, it does not have a z0 parameter.

Fields

  • model::HallThruster.AnomalousTransportModel: An AnomalousTransportModel
  • shift_length::Float64: Scale of the upstream displacement in response to increasing pressure, relative to the discharge channel length. The asymptotic displacement magnitude is shift_length / (1 + exp(-slope)). Must be positive.
  • midpoint_pressure::Float64: The pressure at the midpoint of the shift, in Torr. Defaults to 25e-6 Torr, which gives good fits for the H9 and SPT-100.
  • slope::Float64: The slope of the pressure response curve. Defaults to 2, which gives good fits for the H9 and SPT-100.
source
HallThruster.LogisticPressureShiftType
LogisticPressureShift(model, z0, dz, pstar, alpha)

A wrapper model that allows a transport profile to shift axially in response to changes in background pressure. The displacement/shift of the transport profile follows a logistic curve.

Fields

  • model::HallThruster.AnomalousTransportModel: An anomalous transport model
  • z0::Float64: Dimensionless shift offset, scaled by the channel length. Must be finite.
  • dz::Float64: The shift amplitude, scaled by the channel length. Must be finite.
  • pstar::Float64: The positive pressure scale in Torr.
  • alpha::Float64: Shape parameter for the pressure-displacement response curve; must be greater than 1.
source

The AnomalousTransportModel interface

Users defining their own transport model will need first define a model that subtypes AnomalousTransportModel. They will then need to provide definitions for the following methods

HallThruster.num_anom_variablesFunction
num_anom_variables(::AnomalousTransportModel)::Int

The number of variable arrays that should be allocated for the provided anomalous transport model. These arrays are used to save state beyond the anomalous collision frequency, and are useful for defining more complex anomalous transport models. If not defined by the user, this defaults to zero.

source

Additionally, they will need to define a function that allows the model to be called with the following arguments.

# replace <:AnomalousTransportModel with ::MyModel, where MyModel is the name of your model.
(model<:AnomalousTransportModel)(nu_an, params, config)

This function should operate in-place on nu_an. See Adding an anomalous transport model for a guide on implementing new models.