Contents
Direct Fusion Drive-powered space station design.
Designs a notional space station with a fusion reactor as power
source that can dock 4 Orion spacecraft at the same time.
It has docking space for 4 Orion Spacecraft or DFD Transfer vehicles.
All dimensions are in meter and mass in kg.
Controls
addOrion = 1;
exportCAD = 0;
makeCADModel = 1;
Inputs
massOrion = (21650 + 27198 - 15000)/2.205;
specPower = 1;
powerPerEngine = 6e6;
power = powerPerEngine;
eta = 0.58;
fS = 0.03;
rEngine = 0.55;
lEngine = 12*rEngine;
lNozzle = 0.8;
massEngine = powerPerEngine*1e-3/specPower;
massDockingCollar = 100;
rDockingCollar = 0.58;
lDockingCollar = 1;
radiatorArealMass = 2.75;
tempRadiator = 625;
tRadiator = 0.1;
massTruss = 20;
lengthTruss = 3;
nTank = 4;
lTank = 20;
rTank = 4;
fInsulation = 1.2;
densityD = 162.4;
nTankPerRow = 4;
tankSpacing = lTank/100;
massTank = (1+fS)*lTank*pi*rTank^2*densityD;
wDock = 4;
lDock = 12;
massDocking = 10000;
massHabitat = 10000;
rHabitat = 4;
lHabitat = 12;
xHabitat = [-4.2;0;0];
xDocking = [lHabitat+lDock/2;0;0]+xHabitat;
lCylTrans = 12;
rCylTrans = 2;
massCylTrans = 200;
rUOrionTrans = 2;
rLOrionTrans = 3;
lOrionTrans = 2;
massOrionTrans = 20;
Build the CAD model
BuildCADModel( 'initialize' );
BuildCADModel( 'set name' , 'DFD Space Station' );
BuildCADModel( 'set units', 'mks' );
m = CreateBody( 'make', 'name', 'Core' );
BuildCADModel('add body', m );
BuildCADModel( 'compute paths' );
b = [0 0 1;0 1 0;-1 0 0];
m = CreateComponent( 'make', 'cylinder', 'rUpper', rHabitat, 'rLower', rHabitat, 'h', lHabitat, 'n', 20, 'b', b, ...
'faceColor', 'gold foil','inside',0, 'rA', xHabitat, 'mass', massHabitat, 'name', 'Transition', 'body', 1 );
BuildCADModel( 'add component', m );
m = CreateComponent( 'make', 'box', 'x', lDock ,'y',wDock ,'z',wDock,...
'faceColor', [1 1 1],'inside',0, 'rA', xDocking, 'mass', massDocking, 'name', 'Docking Module', 'body', 1 );
BuildCADModel( 'add component', m );
ang = 0;
for k = 1:4
c = cos(ang);
s = sin(ang);
b = [1 0 0;0 c s;0 -s c];
x = [xDocking(1);0;wDock/2];
dN = sprintf('Docking Collar %d',k);
m = CreateComponent( 'make', 'cylinder', 'rUpper', rDockingCollar, 'rLower', rDockingCollar, 'h', lDockingCollar, 'n', 20, 'b', b, ...
'faceColor', 'steel','inside',0, 'rA', b*x, 'mass', massDockingCollar, 'name', dN, 'body', 1 );
BuildCADModel( 'add component', m );
if( addOrion )
x = b*(x + [0;0;4]);
BuildCADModel( 'add subassembly', 'Orion', 1, x, b*[0 0 1;0 1 0;-1 0 0] );
end
ang = ang + pi/2;
end
rTank = fInsulation*rTank;
lTank = fInsulation*lTank;
ang = pi/4;
b = [0 0 1;0 1 0;-1 0 0];
lT = lTank/nTankPerRow;
xTank = -4.2 - lTank;
xBottom = [xTank;0;0];
xTop = [xTank+lTank;0;0];
[v, f] = Truss( xBottom, xTop, rTank, 8 );
c = cos(pi/4);
v = ([1 0 0;0 c c;0 -c c]*v')';
m = CreateComponent( 'make', 'generic', 'vertex', v, 'face', f,'edgeColor', 'truss' ,'rA',[0;0;0],...
'name', 'Truss', 'body', 1, 'faceColor', [0.8 0.1 0.2],'inside', 1 );
BuildCADModel( 'add component', m );
for j = 1:nTankPerRow
for k = 1:nTank
y = 1.5*rTank*cos(ang);
z = 1.5*rTank*sin(ang);
ang = ang + pi/2;
rA = [xTank;y;z];
name = sprintf('Fuel Tank %d',k);
m = CreateComponent( 'make', 'cylinder', 'rUpper', rTank, 'rLower', rTank, 'h', lT, 'n', 20, 'b', b, ...
'faceColor', 'gold foil','inside',0, 'rA', rA, 'mass', massTank, 'name', name, 'body', 1 );
BuildCADModel( 'add component', m );
end
xTank = xTank + lT + tankSpacing;
end
xTank = -4.2 - lTank;
m = CreateComponent( 'make', 'cylinder', 'rUpper', rUOrionTrans, 'rLower', rLOrionTrans, 'h', lOrionTrans, 'n', 20, 'b', b, ...
'faceColor', 'steel','inside',0, 'rA', [-4.2;0;0], 'mass', massOrionTrans, 'name', 'Transition', 'body', 1 );
BuildCADModel( 'add component', m );
xTrans = xTank - lCylTrans;
m = CreateComponent( 'make', 'cylinder', 'rUpper', rCylTrans, 'rLower', rCylTrans, 'h', lCylTrans, 'n', 20, 'b', b, ...
'faceColor', 'aluminum','inside',0, 'rA', [xTrans;0;0], 'mass', massCylTrans, 'name', 'Transition', 'body', 1 );
BuildCADModel( 'add component', m );
ang = 0;
massNozzle = 0.05*massEngine;
massEngine = 0.95*massEngine;
xEngine = xTrans - lEngine;
xNozzle = xEngine - lNozzle;
rA = [xEngine;0;0];
name = 'DFD Reaactor';
m = CreateComponent( 'make', 'cylinder', 'rUpper', rEngine, 'rLower', rEngine, 'h', lEngine, 'n', 20, 'b', b, ...
'faceColor', 'gold foil','inside',0, 'rA', rA, 'mass', massEngine, 'name', name, 'body', 1 );
BuildCADModel( 'add component', m );
rA = [xNozzle;0;0];
name = sprintf('Magnetic Nozzle %d',k);
m = CreateComponent( 'make', 'cylinder', 'rUpper', 0.5*rEngine, 'rLower', rEngine, 'h', lNozzle, 'n', 20, 'b', b, ...
'faceColor', 'black','inside',0, 'rA', rA, 'mass', massNozzle, 'name', name, 'body', 1 );
BuildCADModel( 'add component', m );
heatRadiatedPerSide = (1-eta)*power/4;
sigma = 5.67e-8;
area = heatRadiatedPerSide/(sigma*tempRadiator^4);
xWidth = lCylTrans;
yWidth = area/xWidth;
massRadiator = radiatorArealMass*area;
q = 1;
for k = 1:2
name = sprintf('Radiator %d',k);
rA = [xTrans + 0.5*lCylTrans;q*(rCylTrans+lengthTruss);0];
m = CreateComponent( 'make', 'box', 'x', xWidth, 'y', yWidth, 'z', tRadiator, ...
'faceColor', 'radiator','inside',0, 'rA', rA, 'mass', massRadiator, 'name', name, 'body', 1 );
BuildCADModel( 'add component', m );
name = sprintf('Radiator Truss %d',k);
rA = [xTrans + 0.5*lCylTrans;q*rCylTrans;0];
m = CreateComponent( 'make', 'box', 'x', tRadiator, 'y', lengthTruss, 'z', tRadiator,'faceColor', 'black','inside',0, ...
'rA', rA, 'mass', massTruss, 'name', name, 'body', 1 );
BuildCADModel( 'add component', m );
q = -q;
end
g = BuildCADModel( 'get cad model' );
BuildCADModel('show vehicle');
Export
if( exportCAD )
if( addOrion )
ExportOBJ( g, FileFullpath('DFDSpacestationOrion') );
else
ExportOBJ( g, FileFullpath('DFDSpacestation') );
end
end