I've learned that according to Condensed phase thermochemistry data, according to NIST, the functions of heat capacity, enthalpy, and entropy can be predicted by the Shomate Equation: $$\begin{align} t &= \text{Temperature } (K) / 1000\\ C_\mathrm{p} &= A + B\cdot t + C \cdot t^2 + D \cdot t^3 + E / t^2\\ \Delta \text{Enthalpy} = \int C_\mathrm{p}\mathrm{d}t &= A\cdot t + B\cdot t^2 /2 + C\cdot t^3 /3 + D\cdot t^4 /4 − \frac Et + F − H\\ \text{Standard Entropy} &= \int \frac{C_\mathrm{p}}{t}\mathrm{d}t\\ S^\circ &= A \cdot \ln(t) + B\cdot t + \frac C2 \cdot t^2 + \frac D3 \cdot t^3 − \frac E{2 \cdot t^2} + G \end{align}$$

You can see parameters A - H from the NIST webbook in condensed phase data for iron, for example, here.

I've plotted the enthalpy, entropy, and heat capacities as a function of temperature for $\ce{NaCl}$, $\ce{MgCl2}$, $\ce{H2O}$, $\ce{Fe}$, $\ce{Li}$, and $\ce{Cu}$ using their special coefficients A - H for each material. I did this over the range of temperatures 298 Kelvin to 450 Kelvin.

Ranking the heat capacities over the range of temperatures studied:

copper < iron < lithium < sodium chloride < magnesium chloride < water.

Since molar heat capacity is the heat required to raise one mole of a substance by 1 degree celsius, it seems that water which is a liquid has more places to put the heat plus hydrogen bonding so it has the highest heat capacity. The ionic compounds $\ce{NaCl}$ and $\ce{MgCl2}$ have greater heat capacities than the metals these are compounds with ion-ion interaction in a crystal lattice which gives more places to put the heat and thus comparatively a significantly higher heat capacity. The heat capacity of $\ce{MgCl2}$ appears to be much greater than $\ce{NaCl}$ because $\ce{MgCl2}$ is divalent so the charge-charge interaction in the crystal lattice is greater, raising the heat capacity.

The heat capacities of the metals lithium, iron, and copper are very close. I don't get why copper has a lower heat capacity than the other metals since copper has more electrons so there should be more energy levels to put the heat I would think. Quite simply I don't understand the behavior of the metals, especially if the Shomate parameters A - H are experimentally determined how can I match this to my intuition?

The trends of enthalpies generally seem to follow the heat capacities as a function of temperature. It's kind of interesting that the entropy of $\ce{MgCl2}$ is significantly greater than $\ce{H2O}$, but that there's some cross-over with $\ce{H2O}$ and $\ce{NaCl}$ in standard entropies as function of temperature.

How should I interpret all this, particularly the metals?


Respectively how I calculated all this was kind of tedious, but performed in R:

library(ggplot2)

# Data for Nickel:
# http://webbook.nist.gov/cgi/inchi?ID=C7440020&Type=JANAFS&Table=on#JANAFS

# Data for Copper
# http://webbook.nist.gov/cgi/inchi?ID=C7440508&Type=JANAFS&Plot=on

# etc ...
# Materials used: Copper, H2O, Iron, Lithium, MgCl2, NaCl

# Schomate Equation:

# C_p = A + B*t + C*t^2 + D*t^3 + [E / (t^2)] + H_298-Kelvin_standard

# Enthalpy: H = A * t + (B / 2)(t^2) + (C / 3)(t^3) + (D / 4)(t^4) - (E / t) + F - H 

# Entropy: S = A * ln(t) + B*t + (C / 2)(t^2) + (D / 3)(t^3) - [E / (2 * t^2)] + G

# Open the file of Schomate Parameters for solids 
FILE = read.csv(file = "Schomate_Parameters.csv", header = TRUE, sep = ",")

# Split up the file into lists of each material. 
Each_Material = split(FILE, FILE$Material)

# Solution_df is the dataframe that has the Temperatures, Heat Capacities, Enthalpies, Entropies, and Free_Energies.
# Basically everything I need to make some stellar graphs and point-wise interpretation.
# It takes some effort to construct. We will start assuming 5 columns. 
Solution_df <- data.frame(matrix(nrow = 0, ncol = 5))

# These are the initial Five Columns that I will calculate. 
my_column_names <- c("Material", "Temperature", "Enthalpy", "Entropy", "Heat_Capacity")

# And I assign these as column names. 
colnames(Solution_df) <- my_column_names


###### THIS IS A MAJOR MULTI-FUNCITON #############
################# CAREFUL #########################
for(my_index in 1:length(Each_Material)) # Iterating over every material: Copper, NaCl, Iron, etc ... 
{

  Material_type = names(Each_Material[my_index]) # Find the current materials name. 

  This_Material = as.data.frame(Each_Material[my_index]); # Deal with it as a dataframe. 

  # Assign variables A through H as the schomate parameters
  # which, by the way, change for each new material in this for-loop. 
  A = This_Material[1, 3]
  B = This_Material[2, 3]
  C = This_Material[3, 3]
  D = This_Material[4, 3]
  E = This_Material[5, 3]
  F = This_Material[6, 3]
  G = This_Material[7, 3]
  H = This_Material[8, 3]

  # The temperature ranges from 298 kelvin to 400 kelvin in increments of 0.1 kelvin. 
  Temperatures = seq(from = 298, to = 450, by = 1)
  # For some reason, the parameters provided by NIST request calculations in terms of kilo-kelvin.
  Temperatures = Temperatures / 1000

  # This is the heat_capacity function for any material
Schomate_Heat_Capacity <- function(t)
{
  A + B*t + C*(t)^2 + D * (t)^3 + (E / (t)^2)
}

  # Then I create a list of the heat capacities at each temperature. 
Heat_Capacities = Schomate_Heat_Capacity(Temperatures)

  # The Enthalpy function as a function of temperature 
Schomate_Enthalpy <- function(t)
{
  A*t + (B / 2)*(t)^2 + (C / 3)*(t)^3 + (D / 4)*(t)^4 - (E / t) + F - H 
}

 # Then I create the enthalpies
Enthalpies = Schomate_Enthalpy(Temperatures)

 # The Schomate Entropy function as a function of Temperature. 
Schomate_Entropy <- function(t)
{
  A * log(t) + B*t + (C / 2) * (t)^2 + (D / 3)*(t)^3 - (E / (2 * (t)^2)) + G
}

 # THen I compute the entropies at each temperature. 
Entropies = Schomate_Entropy(Temperatures)

# The name of each material must occur as many times as the temperature for the columns to be the same number of rows. 
Material_type_repeated <- rep(Material_type, length(Temperatures))

# Create a temporary dataframe for every material holding the Material type, Temperature, Enthalpies, Entropies, and Heat Capacities. 
Temporary_df <- data.frame(Material_type_repeated, Temperatures, Enthalpies, Entropies, Heat_Capacities)

# Make sure the names match up to the solution dataframe
colnames(Temporary_df) <- my_column_names

# And then bind all of these temporary dataframes to the solution dataframe. 
Solution_df <- rbind(Solution_df, Temporary_df)

}
########### END OF major multi-function ##############
######################################################

# Post Processing: 
# Calculations depended that Temperature be in kilo-kelvin
# But it should be represented in Kelvin now. 
Solution_df$Temperature = Solution_df$Temperature * 1000

# Note: Enthalpy is in kJ / (mole)
# Entropy is in J / (mole * K)
# Temperatures is now in Kelvin.

# So Free_Energy = Enthalpy - Temperatures * Entropy

# = (___ kJ / mole) - (__ Kelvin) * (J / (mole * Kelvin)) * (1 kJ / 1000 J)

# So Free Energy = Enthalpy - Temperature * Entropy * (1 / 1000) 
# Therefore Free Energy is in kJ / mole

# Let's calculate the Free Energy Now: 

Solution_df$Free_Energy = Solution_df$Enthalpy - Solution_df$Temperature * Solution_df$Entropy * (1 / 1000)

# Remove Nickel because ggplot can show no more than 6 categories. 

Solution_df <- Solution_df[Solution_df$Material != "Nickel",]

################################################ END OF POST-PROCESSING ##################################
##########################################################################################################

# Creating Graphs: all as a function of temperature.

# The heat capacity plot: 

HC_plot <- ggplot(data = Solution_df, aes(x = Temperature, y = Heat_Capacity, col = Material, shape = Material)) + theme_bw() + geom_point(size = 1)

HC_plot <- HC_plot + scale_x_continuous(breaks = scales::pretty_breaks(n = 30)) + scale_y_continuous(breaks = scales::pretty_breaks(n=30))

HC_plot <- HC_plot + labs(x = "Temperature (Kelvin)", y = "Heat Capacity (Joules per mole per Kelvin)", title = "Heat Capacity of Various Materials\nAs a function of Temperature from Schomate Equation!")

ggsave(plot = HC_plot, filename = "Heat_Capacity_by_Temp_Schomate_Plot.png", width = 10, height = 10)

print(HC_plot)

###### Creating Enthalpy as a function of Temperature Plot 

Enthalpy_Plot <- ggplot(data = Solution_df, aes(x = Temperature, y = Enthalpy, shape = Material, col = Material)) + theme_bw() + geom_point(size = 1)

Enthalpy_Plot <- Enthalpy_Plot + scale_x_continuous(breaks = scales::pretty_breaks(n = 30)) + scale_y_continuous(breaks = scales::pretty_breaks(n = 30))

Enthalpy_Plot <- Enthalpy_Plot + labs(x = "Temperature (Kelvin)", y = "Delta Enthalpy (kJ / mole)", title = "Enthalpy as a function of Temperature\nFor various Materials as Predicted by Schomate Equation")

ggsave(plot = Enthalpy_Plot, filename = "Enthalpy_vs_Temperature_Schomate_Plot.png", width = 10, height = 10)

print(Enthalpy_Plot)

################ Creating Entropy as a function of Temperature Plots: 

Entropy_Plot <- ggplot(data = Solution_df, aes(x = Temperature, y = Entropy, shape = Material, col = Material)) + theme_bw() + geom_point(size = 1)

Entropy_Plot <- Entropy_Plot + scale_x_continuous(breaks = scales::pretty_breaks(n = 30)) + scale_y_continuous(breaks = scales::pretty_breaks(n=30))

Entropy_Plot <- Entropy_Plot + labs(x = "Temperature (Kelvin)", y = "Standard Entropy (Joules per mole per Kelvin)", title = "Entropy as a Function of Temperature\nFor various Materials as predicted by Schomate Equation")

ggsave(plot = Entropy_Plot, filename = "Entropy_vs_Temperature_Schomate_Plot.png", width = 10, height = 10)

print(Entropy_Plot)

And the file that I read in with read.csv looked like this:

structure(list(Material = structure(c(7L, 7L, 7L, 7L, 7L, 7L, 
7L, 7L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L), .Label = c("Copper", "H2O", "Iron", "Lithium", "MgCl2", 
"NaCl", "Nickel"), class = "factor"), Parameters = structure(c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L), .Label = c("A", "B", "C", "D", "E", 
"F", "G", "H"), class = "factor"), Values = c(13.6916, 82.49509, 
-174.9548, 161.6011, -0.092417, -6.833644, 27.669, 0, 17.72891, 
28.0987, -31.25289, 13.97243, 0.068611, -6.056591, 47.89592, 
0, 18.4286, 24.64301, -8.91372, 9.664706, -0.012643, -6.573022, 
42.51488, 0, 50.72389, 6.672267, -2.517167, 10.15934, -0.200675, 
-427.2115, 130.3973, -411.1203, 78.30733, 2.435888, 6.858873, 
-1.728967, -0.729911, -667.5823, 179.2639, -641.6164, -203.606, 
1523.29, -3196.413, 2474.455, 3.855326, -256.5478, -488.7163, 
-285.8304, 169.552, -882.711, 1977.438, -1487.312, -1.609635, 
-31.24825, 413.6466, 0)), .Names = c("Material", "Parameters", 
"Values"), class = "data.frame", row.names = c(NA, -56L))

I don't have any questions about my code. I put it in here to make my results reproducible. I'm just curious why copper has lower heat capacity than lithium when copper has more electrons so I would think there would be more energy states to put the heat. However, it's also true that copper has a smaller atomic radius than lithium so maybe this is a factor but I'm not sure how it affects the heat capacity.

Heat Capacity vs Temperature Plot. Heat Capacity as a function of Temperature

Delta Enthalpy vs Temperature Plot: Delta Enthalpy vs Temperature plot

Standard Entropy vs Temperature Plot: Standard Entropy vs Temperature Plot

Furthermore, is there any underlying theory in the Schomate Equation or is it mostly polynomial regression fitted to limited calorimetric experimental data?

  • 2
    I might be able to elaborate a better answer later, but have you analyzed this problem from the perspective of crystal structures? You seem to be emphasizing the matter of atomic properties, but thermodynamic properties like heat capacity are much more affected by the spatial arrangement of the atoms and the chemical bond strength. A quick search told me copper has FCC structure while iron and lithium have a BCC structure. Maybe you could pick up from that? – Vinícius Godim Mar 5 at 5:05
  • I'm not so sure about that, though I think it's a valid point. I'd like to make some more graphs, but I'm quite honestly having a problem having ggplot2 graphs because they default to not showing more than 6 categorical factors like such as my materials. I am thinking about atomic properties, but the crystal structures are very much a factor. Good idea. – xyz123 Mar 5 at 5:10
  • Electrons don't contribute much to heat capacity at these temperatures because the electrons bound to atoms need a big boost in energy to lift them out of their ground states and the free electrons in metals are mostly packed in energy states up to the Fermi level with just a small fraction sloshing around that can contribute to heat capacity. Why is the $y$-axis heat capacity per mole of molecules rather than per mole of atoms to compensate for the Dulong-Petit law? – user5713492 Mar 5 at 8:19
up vote 2 down vote accepted

The Debye theory of the heat capacity solids predicts that the thermal energy is tied up in vibrations of the material. These can be described as phonons or sound waves in the lattice. In a metal there is a high density of free electrons as an 'electron gas' and we would expect these to contribute to the heat capacity but often the limiting value is only $\approx 25$ kJ/mol which is $\approx 3R$ and does not have the extra $3R/2$ per mole expected from a monoatomic gas. Thus the heat capacity of the electron appears to be negligible.

The reason for this is that electrons are Fermions and each quantum state can therefore only contain one electron. At the Fermi level $E_F$ in the metal some electrons can accept energy and are promoted into higher energy levels and so form the 'electron gas'. However, by the Pauli exclusion principle, very few electrons from approximately $k_BT$ below the Fermi level can be promoted as there are no vacant levels in which to go. Thus only quantum states close to the Fermi level can accept energy and these form a small fraction of the total as $k_BT \ll E_F$.

If the electrons behaved classically then the internal energy $U$ would be increased by $3R/2$ but experiment dictates that this value has to be reduced by the fraction of electrons that can accept energy. This is related to the density of quantum states (number/unit energy) in the metal. The effect this has is to reduce the heat capacity due to the 'electron gas' to $\approx 0.5$% of the total heat capacity.

The effect of the electron gas can be observed only at very low temperature (typically $\lt 10$ K), where the heat capacity due to phonons is reduced, and is given by $C_{total}=\gamma T+\alpha T^3$ where the cubic part is from the expansion of the Debye equation at low temperature and the linear term from the electron gas. The constant $\gamma$ is the contribution due to electronic heat capacity and is proportional to the density of states at the Fermi level.

The difference in heat capacity between different metals is therefore mainly due to their different lattice motions not the electrons.

Edit: the constant pressure heat capacity $C_p$ for Li at 25 C is 24.78 and for copper 24.44 both in J/K/mol. In fact most metals have similar values at this (high) temperature. Beryllium has a v low value (16.4) and this is probably due to v. high lattice phonon modes compared to other metals.

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.