Like the title says, this blog is about computational physics.
Both programming and physics, together. There are plenty of blogs out there about programming, plenty of blogs about physics, not so many about both and hopefully I’ll manage to have at least a couple of posts covering some things that very few cover.
As a warning, you will not find here much philosophy about physics. If you are looking for an opinion about the Many Worlds Interpretation or something like that, go somewhere else, you won’t find such things here.
My intention is to have a new program for many of the posts, although some programs might need more than one entry for the theory. I don’t intend to write very complicated programs to post here, for two reasons, one is the time and work involved and another one is that a complicated program is hard to understand. I’ll try to keep them at a level that allows understanding them fairly easy. Even if I’ll feel the need to add something to an existing program for a new blog entry, I’ll start a new project by copying the old project and then adding to it. This way at least the old one will still be easy to understand. Of course, if somebody finds some bugs I’ll fix them if possible.
Languages, IDEs, libraries and so on
The programming languages used will be… C++ and C++. And C++, of course. Sorry. When I can decide and it’s not an obvious advantage in favor of another one, I pick C++. If you are curious what other (not all of them) programming languages, libraries and technologies I know and use, see the ‘About Me’ page. Maybe I’ll change my mind and use some other language, too, but right now I don’t intend to.
I almost decided to use wxWidgets for the UI library, but two things happened: Microsoft offered Visual Studio1 for free (including for small firms, thank you, Microsoft!) and second, the stable version of wxWidgets (3.0.2 when I write this) did not compile out of the box with Visual Studio 2015. I had to change the code in several places to be able to compile it, so I decided to spare others of having difficulties compiling the programs and in consequence, I’ll use mfc. Yes, mfc, not .net. It has more than enough of what I need for UI for those simple programs and besides, there is always Windows API.
I might switch to wxWidgets in the future and make portable programs, but for now mfc should do. The goal of this blog is not to offer programs to be used for something else than learning, so having them compiled on Windows only is not so bad.
Of course I’ll use some other libraries, see the links section for more.
Since I’m not paid for them, do not expect commercial quality. I’ll write them fast and if they appear to work, it’s good enough for me. By the time I expose them in a blog post, I expect them to have plenty of bugs. Maybe I’ll fix them later. Maybe I’ll improve them. There is no warranty of any kind. To ease the work I might not write them as they should be written, on purpose. For example I’ll let class members exposed as public to be able to access them even if they shouldn’t be public. Anyway, that does not mean they will not work or that they will crash all over the places. It just means I can do much better but I’m not sure I want to spend the additional time for that. Often I’m using the IDE to create the class skeleton. The class might have a destructor even if it does not need it. Very often the rule of three (actually now the rule of five) will not be respected, although it’s a very good practice. Many objects in the projects will not be copied/assigned/moved around, so those constructors and operators are not really needed. When they are needed, they will be there.
Support, donations, advertisements
I don’t intend to fill this site with annoying pop-up ads, at most you’ll see is one for my firm, hopefully discrete enough and that’s it. I don’t intend to ask for donations, either, but that might change later, depending on the blog success and how much I’ll invest in it.
Licenses, copyrights and all that legal stuff…
Well, the code will be open source. I’m a big fan of open source and I feel I should give something in return. It will be GNU GPL probably for most of the projects, but for some I might use other licenses. The main idea is to not blame me for anything in case you use the software and something goes wrong and to not pretend that you were the one that wrote the software.
On the other hand, be aware that anything else than the code I post on GitHub2 is not subjected to the same licensing. That includes the blog posts, images and videos and anything else hosted here or on some other site (like youtube but not limited to it). Obviously I cannot have copyright on theories/formulae presented on this blog, but what is original – and by that I mean even the presentation of theories with my own words – it should not be copied and used without my consent. Thank you for understanding.
By the way, everything I present on this blog you should check somewhere else. Do not take anything as true just because it’s written here. If you fail your exam because you learned something wrong here, don’t blame me.
I’ll try to offer links in the posts, either to arXiv3 or Wikipedia4 but of course I cannot offer credit to all that were involved in discoveries and developing of the theories that are presented/used. I might even miss some important ones. I’m sorry about that, but having this blog redacted in a scientific paper style would take an insane amount of work.
I’ll add here some more links when I’ll decide for some others (like a FFT one, but Eigen already has an ‘unsupported’ one in there).
Here is a way (besides comments on the blog) to contact me, but please don’t use it unless you have some project you want to outsource, use the comments instead:
Please use the comments in the blog for bugs reporting and/or suggestions. Thank you!
- Visual Studio Free for individuals and small companies! ↩
- GitHub Repositories for the blog. ↩ ↩
- arXiv The e-print archive. ↩
- Wikipedia Free Encyclopedia. ↩
- Eigen Linear algebra library. ↩
- glm OpenGL Mathematics. ↩
- glew OpenGL Extension Wrangler Library. ↩
- Boost Free peer-reviewed portable C++ source libraries. ↩