light_time_corrections¶
Functions¶
Function for creating convergence settings for solving the light-time equation. |
|
Function for creating settings for first-order relativistic light-time corrections. |
|
|
Function for creating settings for Moyer, 2000 Eq 8.55 approximated second-order relativistic light-time corrections. |
No documentation found. |
|
No documentation found. |
|
No documentation found. |
|
No documentation found. |
|
Create IONEX-based ionospheric light time correction settings. |
|
Create VMF3 tropospheric light time correction settings. |
|
|
No documentation found. |
|
|
|
- light_time_convergence_settings(iterate_corrections: bool = False, maximum_number_of_iterations: typing.SupportsInt = 50, absolute_tolerance: typing.SupportsFloat = nan, failure_handling: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeFailureHandling = <LightTimeFailureHandling.accept_without_warning: 0>) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria¶
Function for creating convergence settings for solving the light-time equation.
Function for creating convergence settings for solving the light-time equation. Computing the light time \(s=t_{R}-t_{T}\) between two receiver \(R\) and transmitter \(T\) requires the iterative solution of the following equation:
\[t_{R} - t_{T} = c\left(|\mathbf{r}_{R}(t_{R}) - \mathbf{r}_{T}(t_{T})| + \Delta s(t_{R}, t_{T}, \mathbf{r}_{R}(t_{R}), \mathbf{r}_{T}(t_{T}))\right)\]where either the reception time \(t_{R}\) or the transmission time \(t_{T}\) is kept fixed (reference link end time). The term \(\Delta s\) contains any deviations in the light-time from straight-line propagation at speed of light (relativistic corrections, media corrections, etc.). The algorithm starts at \(t_{R}=t_{T}\), and uses this to evaluate the right-hand side of the above equation. This leads to a new value of \(t_{R}\) or \(t_{T}\) (depending on which is kept fixed) and the right-hand side is re-evaluated in a new iteration. The input to this function defines the settings for when the iteration will terminate.
- Parameters:
iterate_corrections (bool, default = False) – Boolean denoting whether the terms \(\Delta s\) are recomputed at each iteration or not. If false, the corrections are calculated only on the first iteration. Afterwards, the value is kept fixed until convergence. Once preliminarily converged, the algorithm recomputes \(\Delta s\), and continues the iteration (until proper convergence) while now recomputing \(\Delta s\) each iteration. Setting this input to false is typically safe, and is computationally more efficient.
maximum_number_of_iterations (int, default = 50) – Maximum number of iterations taken by the algorithm. If this number of iterations is reached without convergence (as defined by
absolute_toleranceinput), the behaviour of the algorithm is defined by thefailure_handlinginput.absolute_tolerance (float, default = nan) – Difference in \(t_{R}-t_{T}\) between two consecutive iterations below which the algorithm is considered to be converged. Default value is nan, which means the default value is taken. The default value depends on the time representation used (1 ps for float; 1 fs for Time class)
failure_handling (LightTimeFailureHandling, default = accept_without_warning) – Input defines behaviour when failing to converge within the required number of iterations. NOTE: the default value should be overridden for high-accuracy applications
- Returns:
Instance of the
LightTimeConvergenceCriteriawith the required settings.- Return type:
Examples
# Code Snippet to showcase the use of the light_time_convergence_settings function from tudatpy.estimation.observable_models_setup import light_time_corrections # The light_time_convergence_settings function can be used with default inputs as just: light_time_convergence_settings = light_time_corrections.light_time_convergence_settings() # A LightTimeConvergenceCriteria object is returned print(light_time_convergence_settings) # Users can also specify the following input arguments: # iterate_corrections, maximum_number_of_iterations, absolute_tolerance, failure_handling. # Let's set the failure_handling argument to LightTimeFailureHandling.print_warning_and_accept (default was LightTimeFailureHandling.accept_without_warning) light_time_convergence_settings = light_time_corrections.light_time_convergence_settings( failure_handling = light_time_corrections.LightTimeFailureHandling.print_warning_and_accept ) # Again, a LightTimeConvergenceCriteria object is returned print(light_time_convergence_settings)
- first_order_relativistic_light_time_correction(perturbing_bodies: collections.abc.Sequence[str]) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
Function for creating settings for first-order relativistic light-time corrections.
Function for creating settings for first-order relativistic light-time corrections: These corrections account for the delay in light travel time caused by stationary point masses, calculated up to \(c^{-2}\) according to general relativity (e.g., Moyer, 2000 Eq 8.55). A key consideration in the model is the time at which the states of the perturbing bodies are evaluated. This depends on their involvement in the observation link ends:
Perturbing Body as a Link End: If the perturbing body (e.g., Earth) is directly involved in the observation (e.g., as the location of a transmitter or receiver):
The body’s state is evaluated at the transmission time if it acts as the transmitter.
The body’s state is evaluated at the reception time if it acts as the receiver.
Perturbing Body Not as a Link End: If the perturbing body is not part of the observation link ends, its state is evaluated at the midpoint time between the transmission and reception events.
- Parameters:
perturbing_bodies (List[str]) – A list containing the names of the bodies due to which the light-time correction is to be taken into account.
- Returns:
Instance of the
LightTimeCorrectionSettingsconfigured to include first-order relativistic light-time corrections.- Return type:
Examples
# Code Snippet to showcase the use of the first_order_relativistic_light_time_correction function from tudatpy.estimation.observable_models_setup import light_time_corrections, links # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # Create a Link Definition Object from link_ends dictionary Link_Definition_Object = links.LinkDefinition(link_ends) # The function first_order_relativistic_light_time_correction() requires a list of strings (perturbing body/bodies) as input # and a boolean value for bending (default is True). perturbing_body = ['Earth'] doppler_observation_settings = light_time_corrections.first_order_relativistic_light_time_correction(perturbing_body) # Show that it returns a LightTimeCorrectionSettings object. print(doppler_observation_settings)
- approximated_second_order_relativistic_light_time_correction(perturbing_bodies: collections.abc.Sequence[str]) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
Function for creating settings for Moyer, 2000 Eq 8.55 approximated second-order relativistic light-time corrections.
Function for creating settings for approximated second-order relativistic light-time corrections: These corrections account for the delay in light travel time caused by stationary point masses, calculated up to \(c^{-2}\) according to general relativity ( Moyer, 2000 Eq 8.55; correction term for Sun) and it includes the bending of light due to the perturbing body. A key consideration in the model is the time at which the states of the perturbing bodies are evaluated. This depends on their involvement in the observation link ends:
Perturbing Body as a Link End: If the perturbing body (e.g., Earth) is directly involved in the observation (e.g., as the location of a transmitter or receiver):
The body’s state is evaluated at the transmission time if it acts as the transmitter.
The body’s state is evaluated at the reception time if it acts as the receiver.
Perturbing Body Not as a Link End: If the perturbing body is not part of the observation link ends, its state is evaluated at the midpoint time between the transmission and reception events.
- Parameters:
perturbing_bodies (List[str]) – A list containing the names of the bodies due to which the light-time correction is to be taken into account.
- Returns:
Instance of the
LightTimeCorrectionSettingsconfigured to include approximated second-order relativistic light-time corrections.- Return type:
Examples
# Code Snippet to showcase the use of the first_order_relativistic_light_time_correction function from tudatpy.estimation.observable_models_setup import light_time_corrections, links # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # Create a Link Definition Object from link_ends dictionary Link_Definition_Object = links.LinkDefinition(link_ends) # The function first_order_relativistic_light_time_correction() requires a list of strings (perturbing body/bodies) as input perturbing_body = ['Earth'] doppler_observation_settings = light_time_corrections.approximated_second_order_relativistic_light_time_correction(perturbing_body) # Show that it returns a LightTimeCorrectionSettings object. print(doppler_observation_settings)
- dsn_tabulated_tropospheric_light_time_correction(file_names: collections.abc.Sequence[str], body_with_atmosphere_name: str = 'Earth', mapping_model: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.TroposphericMappingModel = <TroposphericMappingModel.niell: 1>) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
No documentation found.
- saastamoinen_tropospheric_light_time_correction(body_with_atmosphere_name: str = 'Earth', mapping_model: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.TroposphericMappingModel = <TroposphericMappingModel.niell: 1>, water_vapor_partial_pressure_model: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.WaterVaporPartialPressureModel = <WaterVaporPartialPressureModel.tabulated: 0>) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
No documentation found.
- dsn_tabulated_ionospheric_light_time_correction(file_names: collections.abc.Sequence[str], spacecraft_name_per_id: collections.abc.Mapping[SupportsInt, str] = {}, quasar_name_per_id: collections.abc.Mapping[SupportsInt, str] = {}, reference_frequency: SupportsFloat = 2295000000.0, body_with_atmosphere_name: str = 'Earth') tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
No documentation found.
- jakowski_ionospheric_light_time_correction(ionosphere_height: SupportsFloat = 400000.0, first_order_delay_coefficient: SupportsFloat = 40.3, solar_activity_data_path: str = '/home/docs/.tudat/resource/space_weather/sw19571001.txt', geomagnetic_pole_latitude: SupportsFloat = 1.4119713648634127, geomagnetic_pole_longitude: SupportsFloat = -1.2671090369478832, use_utc_for_local_time_computation: bool = False, body_with_atmosphere_name: str = 'Earth') tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
No documentation found.
- ionex_ionospheric_light_time_correction(body_with_ionosphere_name: str, ionosphere_height: SupportsFloat, first_order_delay_coefficient: SupportsFloat = 40.3) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
Create IONEX-based ionospheric light time correction settings.
- vmf3_tropospheric_light_time_correction(body_with_atmosphere_name: str = 'Earth', use_gradient_correction: bool = True, tropospheric_mapping_model: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.TroposphericMappingModel = <TroposphericMappingModel.vmf3: 2>) tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
Create VMF3 tropospheric light time correction settings.
- inverse_power_series_solar_corona_light_time_correction(coefficients: collections.abc.Sequence[SupportsFloat] = [130000000000000.0, 500000000000.0], positive_exponents: collections.abc.Sequence[SupportsFloat] = [6.0, 2.0], delay_coefficient: SupportsFloat = 40.3, sun_body_name: str = 'Sun') tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings¶
No documentation found.
- set_vmf_troposphere_data(data_files: collections.abc.Sequence[str], file_has_meteo: bool, file_has_gradient: bool, bodies: tudatpy.kernel.dynamics.environment.SystemOfBodies, set_troposphere_data: bool = True, set_meteo_data: bool = True, interpolator_settings: tudatpy.kernel.math.interpolators.InterpolatorSettings = <tudatpy.kernel.math.interpolators.InterpolatorSettings object at 0x7a62217f7830>) None¶
- set_ionosphere_model_from_ionex(data_files: collections.abc.Sequence[str], bodies: tudatpy.kernel.dynamics.environment.SystemOfBodies, interpolator_settings: tudatpy.kernel.math.interpolators.InterpolatorSettings = None) None¶
Enumerations¶
Enumeration of behaviour when failing to converge light-time with required settings. |
|
No documentation found. |
|
No documentation found. |
- class LightTimeFailureHandling¶
Enumeration of behaviour when failing to converge light-time with required settings.
Examples
# Code snippet to print all available Light Time Failure Handling Types from tudatpy.estimation.observable_models_setup import light_time_corrections num_LightTimeFailureHandling_types = len(light_time_corrections.LightTimeFailureHandling.__members__) print(f'The length of all available Tudatpy Light Time Failure Handling Types is: {num_LightTimeFailureHandling_types}') # Print all available Observation Viability Types using the "name" property for i in range(num_LightTimeFailureHandling_types): print(i, light_time_corrections.LightTimeFailureHandling(i).name)
Members:
accept_without_warning
print_warning_and_accept
throw_exception
- property name¶
Classes¶
Base class to define criteria of light time convergence. |
|
Base class to define light time correction settings. |
|
- class LightTimeConvergenceCriteria¶
Base class to define criteria of light time convergence.
Base class to define criteria of light time convergence. This class is not used for calculations of corrections, but is used for the purpose of defining the light time convergence criteria. Specific light time convergence criteria must be defined using an object derived from this class. Instances of this class are typically created via the
light_time_convergence_settings()function.Examples
# Code snippet to show the creation of a LightTimeConvergenceCriteria object from tudatpy.estimation.observable_models_setup import light_time_corrections # Create Default Light Time Convergence Settings (no args specified = setting default arguments) light_time_convergence_settings = light_time_corrections.light_time_convergence_settings() # Show that it is an LightTimeConvergenceCriteria object. print(light_time_convergence_settings)
- class LightTimeCorrectionSettings¶
Base class to define light time correction settings.
Base class to define light time correction settings. This class is not used for calculations of corrections, but is used for the purpose of defining the light time correction properties. Specific light time correction settings must be defined using an object derived from this class.
Instances of this class are typically created via the
first_order_relativistic_light_time_correction()functionExamples
# Code snippet to show the creation of a LightTimeCorrectionSettings object from tudatpy.estimation.observable_models_setup import light_time_corrections, links # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # Create a Link Definition Object from link_ends dictionary Link_Definition_Object = links.LinkDefinition(link_ends) # Case 1: perturbing body (Earth) involved in the observations # In this case, Earth is a receiver, so the body’s state will be evaluated at the reception time. perturbing_body = ['Earth'] doppler_observation_settings = light_time_corrections.first_order_relativistic_light_time_correction(perturbing_body) # Show that it is a LightTimeCorrectionSettings object. print(doppler_observation_settings) # Case 2: perturbing body (Sun) not involved in the observations # In this case, the body's state will be evaluated at the midpoint time between the transmission and reception events. perturbing_body = ['Sun'] # Use: light_time_corrections.first_order_relativistic_light_time_correction to create a LightTimeCorrectionSettings object # Note: first_order_relativistic_light_time_correction only requires the perturbing list of bodies to be passed as arguments doppler_observation_settings = light_time_corrections.first_order_relativistic_light_time_correction(perturbing_body) # Show that it is an LightTimeCorrectionSettings object. print(doppler_observation_settings.transmitter_proper_time_rate_settings) print(dir(doppler_observation_settings))
- class JakowskiVtecCalculator¶
- __init__(self: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.JakowskiVtecCalculator, sun_declination_function: collections.abc.Callable[[SupportsFloat], float], f10p7_function: collections.abc.Callable[[SupportsFloat], float], use_utc_time_for_local_time: bool = False) None¶
- calculate_vtec(self: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.JakowskiVtecCalculator, time: SupportsFloat, sub_ionospheric_point: Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']) float¶
- class GlobalIonosphereModelVtecCalculator¶
- __init__(self: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.GlobalIonosphereModelVtecCalculator, ionosphere_model: tudatpy.kernel.dynamics.environment.IonosphereModel) None¶
- calculate_vtec(self: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.GlobalIonosphereModelVtecCalculator, time: SupportsFloat, sub_ionospheric_point: Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']) float¶