irfpy.cpem.cpemv2
¶
CPEMv2 model implementation.
Reference is Futaana et al., 2017 (to be submitted).
CPEMv2 is composed of the following plasma parameters.
- Charge density (
plasma_density
) - Ion velocity vector (
ion_velocity_corotation
,ion_velocity_polar
andion_velocity_radial
) - Ion temperature (
ion_temperature
) - Hot (~keV) electron density (
hot_electron_density
) - Hot (~keV) electron temperature (
hot_electron_temperature
)
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.
-
-
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.
-
-
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.
-
-
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.
-
-
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.
-
-
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.
-
-
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.
-
-
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.