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

Factory function for creating constant radiation source luminosity settings. 

Factory function for cannonball radtiation target 
Factory function for creating source luminosity settings based on the irradiance at a reference distance. 


Factory function for creating timevariable radiation source luminosity settings. 
Factory function for creating timevariable source luminosity settings based on the irradiance at a reference distance. 

Factory function for creating constant radiative surface property distribution settings. 

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


Factory function for creating radiative surface property distribution settings according to a predefined spherical harmonic model. 
Factory function for creating radiative surface property distribution settings according to 'Knocketype' model 

Factory function for creating radiative surface property distribution settings according to a predefined 'Knocketype` model. 

Factory function for creating radiative surface property distribution settings according to a custom userdefined model. 


Factory function for creating settings for surface constant surface radiosity of an extended source 
Factory function for creating settings for surface constant albedo surface radiosity of an extended source 

Factory function for creating settings for surface variable albedo surface radiosity of an extended source 

Factory function for creating settings for surface radiosity of an extended source from an isotropically heated body with constant emmisivity 

Factory function for creating settings for surface radiosity of an extended source from an isotropically heated body with variable emmisivity 

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

Factory function for creating settings for target panel reflection law using a speculardiffuse model 


Factory function for creating settings for target panel reflection law using a Lambertian model 

Factory function for creating settings for an isotropic radiation source 

Factory function for creating settings for a paneled radiation pressure target model 

Factory function for creating settings for a dynamically panelled extended radiation source 
 constant_luminosity(luminosity: float) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.LuminosityModelSettings #
Factory function for creating constant radiation source luminosity settings.
Factory 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:
 cannonball_radiation_target(reference_area: float, radiation_pressure_coefficient: float, per_source_occulting_bodies: dict[str, list[str]] = {}) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.RadiationPressureTargetModelSettings #
Factory function for cannonball radtiation target
 Parameters:
 Returns:
Object defining settings for a cannonball radiation pressure target model
 Return type:
CannonballRadiationPressureTargetModelSettings
 irradiance_based_constant_luminosity(constant_irradiance: float, reference_distance: float) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.LuminosityModelSettings #
Factory function for creating source luminosity settings based on the irradiance at a reference distance.
Factory 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:
 Returns:
Object defining settings for source luminosity
 Return type:
 time_variable_luminosity(luminosity_function: Callable[[float], float]) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.LuminosityModelSettings #
Factory function for creating timevariable radiation source luminosity settings.
Factory function for creating timevariable 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.
 irradiance_based_time_variable_luminosity(irradiance_function: Callable[[float], float], reference_distance: float) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.LuminosityModelSettings #
Factory function for creating timevariable source luminosity settings based on the irradiance at a reference distance.
Factory function for creating source timevariable 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:
 Returns:
Object defining settings for source luminosity
 Return type:
 constant_surface_property_distribution(constant_value: float) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings #
Factory function for creating constant radiative surface property distribution settings.
Factory function for creating constant radiative surface property (e.g. albedo, emmisivitiy, etc.) distribution settings.
 Parameters:
constant_value (float) – Constant surface property value
 Returns:
Object defining settings for surface property distribution
 Return type:
 spherical_harmonic_surface_property_distribution(cosine_coefficients: numpy.ndarray[numpy.float64[m, n]], sine_coefficients: numpy.ndarray[numpy.float64[m, n]]) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings #
Factory function for creating radiative surface property distribution settings according to a spherical harmonic model.
Factory function for creating radiative surface property (e.g. albedo, emmisivitiy, 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 bodyfixed 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:
 predefined_spherical_harmonic_surface_property_distribution(predefined_model: tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SphericalHarmonicsSurfacePropertyDistributionModel) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings #
Factory 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:
 knocke_type_surface_property_distribution(constant_contribution: float, constant_degree_one_contribution: float, cosine_periodic_degree_one_contribution: float, sine_periodic_degree_one_contribution: float, constant_degree_two_contribution: float, reference_epoch: float, period: float) tudat::simulation_setup::SecondDegreeZonalPeriodicSurfacePropertyDistributionSettings #
Factory function for creating radiative surface property distribution settings according to ‘Knocketype’ model
Factory function for creating radiative surface property (e.g. albedo, emmisivitiy, 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(tt_{0})}{T}\right)+c_{2}\sin\left(\frac{2\pi(tt_{0})}{T}\right)\]with the angle \(\phi\) denotes the bodyfixed 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 (float) – Reference epoch \(t_{0}\) of the periodic variation.
period (float) – Period \(T\) of the periodic variation.
 Returns:
Object defining settings for surface property distribution
 Return type:
 predefined_knocke_type_surface_property_distribution(predefined_model: tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.KnockeTypeSurfacePropertyDistributionModel) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings #
Factory function for creating radiative surface property distribution settings according to a predefined ‘Knocketype` model.
As
spherical_harmonic_surface_property_distribution()
, but with a predefined spherical harmonic distribution. Parameters:
predefined_model (KnockeTypeSurfacePropertyDistributionModel) – Identifier for predefined Knocketype surface property model.
 Returns:
Object defining settings for surface property distribution
 Return type:
 custom_surface_property_distribution(custom_function: Callable[[float, float, float], float]) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings #
Factory function for creating radiative surface property distribution settings according to a custom userdefined model.
Factory function for creating radiative surface property (e.g. albedo, emmisivitiy, etc.) distribution settings according to a custom userdefined model, as a function of latitude, longitude and time.
 constant_radiosity(radiosity: float) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings #
Factory function for creating settings for surface constant surface radiosity of an extended source
Factory 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:
 constant_albedo_surface_radiosity(constant_albedo: float, original_source_name: str) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings #
Factory function for creating settings for surface constant albedo surface radiosity of an extended source
Factory 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:
 Returns:
Object defining settings for source panel radiosity
 Return type:
 variable_albedo_surface_radiosity(albedo_distribution_settings: tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings, original_source_name: str) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings #
Factory 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:
 thermal_emission_blackbody_constant_emissivity(constant_emissivity: float, original_source_name: str) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings #
Factory function for creating settings for surface radiosity of an extended source from an isotropically heated body with constant emmisivity
Factory 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:
 Returns:
Object defining settings for source panel radiosity
 Return type:
 thermal_emission_blackbody_variable_emissivity(emissivity_distribution_model: tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.SurfacePropertyDistributionSettings, original_source_name: str) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings #
Factory function for creating settings for surface radiosity of an extended source from an isotropically heated body with variable emmisivity
As
thermal_emission_blackbody_constant_emissivity()
, but with the surface emmisivity \(\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:
 thermal_emission_angle_based_radiosity(minimum_temperature: float, maximum_temperature: float, constant_emissivity: float, original_source_name: str) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings #
Factory function for creating settings for surface radiosity of an extended source with surface temperature from Lemoine (2013)
Factory 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 cirlce 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 StefanBoltzmann 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:
 specular_diffuse_body_panel_reflection(specular_reflectivity: float, diffuse_reflectivity: float, with_instantaneous_reradiation: bool) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.BodyPanelReflectionLawSettings #
Factory function for creating settings for target panel reflection law using a speculardiffuse model
Factory 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:
 Returns:
Object defining settings for target panel reflection law
 Return type:
 lambertian_body_panel_reflection(reflectivity: float) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.BodyPanelReflectionLawSettings #
Factory function for creating settings for target panel reflection law using a Lambertian model
Factory 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:
 isotropic_radiation_source(luminosity_model: tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.LuminosityModelSettings) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.RadiationSourceModelSettings #
Factory function for creating settings for an isotropic radiation source
Factory 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:
 panelled_radiation_target(source_to_target_occulting_bodies: dict[str, list[str]] = {}) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.RadiationPressureTargetModelSettings #
Factory function for creating settings for a paneled radiation pressure target model
Factory function for creating settings for a paneled radiation pressure target model. Each source can have its own set of occulting bodies.
 panelled_extended_radiation_source(panel_radiosity_settings: list[tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.PanelRadiosityModelSettings], number_of_panels_per_ring: list[int], original_source_occulting_bodies: dict[str, list[str]] = {}) tudatpy.kernel.numerical_simulation.environment_setup.radiation_pressure.RadiationSourceModelSettings #
Factory function for creating settings for a dynamically panelled extended radiation source
Factory 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 repanelled, 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:
Enumerations#
Classes#
Base class for providing settings for body source luminosity settings, to be used (typically but not necesarilly) for defining the Sun's luminosity. 

Base class for providing settings for body surface property distribution settings, to be used (typically but not necesarilly) 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 

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

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

Base class for providing settings for properties of a radiation source (e.g. 

Base class for providing settings for properties of a radiation target (e.g. 
 class LuminosityModelSettings#
Base class for providing settings for body source luminosity settings, to be used (typically but not necesarilly) for defining the Sun’s luminosity.
 class SurfacePropertyDistributionSettings#
Base class for providing settings for body surface property distribution settings, to be used (typically but not necesarilly) 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#
Base class for providing settings for body panel radiosity models, to be used (typically but not necesarilly) for defining surface radiosoty of a panelled solar system body as a result of albedo and/or planetary radiation pressure
 class BodyPanelReflectionLawSettings#
Base class for providing settings for body panel relfection law models, to be used for defining spacecraft surface properties relevant for the compuation of radiation pressure acting on a macromodel.
 class 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
 class 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