direct democracy

So I went to Washington D.C. for the Nuclear Engineering Student Delegation, right? And it was extremely interesting and enlightening and fun. One thing that really struck me during our private tour of the Capitol building was that the appropriations process in the USA is messed up. 30 people on the appropriations committee get together in this small room and decide the fate of over $1 trillion. That’s an unfathomable amount of money, and there’s no way, NO WAY, that those 30 people have any idea of where it’s going. The tour guide was an ex representative from New York. He said that if you think learning how a hot dog is made is bad, wait till you see how an appropriations bill is made…

appropriations room
Here's where the magic happens

Talk about a bottleneck! So I got to thinking. Say, you know when computer people first experienced a server offering a single file to way too many clients, like when a new version of Ubuntu came out or whatever? And the whole system slowed down for everybody? And then someone invented bittorrent where all the clients then serve bits and pieces of the file that they’ve already downloaded so that the more people who try to get the file, the faster everyone else gets it? This decentralization is an infinitely smarter way to distribute the workload and use everyones computer power and network bandwidth perfectly. So what’s the analogy to a congressional appropriations bill? How can we decentralize things? Then the thought occurred to me: what if the founding fathers had the internet? They’d be able to easily poll everyone in the country! They’d still want representatives to filter out all the noise, but I don’t think they would just totally forget about the internet.

Imagine a government where Congresspeople propose a bunch of programs, etc. And the IRS tells everyone how much they owe in taxes. And Congress tells people that 70% of what they owe has to go to these specific mandatory programs (like medicare, social security, portions of defense, etc.). Shouldn’t be difficult to imagine because this is basically how it goes now. But then imagine that the final 30% of what you owe can go to whatever program you choose. You just go on down to a computer at the library (or in your home) and fill in percentages in all the optional programs that you’d like to fund. Then, at the end of it, programs take a look at what they got and go forth with their allotted budget. The implications of this are huge. All the stupid mindless arguments about the few controversial issues would be much less important; if you don’t want to fund universal health care with abortion then you don’t fund the abortion part. If you don’t want more F-22 fighter jets then you fund something else instead. If you don’t want to take the time to nit pick everything, you just vote “along party lines” with a representative of your choice.

This kind of thing would engage the masses. People care about what they spend money on. When they’re told to pay up or go to jail they pay. But if they’re given a choice, I think we’d see a huge increase in attention of where it’s going to. Special interest groups leave DC and focus on joe shmoe. Representatives don’t worry about controversial topics during election year because its out of their hands. The trillion dollars would be appropriated by 300 million people instead of 30. I think it’s a cool idea.

Of course, there are problems. Not everyone has a computer, hackers can hack, this puts too much power in the rich people. But all these have solutions (give rich people smaller optional percentages, for instance. We could call it a “graduated tax”…)

Anyway. The internet and computer have changed everything. Why not apply them to the inefficient government?

The electronic direct democracy work that is done seems to focus on voting on particular representatives or particular bills. This might fall victim to old concerns listed in Madison’s Federalist 10 worrying about fads swaying government. But to set the budget this way is totally different.

ipython on windows

iPython is a very nice way to fiddle around with Python interactively. Most beginners just use IDLE for this, since it comes with Python. But as you get to plotting stuff, you’ll find that IDLE just doesn’t cut it (it freezes every time you plot anything). So you try the regular python command line (on the black screen) but get frustrated that you can’t change directories or use tabbed completion or anything. You hear about ipython and try to use it but it’s not very obvious. Well all you have to do is make a shortcut and you’ll be off and running.By the way, if you had started on Linux in the first place, you wouldn’t have to deal with all this! Anyway, on Windows,

0. Make sure you have Python installed with matplotlib and numpy modules.

1. Get ipython from install it from the download page for your version of python

2. Make a shortcut to python.exe and then right click it and hit properties to change where it points to to:

3. Double click the shortcut.

Yay. Now you have ipython on windows with matplotlib interactive capabilities! I suggest having your text editor open in one window and this ipython window in the other. Edit your code, save it, and then type “run” to run it in the interpreter.

A nice screenshot of an interactive matplotlib session on Windows



There’s a gaping hole in the internet. It’s an unfathomable network allowing communication between almost every person in the developed countries. But in our cities, where tens of thousands of people live within a half mile of each other, sense of community seems to be declining. Seems like the internet could bring back that lost sense of community somehow.

The internet has made several attempts at community relations. On one hand we have craigslist, connecting local strangers anonymously for housing, buying/selling stuff, finding soccer teams in new places, etc. On the other hand we have facebook connecting people who have already met to share photos, statuses, messages, and other fun info. But there’s still something missing. That something is called neighborcasting. Or so I just named it.

Imagine a service where you signed up for a profile and were presented with a map. On the map, you draw an area that represents where you live. This could be a circle around a building, a block, a neighborhood, or a whole city, depending on how comfortable you are with disclosing your whereabouts. Then, a bunch of other circles or squares show up on the map in your area. There is a list of filters that you can choose to sort through all the information — among them:

  • Events going on within x hours from now (with many sub-categories like music, hiking, volunteering, etc. )
  • Item share (sugar, USB cables, a special tool, a tent)
  • Restaurants and stores (with many sub-categories)
  • Random musings (what people are thinking about)
  • For sale
  • Looking for a date
  • Going to the park with dogs
  • Ride share to x location (you choose x on a second map)
  • Advice
  • many more

You see, other people would put out neighborcasts, specifying which category it fits in, where it is located, and how long of a range it has. For instance, if someone’s looking for some baking goods from someone in their close vicinity, they can set their cast so that only people within a few blocks can see it, thus eliminating clutter. In your filters, you can even ask to “show me neighborcasts in my area that have a range that is less than 10 blocks,”  so you don’t have to see advertisements or other spam (which will be banned out of the commercial filter).


This concept would bring opportunities to interact with the community back, especially to heavily populated areas. If you were feeling like meeting some people who are also interested in jogging, or also wanted to let their dog interact with some other dogs, all you’d have to do it to put out a neighborcast about it and interested neighbors could reply right then. You could get graphical maps of what’s going on around you right now in a way unlike anything humans have ever had access to. The internet makes it possible!

Neighbors aside, if companies casted about their happy hour or about a speaker who’s coming soon, or about some deal, people would have instant access to the information. Users could hold up their iPhones or Android phones and spin them around 360 while watching the list of things to do in that direction go flying by until they found one they liked. Then they’d just start walking in that direction! How awesome is that?!


The biggest concern with this is obviously privacy. The embodiment of this concept would have to treat this issue very carefully. Since users would all have profiles (unlike on craigslist where anonymous posting is allowed), there would be a rating system, where if someone made someone else feel uncomfortable, they’d be able to let others know. Mechanisms would have to be in place to keep people with bad reviews from just getting a new account. If someone gets a black mark or whatever, there’d have to be a process for them to alleviate that somehow, so they wouldn’t be social outcasts for the rest of their lives as the world moves on around neighborcasating.

Since users aren’t supposed to say exactly where they live, just which general vicinity they live in, I’m not too worried about the location-based creepiness that much.

Hopefully you get the idea. I think this kind of thing would be revolutionary, and I’d LOVE to use it. If only I could get my roommate to develop it…

Here’s a very basic concept drawing on a google map:

-Nick Touran

February 2010

the real issues with nuclear energy — a fresh look

I used to think I had nuclear power all figured out. But recently, I’ve revised a few points. Here’s  what’s up with nuclear energy.

Nuclear energy is interesting and cool because (in order):

  1. It can produce huge amounts of electricity without producing CO2 and causing global warming (it’s environmentally sustainable).
  2. It can produce huge amounts of electricity using fuel that isn’t running out anytime soon (it’s materially sustainable).
  3. It can produce huge amounts of electricity day and night, rain or shine (it’s baseload).

Nuclear energy, in its current form, has the following reasonable drawbacks (in order):

  1. If a serious country has a serious nuclear power program, they can spend the time necessary to get nuclear bomb materials.
  2. The up-front cost of a nuclear power plant is huge.
  3. Nuclear waste is scary and remains so for hundreds of thousands of years, at which point it isn’t scary anymore.
  4. Chernobyl was scary.

The following claims are hogwash:

  1. Special material from nuclear power plants can be stolen by terrorists and turned into a bomb!
  2. We can’t build nuclear reactors fast enough to do any good!
  3. Thorium reactors can’t be used to make bombs!
  4. We don’t need baseload electricity anymore! Don’t be so old school!
  5. But we’ll run out of Uranium in 20 years!

The following supporting claims are reasonable:

  1. The current estimates of worldwide Uranium supply are submitted by individual nations to “the Red Book.” These numbers should be taken with some suspicious due to strong economic motivations to claiming you have less Uranium than you actually do so that you can drive up prices. Currently, they claim that at current demand, normal priced uranium should last for 200 years. If the price goes up, there will be more uranium found. If that runs out, the next generation of nukes will have to be breeders. Then we can run on U-238 and Thorium for 10s of thousands of years, if not many more. Scarcity of fuel is not an argument against nuclear power in general. Stop using it.
  2. Recycling nuclear waste isn’t necessary for long-term sustainability, but breeding is. You can breed without recycling in a once-through breeder. Recycling is necessary, however, to turn nuclear waste into a reasonable form that will be safe in ~1000 years rather than ~1 million. Let’s see that burner reactor, INL and Argonne!
  3. Thorium reactors can all be modified to produce weapons-grade U-233. Proponents often claim that Thorium reactors are proliferation-proof because they don’t make Plutonium! Well, they’re wrong. U-233 is actually a better weapon material than Plutonium. I can disable “automatic denaturing” if I own the plant. I can get around “self protection” with a single Protactinium chemist. The true accolades of Thorium reactors are their ability to do thermal breeding and their vastly superior waste form. Those alone are enough to support these reactors as awesome. Don’t go spreading hogwash. We have enough of that.
  4. “There’s nothing you can do to Plutonium that I can’t undo in my bathtub.” Dr. Ron Fleming always says that, referring to self-protecting Pu from terrorists. He’s basically right – the chemistry is well-known. But he’s going to need a large and pricey bath tub. A nation can definitely do this, but terrorists alone cannot. No terrorist group is going to break into a well-guarded nuke plant, pull the highly radioactive spent fuel out of the pool, load it onto a truck, and drive it off to their covert $4-billion reprocessing facility just to get reactor-grade plutonium. That’s just plain stupid. It’s a lot easier to buy the stuff from some angry country or something. Therefore, worrying about plutonium diversion from reactor sites is silly. Diversion from a reprocessing plant is another story: the hard work is already done there (but the Plutonium is still low-grade). This is why once-through breeders are good ideas.
  5. Baseload power is essential to the stability of the grid. There’s billions of dollars in the infrastructure we have that requires baseload. If you invent cheap room-temperature super-conductors, let me know and I might reconsider. Talk to anyone in the utility companies though. This isn’t even a question for a good 50 years.
  6. Nuclear energy is a better phrase than nuclear power. Nuclear power is like North Korea, Russia, USA. Nuclear energy is that stuff charging our plug-in electric vehicles without making CO2.

You can read more about the good and bad of nuclear at

a few hikes in the seattle area

I’ve been on two hikes in the last 8 days or so. Here’s a brief trip report for both, plus one failed attempt.

Silver Creek to Mineral City

This looked like a cool hike with mines to explore and everything. But, the internet was telling me that the road might be washed out. (Read:, etc.)

But it was worth a try. Maybe the road has been fixed by now. About that:

Yeah, it's not going to be easy to drive over that
Yeah, it's not going to be easy to drive over that

So we drove to a different nearby hike (5 miles or so).

Lake Serene/Bridal Veil Falls Hike

The first 2 miles are a gradual climb on nice trail. That gets you to the Bridal Veil falls, which are very nice. The next two miles are a tough climb. Tough for me at least. All the other people there were carrying babies or small dogs. On the way back down, Rachel and I had enough energy to go the 0.5 miles up to the upper falls, which were worth it.

Rachel at lower bridal veil falls
Rachel at lower bridal falls
Bad pic of lake serene and mt. index
Bad pic of lake serene and mt. index

The lake was really beautiful. I scrambled around on the snow, of course. That was last weekend. This weekend, we did:

Monte Cristo and Poodle Dog Pass

Mostly because I wanted to find another way down to Mineral City, we decided to try the monte cristo hike. This time, Robert came along. Since this hike is supposed to have a boring and bikable first 4 miles, we loaded bikes into and onto  my jeep and headed out to the Mountain Loop highway. We heard from a ranger that the 1st mile was going to involve us carrying our bikes a lot. He was right. We had to cross a log over the river and get over lots of cables holding the logs in place.

cross the logs
cross the logs

Then the road was a little bumpy for a while, with quite a few trees in the road. Good mountain bikers can get through the rocks, but we were walking for a while. Still, having bikes made the trip to monte cristo fairly painless. Going back down was exceptionally fast. Once in Monte Cristo, we had some lunch and checked out the working train turn table, while scanning the mountains for mines.

lunch at monte cristo
lunch at monte cristo
robert on the railway turntable
robert on the railway turntable

We didn’t see any mines, so we hiked up about 2000 ft. to Poodle Dog Pass. It was a nice hike that took probably 2 hours. Up there we saw lots of snow.

Robert, Rachel, and I up on poodle dog pass
Robert, Rachel, and I up on poodle dog pass

Crystal lake had these incredible water falls coming down from snow-melt. It was breathtaking.

Rachel and the waterfalls above crystal lake
Rachel and the waterfalls above crystal lake

On the way down, we got to see what branches look like from the inside of a tree:

this is what branches look like from the inside
this is what branches look like from the inside

We biked out of there and ate dinner at a Thai place on capitol hill. This whole big-city-right-next-to-mountains thing is nice.

sweet seattle stuff #1

What is there to do near Seattle? Well I’ll make a running list, since I have unlimited publishing rights on this, the website of me. I’ve been here for 2 weeks really and haven’t done as much as I should have. I’ve been busy. But I have found at least three really sweet places on the Eastside.

#1: Denny Park. Wow. It was day 1 and I was just walking through my neighborhood when I found this little street. There’s a trailhead there that descends into deep old-growth, fern-covered forest. As I hiked down, it got prettier and prettier. I got to the bottom to find large moss-covered trees hanging over a stream. I walked for about a mile and found myself at Lake Washington. Hadn’t seen a single person until then. Great suburban hike.

#2: Marymoor Park. Huge park near Redmond. The thing that brings me here often is the free rock-climbing structure. I go there on way home from work occasionally to miss the traffic and boulder around. You can lead-climb here too. It’s actually really cool. It’s made of concrete and rock so it actually feels pretty authentic. There are also RC planes flying nearby every day if you’re into that.

#3: St. Edwards State Park. Ok enough with the state parks already. This one has ~12 miles of fun mountain bike trails. I went on them one morning to check it out and had a great time. There are even some jumps and stuff. Good forest views.

#4: Random lookout. This little pad has a sweet view. You can see Rainier if you go to the far left on a clear day. Good view of gas works park too. Enough to inspire me to go check that out, which was also cool.


Virginia Inn – Ate outside. Slow service, but I wasn’t in a hurry. The food was good. How’s that for a review?

Thai joint by the AMC in Pacific Place – Mmmmm Thai food. Delicious. Good for before a movie.

Hector’s – mmmm. Fun atmosphere. Got big dinner and bottle of wine to hear some really weird story here. Loved it.

What the Pho? – Pho is in. It’s the new sushi. They heat up meat in broth, where it cooks. Get the well done stuff though as the rare is like, really rare. It was good but not quite as good as sushi. It’s pronounced “fuh,” by the way.

I also had more Thai and conveyor belt sushi and some other stuff but nothing really blew my mind as much as these, as described above.

don’t politicize nuclear power

I just saw parts of this release of the senate republican conference roundtable (1hr, 30m) recently, and was happy to hear reasonable talk here about using nuclear power to get us off coal ASAP. Can’t say I disagree. I am, however,  a little worried about nuclear power becoming a partisn issue (haha). This proposal is in line with McCain’s campaign promises of new nukes. I know plenty of people back in Ann Arbor who passionately hate Republicans and will blindly go on hating nuclear power for no reason other than to smite them.  Of course, those people are borderline insane. I think most people are actually reasonable: Rod Adams didn’t pull all support from nuclear power, but then again he’s the most pro-nuclear person on Earth. What about the people who have yet to decide how they feel about nukes?

You know what killed the early hippie subculture? It was the summer of love in 1967 when every 17 year old suburbanite became a hippie. And what killed the original punk movement? Hot Topic. Clearly, to undermine a group’s claim to identity, mainstream society has to claim its unique characteristics for itself (tie-dye shirts of the hippies, dog collars of the punks, and nuclear power of the Republicans). So, in order to keep nuclear power from being politicized, I’d like to see some non-Republicans voice their support in a way that identifies them as a non-Republican. For instance:

I love universal health care AND nuclear power!

or perhaps:

Boy, smoking bans are a great idea. So is the expansion of nuclear power!


Ayn Rand sucks. Say, don’t you think making nuclear power plants is a good idea? I heard that if we recycle all the nuclear waste we have sitting around the USA, we could power the whole country for 90 years.

And you pro-nuke Republicans, recognize that it isn’t beneficial to the planet to try to tie a power source to a political ideal. So, when you rally for nukes, try not to demonize Democrats or anything. Sure it may be difficult not to sometimes, but rise above temptation and promote it as something too elegant to be automatically tied to abortion rights, gun control, and small government.

By the way, since nuclear power utilities are counting on large loan guarantees, doesn’t it seem like the nukes are more in line with Democrat’s “spend more tax dollars for the betterment of society” idea? Huh. Backwards.

If Al Gore endorsed nuclear power today, as a founder of Greenpeace has, we’d be this much closer to solving our energy problems.

Dear Al Gore: Please endorse nuclear power. Thanks  -Nick

online happiness

I’ve found four excellent things online recently and think I should re-share them to all zero of my faithful blog readers. Hi friends! Anyway, I just posted a rant about Twitter, so no need to go there again. That’s the first one.

My friend Adam showed me this excellent free PDF book by David MacKay called Sustainable Energy – without the hot air. It is straight talk about all the crazy myths and misconceptions going around about renewables and other energy issues. The first few items on that link are raving review one-liners by high-profile peeps. Well written with much infused sarcasm.

And from Slashdot, I read a bit of this pdf (A Mathematician’s Lament) on the status of the USA mathematical education system. It’s twenty-five pages of welcome truth. Again sarcastic and wonderful.

Finally, there’s the DropBox. I’d heard about it earlier, but at work in Seattle where I’m actually using 2 computers, it’s become invaluable. It seamlessly integrates into my file managers (My Computer in windows, Nautilus in Ubuntu, and I think Finder in Mac). When I drag or change a file in my designated drop box folder on any computer, it automatically synchronizes across all computers. It’s superbly wonderful. As a bonus, it’s web interface keeps versions of every single update. So if you want to go back to the file you overwrote 2 days ago, no problem, there it is. Click this link to accept my referral and give me 250 extra MB! Or this one to sign up without giving me a bonus.

the value of twitter

OK, I used to think twitter was stupid. I imagined it as just a big collection of facebook status updates. Personally, I couldn’t care less about you going to the grocery store. But then I went to the ANS conference in Atlanta and realized what the big deal was. You can embed tags in your twitter posts, using the # symbol. For instance, at the ANS conference, if you say something and put #ans09 in it, everyone who searches #ans09 can see what everyone who said #ans09 has posted. So you go there and it’s like: “hey a group of us here at #ans09 are going to max’s down the street. come on by!” You try #fremontfair for the solstice parade happening in seattle tomorrow and it’s all “PCC RT @amyhale: Getting prepped to live-blog, tweet tomorrow’s #Seattle #Fremontfair the “Center of the Universe”! Watch 4 updates + audio too!”

Another feature: you can do it all on SMS on your phone. So imagine a group of people going out. If they all set their phones to “follow” the same person, he or she can just say: “ok going to Brown Jug now.” Or “going to Bab’s now.”  and everyone will get texts with that info. That’s actually new and useful communication right there.

So sign up for it. Do some searches for stuff you’re interested in. Up-to-date collective knowledge is at hand.

Actually the real reason I checked it out was all the buzz about the Iranians using it to organize protests. Apprently the US state department asked twitter to delay a scheduled maintenance window so the Iranians wouldn’t be left in the dark. Cool.

BTW, if you’re all interested in whether or not I’m at the grocery store, I’m partofthething on twitter.

car mp3 upgrades

I wanted to replace the LCD in my car, but I noticed there are new ones with buttons on them! So I’m thinking of reprogramming the car. I got mutagen to do ID3 stuff and will start just trying to make a simple playlist editor that searches like I want it to. Here’s the mutagen tutorial. I’ll need XML file saving again, just like in the CLScanner. I’m worried about how fast the searches will happen.

Aww, sweet. The code can load the entire library in like 2 seconds and search it in under a quarter second. Excellent. I can control mplayer using this code. The library and search functions took like, 10 mins to code up. They’re excellent. So all I need is a queue system, perhaps a separate thread that knows what song to play next. So there’d be the active thread, looking for commands from the keyboard and from the keypad, and the player thread, running mplayer and knowing what to play next. This might be too easy.

commands to do stuff in linux

Here are some nice commands.

Combine lots of pdf files:

Convert eps files to eps files with perfectly fitting bounding boxes:

Pull pages out of a pdf (more):

Make a quicktime movie with ffmpeg:

Encode lots of jpgs to avi:

Convert pngs to jpg:

Shrink a bunch of jpgs:

Pull audio out of a video file:

Play audio faster or slower without changing the pitch

. Use [ or ] to change speed.
(Note: you have to have a more modern version of mplayer to do this

Run povray with 100 frames on the clock:

mc2 up and running, now europium case

OK! MC**2 is up and running on my VM. In comparing the results with those from new-down, I discovered that getting the side-by-side diff mode in VIM is really easy, and I don’t need that cream program anymore. Just use

vim -d file1.txt file2.txt

Then, use Ctrl+w to control the windows:

  • C+w C+w switches windows
  • C+w = makes the windows equal size
  • C+w < or > change the window sizes

Awesome. Here’s a screenshot of this great tool:

Using vim diff mode to see differences in MC**2 results
Using vim diff mode to see differences in MC**2 results

As you can sort of see, the results from my VM and the results from new-down match very well. Enough for me to use lappy laptop for lattice physics of fast reactors. It’s about 10 times faster than new-down, which is a 10 year old SPARC Solaris machine with a 450 MHz processor and 512MB of RAM. Processor info on this sun machine found by executing:


It’s snowing hard right now. There are about 3 new inches piling up. I had to wear ski goggles to work today.

As for the Europium case, I’ll need to deal with the fission product MC2 template. It has Eu151 through Eu157 as FPs, which I know from experience with Hf will cause problems when I try to add in more Eu at the top of the input. The question is two-fold: 1. How much of the Eu chain would we like to model explicitly? and 2. Should we disregard Eu as a fission product if we use it as a BP? The answer to the second might be easiest. If we are loading in Eu, the amount we load will be significantly higher than the amoun that would build up from fission, so yes, it is a good approximation to ignore fission production. As for the first question, Eu-151 and 153 are naturally occurring and the others all have short half lives on the order of 5-10 years. I’ll start by modelling up to 154, with absorptions above that going to the lumped fission products. All beta decays will also go to lumped fission products that Gadolinium is a member of (LFP41). With that in mind, I’ll eliminate all Eu except 155 through 157 from the fission product list in mc2FP.template.

The sfrCalc script is running nicely on the new VM MC**2 server. I’ve modified the templates to work with the Eurpium. Still working kinks out of sfrCalc script. Spent some time with 442 students and with Maru doing Origen stuff for Ewing’s class. The rebus run failed initially because the MC2 files had ZR  I and FE  I instead of ZIRCI and IRONI. I changed the table in the imd file for fuel-loading-eu in the templates folder to give the proper labels (t0 maintain compatibility with other templates I’ve used). After regenerating the cross sections, rebus runs.

Oddity: My nexenta distro has the wrong time.

compiling and installing MC**2 and dif3d in linux or windows

I thought the search engines were lacking in this topic that I have some experience in, so I figured I better do my part. I have installed MC**2-2 on a windows computer and on a linux computer using similar methods. The XS libraries I obtained differed from the results from my SPARC machine in the later decimal places, and global calculations were nearly identical. I haven’t tested all features, but it seems to work. I’ve also been running DIF3D 8.0 on my Ubuntu machine through a very ridiculous method. It runs in windows under Cygwin nicely.

MC**2-2 on a modern computer

MC**2 is a nice lattice physics code mostly used for fast reactors. It uses ENDF-V data and has excellent treatment of the unresolved resonances and stuff. According to my friends at Argonne National Lab, MC**2-3 is coming out soon, and it will compile easily on PCs. That’ll be nice, and it will make this discussion irrelevant. It’s going through verification right now. Anyway, until then, here’s the general idea. Get VMWare server and install Solaris 10 for i386 on it. This comes with the f77 compiler that MC**2 can actually use. Once you have that all installed, go in there and extract the MC**2 source. Edit the mcc.f file. Make these code changes:

  1. on line 12029 change REAL*16 to REAL*8. x86 architectures don’t support quad precision
  2. on lines 32858 and 32859, do the same.
  3. starting on line 32900, uncomment the lines with DEXP and DLOC and comment out QLOG and DLOG for a total of 4 changes ( 2 uncomments, 2 comments).
  4. Same on line 32937, but only one swap this time.
  5. Add an extra space before the text on line 44534. This is some error in the RSICC distribution.

I’ve done this on Solaris 10 with great success, and now I’m trying it out on OpenSolaris, on my new external hard drive. I had to give it 1GB of RAM or it was crazy slow. OK it works in opensolaris too. Here are the steps:

  1. gunzip and untar p350tar1.gz
  2. edit exec_compile.mcc.sun script and change the lib and jobdir variables to where ever.
  3. make the code changes to mcc.f as discussed
  4. run a copy of the script with the uncompress and copies commented out so it doesn’t overwrite your changes (I did this a few times)

I had to turn optimization in the script from O3 to O2, or else I got a core dump on compiling mcc. f. If all goes well, you should have the MC2 executable.

Now you have to make the libraries. The code to convert libraries needs similar code changes. Change All REAL*16 s to REAL*8, the QLOG to DLOG, and the QEXP to DEXP. It will compile now. I added the cwd to my path and the script ran nicely. Notice that when you change the code, you can’t just re-run the script as is because it uncompresses the original files each time. I made a copy of the script and commented out all the uncompresses after running it the 1st time.

My last pitfall was that there was a write-protected ISOTXS file in the directory I was trying to run in and MC2 dumped the core on execution. I deleted this file and reran with wonderful success.

I witnessed one of the guys who lead the development team of Windows 3.1 try to compile MC**2 once with the intel ifort compiler. He got it compiled, but it failed at runtime with memory allocation errors. That’s the story of my life.

DIF3D8 on a modern PC

DIF3D 8.0 compiles with G95. I followed instructions I found here to do it. I did run into a problem, however, with memory allocation when running on Linux. In Windows XP, under Cygwin, the instructions work perfectly. I am able to run in Linux by using the Cygwin-compiled executable through WINE. This is, conceptually, extremely ridiculous as it is using an emulator to run a program which is emulating the platform that I’m on. Go figure. The bottom line is that it works and it runs quite quickly — moreso than on the ancient solaris machines I used to run on. I think it should be quite easy to get it working natively on linux using G95 with a little effort, so let me know if you figure it out.

Cross section libraries

When transfering XS libraries from one machine to another, it is important to do so in ASCII, or BCD (binary coded decimal) mode. When I run MC**2, I get a binary ISOTXS file that will not transfer nicely to other computers. I use a utility to convert this to ISOBCD, which I then convert back to ISOTXS on the computer I’d like to run on.

nse out, now bibtex

I sent my prof.  my version of the manuscript. Now I’m trying to get the proper citations for Nuclear Science and Engineering with bibtex. I’ve been running into Charles Karney’s physics journal bibtex styles, but I haven’t gotten them working yet. They say to run them through the c preprocessor to get different styles, but I just get errors like:

physics.bst:9:19: warning: missing terminating ‘ character

physics.bst:3484:7: warning: extra tokens at end of #else directive

Ah. This is because cpp has decided that it shouldn’t be used for processing anything besides actual source code. Well, thankfully they left in the -traditional-cpp option. So if you use

cpp -P -traditional-cpp physics.bst nse.bst

It will actually work. That’s excellent. This is nice.

[1] C. Tzanos, E. Gyftopoulos, and M. Driscoll, “Optimization of Material
Distributions in Fast Reactor Cores”,    Nucl. Sci. Eng.  52, 84 (1973)

Here’s a nice cheat sheet for VIM. I’m using it to capitalize the first letter of each word in my bibtex.tex file. I’m sure the bibtex style can do this but I’m not bothering.

Here’s the final product: nse.bst

UPDATE: I put double quotes around article and techreport titles, as discussed here.

Also, fonts from my LyX install were really fuzzy when printed. I went into document settings and changed font family to Roman and set font to Latin Modern Roman and now the fonts don’t get fuzzy when you zoom in so I’ll assume they don’t get fuzzy on print either. Let’s hope not.

I also just added a reCAPTCHA plugin to this blog. It works. My simpleCAPTCHA plugin wasn’t showing the image, nor was it even showing up in the plugin list. I renamed the simple-captcha folder in my plugins folder and now recaptcha is in charge.

I need to call Jeff soon to tell him he’s publishing this.

thorium workshop, 2nd iteration

I’m at the thorium workshop here at school. There’s a guy from Thor power in Norway giving a talk. It’s interesting.

Fleming just suggested BeO as a moderator in a Th reactor. It’s diffusion length is just right (more than water, less than graphite), it won’t burn like graphite in air, and it increases your beta-effective with it’s delayed photoneutrons and stuff. I should tell will this.

But I’m actually working on BP stuff. I ran the BP search before the TRU search on the 2nd iteration of case 2. The BP search direction is loading correctly now, but it’s not covering the full power peak. I’m going to get power plots that correspond to the search direction plots now. It was very simple to do with my plotSearchDir2 function. (I have a good library I guess). It’s very useful to see these two together, layered on top of each other with the compiz fusion opacify functionality. Wow.

My mpeg4 povray videos didn’t work on JCLs mac computer. I’ll have to look into that. Ah, mac’s don’t support the avi container. I did this:

ffmpeg -f mp4 -vcodec mpeg4 -i case3-flyby.avi

to convert it to quicktime and sent it to him to see if it would have worked. It did.

There are asymmetries that show up in the 2nd iteration of the v4 case. They’re worse in the 3rd iteration. None help the peaking factor. What the heck. Should have gotten 1/3 core model to work. Must finish manuscript. Will stick with 1st iteration.  Damn damn damn.

second iteration, screen magic, new line search

First thing I did this morning was install the AntiBotQuestion mod in my phpBB3 forum for Spam bots were getting in so I had to shut them down. Unfortunately it didn’t stop guest posts, but I went to the forum and found an extra few lines to add and now it seems to work. Only issue: if you get the captcha wrong, the anti-spam question doesn’t show up in the re-try page. I’ll try to narrow that down later.

I got a nice plot of the 2nd iteration search direction for case 3. It didn’t yield any improvement, however. That’s too bad, or good. Apparently my linesearching is phenomenal. Maybe I should run a few cases of CORTANA BEFORE doing BDT.

Concerns about the BP search not doing anything persist. As expected, the class 1 enrichment increases each time I add BPs. This increase obviously counteracts the effects of the BPs, but it should at least bring the peaks at BOC and EOC closer together. Ope, I noticed the HF concentrations are all identical. Let’s make them natural. Which Hf isotope is the best absorber? Off to the NNDC. According to my chart of the nuclides, Hf-174 is 0.16%, 176 is 5.%, 177 is 18.%, 178 is 27.&, 179 is 12%, and 180 is 35.% Here are all their cross sections:

Hafnium isotopes absorption cross sections
Hafnium isotopes absorption cross sections

Jeff talked about Europium a lot. Here’s a comparison of The two natural isotopes with some of the better Hafnium ones:

Absorption cross-sections of Hafnium and Europium
Absorption cross-sections of Hafnium and Europium

Yeah that Eu-151 is pretty rocking. Given more time, I would put that in. For now, I’ll either admit that the BP searches didn’t do anything, or leave them out completely.

Time to give Professor his slides. If you import EPS into GIMP, make sure to turn the anti-aliasing filters on. OK sent them off. I went up and talked them over with him and he gave me a few tasks:

  1. Switch TRU enrichment one high means add and low means take out. I thought this was done already. Check negative jump. Yeah, in positive jump parameter cases, the search direction is switched by the line search, but the plots will still be wrong. Need to swap them in plotting too for intuition.
  2. Do a fly-by animation. YES! This is going to be hilarious. It’s rendering now. I’ll put it on youtube soon. (here it is)
  3. Remove empty hexes in the core map image.

While doing this, I realized that the BP search and TRU searches shouldn’t be switched from each other. It just worked out that way because they’re both accomplishing the same work. It’s on the 2nd iteration that the BP search might make more sense. All I have to do is work on my line search parser, making it that it reads old controls and updates them rather than making a whole new set each time. hmmmm. Exciting. This also explains why the BP search isn’t doing much. It’s not changing things in the right places. Let’s design a new line searcher

New Line Search Ideas

Currently, we have binned regions based on search directions to have values centered around 1.0, with min and max of  0 and 2. Additionally, the BP line search has the capability of setting any value less than a certain cutoff to zero. Both TRU enrichment modification factors and BP EF priorities get set directly to whatever is in these bins. This makes good sense for the first iteration, where everything is set to 1.0. But in subsequent iterations, these values should represent percent changes in the current value. So if we have a 1.05, increase the current value by 5%. That’s pretty easy.

I’m starting these changes on revision 10. Will start with BP search because it doesn’t work well anyway. Hmm, it’s not so simple as to just doing this multiplication though, because if I want to just increase the size of the feed each time, I don’t want the priority distribution changing. Obviously, I want to separate increase feed size into a different function. Duh.

Linux screen utility wonder

I did learn that I’ve been using screen wrong the whole time. You should only start a screen session once! Not once for each window. Press Ctrl+a, A to name your window, Ctrl+a, c to react a new window, Ctrl+a, ” to list all windows…. etc. How great is that. Productivity just increased. Here’s where I read about it.


Back to work on the same old. I figured out the grayscale images yesterday, but I still need to generate them for all the new uranium cases that don’t have thousands of kg of Hafnium in them. Additionally, I’m going to add a picture of the adjont source in the 1-D slab. Will need to try to make it eps. On it. Running the analytic oned solution now. I chose search and will see what we get. It’s been a while since I ran this code. OK I got a decent plot out. I used TeX text processing on it and it looks phenomenal. Now to generate the B&W ones for three cases…

In case 1, the 0-th timestep jump parameter is negative, so we need to switch the sense of all search directions. can handle that now, with the N option, for “negative.” That’s revision 8 in the itd svn repository. Rerunning v6 case with proper sense. Let’s see if we can do better. With improper searching, we started at peaking factor 1.05038 and got to 1.04 by bp search, and to 1.039 by end of BDT. Lame.

Uhh. I just spend 1.5 hours with MCNP crap for a student in my class. Why are we struggling with MCNP when we should be learning reactor analysis? Damn another hour with the class! These guys are killing me.

Well here’s some instructions I just made for doing safety analysis of SFRs in REBUS or MC**2:

<!– @page { margin: 0.79in } P { margin-bottom: 0.08in } –>

Disabling the criticality search in REBUS

by Nick Touran

If you want to perform any kind of basic void coefficient, Doppler coefficient, or temperature coefficient of reactivity estimations in REBUS for fast reactors, you have to disable the criticality search. Here’s how.

  1. Run your regular base case of interest. Look at the output for the final value of the enrichment modification factor. You will find a edit like this near the bottom:


+ +


+ +




Note the factor. You need to put it into your perturbed file.

  1. Make a new rebus and MC**2 case with the perturbations you wanted. Decrease the sodium density, decrease the fuel density, eject a control rod, whatever.

  2. In that new rebus input, go to the A.BURN card 4. You should see a 1.000 representing the desired k-eff at EOC. After that, there is a convergence criterion, probably set to 0.0001 or so. Change it to 1.000. This disables the criticality search.

  3. The last two numbers in that same line are the first and second guesses of the new enrichment modification factor. Change the first one to the factor noted from the previous output file. Keep in mind that you can only put this number between certain columns. Check the manual to see which ones. Be careful with this!

  4. If there is a burn cycle time search enabled as well, disable it in the same manner (on card 3 though) and insert the burn step time manually!

  5. Now criticality search is off and you’ve manually set the critical class 1 enrichment. You’re ready to run. Run your new rebus case and compare k-effs with those from the base case.


If you change a density somewhere, make sure it changes in the cross section library calculation too! The energy self shielding can vary wildly with different densities.

This method of calculating safety parameters should be taken with a grain of salt because it does not account for any anisotopies that you may see in real rod ejection accidents, etc. Diffusion theory is only an approximation of transport! Try using some perturbation theory codes like VARIANT if you want better results.

Have fun!

OK. What else? The new line search behaved very well. But in v5, the big case, the reactivity swings are all miniscule! 1.001 at BOC? Say what? Investigating. The core is breeding plutonium. It’s a breeder. Ah! Well the plenum had the wrong material, it looks like. I fixed it in the CORTANA input maker to agree nicely with the Hill cases of old and am now re-running just the first rebus case. This large case requires a very low guess of the enrichment modification factor.

jacobi-free newton-krylov methods, macarthur foundation, rebus

I just went to a talk this morning by D.A. Knoll about the Jacobi-free Newton-Krylov methods he’s been working on at INL. He’s eliminated the need for operator splitting with his formulation, and thus gained Newton-like convergence on problems that usually don’t have anywhere near that speed. The trade-off is that in preconditioning, you still have to use the low-order operator if you want any real efficiency. So, for instance, you’d use the power iteration to precondition the Newton-Krylov version of solving a k-eigenvalue problem. This solves many problems with discretization and provides what he called “scale bridging.” I’m wondering if this could help with my thesis idea of depletion perturbation theory. I need the harmonic eigenfunctions of a time dependent diffusion system. Hmmm.

Knoll is talking about this stuff at this year’s M&C. He has a 2004 survey of the topic in Journal of Computational Physics.

On a more fun note, I asked Fleming about the whole 4n+0 ($$4n+0$$) radioactive decay chain terminology for the Thorium decay chain. A more self-descriptive name of this would be $$A%4=0$$, as this is what it’s actually trying to say. The A value of Th-232 is perfectly divisible by 4. Since alpha-decay is the primary mode of changing A in radioactive decay of these heavy elements, and all alpha decays change A by exactly 4,  all nuclides in the decay chain will have the same modulo with 4. Thus, the Thorium-232 decay chain nuclides all have zero modulus with 4. And since A=238 of U-238 has a remainder of 2 when divided by 4, the U-238 chain is called 4n+2. U-235 has a remainder of 3 when 235 is divided by 4, so the U-235 chain is 4n+3. And so on. Apparently, this his how high schoolers used to be taught about radioactive decay. Now that I look harder, this is well documented on wikipedia.

Whoa. REBUS is totally messing up again. I have an external feed, EFB set to size 0 that only contains Hafnium, but there’s a bunch of hafnium showing up in my simulations. This is not OK. I could have sworn this model was working properly. Oh, I bet I know what was happening. I think REBUS doesn’t let you use 0.0 for an external feed size. This perfectly explains the large jump in behavior I was observing once I started the BP line searches! So for the initial run, I’ll need to put in 1e-10 as the external feed size. Testing this now. On the bad side, we’ll surely see less impressive optimization results now, since there were thousands of kilograms of Hafnium in each initial run. Damn. Yup, sure enough. Set EFB size to 1.0E-10 and it behaves correctly. Now to rerun all again.

JCL got back to me on the manuscript. We need more words, so I’ll go through and try to beef it up.

web page, REBUS

OK I got the forum up and running. It’s at We actually have 2 interesting posts. Well, OK I did send it out to ne-gradstudents. There was a request months ago for something like it and I just decided it was a good idea. I expect it won’t get much traffic.

Two lame things I struggled with:

1) Changing the color scheme in the phpBB3 application for the prosilver theme almost drove me crazy. It stores CSS data in the database, so when you change the CSS files, the theme is not updated. I tried switching the CSS data to be stored in the file system, but then I couldn’t change any images! It was horrible, until I realized what was going on. The prosilver theme requires the CSS be in the database because all the template files point to database variable locations. So the trick is, keep it all in the database, but edit the load settings in General -> server settings and turn Recompile stale style components to yes. Then, edit the CSS file and your changes will actually propagate. That took me forever to figure out.

2) My favicon.ico got reverted to the basic favicon.ico from hostmonster. I tried putting my version in my main folder but it wouldn’t change back. I even got a firefox plug-in that’s supposed to refresh the icons. Then I found that it has to be a windows icon, so if you create it with the GIMP, you have to follow these instructions. And it worked when I went to my site in my VMs, but my main firefox icon has not refreshed yet! I expect it to soon. I guess the plug-in isn’t working.

As for research, the equilibrium line-search I was running had 0.0 EOL peaking factors! I guess I forgot to propagate the changes. Will rerun soon. Hmm, just changing the peak fast fluences flag didn’t help. Trying A.BURN card. Yup that did it. The last two lines in card 02 of A.BURN should be 1 in this case. The peak fluence flag doesn’t matter. That makes more sense.

And in other news, my Dad read a book called The Black Swan. He made my ask Karl what he thinks about it out there in Berkeley. It’s arguing that the bell curve doesn’t work for things it’s been used for, like economies and whatnot. Here’s a blurb from the book [pdf].

It’s a nice day today so I went out on the roof with Adrienne and Alex. I got the idea to take a panoramic photo from the top and it got me working on photostitching in Linux. So I did some searching and found that Hugin sounds like the way to go. I got it out of the Ubuntu repository, put some control points in (fairly easily), and then tried to make the image but it complained that enfuse wasn’t found. So I downloaded it and ./configure and sudo make; make install ‘d it. While doing so, I had to get lots of libraries out of the repos, including boost development libraries and one called libxmi that I got from here (manually). I learned that you need more than 1 control point, or else it spins your images around and makes a big mess. But soon, I made a beautiful panoramic that is stitched together very nicely. Cool.

Uploading large files to gallery2 required that I go into my php.ini in the main folder and change

upload_max_filesize = 2M to 20 M. Then it uploaded no problem.

Hot Tub Controller

So, I have to tell you about the hot tub project. It’s been going on for a few weeks now and we just basically finished it. I (with some help from Jesse) have set up a microcontroller to control and monitor the hot tub. We have a temperature sensor mounted on the heating element tube and we wired in a relay to control when the heater turn on. Then we wrote code to allow it to interface with email, the internet, and even text messages! For real. Look:

Text message from the hot tub
Text message from the hot tub

Haha! Here are some more gems:

Temperature plotsand you can control it with this form:

control_formOr you can just control it from the command line:

terminalSo here’s what’s going on. Firstly, there’s an arduino connected to a USB port of the computer in the basement. Here’s a pic:

ArduinoOne of the digital pins on the Arduino is connected to a OneWire bus with three temperature sensors hooked up to it with a pull-down resistor connecting the bus to the 5V line. That’s the green wire. The ground is white ground.  The three sensors are hooked up (in parasite power mode) to 30 feet of indoor/outdoor CAT-5 wire from Home Depot. I surrounded each temperature sensor with a piece of 3/8″ O.D. copper tubing (which is miraculously already corroding) and pinched them down and sealed them up with Silicone. Here’s a pic of the outdoor sensor.

Outdoor temp sensor in copper

Anyway, yeah. The last sensor, the one on the tub, is wrapped in lots of insulation from the hardware store to try to keep the outdoor temperature from affecting the hot tub readings.

On another digital pin (the orange wire), we have a relay circuit that we can turn on and off easily. In the hot tub, it connects the wire that connects the coil of the main heater relay. So it’s  a relay for a relay, effectively. We just set the temperature dial very high and use the Arduino to cut it off when we want. We got the circuit from here. Here’s a copy of that:


Nice. I used a relay that can handle up to 30A, 240V, with a 12V coil. I got the 12V by splicing off of the hard drive power cable inside the computer (blue wire, with white blue as ground. That’s the same ground, but we didn’t want to tap into the fragile cat5 wire again). That’s unfortunate because it requires the computer be on to have the heater on. A better design would not rely on the computer to maintain control of the hot tub.

The rest of it is just software. I’m using the pySerial module to read and write to the USB tty device in 32-bit Ubuntu 8.10 Linux. The code that I compiled on the Arduino chip simply accepts simple characters through the serial port and does as asked. It knows how to turn heater on, off, read temperatures, and tell whether or not the heater is on. I’ll build some safety logic in soon. Right now, all the control logic and communication is done in Python on the computer. I have an Arduino class that abstracts the commands the Arduino knows. Then there’s the hottubController class that checks the sensors and turns the heat on and off accordingly. It calls the communication class, that checks for commands in an IMAP email account, submits temperature information to a MySQL database on my server, and sends command responses via SMTP. The text messaging functionality works simply because you can easily use the text-to-email gateways used by many major phone companies. The MySQL stuff is done with the MySQLdb python module, which is fairly simple.

The web form is a python cgi that makes that simple HTML table and sends the commands in. The plotter is another python script that reads the database and puts the data into an HTML file, which is then parsed by the flot JavaScript plotting routines on the clientside, allowing zooming and dynamic date x-axis labels, which are awesome.

Still to come: predictive hot tub times. Since the heating is very linear, it’s possible to extrapolate the time at which the tub will reach a given temperature. You’ll get a text that says: “the hot tub will be ready at 10:37PM” How cool will that be at the bar?

With all the copper, casings, arduino, sensors, relays, silicone, insulation, and various other tools I bought during this, it’s up to about $100, not including the computer. Not bad!

More Details

In case you’re wondering or debugging the hot tub controller, here are some more details.

The breadboard setup for the hot tub controller
The breadboard setup for the hot tub controller
Here's what the arduino wires look like. Nothing special.
Here's what the arduino wires look like. Nothing special.

Out at the hot tub, you’ll see a silver toggle switch. Under normal operation, this should be in the center position. To shut down special features and go back to plain-old hot tub, put the switch in the up position. This gives control of the hot tub back to its internal thermostat. It also disables the 10 second heater delay relay.