The evaluation of the Helmholtz energy functional and the minimization of the grand potential is provided by the FeO s Python package . Once the grand potential is minimized, the equilibrium density is integrated over a unit cell to calculate the loading. Repeating the calculations for multiple bulk pressures yields adsorption isotherms, i.e., the loading as a function of the pressure at constant temperature. The enthalpy of adsorption at each pressure gives the enthalpy of adsorption curves as detailed in Sec. II B.