Thermal Analysis of a Spacecraft

This is an example from the Thermal module of the Spacecraft Design Toolbox from Princeton Satellite Systems.

Isothermal Analysis

The first step in thermal analysis is to model the spacecraft as a set of areas with specified surface properties, and treat the spacecraft as a single mass. This can be done with the Isothermal function. The header is shown below.
help Isothermal
Model a spacecraft as an isothermal radiator. This is useful for preliminary estimates of radiator area. The spacecraft illuminated area is aS with radiators of area aR. You enter the orbit and the center (any of the nine planets or the sun) plus the orbital elements and spacecraft properties. The function will compute the temperature as a function of time. This function includes solar flux, and planetary albedo and radiation. In a heliocentric orbit planetary encounters are ignored. In planetary orbit, eclipses are modeled. For a demo of a geosynchronous spacecraft type Isothermal. -------------------------------------------------------------------------- Form: d = Isothermal; % default data structure t = Isothermal( el, center, d, jD ) -------------------------------------------------------------------------- ------ Inputs ------ el (1,6) Orbital elements [a i W w e M] center (1,:) Name of center (major planets and sun) d (.) Data structure .aR (1,1) Radiator area (m^2) .aS (1,1) Spacecraft illuminated area (m^2) .alpha (1,1) Spacecraft absorption (0-1) .epsR (1,1) Radiator emissivity (0-1) .t0 (1,1) Initial Temperature (deg-K) .cP (1,1) Average specific heat of the spacecraft (J/kg deg-K) .m (1,1) Spacecraft mass (kg) .p (1,n) Power consumption (W) jD (1,n) Julian dates ------- Outputs ------- t (1,n) Temperatures (deg-K) -------------------------------------------------------------------------- References: Agrawal, B. ,"Design of Geosynchronous Spacecraft," Prentice-Hall, 1986, pp. 281-283 --------------------------------------------------------------------------
The spacecraft is defined by an illuminated area aS and a radiator area aR, along with absorption and emissivity coefficients (from 0 to 1). These coefficients are referred to by their typical symbols, alpha and eps. This example approximates a 1U CubeSat. First, we use an average density to estimate a mass for the satellite.
density = 2700; % kg/m^3
mass = density*0.1^3; % CubeSat size
Then, we get the default data structure defining the spacecraft model by calling the function with no inputs. We specify the area and properties of the illuminated and radiating areas, initial temperature, and average specific heat.
d = Isothermal; % default data structure
d.aR = .02; % Radiator area (m^2)
d.aS = .01; % Illuminated, 1/6 of a cube at any one time
d.alpha = 0.3; % absorptivity, 0-1
d.epsR = 0.9; % emissivity of the radiator
d.t0 = 300; % initial temperature (K)
d.cP = 900; % average specific heat of the spacecraft (J/kg deg-K)
d.m = mass; % spacecraft mass
The resulting data structure is shown below.
d
d = struct with fields:
aR: 0.02 aS: 0.01 alpha: 0.3 epsR: 0.9 t0: 300 cP: 900 m: 2.7 p: 0

Earth Orbit

The spacecraft is modeled in a given Earth orbit based on an input model of power consumption.
hOrb = 370; % orbital altitude, km
el = [6378+370 pi/2 0 0 0 0]; % [sma inc raan w ecc M]
n = 200;
jD = Date2JD([2007 3 20 0 0 ]) + linspace(0,1,n); % 1 day
PltOrbit(el,jD(1));

Power Model

Define an oscillating power consumption model using an array of angles.
a = linspace(0,8*pi,n);
d.p = 10*(1 + 0.2*sin(a)); % 10 W plus an oscillating 2W

Call the model and plot

Compute the isothermal temperature over the orbit. Pass the orbit, planet, data structure modeling the satellite, and the start date (in Julian date form) to the Isothermal function. It will generate the plots automatically.
Isothermal( el, 'earth', d, jD )
Isothermal: earth Planet radius = 6378.14 km Planet albedo = 0.39 Planet radiation = 429.41 W

Mars Orbit

Now lets run the same spacecraft model in Mars orbit at the same altitude. The power model stays the same - between 8 and 12 W, which is a fair amount for a CubeSat - and the temperature output is similar.
el = [3397+hOrb pi/4 0 0 0 0];
PltOrbit(el,jD(1),[],'Mars');
Isothermal( el, 'mars', d, jD )
Isothermal: mars Planet radius = 3397.00 km Planet albedo = 0.16 Planet radiation = 523.64 W
 

Heliocentric Orbit

The same model can be run in heliocentric orbit by specifying the sun as the orbit center. We place the spacecraft at 0.5 AU, which is half the distance to the Earth. First, we plot the orbit from the initial elements.
el = [0.5*Constant('au') 0 0 0 0 0];
OrbTrackECI3D( el, 'sun' )
Then, we specify an array of dates and run the model. In this example we run for 30 days. With the spacecraft so close to the sun, the average temperature is now over 400 K.
jD = Date2JD([2007 3 20 0 0 ]) + linspace(0,30,n); % 30 days
Isothermal( el, 'sun', d, jD )
In heliocentric orbit
Copyright 2025 Princeton Satellite Systems, Inc. All rights reserved.
https://help.psatellite.com/