shadows on the space elevator

I saw question 2 mentioned in Liftport Group's March technical newsletter, and I decided that a computer model of the eclipse of the space elevator might be a nice weekend project. After brushing up on my geometry a bit, I've got a partial solution to share. It models the elevator as a single line segment, and looks for intersections with cones that represent the umbral and penumbral shadows. The results come out in terms of the height on the elevator where each shadow begins and ends.

The program is written in Perl, and I've opted for readability and ease of debugging over performance, though given the speeds of modern computers I don't think that this will cause any problems. It's still got a few bugs, such as a numeric overflow in certain cases, but on the whole it's really coming together.

The latest version includes preliminary support for showing the lunar shadows on the elevator, though at present this is optional. The calculations appear to be correct execept that it doesn't take into account that the Moon's shadow can be occluded by the Earth. This causes false positives where the elevator is behind the Earth but the program reports that it's shadowed by the Moon.

I've made three simplifying assumptions, two of which are pretty minor. The worst one is that I assumed that the elevator is a simple straight segment normal to the Earth's surface. That's not much of a problem for an unloaded elevator at the equator, but obviously the error grows larger as you move further away from the equator. The Earth's shadow is modeled as a cone, which is slightly incorrect because the Earth isn't a sphere. The correct shape would be a cone with an elliptical profile, but my geometry isn't quite up to the job of either finding the dimensions of that cone, or of deriving the method of solving the intersection between the elevator and that elliptical cone. The last assumption is very minor, and probably causes errors of less than 100 meters for ocean based elevators. In order to find the position of the base of the elevator relative to the sun, I assume that the Earth is an ellipsoid, when in reality the sea level more closely follows the geoid. I haven't quantified the error in any detail, but compared to the scale of the elevator it should be relatively minor.

You can also check the code out of the public SVN repository, which is at http://svn.db48x.net/spaceelevator

examples of the output

(Note that these two graphs are in svg, so you'll need either a recent browser like Firefox, or an SVG plugin for IE in order to see them.)

A graph of a single day, Jan 1st 2006 (times are in GMT.)

Three days in 1991, during a solar eclipse. Notice that on the 14th, the day before the official eclipse, the tip of the elevator extends into the lunar shadow. On the 15th, the graph is a bit inaccurate as most of the first and third lobes shouldn't be there due to the occlusion of the shadow by the Earth.

January through March 2006. You can see that it's only as the Earth approaches the equinox that the entire elevator is eclipsed - the rest of the year the elevator is not in line with the Earth's shadow due to the Earth's inclination to it's orbit. The lunar shadow was not graphed.

The same data as the first graph, but in chart form. Beginning with version 0.04 there are five columns: one for the date and four for the shadow data. Each shadow column contains a list of pairs that represent ranges on the elevator that are inside that particular shadow.

2006-01-01 04:00:00||||
2006-01-01 04:05:00||||
2006-01-01 04:10:00||0,0.764446863791474||
2006-01-01 04:15:00|0,1.02745798473665|0,6.60519874696528||
2006-01-01 04:20:00|0,7.01389163784625|0,15.0335222821489||
2006-01-01 04:25:00|0,15.5871285568963|0,26.0643116739859||
2006-01-01 04:30:00|0,26.7617578029548|0,39.717011857329||
2006-01-01 04:35:00|0,40.5568979796491|0,56.0156849673841||
2006-01-01 04:40:00|0,56.9962576777908|0,74.9890922861132||
2006-01-01 04:45:00|0,76.108210586039|0,96.6707916292643||
2006-01-01 04:50:00|0,97.9258855043904|0,121.099250497127||
2006-01-01 04:55:00|0,122.487271881048|0,148.317975823936||
2006-01-01 05:00:00|0,149.835340169625|0,178.375659743048||
2006-01-01 05:05:00|0,180.018178241973|0,211.326342820095||
2006-01-01 05:10:00|0,213.089143167988|0,247.229594211455||
2006-01-01 05:15:00|0,249.107029104265|0,286.150709724796||
2006-01-01 05:20:00|0,288.136251140912|0,328.160927810552||
2006-01-01 05:25:00|0,330.247045176412|0,373.337663790396||
2006-01-01 05:30:00|0,375.515683885224|0,421.764762612255||
2006-01-01 05:35:00|0,424.024708377029|0,473.532769981885||
2006-01-01 05:40:00|0,475.86317542448|0,528.739222016874||
2006-01-01 05:45:00|0,531.126919437867|0,587.48895284458||
2006-01-01 05:50:00|0,589.918828193256|0,649.894419462101||
2006-01-01 05:55:00|0,652.34913136882|0,716.076043189484||
2006-01-01 06:00:00|0,718.535699198059|0,786.162565306263||
2006-01-01 06:05:00|0,788.604349905531|0,860.29141584354||
2006-01-01 06:10:00|0,862.6891612202|0,938.609091087658||
2006-01-01 06:15:00|0,940.932782868401|0,1021.27153696735||
2006-01-01 06:20:00|0,1023.48674353783|0,1108.44453201011||
2006-01-01 06:25:00|0,1110.51174565167|0,1200.30406338379||
2006-01-01 06:30:00|0,1202.17793873021|0,1297.03668684656||
2006-01-01 06:35:00|0,1298.66515954323|0,1398.83985875404||
2006-01-01 06:40:00|0,1400.16312556126|0,1505.92222642687||
2006-01-01 06:45:00|0,1506.87156268973|0,1618.50385734575||
2006-01-01 06:50:00|0,1619.00024602413|0,1736.8163851695||
2006-01-01 06:55:00|0,1736.76892552954|0,1861.1030432776||
2006-01-01 07:00:00|0,1860.40710309648|0,1991.61855052927||
2006-01-01 07:05:00|0,1990.15361914122|0,2128.62880494926||
2006-01-01 07:10:00|0,2126.25599830193|0,2272.41033153964||
2006-01-01 07:15:00|0,2268.96949154815|0,2423.24941693663||
2006-01-01 07:20:00|0,2418.55574038454|0,2581.44085055547||
2006-01-01 07:25:00|0,2575.28097163551|0,2747.28617272981||
2006-01-01 07:30:00|0,2739.41361378249|0,2921.09131044183||
2006-01-01 07:35:00|0,2911.22120480011|0,3103.16345728113||
2006-01-01 07:40:00|0,3090.96643606549|0,3293.80702513135||
2006-01-01 07:45:00|0,3278.9021512286|0,3493.31846506265||
2006-01-01 07:50:00|0,3475.26508706065|0,3701.979717485||
2006-01-01 07:55:00|0,3680.26811363589|0,3920.05001577636||
2006-01-01 08:00:00|0,3894.09069764655|0,4147.75572654863||
2006-01-01 08:05:00|0,4116.86728474298|0,4385.27787372294||
2006-01-01 08:10:00|0,4348.67327298996|0,4632.73696089122||
2006-01-01 08:15:00|0,4589.5082396677|0,4890.17468779961||
2006-01-01 08:20:00|0,4839.27609691511|0,5157.53216227337||
2006-01-01 08:25:00|0,5097.76189397417|0,5434.62424581779||
2006-01-01 08:30:00|0,5364.60508178813|0,5721.10976898374||
2006-01-01 08:35:00|0,5639.26921846484|0,6016.45752347448||
2006-01-01 08:40:00|0,5921.00835182662|0,6319.90821666003||
2006-01-01 08:45:00|0,6208.83069387617|0,6630.43299290298||
2006-01-01 08:50:00|0,6501.46072080519|0,6946.689709843||
2006-01-01 08:55:00|0,6797.3015126262|0,7266.97893561009||
2006-01-01 09:00:00|0,7094.3999829817|0,7589.20260372299||
2006-01-01 09:05:00|0,7390.41860701721|0,7910.82939148581||
2006-01-01 09:10:00|0,7682.61824890029|0,8228.87208355559||
2006-01-01 09:15:00|0,7967.8575663144|0,8539.88326893618||
2006-01-01 09:20:00|0,8242.61499854235|0,8839.97643174988||
2006-01-01 09:25:00|0,8503.03922880168|0,9124.87947687307||
2006-01-01 09:30:00|0,8745.03292080717|0,9390.02658048085||
2006-01-01 09:35:00|0,8964.37219019954|0,9630.69162628863||
2006-01-01 09:40:00|0,9156.8605692374|0,9842.16221675429||
2006-01-01 09:45:00|0,9318.51136132842|0,10019.947545839||
2006-01-01 09:50:00|0,9445.74685824457|0,10160.0069752804||
2006-01-01 09:55:00|0,9535.59791534093|0,10258.980165947||
2006-01-01 10:00:00|0,9585.88409908335|0,10314.3955879255||
2006-01-01 10:05:00|0,9595.35419082477|0,10324.8335799369||
2006-01-01 10:10:00|0,9563.76990842216|0,10290.0236726147||
2006-01-01 10:15:00|0,9491.92210537328|0,10210.8634322622||
2006-01-01 10:20:00|0,9381.57732759116|0,10089.3563070744||
2006-01-01 10:25:00|0,9235.36167197181|0,9928.47672072853||
2006-01-01 10:30:00|0,9056.59650222694|0,9731.97966411887||
2006-01-01 10:35:00|0,8849.1052660609|0,9504.17751757295||
2006-01-01 10:40:00|0,8617.01180827415|0,9249.70806981514||
2006-01-01 10:45:00|0,8364.54848431289|0,8973.31507592746||
2006-01-01 10:50:00|0,8095.88802443334|0,8679.6574178206||
2006-01-01 10:55:00|0,7815.00773546353|0,8373.15652159818||
2006-01-01 11:00:00|0,7525.58940431657|0,8057.88552222464||
2006-01-01 11:05:00|0,7230.95398405607|0,7737.49868256538||
2006-01-01 11:10:00|0,6934.02717319501|0,7415.1961886264||
2006-01-01 11:15:00|0,6637.33035954959|0,7093.71764548334||
2006-01-01 11:20:00|0,6342.99087681662|0,6775.35710909881||
2006-01-01 11:25:00|0,6052.76579066163|0,6461.99290894542||
2006-01-01 11:30:00|0,5768.07418390151|0,6155.12647306268||
2006-01-01 11:35:00|0,5490.03387092899|0,5855.92553740608||
2006-01-01 11:40:00|0,5219.49946069125|0,5565.26829791131||
2006-01-01 11:45:00|0,4957.0995874253|0,5283.78611546569||
2006-01-01 11:50:00|0,4703.27188125024|0,5011.90325079158||
2006-01-01 11:55:00|0,4458.2948443522|0,4749.8727791216||
2006-01-01 12:00:00|0,4222.31623808817|0,4497.80832467405||
2006-01-01 12:05:00|0,3995.37789677391|0,4255.71159461311||
2006-01-01 12:10:00|0,3777.43708789216|0,4023.49590932839||
2006-01-01 12:15:00|0,3568.38466240129|0,3801.00605320245||
2006-01-01 12:20:00|0,3368.06030561734|0,3588.03483336117||
2006-01-01 12:25:00|0,3176.26522386538|0,3384.33675185175||
2006-01-01 12:30:00|0,2992.77260103952|0,3189.63918704621||
2006-01-01 12:35:00|0,2817.3361412662|0,3003.65145325637||
2006-01-01 12:40:00|0,2649.69698777612|0,2826.0720729703||
2006-01-01 12:45:00|0,2489.58927553627|0,2656.59455565636||
2006-01-01 12:50:00|0,2336.7445447937|0,2494.9119400767||
2006-01-01 12:55:00|0,2190.89521057149|0,2340.72031891681||
2006-01-01 13:00:00|0,2051.77725536478|0,2193.7215319866||
2006-01-01 13:05:00|0,1919.13228600044|0,2053.62518390285||
2006-01-01 13:10:00|0,1792.70907366744|0,1920.15011691433||
2006-01-01 13:15:00|0,1672.26467573192|0,1793.02544646994||
2006-01-01 13:20:00|0,1557.56522124623|0,1671.9912483676||
2006-01-01 13:25:00|0,1448.38642877028|0,1556.79897128146||
2006-01-01 13:30:00|0,1344.51391118818|0,1447.2116332349||
2006-01-01 13:35:00|0,1245.74331399981|0,1343.00385139416||
2006-01-01 13:40:00|0,1151.88032377755|0,1243.96174385739||
2006-01-01 13:45:00|0,1062.74057752878|0,1149.88273568135||
2006-01-01 13:50:00|0,978.149497019914|0,1060.57529410556||
2006-01-01 13:55:00|0,897.942068289398|0,975.858613825369||
2006-01-01 14:00:00|0,821.96258194284|0,895.562268252116||
2006-01-01 14:05:00|0,750.064347130848|0,819.525839762164||
2006-01-01 14:10:00|0,682.109389150047|0,747.598538868484||
2006-01-01 14:15:00|0,617.968138935577|0,679.638820508739||
2006-01-01 14:20:00|0,557.51912033702|0,615.514003063951||
2006-01-01 14:25:00|0,500.648640650571|0,555.099895448779||
2006-01-01 14:30:00|0,447.250487504561|0,498.28043500486||
2006-01-01 14:35:00|0,397.225635496318|0,444.947339391249||
2006-01-01 14:40:00|0,350.481964597393|0,394.999774126525||
2006-01-01 14:45:00|0,306.933991726606|0,348.344036959122||
2006-01-01 14:50:00|0,266.502616790723|0,304.89326002323||
2006-01-01 14:55:00|0,229.11488401171|0,264.567130362438||
2006-01-01 15:00:00|0,194.703758846489|0,227.291628841266||
2006-01-01 15:05:00|0,163.207920778172|0,192.998787477007||
2006-01-01 15:10:00|0,134.571572478815|0,161.626465456692||
2006-01-01 15:15:00|0,108.74426467995|0,133.118142942002||
2006-01-01 15:20:00|0,85.6807373160692|0,107.422733013414||
2006-01-01 15:25:00|0,65.340776346559|0,84.4944109595319||
2006-01-01 15:30:00|0,47.6890862773172|0,64.2924607451525||
2006-01-01 15:35:00|0,32.695178183566|0,46.7811382753552||
2006-01-01 15:40:00|0,20.3332730946909|0,31.9295511361624||
2006-01-01 15:45:00|0,10.5822202118229|0,19.7115541401241||
2006-01-01 15:50:00|0,3.42543037390459|0,10.1056609200327||
2006-01-01 15:55:00||0,3.09497075375641||
2006-01-01 16:00:00||||