Sunday, May 23, 2021

Spelunking CACM, vol. 2 (1959): Abstracts -- Nuclear Reactor Codes

Today's Communications of the ACM spelunking is a startling find from volume 2, 1959: Abstracts -- Nuclear Reactor Codes, attributed to "The Nuclear Codes Group, Virginia Nather and Ward Sangren", General Atomics. It's not clear to me if Virginia and Ward are members of the NCG who led this effort, or whether it's NCG AND Virginia and Ward.

This article is essentially a list of known programs used in the design and simulation of nuclear reactors. For each one, it lists the authors, status/availability, what problem it solves (most in words, some with accompanying differential equations), estimated run time (in hours and minutes, not big-O notation; big-O has existed since the 1890s, but wasn't common in computer science until Knuth-sensei made it so in the 1970s), limitations and some comments.

This article describes 239, yes, two hundred thirty-nine programs used in nuclear reactor design -- in 1959! There is an additional page listing several dozen more that they didn't fully catalog! And this wasn't even the first such list; that dates to 1955, according to the authors. Given that ENIAC was completed in 1945, the first IBM 650 was installed at the end of 1954 and the first IBM 704 in 1955, I am astounded at how quickly codes for this purpose proliferated. On the other hand, building reactors was one of the preeminent science and engineering problems of the day, so I suppose I shouldn't be.

The authors worried a bit that their list was dominated by codes for the 650 and 704; did that mean they were missing other important ones? Interpreting the performance of the 650 in modern terms is a little difficult, but the 704 could perform 12,000 floating point operations per second, several orders of magnitude faster than a human and incredibly valuable to calculation-dependent teams. A few programs ran in seconds; most list fractions of hours up to a few hours. The 704 codes seem to mostly run in minutes, so presumably represent hundreds of thousands up to low millions of floating point operations, taking into account that I/O is a big fraction of running time.

They list 33 different organizations/laboratories where these codes were known to be running. That means that the mean laboratory created about eight programs, which I suppose is reasonable. (I didn't try to assess that distribution.)

The authors categorize programs in the following way:

  • Burnup -- "dealing with decay and fuel or poison depletion"
  • Engineering -- "involving non-nuclear calculations such as heat transfer or stress analysis"
  • Group Diffusion -- diffusion theory approximations, which they further divide into three-dimensional, two-dimensional, one-dimensional (there are a lot of these!), and control rod calcuations
  • Kinetics -- "concerned with reactor startup and sudden changes in reactivity"
  • Miscellaneous -- curve fitting, etc.
  • Monte Carlo -- given that this is a technique and not an application, not sure why it's categorized this way
  • Physics -- "any code involving nuclear physics calculations which is used for reactor design and does not appear in another category"
  • Transport -- "solving an approximation to the Boltzmann transport equation other than those under (G) [group diffusion]"

Wow...

No comments: