Release notes
v0.20.0
New features
- Support for molecular propellants and more general electron impact reactions. See Adding a new propellant for more information
Internal changes
- Charges species are now printed with the charge in parentheses (i.e. Xe(2+) instead of Xe2+). This is to make the reaction format print exactly as it is parsed, and to disambiguate charged molecular propellants.
v0.19.0
Internal changes
- Refactor ion and neutral internals to use a new
FluidContainerstruct. This means that plasmas containing multiple neutral species are now supported. This work lays the groundwork for molecular propellants. - With the above changes, the performance of the code has been increased by 25-35% on average.
Propellant struct
- There is a new Propellant struct used to specify neutral gas properties at the anode.
Configuration changes
propellantis nowpropellantsand can by an array ofPropellantobjects.- Anode mass flow rates as well as neutral properties at anode (temperature, velocity, etc) are now specified inside of
Propellantobjects. When using a single propellant, we provide a backwards-compatible interface.
Postprocessing changes
We have made several changes to stabilize the public interface and better isolate it from internal implementation details.
- Added
FrameandSpeciesStatestructs. See Outputs for more information. - No longer return the internal
paramsstruct in theSolutionobject. - Deprecating the old method of indexing by symbols. Instead, users should directly access fields of the
Framestruct. A backwards-compatible interface is provided.
v0.18.7
Bug fixes
- Make
config.magnetic_field_scalework properly (it had previously done nothing, silently.)
v0.18.6
New features
- Added molecular nitrogen (
HallThruster.MolecularNitrogen) propellant along with ionization and elastic scattering cross sections.
v0.18.5
Bug fixes
- Remove debug print left in prev version
v0.18.4
New features
Anomalous transport models
A new ScaledGaussianBohm transport model has been added. This is a reparameterized version of the GaussianBohm model with non-dimensional parameters of order unity. See Anomalous transport for more details.
v0.18.3
Bug fixes
- Fix indexing error in rate coefficient calculation
- Fix massive divergence angles when ion velocity is zero or negative
v0.18.2
New features
Anomalous transport models
A new SimpleLogisticShift pressure shift model has been added. This is a simplified version of the LogisticPressureShift with one fewer parameter. See Anomalous transport for more details.
v0.18.1
Minor changes
Anomalous transport models
The pressure shift now only applies to the coefficients of the transport model as opposed to shifting the entire magnetic field. This was the pre-0.18.0 behavior.
v0.18.0
v0.18.0 is a breaking release, made as part of our effort to move toward v1.0.0 in the next few months. Users may need to update their code to avoid errors. Check out the list of changes and removals below to see how to migrate your code.
Major changes
Precompilation and load time
- We have significantly reduced our load times by removing dependencies. We have also added a significant amount of additional precompilation work to reduce the time-to-first-simulation for most users.
- With these improvements, HallThruster.jl may be suitable for use in a scripting workflow, depending on the expected run-time of your simulations.
- For many users and workflows, the total time-to-first-simulation should be just a few seconds.
Exports
Xenon, Krypton, and time_average are no longer exported. Users will need to use the fully-qualified names, i.e. HallThruster.Xenon, HallThruster.Krypton, and HallThruster.time_average to access these variables. This can be made less verbose by bringing HallThruster into scope with a shorter name:
using HallThurster: HallThruster as het
het.XenonPostprocessing changes
- The
run_simulationfunction now takes an optionalpostprocesskeyword argument, which takes aPostprocessobject. - The
Postprocessstruct allows the user to specify time-averaging, saving, and output info. Any requested postprocessing will be performed automatically after the simulation has finished and output the requested JSON file. - See Postprocessing for more information
JSON IO
JSON input and output has been significantly reworded and enhanced. See Use JSON for input and output for more information. Users of the old JSON interface will need to update their input files to conform to the new format. Some of the changes include:
- JSON inputs now map directly onto the
Configstructs used by HallThruster.jl elsewhere. The key names are now identical between the JSON input and theConfigstruct. - JSON outputs now contain all input used to run the simulation, including a
Config(under key"config") and timestepping info (under key"simulation"). - JSON outputs can be used to restart simulations, replacing the restart capability previously provided by
JLD2. - Users can provide postprocessing directives in the JSON input by providing a
"postprocessing"key in their input, following thePostprocessinginterface introduced in this update.
Python interface
We have a new python interface. See Run a simulation from python for more.
Interface changes
Configuration changes
- The following keys have been renamed to better express the expected units.
anode_Te->anode_Tevcathode_Te->cathode_Tevion_temperature->ion_temperature_Kneutral_temperature->neutral_temperature_Kbackground_neutral_temperature->background_temperature_Kbackground_pressure->background_pressure_Torrcathode_potential->cathode_coupling_voltage
- The following keys have been removed.
min_electron_temperature(now set to themin(anode_Tev, cathode_Tev))min_number_density(now set to1e6)
- The following keys have had their options changed
ionization_model: Formerly took a value of typeIonizationModel, now takes aSymbol(one of:Lookupor:Landmark)excitation_model: Formerly took a value of typeExcitationModel, now takes aSymbol(one of:Lookupor:Landmark)electron_neutral_model: Formerly took a value ofElectronNeutralModel, now takes aSymbol(one ofNone,:Lookupor:Landmark)
- See Configuration for a full list of options and default values.
Simulation changes
- A new struct
SimParamshas been created to hold timestepping and grid generation options run_simulationcan now be called asrun_simulation(config::Config, simparams::SimParams).- See Simulations for more information.
Solution changes
uhas been removed fromSolutionSolution.savevalshas been renamed toframesSolution.configcontains theConfigused to run the simulationSolution.errorcaptures any errors that are produced during a run- Retcode options have changed. The options are now
:success,:failure, and:error.:successdenotes a successful simulation, as before.:failureindicates a numerical instability, and:errorcaptures any cases in which the simulation would have thrown an exception. The error text is captured inSolution.error.
Wall loss model changes
- The parameter
αof theWallSheathmodel has been renamed toloss_scaleand has a default value of 1.0. - See Wall Loss Models for more information.
Grid generation changes
UnevenGridno longer takes a custom density function as an input.- See Grid generation for more information.
Anomalous transport model changes
ShiftedTwoZoneBohm,ShiftedGaussianBohm, andShiftedMultiBohmhave been removed.- The model
LogisticPressureShifthas been added. This takes another anom model as a parameter and applies the same pressure-dependent shift as seen in these models. - To migrate to the new system, replace
ShiftedGaussianBohmor similar withLogisticPressureShift(GaussianBohm(...), ...). - The
dzandz0parameters ofLogisticPressureShiftare now in terms of channel length rather than meters - Added the
GaussianBohmmodel - Renamed the parameters of the
ShiftedGaussianBohm/GaussianBohmmodel. The new parameters are:hall_min: the minimum Hall parameterhall_max: the maximum Hall parameterwidth: the width of the Gaussian subtraction from theBohm-like transport model.center: the center of the Gaussian subtraction
- See Anomalous transport for a full listing of anomalous transport options.
Thruster changes
Thruster.magnetic_fieldnow takes aMagneticFieldobject, which contains a filename, z-coordinates, and magnetic field values. Arbitrary functions are no longer supported. If only a filename is provided, the constructor will load the magnetic field from the provided file.B_field_SPT_100has been renamed tospt100_analytic_fieldgeometry_SPT_100has been renamed tospt100_geometry- See Thrusters for more information.
Removals
- The
IonizationModel,ExcitationModel, andElectronNeutralModelinterfaces have been removed in favor of a simplerSymbol-based lookup system. - The
GKElectronNeutralmodel has been removed entirely. - Serialization using JLD2 has been removed in favor of the JSON-based system described above.
- Plotting capabilities are no longer provided by HallThruster.jl directly.