Eu aprendi que, de acordo com os dados de termoquímica da fase condensada, de acordo com o NIST, as funções de capacidade de calor, entalpia e entropia podem ser previstas pela Equação de Shomate: $$ \ begin {align} t & = \ text { Temperatura} (K) / 1000 \\ C_ \ mathrm {p} & = A + B \ cdot t + C \ cdot t ^ 2 + D \ cdot t ^ 3 + E / t ^ 2 \\\ Delta \ text { Entalpia} = \ 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 {Entropia Padrão} & = \ 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} $$
Você pode ver os parâmetros A - H do webbook do NIST em dados de fase condensada para ferro, por exemplo, aqui.
Eu plotei a entalpia, entropia , e capacidades de calor em função da temperatura para $ \ ce {NaCl} $, $ \ ce {MgCl2} $, $ \ ce {H2O} $, $ \ ce {Fe} $, $ \ ce {Li} $, e $ \ ce {Cu} $ usando seus coeficientes especiais cientes A - H para cada material. Fiz isso na faixa de temperaturas de 298 Kelvin a 450 Kelvin.
Classificando as capacidades de calor na faixa de temperaturas estudadas:
cobre < ferro < lítio < cloreto de sódio < cloreto de magnésio Água <.
Uma vez que a capacidade de calor molar é o calor necessário para elevar um mol de uma substância em 1 grau Celsius, parece que a água que é um líquido tem mais lugares para colocar o calor mais ligações de hidrogênio, por isso tem a maior capacidade de calor. Os compostos iônicos $ \ ce {NaCl} $ e $ \ ce {MgCl2} $ têm maior capacidade de calor do que os metais. São compostos com interação íon-íon em uma rede cristalina que fornece mais locais para colocar o calor e, portanto, comparativamente maior capacidade de calor. A capacidade de calor de $ \ ce {MgCl2} $ parece ser muito maior que $ \ ce {NaCl} $ porque $ \ ce {MgCl2} $ é divalente, então a interação carga-carga na estrutura do cristal é maior, aumentando o calor capacidade.
As capacidades de calor dos metais lítio, ferro e cobre são muito próximas. Eu não entendo por que o cobre tem uma capacidade de calor mais baixa do que os outros metais, já que o cobre tem mais elétrons, então deveria haver mais níveis de energia para colocar o calor, eu acho. Simplesmente não entendo o comportamento dos metais, especialmente se os parâmetros de Shomate A - H forem determinados experimentalmente, como posso combinar isso com a minha intuição?
As tendências das entalpias geralmente parecem seguir o calor capacidades em função da temperatura. É interessante que a entropia de $ \ ce {MgCl2} $ seja significativamente maior que $ \ ce {H2O} $, mas que haja algum cruzamento com $ \ ce {H2O} $ e $ \ ce {NaCl} $ em entropias padrão em função da temperatura.
Como devo interpretar tudo isso, principalmente os metais?
Respectivamente, como calculei tudo isso foi meio tedioso, mas realizado em R:
library (ggplot2) # Data for Nickel: # http://webbook.nist.gov/cgi/inchi?ID=C7440020&Type=JANAFS&Table=on # JANAFS # Dados para cobre # http://webbook.nist.gov/cgi/inchi?ID=C7440508&Type=JANAFS&Plot=on# etc ... # Materiais usados: Cobre, H2O, Ferro, Lítio, MgCl2, NaCl # Schomate Equação:
# C_p = A + B * t + C * t ^ 2 + D * t ^ 3 + [E / (t ^ 2)] + H_298-Kelvin_standard # Entalpia: H = A * t + (B / 2) (t ^ 2) + (C / 3) (t ^ 3) + (D / 4) (t ^ 4) - (E / t) + F - H # Entropia: S = A * ln (t) + B * t + (C / 2) (t ^ 2) + (D / 3) (t ^ 3) - [E / (2 * t ^ 2)] + G # Abra o arquivo de Parâmetros Schomate para sólidos ARQUIVO = read.csv ( file = "Schomate_Parameters.csv", header = TRUE, sep = ",") # Divida o arquivo em listas de cada material. Each_Material = split (FILE, FILE $ Material) # Solution_df é o dataframe que tem as temperaturas, capacidades de calor, entalpias, entropias e free_Energies. # Basicamente, tudo que eu preciso para fazer alguns gráficos estelares e interpretações pontuais. # Leva algum esforço para construir. Começaremos assumindo 5 colunas. Solution_df <- data.frame (matrix (nrow = 0, ncol = 5)) # Estas são as cinco colunas iniciais que irei calcular. my_column_names <- c ("Material", "Temperatura", "Entalpia", "Entropia", "Heat_Capacity") # E eu os atribuo como nomes de coluna. colnames (Solution_df) <- my_column_names ####### ESTE É UM PRINCIPAL MULTI-FUNCITON #################################### CUIDADO ############################### Para (meu_index em 1: comprimento (Cada_Material)) # Iterando sobre cada material: Cobre, NaCl, Ferro, etc. ... {Material_type = names (Each_Material [my_index]) # Encontre o nome do material atual. This_Material = as.data.frame (Each_Material [my_index]); # Lide com isso como um dataframe. # Atribua variáveis de A a H como os parâmetros do schomate # que, a propósito, mudam para cada novo material neste loop for. 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] # A temperatura varia de 298 kelvin a 400 kelvin em incrementos de 0,1 kelvin. Temperaturas = seq (de = 298, a = 450, por = 1) # Por alguma razão, os parâmetros fornecidos pelo NIST solicitam cálculos em termos de quilo-kelvin.
Temperaturas = temperaturas / 1000 # Esta é a função heat_capacity para qualquer materialSchomate_Heat_Capacity <- função (t) {A + B * t + C * (t) ^ 2 + D * (t) ^ 3 + (E / (t) ^ 2)} # Em seguida, crio uma lista das capacidades de calor em cada temperatura. Heat_Capacities = Schomate_Heat_Capacity (Temperatures) # A função Entalpia em função da temperatura Schomate_Enthalpy <- function (t) {A * t + (B / 2) * (t) ^ 2 + (C / 3) * (t) ^ 3 + (D / 4) * (t) ^ 4 - (E / t) + F - H} # Então eu crio as entalpiasEntalpias = Schomate_Entalpia (temperaturas) # A função de Entropia Schomate em função da Temperatura. Schomate_Entropy <- função (t) {A * log (t) + B * t + (C / 2) * (t) ^ 2 + (D / 3) * (t) ^ 3 - (E / (2 * ( t) ^ 2)) + G} # Então eu calculo as entropias em cada temperatura. Entropies = Schomate_Entropy (Temperatures) # O nome de cada material deve ocorrer tantas vezes quanto a temperatura para que as colunas tenham o mesmo número de linhas. Material_type_repeated <- rep (Material_type, length (Temperatures)) # Crie um dataframe temporário para cada material contendo o tipo de Material, Temperatura, Entalpias, Entropias e Capacidades de Calor. Temporary_df <- data.frame (Material_type_repeated, Temperatures, Enthalpies, Entropies, Heat_Capacities) # Certifique-se de que os nomes correspondem aos dataframecolnames da solução (Temporary_df) <- my_column_names # E então vincule todos esses dataframes temporários aos dataframes da solução. Solution_df <- rbind (Solution_df, Temporary_df)} ############ FIM DA multifuncional principal ########################### ############################################## Pós-processamento: # Os cálculos dependiam de que a temperatura estivesse em kilo-kelvin # Mas agora ela deve ser representada em Kelvin. Solution_df $ Temperature = Solution_df $ Temperature * 1000 # Observação: Entalpia está em kJ / (mole) # Entropia está em J / (mole * K) # Temperaturas agora está em Kelvin. # Então Free_Energy = Entalpia - Temperaturas * Entropia
# = (___ kJ / mol) - (__ Kelvin) * (J / (mol * Kelvin)) * (1 kJ / 1000 J) # Portanto, energia livre = Entalpia - Temperatura * Entropia * (1/1000) # Portanto, livre A energia está em kJ / mole # Vamos calcular a energia livre agora: Solution_df $ Free_Energy = Solution_df $ Enthalpy - Solution_df $ Temperature * Solution_df $ Entropy * (1/1000) # Remova o níquel porque o ggplot não pode mostrar mais do que 6 categorias. Solution_df <- Solution_df [Solution_df $ Material! = "Nickel",] ########################################## ################ FIM DO PÓS-PROCESSAMENTO ######################################### ############################################################### ############################################################### ########## Criando gráficos: tudo em função da temperatura. # O gráfico de capacidade de calor: HC_plot <- ggplot (data = Solution_df, aes (x = Temperatura, y = Heat_Capacity, col = Material, shape = Material)) + theme_bw () + geom_point (size = 1) HC_plot <- HC_plot + scale_x_continuous (breaks = escalas :: pretty_breaks (n = 30)) + scale_y_continuous (quebras = escalas :: pretty_breaks (n = 30)) HC_plot < - HC_plot + labs (x = "Temperatura (Kelvin)", y = "Capacidade de Calor (Joules por mol por Kelvin)", title = "Capacidade de Calor de Vários Materiais \ nComo uma função da Temperatura da Equação de Schomate!") Ggsave ( plot = HC_plot, filename = "Heat_Capacity_by_Temp_Schomate_Plot.png", largura = 10, altura = 10) imprimir (HC_plot) # ##### Criando entalpia como uma função do Gráfico de Temperatura Enthalpy_Plot <- ggplot (dados = Solution_df, aes (x = Temperatura, y = Entalpia, forma = Material, col = Material)) + theme_bw () + geom_point (size = 1) Enthalpy_Plot <- Enthalpy_Plot + scale_x_continuous (quebras = escalas :: pretty_breaks (n = 30)) + scale_y_continuous (quebras = escalas :: pretty_breaks (n = 30)) Enthalpy_Plot <- Enthalpy_Plot + labs (x) ", y =" Delta Entalpia (kJ / mol) ", title =" Entalpia em função da temperatura \ nPara vários materiais, conforme previsto pela equação de Schomate ")
ggsave (plot = Enthalpy_Plot, filename = "Enthalpy_vs_Temperature_Schomate_Plot.png", largura = 10, altura = 10) print (Enthalpy_Plot) ################### Criando entropia como uma função de gráficos de temperatura : Entropy_Plot <- ggplot (dados = Solution_df, aes (x = Temperatura, y = Entropia, forma = Material, col = Material)) + theme_bw () + geom_point (size = 1) Entropy_Plot <- Entropy_Plot + scale_x_continuous (quebras = escalas :: pretty_breaks (n = 30)) + scale_y_continuous (breaks = escalas :: pretty_breaks (n = 30)) Entropia_Plot <- Entropia_Plot + labs (x = "Temperatura (Kelvin)", y = "Entropia Padrão (Joules por mol por Kelvin) ", title =" Entropia como função da temperatura \ nPara vários materiais, conforme previsto pela equação de Schomate ") ggsave (plot = Entropy_Plot, filename =" Entropy_vs_Temperature_Schomate_Plot.png ", largura = 10, altura = 10) imprimir (Entropy_Plot)
E o arquivo que eu li com read.csv era parecido com:
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 ("Cobre", "H2O", "Ferro", "Lítio", "MgCl2", "NaCl", "Níquel"), classe = "fator"), Parâmetros = estrutura (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), .Rótulo = c ("A", "B", "C", "D", "E" , "F", "G", "H"), classe = "fator"), Valores = 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,6672267, -2,517167, 10,15934, -0,012643, -6,573022, 42,51488, 0, 50,72389, 6,672267, -2,517167, 10,15934, -0,2006,273,153,153,153,113,153,113,153,103,153,103,113,103,153,113,153,103,113,103,113,103,113,103,113,103,113,135,103,113,103,113,113,135,103,113,113,113,135,103,113,103,113,273,113,135,113,1 53,1 53,1 53,1 53,1 53,1 13,1 53,1 53,1 53,1 13,1 53,1 53,1 53,1 53,1 13,1 53,1 53,113,103,113,113,103,113,103,113,103,113,103,113,1; , 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, -203,606, 1523,29, -3196,413, 2474.455, 3,855326, -256,5478, -488,7163, -285,8304, 169,552, -882,711, -1,487,38, -1,487,38, -1,487,438, -1,460,47,38, 1931,438, -1,460,438, -1,460,48,38,38,31,31,31,438, -1,46 731,438, -1,4604,38, 1931,438, -1,46 731,438, -1,46 731,438, -1,46 731,438, -1,460,438, -1,460,38,38,1431,438, -1,460,438, -146 731,4 , 413.6466, 0)), .Names = c ("Material", "Parâmetros", "Valores"), class = "data.frame", row.names = c (NA, -56L))
Não tenho dúvidas sobre meu código. Coloquei aqui para tornar meus resultados reproduzíveis. Estou apenas curioso para saber por que o cobre tem menor capacidade de calor do que o lítio, quando o cobre tem mais elétrons, então eu acho que haveria mais estados de energia para colocar o calor. No entanto, também é verdade que o cobre tem um raio atômico menor do que o lítio, então talvez esse seja um fator, mas não tenho certeza de como isso afeta a capacidade de calor.
Gráfico de capacidade de calor x temperatura.
Gráfico de entalpia delta vs. temperatura:
Gráfico de entropia padrão vs. temperatura:
Além disso, existe alguma teoria subjacente na Equação de Schomate ou é principalmente regressão polinomial ajustada a dados experimentais calorimétricos limitados?