Isothermal satellite demo

The entire CubeSat is assumed to be at the same temperature. This is a very useful first approximation of the spacecraft temperatures on orbit. The oscillations in the temperatute reflect the eclipses.

Model a 3U satellite with different materials comprising the faces. Each area is 1U for a total of 14 surfaces. The surfaces are either solar cell, gold foil, or radiator.

See also RHSThermalCubeSat.

Contents

%------------------------------------------------------------------------
%   Copyright (c) 2009-2010,2014 Princeton Satellite Systems, Inc.
%   All rights reserved.
%------------------------------------------------------------------------

Spacecraft model - 3U with various materials.

Each long face (X/Y) has 2 panels with solar cells and 1 with foil. The +/- Z ends are assumed to have radiators. The specific heat of aluminum is used as a good approximation for the bulk spacecraft properties.

% solar cell properties
aC = 0.8;  % absorptivity
eC = 0.82; % emissivity
% Goldized Kapton properties
aG = 0.3;
eG = 0.04;
% Radiators
aR = 0.15;
eR = 0.8;

% Data structure
d = RHSIsothermalCubeSat;
d.mass     = 3;
d.uSurface = [1  1  1 -1 -1 -1  0  0  0  0  0  0  0  0;...
              0  0  0  0  0  0  1  1  1 -1 -1 -1  0  0;...
              0  0  0  0  0  0  0  0  0  0  0  0  1 -1];
d.alpha      = [aC aG aC aC aG aC aC aG aC aC aG aC aR aR];
d.epsilon    = [eC eG eC eC eG eC eC eG eC eC eG eC eR eR];
d.area       = 0.1*0.1*ones(1,14);
% Specific heat for whole spacecraft
d.cP         = 900;
% Power consumption (W) - internal power that is absorbed by the spacecraft
d.powerTotal = 3;

Orbit and ephemeris

sma          = 7100;
p            = Period(sma);
nP           = 3000;
t            = linspace(0,30*p,nP);
el           = [sma 0*pi/180 0 0 0 0];
[r,v]        = RVFromKepler( el, t );
jD           = Date2JD([2013 4 4 0 0 ]) + t/86400;
q            = QLVLH( r, v );

Integrate the isothermal RHS over the orbit

% Initial temperature
t0   = 285;
t(1) = t0;

dT = (jD(2) - jD(1))*86400;
n  = zeros(1,nP);

for k = 2:nP
  sigma = 5.67e-8;

  [uSun, rSun] = SunV1( jD(k) );
  flux    = QForm( q(:,k), 1367*uSun );
  n(k)    = Eclipse( r(:,k), rSun*uSun, [0;0;0] );
  if (n(k)>0)
    d.powerTotal = 6;
  else
    d.powerTotal = 0.6;
  end

  t(k) = RK4( @RHSIsothermalCubeSat, t(k-1), dT, 0, d, n(k)*flux );
end

Plot the resulting temperature

Plot2D( jD - jD(1), t, 'Days', 'T (deg-K)', 'Isothermal temperature');


%--------------------------------------