Seth Hopper's Senior Freakin' Seminar Webpage

What's Seth Doing?

I'm doing some research into celestial mechanics. I'll be working remotely with Dr. John Lindner at The College of Wooster, using numerical methods to study a restriced case of the three body problem. I'll be attempting to use Machintosh Xserves to run code in parallel.

The Three Body Problem

The three body problem concerns the gravitational interactions of three celestial bodies. The problem is surprisingly complex, considering the motion of two heavenly bodies is remarkably simple. Although it is generally difficult to determine the exact path of objects in the unrestricted case, often in the end one of the objects is ejected and the other two stabalize around their common center of mass. We restrict our case of the three body problem to the study of two large massive objects we name "Earth" and "Sun" and a smaller projectile. We are interested in seeing, for which values of initial speed and angle of launch our object can escape the pull of our two bodies, and in effect, the solar system. Preliminary results indicate that, as expected for sufficiently low velocities, there is no escape possible, regardless of the angle of launch. Likewise, for large enough initial speeds, every angle yields an escape. What makes this problem interesting, however, are the in-between values. The three body problem is the canonical example of chaos.

The halmark of chaos is extreme sensitivity to initial conditions. When an initial condition is changed, even in the slightest, a truly chaotic system will yield drastically different results as time passes. In our case of the three body problem, that means that changing the initial speed or angle just ever so slightly can be the difference between escape and catastorphic collision.

Journal of Sorts

Thursday, January 14

I met with Yousef, my partner for the presentation part of this class. We browsed through some journal articles from the ACM archives in the Science Library. We decided that we didn't know what we wanted to present exactly, but that we had some ideas. We realized that we had a lot of questions to as Jim, our professor, so we scheduled a meeting with him for tomorrow. We wanted to know how many articles he want, and at what level we should be looking. Should it be more general knowledge, or more technical.

Friday, January 15

Yousef and I met with Jim for about 20 minutes or a half hour. He wanted us to go with a sort of talk that would discuss a certain CS subject in the news and its consquences. Not as much technical stuff as we had thought. We also only needed a few articles - 3 or 4.

Sunday, January 18

Yousef and I met and did some research. We got a bunch of articles online. We split them up and plan to meet in a couple of days to discuss which ones are relavent.

Tuesday, January 20

Yousef and I got confused with our meeting place today, and we didn't get together. We'll meet tomorrow before class. I got an article from Dr. Lindner, and it elaborated on the research we're going to be doing. I'm in the middle of reading it. I've been in contact with certain people who will make it possible to use the Cairo cluster (our 16 Apple XServes) to run my code. It looks like that is going to be feasible.

Wednesday, January 20

Yousef and I met briefly before class. Afterward, we met with Jim for a long time, and realized we had articles that were still too technical, so we've got to find some more. After that, I worked with Hassan, my boss, on the Cairo cluster, and we got OS X installed on 2 machines that we're allowed to use right now. I downloaded Xgrid, which is a piece of Apple software that I'll hopefully use with my capstone project. I got that installed on the machines, but I can't use it until I've got some code to run. Later Yousef and I met and we found some articles that I think Jim will like better. We can meet with him at 2.30 on friday.

Saturday, January 31

I went to Wooster and met with Dr. Lindner face to face to discuss my Capstone project. I'm going to continue some work that he did with some students of his concerning a restricted case of the three body problem. We'll be trying to see if projectiles from Earth can escape the solar system, by running simulations of Apple computers. The really interesting part will be searching for fractile like substructure to the escape graph. Some initial conditions (the parameters are angle of launch and initial velocity) lead to close encounters with Sun which will often mean a gravitational assist can eject the projectile, but a very similar initial condition will not yield a gravitational assist, giving chaotic results, where the initial conditions are almost identical, and the trajectory is vastly different. Dr. Lindner feels that since the projectile can make multiple passes by the sun, we may be able to see fractile like stucturing. So, we'll look for that. We also discussed some other ways that we'll be able to improve the first simulation.

Monday, February 2

I met with Charlie today for the first time. He's going to advise me on my Capstone project, because he has interest in the parallel things I'm going to try to implement. I caught him up on a lot of the things that Dr. Lindner and I discussed. One of the pieces of software that I was going to try to use is called Xgrid, and it's new from Apple. It may let us run processes in parallel. However, after looking into it more with Charlie, we found that it is the type of thing that is really only going to be of help to people with desktop machines, and since we're using a cluster, which no one will be able to disturb, we probably don't need it.

Wednesday, February 4

Yousef and I handed out our articles and study questions for our discussion that we will lead next week.

Tuesday, February 10

I met with Charlie today. I didn't really get much done this week. If for no other reason, this is because I was participating in the MCM, which was a lot of fun, but just about killed me.

Wednesday, February 11

Yousef and I led our discussion on IPv6 today. I think it went pretty well. There weren't really any long periods of silence anyway. We have to write up a synopsis, so we'll divide up the articles, and go through them like that. I've got my Survey paper due next Wednesday. Yikes! I have a lot to do before that gets done.

Wednesday, February 11

We turned in our synopsis, which was frighteningly long. Maybe I should go to bed sometime.

Tuesday, February 17 / Wednesday, February 18

I spent all night working on getting my paper ready for tomorrow. Well, it turns out that it isn't due until next week, so now I've got it done early.

Monday, February 23

I met with Charlie via the "telephone." You should try one if you get a chance. I'm excited about getting started on my capstone project, but first I need to do some thinking about the structure of the program I'm going to run. There's going to be an interface and an underlying structure. I need to have a pretty good idea about these things before I jump in and start coding.

Wednesday, February 25

After finishing revising my paper, I made some slides for the talk I was supposed to give during senior seminar this afternoon. The talk went fine, I suppose. Jim thinks I should use more slides, but I think it is better to write things on the board some of the time. Maybe we'll argue about it more later. I've got to go home this weekend. When I return I can focus on my capstone project.

Sunday, February 29

I did a bit of planning for my capstone project today. I think there are a few things I need to straighten out before I attack my problem. First, I'll be upgrading some old code. Now, since we're not running 10.3 on the cairo machines, will I be able to use Xcode, or will I have to stick with project builder. Once I figure that out, I'll start porting the code, in sections. I'd like to get an interface working, and then add features. Once I've done that, I'd like to look into parallelinzing the code. I need to find out about MPI, and what versions are available that will work with OS X. I'll have to make sure I can get an X server running. Finally, I will start to add features to the code that were not present initially. I'll probably want to vary parameters like mass, time, and radii.

Monday, March 1

I did some reading in Blum's "Software Engineering: A Holisitic View," and now I think I will modify my approach slightly. I will start the same way, but before I move to parallelizing this code, I will add the new functionality I was planning on doing last. This problem parallelizes very simply, and I will not have to modify the serial code much to get it to work in parallel (in theory). Thus, I think it will be easier to add functionality, make sure it works, then parallelize, rather than seeing if the added functionality is working after I have it running on many machines.

Monday, March 8

Prior to this meeting with Charlie, I had taken all the code I was going to modify, gone through it with hilighters and picked out the sections I was going to need. I also spent a fair amount of time refamiliarizing myself with the Interface Builder functions and interface. I had forgotten how to do animation, and in general how to code in objective C.

Charlie and I talked about how I was going to structure my code. It is very important that the Science section be identical for both the serial and parallel versions of the code. This way, the interface for the two versions of the program can be different, but the same code can be running underneath. This simlifies things for me. Additionally, it separates the interface from the implementation. This is good software engineering practice.

Friday, March 12

I leave today for Savannah, GA to play in a frisbee tournament. Hopefully I'll find a little time to work on this project.

March 13 - March 20

As predicted, I found a little time to do stuff, but not much. Most of what I spent time doing was implementing some drawing routines, and move some code from C to objective C. I'll try to get some stuff done at school when there are a few fewer distractions.

Sunday, March 21

As expected, this may be a bit more difficult than expected. Actually, I'm just pretty tired after not enough sleep. Here's the status. I think I have my actual plan mapped out. The "EscapeScience" class will have a function that will initialize the values for the sun and earth. The function will also initialize the values for how long the simulation will run, when the projectile has escaped, and a few other physics values. It will be called by the "EscapeView" class, which will get these values from the text boxes in the GUI. Second, there will be an "evolve" function that will take in a time, an intial position and velocity of the projectile, and the duration of the simulation. This function will evolve the system from the time "t" to the time "t + duration." The time "t" can be used to calculate the postions of the earth and sun. I've written these functions, and I need to work on the communication between the two classes. I'm going to do some interface stuff before I go to bed. I'll try to get up early and get some more things working before I meet Charlie at noon, but I don't think I can do much more heavy thinking before I sleep.

Tuesday, March 23

Okay, after working on this thing for a few days, it looks like I have something working. It is not extremely polished on the outside, but I think I'm pleased with the foundations. I still need to set it up to measure the energies and make sure that they're not too far from what we would expect. I also need to be checking to make sure that the object has not escaped. Overall, however, it looks like what we want. The only difference is that I think the coordinate system is backward from the original, hence all the output is upside down from what I expected. I'll look into whether this is accurate, or if I dropped a negative sign.

March 30 - March 5

I've done a lot of work moving code from objective C to C. This should work - i've done it before, but there seems to be an issue with my functions that pass a pointer to my Science struct. It only manifests itself when it happens between a '.M' file and a '.c' file. After looking at it with Charlie on friday, we decided that the problem seemed to be with gcc, so on sunday night i upgraded to gcc3.3 and tried that. Well, i think the upgrade took place, but it was pretty much under the hood, so i'm not convinced. It is acting differently. Now, it's not really complaining about anything. Rather, it just says, "build failed." So, that is frustrating. I'm going to call apple, and make sure i installed the gcc3.3 upgrade correctly, although i'll be surprised if the answer is "no." There weren't many choices. So, i've moved to parallelizing my code. That is going okay. I need to write a paper by wednesday, and probably create some architecture and design documents to base my paper around. And i need to go to chicago and look at some art. Ahhh, inspiration.

Link

Other Celestial Mechanics Stuff: 2 Body Java