The Fire Satellite model

The fire satellite model is a multidisciplinary test case that involves 3 disciplines: Power, Orbit and Attitude & control. This usecase has been firstly proposed by Wertz et al. [wertz1999].

The model deals with the design of a realistic satellite, the goal of which is to detect and monitor forest fires from Earth’s orbit, through the use of optical sensors. Three disciplines are needed to design this satellite. The orbit discipline is responsible of computing the orbit period, the satellite velocity, the maximal slewing angle and the eclipse period. The power discipline is used to estimate the total power of the system and the area of the solar arrays. Finally, the attitude & control discipline computes the total torque of the satellite and the power required for the attitude control system. These disciplines exchange several coupling variables. The multidisciplinary analysis that is used to compute the converged values of the coupling variables is performed through a Fixed Point Iteration algorithm.

use case geometry

This test case is composed of nine random variables. These variables are distributed according to truncated Normal distribution \mathcal{TN}(\mu,\sigma,a,b). The hyperparameters are \mu the mean, \sigma the standard deviation, a the lower bound and b the upper bound.

  • H \sim \mathcal{TN}(\num{18e6}, \num{1e6}, \num{15e6}, \num{21e6}): the altitude (\unit{\m})

  • P_{other} \sim \mathcal{TN}(1000, 50, 850, 1150): the power other than attitude control system (\unit{\W})

  • F_{s} \sim \mathcal{TN}(1400, 20, 1340, 1460): the average solar flux (\unit{\W\per\m^2})

  • \theta \sim \mathcal{TN}(15, 1, 12, 18): the deviation of moment axis (\unit[angle-symbol-degree=deg]{\degree})

  • L_{sp} \sim \mathcal{TN}(2, 0.4, 0.8, 3.2): the moment arm for radiation torque (\unit{\m})

  • q \sim \mathcal{TN}(0.5, 0.1, 0.2, 0.8): the reflectance factor (-)

  • R_D \sim \mathcal{TN}(5, 1, 2, 8): the residual dipole of spacecraft (\unit{\A\m^2})

  • L_\alpha \sim \mathcal{TN}(2, 0.4, 0.8, 3.2): the moment arm for aerodynamic torque (\unit{\m})

  • C_d \sim \mathcal{TN}(1, 0.3, 0.1, 1.9): the drag coefficient (-)

The three outputs of interest are:

  • \tau_{torque}: the total torque of the satellite (\unit{\N\m})

  • P_{tot}: the total power of the satellite (\unit{\W})

  • A_{sa}: the area of the solar array (\unit{\m^2})

Different deterministic quantities are also present:

  • c: the speed of light, \qty{2.9979e8}{\m\per\s}

  • \omega_{max}: the maximum rotational velocity of reaction wheel, \qty{6000}{\rpm}

  • n: the number of reaction wheels that could be active, 3

  • \delta_{\theta_{slew}}: the slewing time period, \qty{760}{\s}

  • A_s: the area reflecting radiation, \qty{13.85}{\m^2}

  • i: the sun incidence angle, \qty{0}{\deg}

  • M: the magnetic moment of earth, \qty{7.96e15}{\A\m^2}

  • \rho: the atmospheric density, \qty{5.1480e-11}{\kg\per\m^3}

  • A: the cross-sectional in flight direction, \qty{13.85}{\m^2}

  • P_{hold}: the holding power, \qty{20}{\W}

  • \mu: the Earth gravity constant, \qty{398600.4418e9}{\m^3\per\s^2}

  • Id: the inherent degradation of array, 0.77

  • t: the thickness of solar panels, \qty{0.005}{\m}

  • n_{sa}: the number of solar arrays, 3

  • \epsilon_{deg}: the degradation in power production capability, \qty{0.0375}{\percent\per\year}

  • LT: the lifetime of spacecraft, \qty{15}{\year}

  • r_{lw}: the length to width ratio of solar array, 3

  • D: the distance between panels, \qty{2}{\m}

  • I_{bodyX}: the inertia of body, X axis, \qty{6200}{\kg\m^2}

  • I_{bodyY}: the inertia of body, Y axis, \qty{6200}{\kg\m^2}

  • I_{bodyZ}: the inertia of body, Z axis, \qty{4700}{\kg\m^2}

  • \rho_{sa}: the average mass density to arrays, \qty{700}{\kg\m^3}

  • \eta: the power efficiency, 0.22

  • \phi_{target}: the target diameter, \qty{235000}{\m}

  • R_E: the Earth radius, \qty{6378140}{\m}

We assume that the input variables are independent.

The following figure depicts the interaction between the disciplines.

use case geometry

The orbit discipline is defined as follows. First, the satellite velocity v is computed from the Earth radius R_E and the altitude H .

v = \sqrt{\frac{\mu}{R_E+H}}

with \mu the Earth gravity constant. Then, the orbit period \Delta_{t_{orbit}} is calculated,

\Delta_{t_{orbit}} = \frac{2\pi(R_E+H)}{v}

The eclipse period \Delta_{t_{ecplise}} and maximum slewing angle \theta_{slew} are then computed,

\Delta_{t_{ecplise}} = \frac{\Delta_{t_{orbit}}}{\pi}\arcsin\left(\frac{R_E}{R_E+H}\right)

\theta_{slew} = \arctan\left(\frac{\sin\left(\frac{\phi_{target}}{R_E}\right)}{1-\cos\left(\frac{\phi_{target}}{R_E}\right)+\frac{H}{R_E}} \right)

with \phi_{target} the target diameter.

The attitude and control discipline is governed by the following equations.

\tau_{tot} = \max(\tau_{slew},\tau_{dist})

with

\tau_{slew} = \frac{4\theta_{slew}}{\Delta t_{slew}^2} I_{max}

and

\tau_{dist} = \sqrt{\tau_g^2 + \tau_{sp}^2 + \tau_m^2 + \tau_a^2}

\tau_{g} = \frac{3\mu}{2(R_E+H)^3}|I_{max}-I_{min}|\sin(2\theta)

\tau_{sp} = L_{sp}\frac{F_s}{C}A_s(1+q)\cos(i)

\tau_{m} = \frac{2 M R_D}{(R_E+H)^3}

\tau_{a} = \frac{1}{2} L_{alpha} \rho C_d A v^2

with \tau_{tot} the total torque, \tau_{slew} the slewing torque, \tau_{dist} the disturbance torque, \tau_{g} the gravity gradient torque, \tau_{sp} the solar radiation torque, \tau_{m} the magnetic field interaction torque, \tau_{a} the aerodynamic torque.

The attitude control power P_{ACS} is finally defined by

P_{ACS} = \tau_{tot}\omega_{max} + n P_{hold}

The power discipline has 16 inputs and computes the total solar array size and total power by,

P_{tot} = P_{ACS} + P_{other}

A_{sa} = \frac{P_{sa}}{P_{EOL}}

with,

P_{EOL} = P_{BOL}(1-\epsilon_{deg})^{LT},

the power production capability at the end of life, defined by

P_{BOL} = \eta F_s I_d \cos(i)

the power production capability at the beginning of life, and

P_{sa} = \frac{\left( \frac{P_e T_e}{0.6} + \frac{P_d}{T_d}{0.8} \right)}{T_d}

is the required power output. P_e and P_d are the satellite requirements during eclipse and daylight (here P_e = P_d = P_{tot}). T_e and T_d are the time per orbit spent in eclipse and daylight.

Finally, the inertia can be derived as follows,

I_{min} = \min(I_{totX},I_{totY},I_{totZ})

I_{max} = \max(I_{totX},I_{totY},I_{totZ})

with I_{tot} = I_{sa} + I_{body} the total moment of inertia in the three dimensions, that depends on,

I_{saX} = m_{sa} \left( \frac{1}{12} (L^2+t^2) + (D+\frac{L}{2})^2 \right)

I_{saY} = m_{sa} (t^2+W^2)

I_{saZ} = m_{sa} \left( \frac{1}{12} (L^2+W^2) + (D+\frac{L}{2})^2 \right)

with L = \sqrt{\frac{A_{sa} r_{tw}}{n_{sa}}} the length of the solar array, W = \sqrt{\frac{A_{sa}}{r_{tw}n_{sa}}} the width of the solar array, and m_{sa} = 2\rho_{sa}L W t the mass of the solar array.

Two tunings parameters are present :

  • tolFPI: the tolerance on the fixed point iteration algorithm used in the multidisciplinary analysis, 1e-3

  • maxFPIIter: the maximum number of iterations of the fixed point iteration algorithm used in the multidisciplinary analysis, 50

References

Load the use case

We can load this model from the use cases module as follows :

>>> from openturns.usecases import fireSatellite_function
>>> m = fireSatellite_function.FireSatelliteModel()
>>> # Load the Fire satellite use case (with 3 outputs: total torque, total power and solar array area)
>>> model = m.model()
>>> # Load the Fire satellite use case with total torque as output
>>> modelTotalTorque = m.modelTotalTorque()
>>> # Load the Fire satellite use case with total power as output
>>> modelTotalPower = m.modelTotalPower()
>>> # Load the Fire satellite use case with solar array area as output
>>> modelSolarArrayArea = m.modelSolarArrayArea()

API documentation

class FireSatelliteModel

Data class for the Fire Satellite.

Attributes:
dimint

Dimension of the problem, dim = 9

HTruncatedNormal

Altitude (m) distribution First marginal, ot.TruncatedNormal(18e6,1e6,18e6-3e6,18e6+3e6)

PotherTruncatedNormal

Power other than ACS (W) distribution Second marginal, ot.TruncatedNormal(1000.0,50.0,1000.0-150.0,1000.0+150.0)

FsTruncatedNormal

Average solar flux (W/m^2) distribution Third marginal, ot.TruncatedNormal(1400.0,20.0,1400.0-60.0,1400.0+60.0)

thetaTruncatedNormal

Deviation of moment axis (deg) distribution Fourth marginal, ot.TruncatedNormal(15.0,1.0,15.0-3.0,15.0+3.0)

LspTruncatedNormal

Moment arm for radiation torque (m) distribution Fifth marginal, ot.TruncatedNormal(2.0,0.4,2.0-1.2,2.0+1.2)

qTruncatedNormal

Reflectance factor (-) distribution Sixth marginal, ot.TruncatedNormal(0.5,0.1,0.5-0.3,0.5+0.3)

RDTruncatedNormal

Residual dipole of spacecraft (A.m^2) distribution Seventh marginal, ot.TruncatedNormal(5.0,1.0,5.0-3.0,5.0+3.0)

LalphaTruncatedNormal

Moment arm for aerodynamic torque (m) distribution Eighth marginal, ot.TruncatedNormal(2.0,0.4,2.0-1.2,2.0+1.2)

CdTruncatedNormal

Drag coefficient (-) distribution Nineth marginal, ot.TruncatedNormal(1.0,0.3,1.0-0.9,1.0+0.9)

inputDistributionJointDistribution

The joint distribution of the input parameters.

modelPythonFunction

The Fire Satellite model with H, Pother, Fs, theta, Lsp, q, RD, Lalpha and Cd as variables. This function retrieves three outputs : the total torque, the total power and the area of solar array

modelTotalTorquePythonFunction

The Fire Satellite model retrieving only the Total Torque as output, with H, Pother, Fs, theta, Lsp, q, RD, Lalpha and Cd as variables.

modelTotalPowerPythonFunction

The Fire Satellite model retrieving only the Total Power as output, with H, Pother, Fs, theta, Lsp, q, RD, Lalpha and Cd as variables. This function retrieves three outputs : the total torque, the total power and the area of solar array

modelSolarArrayAreaPythonFunction

The Fire Satellite model retrieving only the Solar Array Area as output, with H, Pother, Fs, theta, Lsp, q, RD, Lalpha and Cd as variables. This function retrieves three outputs : the total torque, the total power and the area of solar array

cfloat

Speed of light, c = 2.9979e8 m/s

omega_maxfloat

Maximum rotational velocity of reaction wheel, omega_max = 6000 rpm

nint

Number of reaction wheels that could be active, n = 3

delta_theta_slewfloat

Slewing time period, delta_theta_slew = 760 s

Asfloat

Area reflecting radiation, As = 13.85 m^2

ifloat

Sun incidence angle, i = 0 deg

Mfloat

Magnetic moment of earth, M = 7.96e15 A.m^2

rhofloat

Atmospheric density, rho = 5.1480e-11 kg/m^3

Afloat

Cross-sectional in flight direction, A = 13.85 m^2

Pholdfloat

Holding power, Phold = 20 W

mufloat

Earth gravity constant, mu = 398600.4418e9 m^3/s^2

Idfloat

Inherent degradation of array, Id = 0.77

tfloat

Thickness of solar panels, t = 0.005 m

n_saint

Number of solar arrays, n_sa = 3

epsilon_degfloat

Degradation in power production capability, epsilon_deg = 0.0375 percent per year

LTfloat

Lifetime of spacecraft, LT = 15 years

r_lwfloat

Length to width ratio of solar array, r_lw = 3

Dfloat

Distance between panels, D = 2 m

I_bodyXfloat

Inertia of body, X axis, I_bodyX = 6200 kg.m^2

I_bodyYfloat

Inertia of body, Y axis, I_bodyY = 6200 kg.m^2

I_bodyZfloat

Inertia of body, Z axis, I_bodyZ = 4700 kg.m^2

rho_safloat

Average mass density to arrays, rho_sa = 700 kg.m^3

etafloat

Power efficiency, eta = 0.22

phi_targetfloat

Target diameter, phi_target = 235000 m

REfloat

Earth radius, RE = 6378140 m

tolFPIfloat

Tolerance on Fixed Point Iteration used in the multidisciplinary analysis, tolFPI = 1e-3

maxFPIIterint

Maximum number of iterations of Fixed Point Iteration used in the multidisciplinary analysis, maxFPIIter = 50

Methods

attitudeControl(inputs)

Function computing the attitude and control discipline outputs to retrieve the power of ACS and total torque

multidisciplinaryAnalysis(x)

Function computing the multidisciplinary analysis to retrieve the total torque, the total power and the area of solar array

orbit(inputs)

Function computing the orbit discipline outputs and retrieve the slewing angle, the velocity, the orbit duration and the eclipse duration

power(inputs)

Function computing the power discipline outputs to retrieve the inertia, the total power and the area of solar array

Examples

>>> from openturns.usecases import fireSatellitefunction
>>> # Load the FireSatellite model model
>>> m = fireSatellitefunction.FireSatelliteModel()
attitudeControl(inputs)

Function computing the attitude and control discipline outputs to retrieve the power of ACS and total torque

Inputs:

dictionary of inputs of the Attitude and Control discipline

multidisciplinaryAnalysis(x)

Function computing the multidisciplinary analysis to retrieve the total torque, the total power and the area of solar array

X:

list of inputs

orbit(inputs)

Function computing the orbit discipline outputs and retrieve the slewing angle, the velocity, the orbit duration and the eclipse duration

Inputs:

dictionary of inputs of the Orbit discipline

power(inputs)

Function computing the power discipline outputs to retrieve the inertia, the total power and the area of solar array

Inputs:

dictionary of inputs of the Power discipline

Examples based on this use case

Example of multi output Kriging on the fire satellite model

Example of multi output Kriging on the fire satellite model