Compare the solar pressure force for flat and billowed circular sails.
Since version 7. ------------------------------------------------------------------------ See also SailMesh, HCircularBillow, SolarPressureForce, PolygonProps, Figui, NewFig, Plot2D, Dot, Mag, Unit, SolarFlx, CP1Props ------------------------------------------------------------------------
Contents
%------------------------------------------------------------------------------- % Copyright 2009 Princeton Satellite Systems, Inc. %------------------------------------------------------------------------------- % These sails have a nominal front normal of [0;0;1], +Z.
Circular sail perimeter
%------------------------ theta = linspace(0,2*pi,20); theta = theta(1:end-1); rSail = 60; % m x = rSail*cos(theta); y = rSail*sin(theta); b = [0; 0.2; 0.4; 0.6];
CP1 properties - 90% specular
%------------------------------
[optical, infrared, thermal] = CP1Props;
Solar flux at 1 AU
%--------------------
flux = SolarFlx( 1.0 );
Create a vector of incidence angles in x/z plane
%------------------------------------------------- theta = linspace(0,pi/2); nPts = length(theta); uSun = [sin(theta);zeros(size(theta));cos(theta)]; fElements = cell(1,4); fTotal = cell(1,4); coneAngle = zeros(4,nPts); centerAngle = zeros(4,nPts); Tavg = []; for k = 1:4 dBillow = struct('b',b(k),'r',rSail); [v,f] = SailMesh( x, y, 'HCircularBillow', dBillow, 3 ); [a, n, r] = PolygonProps( v, f ); NewFig(['Sail Mesh ' num2str(k)]); patch('vertices',v,'faces',f,... 'facevertexcdata',v(:,3),'CDataMapping','scaled',... 'facecolor','interp','edgecolor',[0 0 0]); axis equal; grid on; view(3); colorbar nEl = length(a); % display the total membrane area for each sail area = sum(a); title(sprintf('Area: %.4f m^2',area)) fSail = zeros(3,nPts); % Compute the force and temperature of each element %-------------------------------------------------- for j = 1:nPts [fEl, T, fT] = SolarPressureForce( a', n', uSun(:,j), flux, ... optical, thermal.emissivity ); if j == 1 fElements{k} = fEl; Tavg(k,:) = T; end fSail(:,j) = fT; end coneAngle(k,:) = acos(Dot(Unit(fSail),-uSun)); centerAngle(k,:) = acos(Dot(Unit(fSail),-[0;0;1])); fTotal{k} = fSail; end
Plot the element forces for incidence angle of zero
----------------------------------------------------
sailLabl = {'Flat', '0.2 Billow', '0.4 Billow', '0.6 Billow'}; Plot2D(1:nEl, fElements{2}, 'Element', {'x','y','z'}, 'Element Forces (mN)'); subplot(3,1,1) hold on plot(1:nEl, fElements{3}(1,:), 'g'); plot(1:nEl, fElements{4}(1,:), 'r'); subplot(3,1,2) hold on plot(1:nEl, fElements{3}(2,:), 'g'); plot(1:nEl, fElements{4}(2,:), 'r'); subplot(3,1,3) hold on plot(1:nEl, fElements{3}(3,:), 'g'); plot(1:nEl, fElements{4}(3,:), 'r'); legend(sailLabl{2:4})
Plot the results
%----------------- angles = theta*180/pi; aLabl = 'Sun Incidence Angle (deg)'; Plot2D(angles, [fTotal{2}([1 3],:);Mag(fTotal{2})]*1000, aLabl,{'Fx','Fz','|F|'},'Sail Performance (force in mN)'); subplot(3,1,1) hold on plot(angles, fTotal{3}(1,:)*1000, 'g'); plot(angles, fTotal{4}(1,:)*1000, 'r'); subplot(3,1,2) hold on plot(angles, fTotal{3}(3,:)*1000, 'g'); plot(angles, fTotal{4}(3,:)*1000, 'r'); subplot(3,1,3) hold on plot(angles, Mag(fTotal{3})*1000, 'g'); plot(angles, Mag(fTotal{4})*1000, 'r'); legend(sailLabl{2:4}) % Force magnitude alone on big plot Plot2D(angles, [Mag(fTotal{1});Mag(fTotal{2});Mag(fTotal{3});Mag(fTotal{4})], ... aLabl,'Force Magnitude (N)','Sail Performance'); legend(sailLabl{:}); % CONE angle Plot2D(angles, coneAngle*180/pi, aLabl,'Cone Angle (deg)','Sail Cone Angle'); legend(sailLabl{:},'location','NorthWest'); % add ideal sail relationship - linear y = axis; hold on plot(linspace(0,y(4)),linspace(0,y(4)),'k--') % CENTERLINE angle Plot2D(angles, centerAngle*180/pi,... aLabl,'Centerline Angle (deg)','Sail Centerline Angle'); Figui; %-------------------------------------- % PSS internal file version information %--------------------------------------