Propellants
HallThruster implements several common Hall thruster propellants, and makes it easy to implement your own. Propellants in HallThruster are instances of the Gas struct, which contains information about the atomic and thermodynamic properties of a gaseous substance. Many of these properties are functions of the others, so HallThruster provides a convenience constructor Gas(name, short_name, γ, M) which will compute the rest of the properties automatically.
HallThruster.Gas — Typestruct GasA chemical element in the gaseous state. Container for element properties used in fluid computations.
Fields
name::String: Full name of gas (i.e. Xenon)short_name::Symbol: Short name/symbol (i.e. Xe for Xenon)γ::Float64: Specific heat ratio / adiabatic indexM::Float64: Molar mass (grams/mol) or atomic mass unitsm::Float64: Mass of atom in kg
HallThruster.Gas — MethodGas(name, short_name; γ, M) -> GasInstantiate a new Gas, providing a name, short name, the adiabatic index, and the molar mass.
julia> Gas("Xenon", "Xe", γ = 5/3, M = 83.798)
XenonGases can become ionized to produce Species, which are structs containing a Gas and a charge state, Z. HallThruster uses the max_charge field of each Propellant (see Configuration) to construct a list of Species, which it then uses to load reactions from the default directory and from any user-provided directories.
HallThruster.Species — Typestruct SpeciesRepresents a gas with a specific charge state. In a plasma, different ionization states of the same gas may coexist, so we need to be able to differentiate between these.
Fields
element::HallThruster.Gas: The gas that forms the base of the speciessymbol::Symbol: The symbol of the species, i.e.Symbol(Xe(+))forSpecies(Xenon, 1)Z::Int8: The charge state of the species, i.e. Z = 1 for a singly-charged species
julia> Species(Xenon, 0)
Xe
julia> Species(Xenon, 1)
Xe(+)
julia> Species(Xenon, 3)
Xe(3+)HallThruster.Species — MethodSpecies(element::Gas, Z::Int) -> SpeciesConstruct a Species from a Gas and a charge state. You can also use the (::Gas)(Z) convenience constructor like so.
julia> Xenon(0) == Species(Xenon, 0)
trueBuilt-in propellants
HallThruster provides Gas definitions and full sets of reaction rate coefficients for the following gases
XenonKrypton
Gas definitions and partial rate coefficients are available for these gases.
Argon: Single, double, and triple ionization from neutral argon. No excitation or momentum transfer collisions.MolecularNitrogen: Single ionization and momentum transfer collisions. No dissociation or excitation.BismuthMercury
Users wishing to implement their own propellant should read Adding a new propellant.
Propellant
When specifying the propellant to use in a simulation, you use the Propellant struct. This takes both a Gas and a flow rate, as well as the neutral gas temperature and/or velocity at the anode.
HallThruster.Propellant — Typestruct PropellantDefines a propellant flowing through the thruster anode. In addition to the neutral gas being used, the user specifies the anode mass flow rate and (optionally) the maximum charge state and temperature/velocity of the gas.
Fields
gas::HallThruster.Gas: AGas. See Propellants for more. Default:Xenon.
flow_rate_kg_s::Float64: The mass flow rate of neutral atoms through the anode, in kg/s.
velocity_m_s::Float64: Neutral velocity in m/s. Default:150.0, or ifneutral_temperatureis set, that parameter is used to compute the velocity using a one-sided maxwellian flux approximation.
temperature_K::Float64: Neutral temperature in Kelvins for this propellant. Default:500.0.
ion_temperature_K::Float64: Ion temperature in Kelvins for this propellant. Default:1000.0
max_charge::Int64: Maximum ion charge state. Default: 1.