Source code for hyperloop.geometry.air_bearing
from math import pi, sin
from openmdao.main.api import Component
from openmdao.lib.datatypes.api import Float, Int
[docs]class AirBearing(Component):
tube_radius = Float(4, iotype="in", units="m", desc="radius of the tube")
capsule_mass = Float(15000, iotype="in", units="kg", desc="mass of capsule")
pressure = Float(9.4, iotype="in", units="kPa", desc="air injection pressure for bearings")
n_bearings = Int(7, iotype="in", desc="number of rows of bearing pads")
sweep_angle = Float(4, iotype="in", units="deg", desc="sweep angle of a single bearing pad on tube wall")
total_area = Float(iotype="out", units="m**2", desc="total required bearing area")
area_per_bearing = Float(iotype="out", units="m**2", desc="required area per bearing")
length_per_bearing = Float(iotype="out", units="m", desc="required length per bearing")
bearing_width = Float(iotype="out", units="m", desc="lienar width of bearing")
[docs] def execute(self):
req_area = self.capsule_mass*9.81/(self.pressure*1000) #convert to Pa from kPa
req_area *= 1.5 #dirty hack to account for pressure gradient under bearing
sweep_radians = self.sweep_angle*pi/180
arc_length = self.tube_radius*sweep_radians
self.total_area = req_area
self.bearing_width = 2*self.tube_radius*sin(sweep_radians/2)
#divide by two because there are two parallel skis
req_total_length = req_area/arc_length/2
self.length_per_bearing = req_total_length/self.n_bearings/2
self.area_per_bearing = req_area/self.n_bearings/2
if __name__ == "__main__":
from openmdao.main.api import set_as_top
comp = set_as_top(BearingSizing())
comp.run()
print "total_area (m**2): %f"%comp.total_area
print "area_per_bearing (m**2): %f"%comp.area_per_bearing
print "length_per_bearing (m): %f"%comp.length_per_bearing
print "bearing_width (m): %f"%comp.bearing_width