Irregardless of choice of thermodynamic potential, user is not presented with the potential itself, but with temperature. This is what Class thermo (declared in namespace species, and thus referred to as species::thermo in the source code) is for. It connects two previous classes and handles conversion of energy variable (given by the base class, in our case sensibleInternalEnergy) to temperature and vice versa. In the figure you can see the inheritance structure. Note, that thermo is derived from template class, which is instantiated from class thermo itself. This technique is called curiously recurring template pattern (CRTP). This enables static polymorphism (i.e. use of member functions of the derived class in the base class).Source code for class thermo can be found found in
in subdirectories named after respective thermophysical models, eg.
Figure: species::thermo inheritance diagram