Tore HaugWarberg's Home Page 





Then Claude Elwood Shannon was asking John von Neumann what the uncertainty function in his newly created information theory should be called [M. Tribus ``Energy and Information'', Scientific American, 225 (1971) p. 180]. 
This page presents a few of my daily tasks over the past 15 years. There is no chronology with respect to what comes first and what comes last, but most of the time I find myself teaching, pondering, writing, or encoding thermodynamic (model) structures; using different kinds of programming languages. A few words on thermodynamics might be in order since that is my main subject. For instance that it is universally regarded as a difficult subject. To this I would like to say that students spend too much time trying to comprehend all the formulae which, to their believes, make the foundation of thermodynamics. The latter is wrong. Because, if thermodynamics was to be invented a second time it would end up pretty much where it stands today. It is not just a mathematical model of the nature as we see it, it is about Nature itself. To understand thermodynamics one must try to understand nature, and not the formulae. This is, admittedly, not the easiest undertaking. Furthermore, since it is difficult to understand it will also be difficult to teach. This brings in the teacher  student relationship of which I think that:
To be heard is not necessarily to be understood;
This goes both ways: Not only teacher  student, but also student  teacher.
The wording above was chiselled out during my sabbatical stay at UCLA in the fall of 2013, which left me room to think about such things, but searching for similar phrases on the internet will render millions of hits in the form of blogs, papers, essays and books.
Sure enough, the phrase has a classical touch.
If you are looking for similar words of wisdom, the Roman philospher Lucious Annaeus Seneca holds a fair number of them.
If you are interested in my thoughts on 
Thermodynamic models and model parameters: 

Implementing models from the literature is tedious work: The models can be complex, and errors and misprints is the rule, not the exception. 
About thermodynamic consistency: Making the model right is harder than making the right model. 


Collecting and maintaining thermodynamic data(bases): There is somewhere between 0.5 M and 1M physical property values and model parameters in my database collection. 
Verifying component chemistry and uniqueness: As easy at it sounds  this is a very hard task. Many data collections are published with minimal identification information. Just formulas and numbers. Now, one chemical formula may map to several component names, and one component can have several CAS numbers (allthough there to each CAS number is only one component). As a rule, the physical properties of the component must be tested to verify that it is want you think it is. 

Developing new languages for model representation: 

Thermodynamic calculation server (YASIM): Built to serve the needs of Yara International. Basically, it is a thermodynamic stream calculator equipped with a symbolic equation solver. 
Thermodynamic model declaration (Thermo): This is my little baby  a highlevel language written in Ruby to make objectoriented design of model hierarchies possible: 


Automatic gradient calculation (RGrad): Calculating scalar derivatives of explicit functions is quite routine, and of function gradients the same, but calculating function gradients to arbitray order is not. RGrad is a language (designed by me and my PhD student Bjørn Tore Løvfall) for doing exactly this. It has been tested up to the seventh order on the SRK equation of state (yielding about 200,000 lines of exported C code): 
Mathematical notation: Doing highlevel programming is quite hard without some kind of abstract object representation. Standard notation from calculus is not always sufficient and new things must be tried out... 


Coordinate transformations: Thermodynamics is much about shifts in free variables (which is actually why I need the automatic gradient calculations above). Symmetry and beaty is definitly the rule! 
Developing algorithms for: 
Phase stability 
Global optimization 
Multiphase 
Known as flash calculations 
Multicomponent reaction 
Reactions in gas, solid or liquid phases 
Heterogeneous reactions 
Reactions across phase boundaries 
Shock 
Gas explosions and detonations 
Membranes 
Restricted phase equilibrium 
Gravitational field 
Oilgas wells of significant thickness 
Manifolds 
TVN, TpN, HpN, UVN, etc. 
Critical 
Thermodynamic singularities 
Keeping up on equations of state and activity models: 
Hydrocarbons 
LNG, LPG 
Strong acids 
Nitric acid, hydrochloric acid 
Weak electrolytes 
CO2, amines 
Pure fluid properties 
Steam tables and reference fluids 
Inorganic solids 
Allotropic forms of NH4NO3 
Salt melts 
Cryolite 
Liquids 
Liquid air, alcohols 
Highpressure phases 
H2, geochemistry, detonations 
Isotopes 
Heavy water distillation 
Private enterprices: 
Thermodynamic pun: HAUG is an acronym for Enthalpy, Helmholtz, Internal, Gibbs (besides being my first family name). A small company serving customers in Norwegian industry, institutions and private sector with tailor made computer code for all kinds of thermodynamic calculations. 

Teaching (TKP4175, KP8108): 

TKP4175: The course shall provide a thorough introduction to the mathematical methods of thermodynamics, aimed at the use in simple control volume theory, computation of properties of thermodynamic mixtures (gases and liquids), and phase and reaction equilibrium calculations. KP8108: Handson course in thermodynamic equilibrium theory and algorithms (Newton type) for computing complex phase and reaction equilibria, in geometry independent systems. The concept of canonical variables and Legendre transformations is stressed. Programming in Matlab. 
Process simulation with thermodynamic structure: 
A joint effort by me and 3 of my PhD students (Volker Siepmann, Bjørn Tore Løvfall and Olaf Trygve Berglihn). The goal has been to represent, and of course solve, process flowsheets with thermodynamic nodes  both in steady state and dynamic mode. The outcome is in both cases a nicely structured coefficient matrix: 
