Blogs

class MonteCarlo : public Move

Big developments this week. At last, after much development and design, I finally now have a MonteCarlo class! So ok, how have I survived until now without having a MonteCarlo class? Well Python does go a long way to filling in missing functionality. But it can't beat finely crafted design. MonteCarlo is part of the Move hierarchy, which provides a way for pretty much all of the simulation moves that I can think of to operate on Systems when they are either local, or even dispersed over a cluster. Moves operate of groups of Molecules (MoleculeGroups).

Happy New Year!

Happy New Year to everyone! 2007 is here and I am now back to work and programming. I managed to take a week off, and barely touched a computer at all (well, I did mess around a little with the GNU multi-precision library GMP for the purposes of playing around with large prime numbers, but since this wasn't Sire it doesn't count ;-)

Christmas, Christmas, Christmas

What a year! Now that I am about to leave for my holiday I am looking back at how things have gone the last year and, on balance, I am pretty pleased with how everything has turned out. Sire has taken a lot longer to develop than I thought (isn't that always the case!?), though the reasons for the delays have been worth it; e.g.

Argue, Argue, Argue

I've been arguing a lot recently - not with anyone else, but with myself. I tend to argue a lot with myself when I am programming, adopting both a pro- and anti- stance against pretty much every design decision. On the plus side, it means that I really think about what I am doing, and the consequences of each decision, and *really* decide. On the negative side it does make me quite schizophenic, and the self-arguments can become very heated! This weekend was quite a good example. For a long time I have held the view that the Molecule class should be as simple as it can be (i.e.

Profile, Profile, Profile

I've come to really like atomic integer operations and have begun using them a lot in Sire. Atomic integer operations are operations that occur on integers that are guaranteed to occur atomically, i.e. they are thread-safe, as no two operations on that integer may occur simultaneously. Atomic integers are thus very widely used in systems programming, and allow for reference counting in thread-safe smart pointer implementations. Atomic integer operations do however impose some overhead, as they require that access to the integer is serialised.

Computers Don't Like Ambiguity!

Interesting day today... I saw a couple of projects that had some relationship to Sire. I can't say too much on a public forum, but they both showed me that I am on the right track with what I am doing.

Doing lots of things at once...

I am very busy now in the lead up to Christmas. I've got a sort of deadline of January to get some production simulations run so that I can write some papers for submission both to journals, and for talks (so any hints of good places for me to talk at are welcome ;-)

QM Monte Carlo!

I've made a lot of progress over the last week. With Sire, I have worked out the design for the System, Simulation and Processor classes. The design solves the problem of using implicitly shared and easy to copy System / ForceField classes with the single-instance Simulation and Processor classes. The problem is that while I can copy ForceField until the cows come home, I cannot copy Processor (as this may be a unique link to a single remote resource, e.g. a molpro server). I think that the design now is quite elegant - you set up a System, which is copyable and editable etc.