irfpy.cpem.cpemv2

CPEMv2 model implementation.

Reference is Futaana et al., 2017 (to be submitted).

CPEMv2 is composed of the following plasma parameters.

There are four functions for each parameter:

  • Reference model, only depending on the Jovi-center distance, \(R\).
  • Mean model, depending on the Jovi-center distance and the magnetic local time, \(R, LT\).
  • Percentile model, depending on the percentile (user can specify) together with above.
  • Full model, depending on the magnetic latitude, but only for Charge density.

The new approach of CPEM against other older models are the introduction of percentile model. For the percentile model, each parameter is expressed by a function of the position in a magnetic coordinate system (r, MLT) together with a percentile.

The unit for the interface are human-oriented, as follows:

  • Distance, Rj = 71492 km.
  • Angle, degrees = \(\pi\) / 180 (=0.017453) radians.
  • LT, hours, = 15 degrees.
  • Percentile, fraction (0 to 1).
  • Density, cm^-3, = 1e-6 m^-3
  • Velocity, km/s, = 1e3 m/s.

The simplest usage of CPEM is

>>> from irfpy.cpem.cpemv2 import *
>>> n = plasma_density.percentile_model(10, 2.5, 0.5)   # Density at 10 Rj, 2.5 hr, and p=0.5
>>> print('{:.2f}'.format(n))
12.69
class irfpy.cpem.cpemv2.CpemIonChargeDensity[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

CPEM/IEEE ion charge density models.

Let’s see the models at R=20 [Rj] and MLT=10 [h].

>>> ne = CpemIonChargeDensity()
>>> print('{:.3f}'.format(ne.reference_model(20)))    # Reference model at 20 Rj.
0.422
>>> print('{:.3f}'.format(ne.mean_model(20, 10)))     # Mean model
0.238
>>> print('{:.3f}'.format(ne.percentile_model(20, 10, 0.5)))   # P=50% (median) model
0.239
>>> print('{:.3f}'.format(ne.percentile_model(20, 10, 0.023)))   # P=2.3% model (-2 sigma)
0.060
>>> print('{:.3f}'.format(ne.percentile_model(20, 10, 0.977)))   # P=97.7% model (+2 sigma)
0.956
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
full_model(r, mlt, mlat, p)[source]

Ion density full model.

class irfpy.cpem.cpemv2.CpemIonTemperature[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

CPEM/IEEE ion temperature models.

Let’s see the models at R=15 [Rj] and MLT=20 [h].

>>> kTi = CpemIonTemperature()
>>> print('{:.1f}'.format(kTi.reference_model(15)))    # Reference model at 20 Rj.
379.1
>>> print('{:.1f}'.format(kTi.mean_model(15, 20)))     # Mean model
560.7
>>> print('{:.1f}'.format(kTi.percentile_model(15, 20, 0.5)))   # P=50% (median) model
559.9
>>> print('{:.1f}'.format(kTi.percentile_model(15, 20, 0.023)))   # P=2.3% model (-2 sigma)
166.0
>>> print('{:.0f}'.format(kTi.percentile_model(15, 20, 0.977)))   # P=97.7% model (+2 sigma)
1888
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
class irfpy.cpem.cpemv2.CpemIonVelCorotation[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

Corotational velocity model of CPEM.

Let’s see the models at R=10 [Rj] and MLT=7.5 [h].

>>> vc = CpemIonVelCorotation()
>>> print('{:.1f}'.format(vc.reference_model(10)))    # Reference model at 20 Rj.
116.8
>>> print('{:.1f}'.format(vc.mean_model(10, 7.5)))     # Mean model
106.1
>>> print('{:.1f}'.format(vc.percentile_model(10, 7.5, 0.5)))   # P=50% (median) model
106.8
>>> print('{:.2f}'.format(vc.percentile_model(10, 7.5, 0.023)))   # P=2.3% model (-2 sigma)
77.66
>>> print('{:.1f}'.format(vc.percentile_model(10, 7.5, 0.977)))   # P=97.7% model (+2 sigma)
147.0

The full model should return the results same sa the percentile model, disregarding the Mlat.

>>> print('{:.1f}'.format(vc.full_model(10, 7.5, -30, 0.977)))   # -30 degrees mlat, but disregarded.
147.0
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
class irfpy.cpem.cpemv2.CpemIonVelRadial[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

CPEM model for radial velocity.

>>> vr = CpemIonVelRadial()
>>> print('{:.2f}'.format(vr.reference_model(10)))    # Reference model at 20 Rj.
0.00
>>> print('{:.2f}'.format(vr.mean_model(10, 7.5)))     # Mean model
4.85
>>> print('{:.2f}'.format(vr.percentile_model(10, 7.5, 0.5)))   # P=50% (median) model
3.14
>>> print('{:.2f}'.format(vr.percentile_model(10, 7.5, 0.023)))   # P=2.3% model (-2 sigma)
-35.79
>>> print('{:.2f}'.format(vr.percentile_model(10, 7.5, 0.977)))   # P=97.7% model (+2 sigma)
42.07
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
class irfpy.cpem.cpemv2.CpemIonVelPolar[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

CPEM model for polar velocity.

Let’s see the models at R=10 [Rj] and MLT=7.5 [h].

>>> vp = CpemIonVelPolar()
>>> print('{:.2f}'.format(vp.reference_model(10)))    # Reference model at 20 Rj.
0.00
>>> print('{:.2f}'.format(vp.mean_model(10, 7.5)))     # Mean model
-17.67
>>> print('{:.2f}'.format(vp.percentile_model(10, 7.5, 0.5)))   # P=50% (median) model
-15.29
>>> print('{:.2f}'.format(vp.percentile_model(10, 7.5, 0.023)))   # P=2.3% model (-2 sigma)
-52.96
>>> print('{:.2f}'.format(vp.percentile_model(10, 7.5, 0.977)))   # P=97.7% model (+2 sigma)
22.39
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
class irfpy.cpem.cpemv2.CpemElectronDensity[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

CPEM/IEEE electron density models.

The reference model was produced by ourselves from GAL/PLS data analysis.

Let’s see the models at R=20 [Rj] and MLT=10 [h].

>>> ne = CpemElectronDensity()
>>> print('{:.4f}'.format(ne.reference_model(20)))    # Reference model at 20 Rj.
0.0235
>>> print('{:.4f}'.format(ne.mean_model(20, 10)))     # Mean model
0.0180
>>> print('{:.4f}'.format(ne.percentile_model(20, 10, 0.5)))   # P=50% (median) model
0.0180
>>> print('{:.5f}'.format(ne.percentile_model(20, 10, 0.023)))   # P=2.3% model (-2 sigma)
0.00258
>>> print('{:.3f}'.format(ne.percentile_model(20, 10, 0.977)))   # P=97.7% model (+2 sigma)
0.126
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
class irfpy.cpem.cpemv2.CpemElectronTemperature[source]

Bases: irfpy.cpem.cpemv2._CpemIEEE

CPEM/IEEE electron temperature models.

Reference model is produced by ourselves.

\[\log_{10}{kT_e} = a + br + cr^2 + dr^3\]

Let’s see the models at R=15 [Rj] and MLT=20 [h].

>>> kTe = CpemElectronTemperature()
>>> print('{:.0f}'.format(kTe.reference_model(15)))    # Reference model at 15 Rj.
3385
>>> print('{:.0f}'.format(kTe.mean_model(15, 20)))     # Mean model
2893
>>> print('{:.0f}'.format(kTe.percentile_model(15, 20, 0.5)))   # P=50% (median) model
2804
>>> print('{:.0f}'.format(kTe.percentile_model(15, 20, 0.023)))   # P=2.3% model (-2 sigma)
1038
>>> print('{:.0f}'.format(kTe.percentile_model(15, 20, 0.977)))   # P=97.7% model (+2 sigma)
7571
reference_model(r)[source]

Reference model implementation for CPEM/IEEE.

Parameters:r – The Jovi-center radius in Rj.
mean_model(r, mlt)[source]

Mean model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
percentile_model(r, mlt, p)[source]

Percentile model implementation for CPEM/IEEE.

Parameters:
  • r – The Jovi-center radius in Rj.
  • mlt – The magnetic local time in hours.
  • p – The percentile. The number should be between 0 and 1. (Not percent...)
irfpy.cpem.cpemv2.ion_charge_density = <irfpy.cpem.cpemv2.CpemIonChargeDensity object>

Ion density model.

irfpy.cpem.cpemv2.plasma_density = <irfpy.cpem.cpemv2.CpemIonChargeDensity object>

Ion density model.

irfpy.cpem.cpemv2.ion_temperature = <irfpy.cpem.cpemv2.CpemIonTemperature object>

Ion temperature model.

irfpy.cpem.cpemv2.ion_velocity_corotation = <irfpy.cpem.cpemv2.CpemIonVelCorotation object>

Ion corotation velocity model.

irfpy.cpem.cpemv2.ion_velocity_radial = <irfpy.cpem.cpemv2.CpemIonVelRadial object>

Ion radial velocity model.

irfpy.cpem.cpemv2.ion_velocity_polar = <irfpy.cpem.cpemv2.CpemIonVelPolar object>

Ion polar velocity model.

irfpy.cpem.cpemv2.hot_electron_density = <irfpy.cpem.cpemv2.CpemElectronDensity object>

Electron density model.

irfpy.cpem.cpemv2.hot_electron_temperature = <irfpy.cpem.cpemv2.CpemElectronTemperature object>

Electron temperature model.