[Overview] [Research history] [Articles, Notes, ...]
My humble opinion about current software development practice at universities...
Considering the large number of simulation codes that are written as part of PhD theses and
how few of them continue to be useful for the next generation of researches, I would want
to see a change of thinking there. Developing numerical solvers is not enough; at least
I believe that a solver can be a lot more useful to a larger group of researches if one
puts at least a little effort in documentation and writing a nice interface. May it be
a plain (but well structured and documented) text input file, or even a nice graphical
user interface, everything is better than a quickly hacked
source code without documentation and a structure that even good programmers have trouble
to understand.
Even though researchers are hardly programming cracks, such efforts may take just a little bit
of time but help a lot in exchanging software, even inside the same research group. This is one
of the reasons why I strive to not only solve a problem by writing the code in the first place,
but solve it in a way, that the tool can be used by others to solve the similar problem
again but using less time.
After graduation (September 2002) I started looking at numerical techniques and the coupled heat and moisture transfer (actually a part of my thesis work was already programming an engineering tool named COND).
At the University of Technology Dresden, in the Building Climatology department they had already a very powerful research tool, named Delphin, which was to become the basis of my research code. The old source code however, was a long grown mixture of C and C++ and having enough programming experience I started writing a real object oriented data structure which has over the past years become a complex object model. Along with the data structure I started developing my own numerical solver for the coupled heat and moisture transport.
At January 2003 I became a PhD student candidate at the KU Leuven in Belgium. In the Laboratorium Bouwfysica they also wrote state-of-the-art solvers for the coupled heat and moisture transport using the finite element method. However, their solver was written in Fortran (and as usual poorly documented and not very well structered) and also the complexity of FEM code (in comparison to rather simple finite volume code) scared my off, and I decided to develop an object oriented solver in C++ (which would be better structured, more flexible and possibly even faster :-). In the one and a half year I spent in Belgium I learned how to write efficient fully implicit time stepping solvers (applying all the numerical tricks needed to get a mass conservative and fast converging solutions) but in the end it turned out (or the project required) that I still had to write a solver in Fortran :-)
After coming to Syracuse I spend the first month making an extensive literature review of other numerical techniques, especially techniques used in CFD (computational fluid dynamics). I also reviewed the Adams-Moulton, BDF multistep/multivalue techniques used in the CVODE solver of the Delphin code. Trying out a number of implementations this solver proved to be even more sufficient than the method I learned in Leuven. So my current solvers are based on the BDF method encapsulated in the CVODE library. Parallel to further develop the coupled heat, moisture, air and salt solver, I continue studying the numerical techniques used in current CFD codes.