INcoherent SCAtter Radar spectrum
Calculates an incoherent scatter radar spectrum based on the theory presented in Hagfors (1961) and Mace (2003).
You can install inscar via pip from PyPI:
$ pip install inscar
Please see the Modules Reference for details.
The plasma parameters that are supported natively by the program are
- Radar frequency
[Hz]
- This will also set the radar wave number
(= -4pi(radar frequency)/(speed of light))
- This will also set the radar wave number
- Magnetic field strength
[T]
- Aspect angle
[1]
- Electron temperature
[K]
- Ion temperature
[K]
- Electron collision frequency
[Hz]
- Ion collision frequency
[Hz]
- Electron mass in atomic mass units
[u]
- Ion mass in atomic mass units
[u]
- Electron number density
[m^(-3)]
- Ion number density
[m^(-3)]
- Kappa value for the kappa velocity distribution function
[1]
Custom simulation set-ups can be made by inheriting from the different classes. Say you
want a Particle
class that also carries information about the temperature of a
collection of super thermal electrons as well as some height information. You then
inherit from Particle
and decorate it with the @attr.s
object:
@attr.s
class RealDataParticle(isr.Particle):
"""Create a particle object with extra attributes."""
superthermal_temperature: float = attr.ib(
default=90000,
validator=is_positive,
on_setattr=attr.setters.validate,
)
z: int = attr.ib(default=300)
For more examples, see the assets directory.
The program support different methods of calculating the spectrum, based on how you
assume the particles to be distributed. This includes a Maxwellian distribution
(IntMaxwell
class) and a kappa distribution (IntKappa
class), in addition to any
arbitrary isotropic distribution (IntLong
class) which can take any Vdf
as
particle velocity distribution (default is VdfMaxwell
). An example showing how a new
Vdf
class can be made is given in assets (VdfRealData
).
This program was developed during my master thesis. For a more detailed explanation of the mathematical derivations and an analysis of the numerical precision of the program, please refer to the thesis found at munin.uit.no.
To contribute to the project, clone and install the full development version (uses rye for dependencies). Optionally, you may also install the pre-commit hooks to automatically format the code and run the tests before committing.
$ git clone https://github.com/engeir/inscar.git
$ cd inscar
$ rye install
$ pre-commit install
Before committing new changes to a branch you may run command
$ nox
to run the full test suite. You will need Rye and nox installed for this.