Skip to content
  • Henry Weller's avatar
    thermophysicalModels: Changed specie thermodynamics from mole to mass basis · abc50e21
    Henry Weller authored
    The fundamental properties provided by the specie class hierarchy were
    mole-based, i.e. provide the properties per mole whereas the fundamental
    properties provided by the liquidProperties and solidProperties classes are
    mass-based, i.e. per unit mass.  This inconsistency made it impossible to
    instantiate the thermodynamics packages (rhoThermo, psiThermo) used by the FV
    transport solvers on liquidProperties.  In order to combine VoF with film and/or
    Lagrangian models it is essential that the physical propertied of the three
    representations of the liquid are consistent which means that it is necessary to
    instantiate the thermodynamics packages on liquidProperties.  This requires
    either liquidProperties to be rewritten mole-based or the specie classes to be
    rewritten mass-based.  Given that most of OpenFOAM solvers operate
    mass-based (solve for mass-fractions and provide mass-fractions to sub-models it
    is more consistent and efficient if the low-level thermodynamics is also
    mass-based.
    
    This commit includes all of the changes necessary for all of the thermodynamics
    in OpenFOAM to operate mass-based and supports the instantiation of
    thermodynamics packages on liquidProperties.
    
    Note that most users, developers and contributors to OpenFOAM will not notice
    any difference in the operation of the code except that the confusing
    
        nMoles     1;
    
    entries in the thermophysicalProperties files are no longer needed or used and
    have been removed in this commet.  The only substantial change to the internals
    is that species thermodynamics are now "mixed" with mass rather than mole
    fractions.  This is more convenient except for defining reaction equilibrium
    thermodynamics for which the molar rather than mass composition is usually know.
    The consequence of this can be seen in the adiabaticFlameT, equilibriumCO and
    equilibriumFlameT utilities in which the species thermodynamics are
    pre-multiplied by their molecular mass to effectively convert them to mole-basis
    to simplify the definition of the reaction equilibrium thermodynamics, e.g. in
    equilibriumCO
    
        // Reactants (mole-based)
        thermo FUEL(thermoData.subDict(fuelName)); FUEL *= FUEL.W();
    
        // Oxidant (mole-based)
        thermo O2(thermoData.subDict("O2")); O2 *= O2.W();
        thermo N2(thermoData.subDict("N2")); N2 *= N2.W();
    
        // Intermediates (mole-based)
        thermo H2(thermoData.subDict("H2")); H2 *= H2.W();
    
        // Products (mole-based)
        thermo CO2(thermoData.subDict("CO2")); CO2 *= CO2.W();
        thermo H2O(thermoData.subDict("H2O")); H2O *= H2O.W();
        thermo CO(thermoData.subDict("CO")); CO *= CO.W();
    
        // Product dissociation reactions
    
        thermo CO2BreakUp
        (
            CO2 == CO + 0.5*O2
        );
    
        thermo H2OBreakUp
        (
            H2O == H2 + 0.5*O2
        );
    
    Please report any problems with this substantial but necessary rewrite of the
    thermodynamic at https://bugs.openfoam.org
    
    Henry G. Weller
    CFD Direct Ltd.
    abc50e21