irfpy.mexpvat.domain
¶
Domain of the spacecraft
Domains (solar wind, induced magnetosphere, magnetosheath) are handled.
- irfpy.mexpvat.domain.inside_bowshock(t, model=None, model_param=None)[source]¶
Return if the spacecraft is inside the bow shock.
- Parameters
t –
model – The model used. As default, use the Vignes model https://irfpy.irf.se/projects/planets/api/api_irfpy.mars.bowshock.html is used. As a default, Vignes original model is used, and only implemented
model_param – Parameter to pass to the model. Dictionary. For example, {“scale”: 1.3} will give the scale parameter to Vignes model.
- Returns
True if the MEX is inside the bow shock. It include the magnetosheath, induced magnetosphere, magnetotail, or innosphere
>>> import datetime >>> t = datetime.datetime(2009, 2, 13, 8) >>> print(inside_bowshock(t)) True
>>> t = datetime.datetime(2009, 2, 13, 12) >>> print(inside_bowshock(t)) False
>>> inside_bowshock(t, model_param={"scale": 4.5}) True
- irfpy.mexpvat.domain.inside_mpb(t, model=None)[source]¶
Return if the spacecraft is inside MPB
- Parameters
t –
model – The model used. As default, use the Vignes model https://irfpy.irf.se/projects/planets/api/api_irfpy.mars.mpb.html is used. Currently, only Vignes model is implemented
- Returns
True if the MEX is inside the MPB. It include the induced magnetosphere, magnetotail, or ionosphere.
>>> import datetime >>> t = datetime.datetime(2009, 2, 13, 9) >>> print(inside_mpb(t)) True
>>> t = datetime.datetime(2009, 2, 13, 12) >>> print(inside_mpb(t)) False
- irfpy.mexpvat.domain.inside_eclipse(t)[source]¶
Return if the spacecraft is inside the geometric eclipse.
- Parameters
t – Time
- Returns
Boolean value, True if the spacecraft is in the eclipse.
The definition of the eclipse is just geometric: \(R(=\sqrt{x^2+y^2+z^2})\ge 1 [Rm]\) and \(x<0\) and \(r(=\sqrt{y^2+z^2})\le 1 [Rm]\) where
R
is the radius andr
is the distance from x-axis.>>> import datetime
>>> t = datetime.datetime(2009, 2, 13, 10) >>> print(inside_eclipse(t)) True
>>> t = datetime.datetime(2009, 2, 13, 11) >>> print(inside_eclipse(t)) False
- irfpy.mexpvat.domain.bowshock_crossings(orbit_number, dt_survey=600, tolerance=0.1, model=None, model_param=None)[source]¶
Return the list of bowshock crossing time for the specific orbit
- Parameters
orbit_number – Orbit nubmer. Int.
dt_survey – Time difference for surveying the position. Every
dt_survey
seconds, the function calculates the position and evaluate if the spacecraft cross the boundary. If crossed, the detailed calculation is done when it is crossed, down totolerance
seconds accuracy.tolerance – The tolerance in seconds.
model – Model name, while only Vignes model is implemented.
model_param – Model parameter. {“scale”: 1.3} gives larger bowshock by 30%.
- Returns
List of bow shock crossing times
This function returns the bowshock crossing times as a list.
>>> bowshock_crossings(900) [datetime.datetime(2004, 10, 1, 17, 45, 20, 301269), datetime.datetime(2004, 10, 1, 20, 29, 27, 859863)]
>>> bowshock_crossings(900, model_param={"scale": 0.8}) [datetime.datetime(2004, 10, 1, 17, 56, 3, 807129), datetime.datetime(2004, 10, 1, 20, 6, 19, 554199)]
>>> bowshock_crossings(900, model_param={"scale": 1.2}) [datetime.datetime(2004, 10, 1, 17, 32, 27, 962402), datetime.datetime(2004, 10, 1, 20, 54, 43, 460449)]
>>> bowshock_crossings(900, model_param={"scale": 4}) # Unreasonably wide bow shock []
- irfpy.mexpvat.domain.mpb_crossings(orbit_number, dt_survey=600, tolerance=0.1)[source]¶
Return the list of MPB crossing time for the specific orbit
- Parameters
orbit_number – Orbit nubmer. Int.
dt_survey – Time difference for surveying the position. Every
dt_survey
seconds, the function calculates the position and evaluate if the spacecraft cross the boundary. If crossed, the detailed calculation is done when it is crossed, down totolerance
seconds accuracy.tolerance – The tolerance in seconds.
- Returns
List of MPB crossing times
This function returns the MPB crossing times as a list.
>>> mpb_crossings(900) [datetime.datetime(2004, 10, 1, 18, 9, 57, 449707), datetime.datetime(2004, 10, 1, 19, 16, 18, 235840)]