radiation_pressure¶

This module contains a set of factory functions for setting up the radiation pressure models of bodies in an environment, including relevant models solar luminosity, solar system body albedo and emissivity, spacecraft surface reaction to radiation pressure.

The main interfaces with Tudat are the radiation_source_settings and radiation_pressure_target_settings attributes of the body settings, which define settings for radiation pressure source and target settings of a body. The functions in this submodule are used to create these settings objects.. When creating a body (typically using the create_system_of_bodies() function), objects of type RadiationPressureTargetModel and RadiationPressureSourceModel (or a derived class) are created and added to the associated Body object based on the settings objects, which can be retrieved using the radiation_pressure_source_model and radiation_pressure_target_models attributes.

Note that, while a body can have only a single source model (which may include multiple contributions such as albedo and planetary radiation pressure), a body can have multiple target models, and the target model that is used can be specified when choosing the specific radiation_pressure() acceleration

For isotropic source models, the isotropic_radiation_source() is used, which requires an input of type LuminosityModelSettings (or derived class) to define an irradiance model. For bodies with a variable emission over the surface (albedo, infrared), the panelled_extended_radiation_source() model is used, which requires a list of PanelRadiosityModelSettings (or derived classes) to define an irradiance model.

More details on the link between different aspects of radiation pressure in Tudat are described on a dedicated page. in the user guide.

Functions¶

constant_luminosity(luminosity)

Function for creating constant radiation source luminosity settings.

irradiance_based_constant_luminosity(...)

Function for creating source luminosity settings based on the irradiance at a reference distance.

time_variable_luminosity(luminosity_function)

Function for creating time-variable radiation source luminosity settings.

irradiance_based_time_variable_luminosity(...)

Function for creating time-variable source luminosity settings based on the irradiance at a reference distance.

constant_surface_property_distribution(...)

Function for creating constant radiative surface property distribution settings.

spherical_harmonic_surface_property_distribution(...)

Function for creating radiative surface property distribution settings according to a spherical harmonic model.

predefined_spherical_harmonic_surface_property_distribution(...)

Function for creating radiative surface property distribution settings according to a predefined spherical harmonic model.

knocke_type_surface_property_distribution(...)

Function for creating radiative surface property distribution settings according to 'Knocke-type' model

predefined_knocke_type_surface_property_distribution(...)

Function for creating radiative surface property distribution settings according to a predefined 'Knocke-type` model.

custom_surface_property_distribution(...)

Function for creating radiative surface property distribution settings according to a custom user-defined model.

constant_radiosity(radiosity)

Function for creating settings for surface constant surface radiosity of an extended source

constant_albedo_surface_radiosity(...)

Function for creating settings for surface constant albedo surface radiosity of an extended source

variable_albedo_surface_radiosity(...)

Function for creating settings for surface variable albedo surface radiosity of an extended source

thermal_emission_angle_based_radiosity(...)

Function for creating settings for surface radiosity of an extended source with surface temperature from Lemoine (2013)

thermal_emission_blackbody_constant_emissivity(...)

Function for creating settings for surface radiosity of an extended source from an isotropically heated body with constant emissivity

thermal_emission_blackbody_variable_emissivity(...)

Function for creating settings for surface radiosity of an extended source from an isotropically heated body with variable emissivity

specular_diffuse_body_panel_reflection(...)

Function for creating settings for target panel reflection law using a specular-diffuse model

lambertian_body_panel_reflection(reflectivity)

Function for creating settings for target panel reflection law using a Lambertian model

isotropic_radiation_source(luminosity_model)

Function for creating settings for an isotropic radiation source

panelled_extended_radiation_source(...[, ...])

Function for creating settings for a dynamically panelled extended radiation source

cannonball_radiation_target(reference_area, ...)

Function for create settings for a cannonball radiation pressure target

panelled_radiation_target([...])

Function for creating settings for a paneled radiation pressure target model

constant_luminosity(luminosity: float | SupportsIndex) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.LuminosityModelSettings¶

Function for creating constant radiation source luminosity settings.

Function for creating constant radiation source luminosity settings, defining the total radiated power (in Watts) of a given source. With this function, the source luminosity is constant, and is assumed to emit radiation isotropically.

Parameters:

luminosity (float) – Constant source luminosity (in Watt)

Returns:

Object defining settings for source luminosity

Return type:

LuminosityModelSettings

irradiance_based_constant_luminosity(constant_irradiance: float | SupportsIndex, reference_distance: float | SupportsIndex) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.LuminosityModelSettings¶

Function for creating source luminosity settings based on the irradiance at a reference distance.

Function for creating source luminosity based on the irradiance at a reference distance. For instance, one can provide the solar irradiance at 1 AU, and this will be translated to the Sun’s luminosity. With this function, the source luminosity is constant, and is assumed to emit radiation isotropically.

Parameters:
  • constant_irradiance (float) – Irradiance at reference distance from center of source (in \(W/m^{2}\))

  • reference_distance (float) – Distance from center of source at which the irradiance is defined

Returns:

Object defining settings for source luminosity

Return type:

LuminosityModelSettings

Examples

In this example, we create a constant luminosity model for the Sun, based on the solar constant, which defines the irradiance at 1 AU. Different values exist in literature for the solar constant, in this case we assume 1367 W/m^2 at 1 AU (Vallado 2013). Assuming an isotropic radiation source, we then create the radiation source settings for the Sun.

...

from tudatpy import constants

irradiance_at_1AU = 1367.0  # W/m^2, Vallado 2013

luminosity_model_settings = (
    environment_setup.radiation_pressure.irradiance_based_constant_luminosity(
        irradiance_at_1AU, constants.ASTRONOMICAL_UNIT
    )
)
radiation_source_settings_sun = (
    environment_setup.radiation_pressure.isotropic_radiation_source(
        luminosity_model_settings
    )
)

body_settings.get("Sun").radiation_source_settings = radiation_source_settings_sun
time_variable_luminosity(luminosity_function: Callable[[float | SupportsIndex], float]) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.LuminosityModelSettings¶

Function for creating time-variable radiation source luminosity settings.

Function for creating time-variable radiation source luminosity settings, defining the total radiated power (in Watts) of a given source as a function of time. With this function, the source is assumed to emit radiation isotropically.

Parameters:

luminosity_function (callable[[Time], float]) – Function returning source luminosity (in Watt) as a function of time (Time object)

Returns:

Object defining settings for source luminosity

Return type:

LuminosityModelSettings

irradiance_based_time_variable_luminosity(irradiance_function: Callable[[float | SupportsIndex], float], reference_distance: float | SupportsIndex) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.LuminosityModelSettings¶

Function for creating time-variable source luminosity settings based on the irradiance at a reference distance.

Function for creating source time-variable luminosity based on the irradiance at a reference distance. For instance, one can provide the solar irradiance at 1 AU as a function of time, and this will be translated to the Sun’s luminosity. With this function, the source is assumed to emit radiation isotropically.

Parameters:
  • irradiance_function (callable[[Time], float]) – Function returning irradiance at reference distance from center of source (in \(W/m^{2}\)) as a function of time (Time object)

  • reference_distance (float) – Distance from center of source at which the irradiance is defined

Returns:

Object defining settings for source luminosity

Return type:

LuminosityModelSettings

constant_surface_property_distribution(constant_value: float | SupportsIndex) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings¶

Function for creating constant radiative surface property distribution settings.

Function for creating constant radiative surface property (e.g. albedo, emissivity, etc.) distribution settings.

Parameters:

constant_value (float) – Constant surface property value

Returns:

Object defining settings for surface property distribution

Return type:

SurfacePropertyDistributionSettings

spherical_harmonic_surface_property_distribution(cosine_coefficients: numpy.ndarray[numpy.float64[m, n]], sine_coefficients: numpy.ndarray[numpy.float64[m, n]]) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings¶

Function for creating radiative surface property distribution settings according to a spherical harmonic model.

Function for creating radiative surface property (e.g. albedo, emissivity, etc.) distribution settings according to a spherical harmonic model. The user provides unnormalized cosine and sine coefficients \(C_{lm}\) and \(S_{lm}\), from which the surface property \(k\) is computed from:

\[k(\phi,\theta)=\sum_{l=0}^{l_{max}}\sum_{m=0}^{l}{P}_{lm}(\sin\phi)\left({C}_{lm}\cos m\theta+{S}_{lm}\sin m\theta\right)\]

with the angles \(\phi\) and \(\theta\) the body-fixed latitude and longitude of the evaluation point.

Parameters:
  • cosine_coefficients (numpy.ndarray) – Cosine coefficients of surface distribution. Entry (i,j) denotes coefficient \({C}_{ij}\) at degree i and order j.

  • sine_coefficients (numpy.ndarray) – Sine coefficients of surface distribution. Entry (i,j) denotes coefficient \({C}_{ij}\) at degree i and order j.

Returns:

Object defining settings for surface property distribution

Return type:

SurfacePropertyDistributionSettings

predefined_spherical_harmonic_surface_property_distribution(predefined_model: tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SphericalHarmonicsSurfacePropertyDistributionModel) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings¶

Function for creating radiative surface property distribution settings according to a predefined spherical harmonic model.

As spherical_harmonic_surface_property_distribution(), but with a predefined spherical harmonic distribution.

Parameters:

predefined_model (SphericalHarmonicsSurfacePropertyDistributionModel) – Identifier for predefined spherical harmonic surface property model.

Returns:

Object defining settings for surface property distribution

Return type:

SurfacePropertyDistributionSettings

knocke_type_surface_property_distribution(constant_contribution: float | SupportsIndex, constant_degree_one_contribution: float | SupportsIndex, cosine_periodic_degree_one_contribution: float | SupportsIndex, sine_periodic_degree_one_contribution: float | SupportsIndex, constant_degree_two_contribution: float | SupportsIndex, reference_epoch: float | SupportsIndex, period: float | SupportsIndex) tudat::simulation_setup::SecondDegreeZonalPeriodicSurfacePropertyDistributionSettings¶

Function for creating radiative surface property distribution settings according to ‘Knocke-type’ model

Function for creating radiative surface property (e.g. albedo, emissivity, etc.) distribution settings according to a model such as the one used by Knocke (1988). This model uses a degree two zonal spherical harmonic model, with a sinusoidal variation in the degree one coefficient. The surface property \(k\) is computed from:

\[k(\phi,t)=a_{0}+a_{1}P_{1}(\sin\phi)+a_{2}P_{2}(\sin\phi)\]
\[a_{1}=c_{0}+c_{1}\cos\left(\frac{2\pi(t-t_{0})}{T}\right)+c_{2}\sin\left(\frac{2\pi(t-t_{0})}{T}\right)\]

with the angle \(\phi\) denotes the body-fixed latitude of the evaluation point, and \(t\), \(t_{0}\) and \(T\) define the current time, reference time and period of the variation, respectively. The coefficients \(a_{0}, a_{2}, c_{0}, c_{1}, c_{2}\) are provided by the user.

Parameters:
  • constant_contribution (float) – Value of \(a_{0}\) in above formulation.

  • constant_degree_one_contribution (float) – Value of \(c_{0}\) in above formulation.

  • cosine_periodic_degree_one_contribution (float) – Value of \(c_{1}\) in above formulation.

  • sine_periodic_degree_one_contribution (float) – Value of \(c_{2}\) in above formulation.

  • constant_degree_two_contribution (float) – Value of \(a_{2}\) in above formulation.

  • reference_epoch (astro.time_representation.Time) – Reference epoch \(t_{0}\) of the periodic variation (Time object representing seconds since J2000 TDB).

  • period (float) – Period \(T\) of the periodic variation.

Returns:

Object defining settings for surface property distribution

Return type:

SurfacePropertyDistributionSettings

predefined_knocke_type_surface_property_distribution(predefined_model: tudatpy.kernel.dynamics.environment_setup.radiation_pressure.KnockeTypeSurfacePropertyDistributionModel) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings¶

Function for creating radiative surface property distribution settings according to a predefined ‘Knocke-type` model.

As spherical_harmonic_surface_property_distribution(), but with a predefined spherical harmonic distribution.

Parameters:

predefined_model (KnockeTypeSurfacePropertyDistributionModel) – Identifier for predefined Knocke-type surface property model.

Returns:

Object defining settings for surface property distribution

Return type:

SurfacePropertyDistributionSettings

custom_surface_property_distribution(custom_function: Callable[[float | SupportsIndex, float | SupportsIndex, float | SupportsIndex], float]) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings¶

Function for creating radiative surface property distribution settings according to a custom user-defined model.

Function for creating radiative surface property (e.g. albedo, emissivity, etc.) distribution settings according to a custom user-defined model, as a function of latitude, longitude and time.

Parameters:

custom_function (callable[[float, float, astro.time_representation.Time], float]) – Function providing surface property as a function of latitude, longitude and time (in that order, with time as a Time object).

Returns:

Object defining settings for surface property distribution

Return type:

SurfacePropertyDistributionSettings

constant_radiosity(radiosity: float | SupportsIndex) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings¶

Function for creating settings for surface constant surface radiosity of an extended source

Function for creating settings for surface radiosity of an extended source, using constant Lambertian radiosity \(J\) (in \(W/m^{2}\)). For a surface panel normal of \(\hat{\mathbf{n}}\) and a vector \(\mathbf{r}\) from the surface element to the target, the resulting irradiance \(\Phi\) (in \(W/m^{2}\)) at the target is (if \(\theta>0\), or in other words if the panel is visible from the target):

\[\Phi=J\frac{A\cos\theta}{\pi ||\mathbf{r}||^{2}}\]

with \(A\) the panel area, \(\theta\) is the angle between \(\hat{\mathbf{n}}\) and \(\mathbf{r}\).

Parameters:

radiosity (float) – Constant Lambertian radiosity from surface in \(W/m^{2}\).

Returns:

Object defining settings for source panel radiosity

Return type:

PanelRadiosityModelSettings

constant_albedo_surface_radiosity(constant_albedo: float | SupportsIndex, original_source_name: str) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings¶

Function for creating settings for surface constant albedo surface radiosity of an extended source

Function for creating settings for surface radiosity of an extended source, with surface radiation the result of albedo using a Lambertian scattering law, and a constant albedo value over the surface. For a surface panel normal of \(\hat{\mathbf{n}}\), a vector \(\mathbf{r}\) from the surface element to the target, and a vector \(\mathbf{r}_{s}\) from the surface element to the original source (typically the Sun), the resulting irradiance \(\Phi\) (in \(W/m^{2}\)) at the target is (if the panel is visible from the target and the original source):

\[\Phi=\cos\theta_{s}\Phi_{s}\frac{a}{\pi}\frac{A\cos\theta}{\pi ||\mathbf{r}||^{2}}\]

with \(\theta_{s}\) the angle between \(\hat{\mathbf{n}}\) and \(\mathbf{r_{s}}\), \(\Phi_{s}\) the irradiance from the original source at the panel of the reflecting body, \(a\) is the albedo coefficient, \(A\) the panel area, \(\theta\) is the angle between \(\hat{\mathbf{n}}\) and \(\mathbf{r}\).

Parameters:
  • constant_albedo (float) – Constant value of the albedo coefficient \(a\).

  • original_source_name (str) – Name of the original source from which the radiation is reflection to the target.

Returns:

Object defining settings for source panel radiosity

Return type:

PanelRadiosityModelSettings

variable_albedo_surface_radiosity(albedo_distribution_settings: tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings, original_source_name: str) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings¶

Function for creating settings for surface variable albedo surface radiosity of an extended source

As constant_albedo_surface_radiosity(), but with the surface albedo \(a\) defined by a surface distribution model.

Parameters:
  • albedo_distribution_settings (SurfacePropertyDistributionSettings) – Model for the surface distribution of the albedo \(a\).

  • original_source_name (str) – Name of the original source from which the radiation is reflection to the target.

Returns:

Object defining settings for source panel radiosity

Return type:

PanelRadiosityModelSettings

thermal_emission_angle_based_radiosity(minimum_temperature: float | SupportsIndex, maximum_temperature: float | SupportsIndex, constant_emissivity: float | SupportsIndex, original_source_name: str) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings¶

Function for creating settings for surface radiosity of an extended source with surface temperature from Lemoine (2013)

Function for creating settings for surface radiosity of an extended source from an isotropically heated body (e.g. IR radiation) with surface temperature \(T\) computed from the angle of the surface normal and the original source as follows:

\[T=\max\left(T_{max}(\cos\phi_{s})^{1/4},T_{min} \right)\]

with \(phi_{s}\) the angle along a great circle arc from the panel to the subsolar (for the Sun as original source) point; for a circular body equivalent to the angle of the vector to the original source and the surface normal. The minimum and maximum temperatures are user parameters.

For a surface panel normal of \(\hat{\mathbf{n}}\), a vector \(\mathbf{r}\) from the surface element to the target, the resulting irradiance \(\Phi\) (in \(W/m^{2}\)) at the target is (if the panel is visible from the target and the original source):

\[\Phi=\epsilon kT^{4}\frac{A\cos\theta}{\pi ||\mathbf{r}||^{2}}\]

with \(\epsilon\) the emissivity, \(k\) the Stefan-Boltzmann constant, \(A\) the panel area, \(\theta\) is the angle between \(\hat{\mathbf{n}}\) and \(\mathbf{r}\).

Parameters:
  • minimum_temperature (float) – Minimum surface temperature \(T_{min}\).

  • maximum_temperature (float) – Maximum surface temperature \(T_{min}\).

  • constant_emissivity (float) – Constant emissivity of the surface \(\epsilon\).

  • original_source_name (str) – Name of the original source from which the radiation is reflection to the target.

Returns:

Object defining settings for source panel radiosity

Return type:

PanelRadiosityModelSettings

thermal_emission_blackbody_constant_emissivity(constant_emissivity: float | SupportsIndex, original_source_name: str) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings¶

Function for creating settings for surface radiosity of an extended source from an isotropically heated body with constant emissivity

Function for creating settings for surface radiosity of an extended source from an isotropically heated body (e.g. IR radiation) with constant surface emissivity, where the emitted power of the body is computed from the assumption that all heat absorbed from an original source is emitted isotropically by the body. For instance, for Earth with Sun as original source, this model is equivalent to assuming that a given fraction of all heat incident of the Sun on the Earth is absorbed and causes the full Earth surface to heat to a constant temperature, which then results in the body emitting infrared radiation from its surface.

For a surface panel normal of \(\hat{\mathbf{n}}\), a vector \(\mathbf{r}\) from the surface element to the target, the resulting irradiance \(\Phi\) (in \(W/m^{2}\)) at the target is (if the panel is visible from the target and the original source):

\[\Phi=\frac{\epsilon\Phi_{s}}{4}\frac{A\cos\theta}{\pi ||\mathbf{r}||^{2}}\]

with \(\epsilon\) the emissivity, \(\Phi_{s}\) the irradiance from the original source, \(A\) the panel area, \(\theta\) is the angle between \(\hat{\mathbf{n}}\) and \(\mathbf{r}\).

Parameters:
  • constant_emissivity (float) – Constant emissivity of the surface \(\epsilon\).

  • original_source_name (str) – Name of the original source from which the radiation is reflection to the target.

Returns:

Object defining settings for source panel radiosity

Return type:

PanelRadiosityModelSettings

thermal_emission_blackbody_variable_emissivity(emissivity_distribution_model: tudatpy.kernel.dynamics.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings, original_source_name: str) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings¶

Function for creating settings for surface radiosity of an extended source from an isotropically heated body with variable emissivity

As thermal_emission_blackbody_constant_emissivity(), but with the surface emissivity \(\epsilon\) defined by a surface distribution model.

Parameters:
  • emissivity_distribution_model (SurfacePropertyDistributionSettings) – Model for the surface distribution of the emissivity \(\epsilon\).

  • original_source_name (str) – Name of the original source from which the radiation is reflection to the target.

Returns:

Object defining settings for source panel radiosity

Return type:

PanelRadiosityModelSettings

specular_diffuse_body_panel_reflection(specular_reflectivity: float | SupportsIndex, diffuse_reflectivity: float | SupportsIndex, with_instantaneous_reradiation: bool) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.BodyPanelReflectionLawSettings¶

Function for creating settings for target panel reflection law using a specular-diffuse model

Function for creating settings for target panel reflection law used for a radiation pressure target, with a specular diffuse model. The details of the implementation are given by Montenbruck et al. (2015). The reflection law is defined by the absorption coefficient \(\alpha\), diffuse reflectivity \(\delta\) and specular reflectivity \(\rho\), which must meet the condition \(\alpha+\delta+\rho=1\). For the model definition, the user provides \(\alpha\) and \(\delta\) (and \(\rho\) is calculated). The reaction vector \(\hat{\mathbf{f}}\) for a panel with surface normal \(\hat{\mathbf{n}}\), and unit vector from panel surface to source \(\hat{\mathbf{r}}\) then becomes:

\[\hat{\mathbf{f}}=\cos\theta\left((\alpha+\delta)\hat{\mathbf{r}}+(\frac{2}{3}\delta+2\rho\cos\theta)\hat{\mathbf{n}} \right)\]

In addition, it can be specified whether the absorbed radiation is also instantaneously retransmitted (according to Lambert’s law), in which case the above is modified to become:

\[\hat{\mathbf{f}}=\cos\theta\left((\alpha+\delta)\left(\hat{\mathbf{r}}+\frac{2}{3}\hat{\mathbf{n}}\right)+2\rho\cos\theta\hat{\mathbf{n}} \right)\]
Parameters:
  • specular_reflectivity (float) – Specular reflectivity \(\rho\).

  • diffuse_reflectivity (float) – Diffuse reflectivity \(\delta\).

  • with_instantaneous_reradiation (bool) – Boolean denoting whether absorbed radiation is instantaneously retransmitted (yes, if true).

Returns:

Object defining settings for target panel reflection law

Return type:

BodyPanelReflectionLawSettings

lambertian_body_panel_reflection(reflectivity: float | SupportsIndex) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.BodyPanelReflectionLawSettings¶

Function for creating settings for target panel reflection law using a Lambertian model

Function for creating settings for target panel reflection law used for a radiation pressure target, with a purely Lambertian model. The implementation is as specular_diffuse_body_panel_reflection(), with \(\rho=0\) and no instantaneous reradiation. The only free parameter is the reflectivity \(\delta\), such that \(\alpha=1-\delta\).

Parameters:

reflectivity (float) – Reflectivity \(\delta\)

Returns:

Object defining settings for target panel reflection law

Return type:

BodyPanelReflectionLawSettings

isotropic_radiation_source(luminosity_model: tudatpy.kernel.dynamics.environment_setup.radiation_pressure.LuminosityModelSettings) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.RadiationSourceModelSettings¶

Function for creating settings for an isotropic radiation source

Function for creating settings for a radiation source that emits isotropically. The source is provided with a luminosity model \(L(t)\) as a (possible) function of time \(t\). The irradiance \(\Phi\) at a relative position \(\mathbf{r}\) from the source’s center is then computed from:

\[\Phi=\frac{L}{4\pi||\mathbf{r}||^{2}}\]
Parameters:

luminosity_model (LuminosityModelSettings) – Settings for the luminosity model.

Returns:

Object defining settings for source model irradiance

Return type:

RadiationSourceModelSettings

Examples

In this example, we create a constant luminosity model for the Sun, based on the solar constant, which defines the irradiance at 1 AU. Different values exist in literature for the solar constant, in this case we assume 1367 W/m^2 at 1 AU (Vallado 2013). Assuming an isotropic radiation source, we then create the radiation source settings for the Sun.

...

from tudatpy import constants

irradiance_at_1AU = 1367.0  # W/m^2, Vallado 2013

luminosity_model_settings = (
    environment_setup.radiation_pressure.irradiance_based_constant_luminosity(
        irradiance_at_1AU, constants.ASTRONOMICAL_UNIT
    )
)
radiation_source_settings_sun = (
    environment_setup.radiation_pressure.isotropic_radiation_source(
        luminosity_model_settings
    )
)

body_settings.get("Sun").radiation_source_settings = radiation_source_settings_sun
panelled_extended_radiation_source(panel_radiosity_settings: list[tudatpy.kernel.dynamics.environment_setup.radiation_pressure.PanelRadiosityModelSettings], number_of_panels_per_ring: list[int | SupportsIndex], original_source_occulting_bodies: dict[str, list[str]] = {}) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.RadiationSourceModelSettings¶

Function for creating settings for a dynamically panelled extended radiation source

Function for creating settings for a radiation source that is modelled as an anisotropic extended source, such as a source due to albedo or planetary IR. The model can combined any number of superimposed surface panel radiosity models (e.g. albedo, direct radiation), each of which may or may not involve an ‘original source’ (e.g. the Sun for albedo). Each time the radiation at a given target is computed, the surface of the body is re-panelled, using the algorithm described by Knocke (1989). In short, a single panel is placed at the zenith of the evaluation point, with any number of rings around it, each of which has any number of (equispaced) panels on it. The width of each ring is such that all panels have the same projected, attenuated area. The panelling settings are defined by the user to this function. The The irradiance \(\Phi\) at a relative position \(\mathbf{r}\) from the source’s center is then computed from all \(N\) panels, each of which evaluated \(M\) panel radiosity models

\[\Phi=\sum_{i=1}^{N}\sum_{j=1}\Phi_{i,j}\]

where \(\Phi_{i,j}\) denotes the contribution to the total irradiance of panel radiosity model \(j\) on panel \(i\).

Parameters:

luminosity_model (LuminosityModelSettings) – Settings for the luminosity model.

Returns:

Object defining settings for source model irradiance

Return type:

RadiationSourceModelSettings

cannonball_radiation_target(reference_area: float | SupportsIndex, radiation_pressure_coefficient: float | SupportsIndex, per_source_occulting_bodies: dict[str, list[str]] = {}) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.RadiationPressureTargetModelSettings¶

Function for create settings for a cannonball radiation pressure target

Function for create settings for a cannonball radiation pressure target, which is fully defined by its reference area \(A\) and radiation pressure coefficient \(C_{r}\). The resulting force due to a single source with irradiance \(\Phi\), with vector from source to target \(\mathbf{r}\) is computed from:

\[\mathbf{F}=\frac{\Phi}{c}C_{r}A\hat{\mathbf{r}}\]
Parameters:
  • reference_area (float) – Cross-sectional area of cannonball [\(m^{2}\)]

  • radiation_pressure_coefficient (float) – Radiation pressure coefficient [-]

  • per_source_occulting_bodies (Dict[str, List[str]]) – Names of bodies to occult the source as seen from this target

Returns:

Object defining settings for a cannonball radiation pressure target model

Return type:

CannonballRadiationPressureTargetModelSettings

panelled_radiation_target(source_to_target_occulting_bodies: dict[str, list[str]] = {}, maximum_number_of_pixels_per_source: dict[str, int | SupportsIndex] = {}) tudatpy.kernel.dynamics.environment_setup.radiation_pressure.RadiationPressureTargetModelSettings¶

Function for creating settings for a paneled radiation pressure target model

Function for creating settings for a paneled radiation pressure target model. Each source can have its own set of occulting bodies. This model requires the vehicle_shape_settings of type FullPanelledBodySettings to be defined. The functions to define the panelled body settings are available in the vehicle_systems module. The panels defined there can be provided with an object of type BodyPanelReflectionLawSettings, factory functions for which can be found in this module.

By summing over all target panels and applying each panel’s reflection law and a give source’s irradiance \(\Phi\), the full radiation pressure force on the target is computed from:

\[\mathbf{F}=\sum_{j}\frac{\Phi}{c}\hat{\mathbf{f}}\]

summing over all target panels \(j\). Here, \(\hat{\mathbf{f}}\) defines resulting force direction and modulation due to the reflection law (for instance specular_diffuse_body_panel_reflection()).

Parameters:
  • source_to_target_occulting_bodies (dict[str, list[str]]) – Dictionary (source name -> list of occulting body names) of bodies to occult sources as seen from this target.

  • maximum_number_of_pixels (Dict[str, int]) – Maximum number of pixels used in the self-shadowing algorithm per source, omitting a the value or setting it to zero equals to not considering self-shadowing for a given source.

Returns:

Object defining settings for a radiation pressure target model

Return type:

RadiationPressureTargetModelSettings

Enumerations¶

class KnockeTypeSurfacePropertyDistributionModel¶

Bases: pybind11_object

Members:

custom

albedo_knocke

emissivity_knocke

KnockeTypeSurfacePropertyDistributionModel.name -> str
class SphericalHarmonicsSurfacePropertyDistributionModel¶

Bases: pybind11_object

Members:

albedo_dlam1

SphericalHarmonicsSurfacePropertyDistributionModel.name -> str
class RadiationPressureType¶

Bases: pybind11_object

Members:

cannonball_radiation_pressure_interface

RadiationPressureType.name -> str

Classes¶

LuminosityModelSettings

Base class for providing settings for body source luminosity settings, to be used (typically but not necessarily) for defining the Sun's luminosity.

SurfacePropertyDistributionSettings

Base class for providing settings for body surface property distribution settings, to be used (typically but not necessarily) for defining surface distribution of albedo and emissivity of solar system bodies for calculations of albedo and planetary radiation pressure.Note that not all albedo/emissivity models require this type of distribution model

PanelRadiosityModelSettings

Base class for providing settings for body panel radiosity models, to be used (typically but not necessarily) for defining surface radiosity of a panelled solar system body as a result of albedo and/or planetary radiation pressure

BodyPanelReflectionLawSettings

Base class for providing settings for body panel reflection law models, to be used for defining spacecraft surface properties relevant for the computation of radiation pressure acting on a macromodel.

RadiationSourceModelSettings

Base class for providing settings for properties of a radiation source (e.g. Sun), to be used in the context of (for instance) calculation of radiation pressure on spacecraft.

RadiationPressureTargetModelSettings

Base class for providing settings for properties of a radiation target (e.g. spacecraft), to be used in the context of (for instance) calculation of radiation pressure on spacecraft.

class LuminosityModelSettings¶

Bases: pybind11_object

Base class for providing settings for body source luminosity settings, to be used (typically but not necessarily) for defining the Sun’s luminosity.

class SurfacePropertyDistributionSettings¶

Bases: pybind11_object

Base class for providing settings for body surface property distribution settings, to be used (typically but not necessarily) for defining surface distribution of albedo and emissivity of solar system bodies for calculations of albedo and planetary radiation pressure.Note that not all albedo/emissivity models require this type of distribution model

class PanelRadiosityModelSettings¶

Bases: pybind11_object

Base class for providing settings for body panel radiosity models, to be used (typically but not necessarily) for defining surface radiosity of a panelled solar system body as a result of albedo and/or planetary radiation pressure

class BodyPanelReflectionLawSettings¶

Bases: pybind11_object

Base class for providing settings for body panel reflection law models, to be used for defining spacecraft surface properties relevant for the computation of radiation pressure acting on a macromodel.

class RadiationSourceModelSettings¶

Bases: pybind11_object

Base class for providing settings for properties of a radiation source (e.g. Sun), to be used in the context of (for instance) calculation of radiation pressure on spacecraft

class RadiationPressureTargetModelSettings¶

Bases: pybind11_object

Base class for providing settings for properties of a radiation target (e.g. spacecraft), to be used in the context of (for instance) calculation of radiation pressure on spacecraft