Demonstrate combined simulation for a sail in interplanetary orbit.
Select a guidance method and direction. Try different CAD models to see the effects of various optical properties. A nonideal sail will have off-axis force components and less change in the desired orbital element over time.
------------------------------------------------------------------------ See also: FSailCombined SailEnvironment SailDisturbance FOrbitSingle SunGuidance FlatPlate FlatCP1Sail, QForm, Constant, AssignFHandle, InformDlg, Plot2D, TimeLabl, Date2JD, El2RV, SunV2, QSail, DisturbanceStruct, EnvironmentStruct, ProfileStruct, PlotSailProfile, DisplaySailProperties ------------------------------------------------------------------------
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2006 Princeton Satellite Systems, Inc. % All rights reserved. %-------------------------------------------------------------------------- % Since version 9. %-------------------------------------------------------------------------- % Main User Parameters
Number of days to simulate
nDays = 450;
Constants
au = Constant('au'); muSun = Constant('mu sun');
Place sail in orbit at the Earth
el = [au 0 0 0 0 0]; jD = Date2JD+200;
Sail model to load
%------------------- model = 'FlatSail.mat'; % 'FlatCP1Sail.mat'
Guidance method - see SunGuidance for options
%---------------------------------------------- method = 'inclination'; % 'off', 'sun', etc. direction = 1; % END Parameters [r,v] = El2RV( el, [], muSun ); [uSun,rS] = SunV2( jD ); w = [0;0;0]; q = QSail( uSun, r, v );
Initialize simulation data structure
[d,p] = InitializeSailSim( jD, 'FlatSail.mat', 'SunGuidance' ); d = InitializeSailGravity( d, 'sun', muSun ); % Overload mass to obtain desired solar force d.g.mass.mass = 800; % guidance parameters d.method = method; d.dir = direction; d.mu = muSun; % review simulations structure disp(d)
-----------------------
Flat Specular Sail
Sail normal: [1 0 0]
Sail area: 50000 m2
Sail mass: 100 kg
Sail inertia (kg/m2):
833333.33 0 0
0 416666.67 0
0 0 416666.67
Sail characteristic accel: 4.5267 mm/s2
Number of bodies in model: 1
Number of components in model: 1
Sail class components: 1
Sail optical properties
Component Sail:
Specular Front: 1 Back: 1
Diffuse Front: 0 Back: 0
Absorptivity Front: 0 Back: 0
Emissivity Front: 0.03 Back: 0.03
ephemeris: 'NoEphemeris'
environment: @SailEnvironment
disturbance: @SailDisturbance
attitude: []
orbit: @FOrbitSingle
guidance: @SunGuidance
jD0: 2.4596e+06
center: 1
g: [1×1 struct]
planet: 'sun'
magModel: 'BDipole'
atmModel: 'AtmDens2'
aeroOn: 0
albedoOn: 0
solarOn: 1
magOn: 0
radOn: 0
ggOn: 0
method: 'inclination'
dir: 1
mu: 1.3271e+11
Options - set max step
tolerances should give circular orbit when sail is edge-on
odeOpts = odeset( 'MaxStep',2*86400,'abstol',1e-8,'reltol',1e-6); tEnd = nDays*86400; hDlg = InformDlg( 'Integrating...', 'SunCombinedDemo' ); [z, x] = ode113( @FSailCombined, [0 tEnd], [r;v;q;w], odeOpts, p, d ); close(hDlg); xPlot = x'; time = z'; [tPlot,tLbl] = TimeLabl( time );
Extract the profiles from the orbit
[p, env, f, tq] = FSailCombined( time, xPlot, p, d );
[qG,coneG,clockG] = SunGuidance( time, xPlot, d, env );
% Plot results.
Will see the results of the solar force on the orbit.
PlotSailProfile( p, env, [1;0;0] );
Plot2D(tPlot,QForm(p.q,f.total),tLbl,{'Fx','Fy','Fz'},'Force in Body Frame (N)')
%--------------------------------------