Universidade do Estado do Rio de Janeiro
Instituto de Química
Prof André Luís Alberton
Índice

Importando propriedades do NIST WebBook¶

As propriedades podem ser importadas diretamente do NIST Webbok. Uma das formas consiste no no uso do pacote pandas. Vejamos um exemplo.

Propriedades informadas para espécies puras¶

No site do NIST podemos fazer a pesquisa por espécie. Para tanto:

  • abra a página do NIST
  • selecione como pesquisar o compostos Fórmula, ou o Nome, ou o Identificador IUPAC, ou o Número de registo CAS
  • na página subsquente, insira o campo escolhido (se Nome, por exemplo ethanol)
  • selecione a propriedade desejada.

A página de pesquisa para o etanol por exemplo gera este resultado. Podemos pesquisar dados de interesse, sobretudo:

  • Gas phase thermochemistry data (propriedades da fase gás)
  • Condensed phase thermochemistry data (propriedades da fase líquida)
  • Phase change data (propriedades de mudanças de fase)
  • Reaction thermochemistry data (dados de reações termoquímicas, diversas)

Vejamos um exemplo de como buscar dados de capacidade calorífica do etanol gasoso na página do NIST a seguir.


Exemplo - Importando propriedades da capacidade calorífica do etanol gasoso¶

Uma busca rápida no site do NIST permite obter as propriedades do etanol gasoso neste link. A segunda e terceira tabela do site apresenta a tabela da capacidade calorífica do etanol gasoso em função da temperatura. Extraia a tabela de Cp & T e plote os dados.

Solução O código a seguir 'puxa' os dados da tabela da internet. Na sequência, vamos preferir usar uma função própria extraposicao(A,posl,posc) para extração dos dados de uma 'matriz' informadas suas posições de linhas e colunas.

In [123]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# importação de dados, tomando a segunda tabela [1]
Dd = pd.read_html('https://webbook.nist.gov/cgi/cbook.cgi?ID=C64175&Units=SI&Mask=1#Thermo-Gas')[1]

# imprime a primeira parte da tabela
Dd.head()
Out[123]:
Cp,gas (J/mol*K) Temperature (K) Reference Comment
0 37.12 50.00 Thermodynamics Research Center, 1997 p=1 bar. Recommended entropies and heat capaci...
1 41.70 100.00 Thermodynamics Research Center, 1997 p=1 bar. Recommended entropies and heat capaci...
2 46.94 150.00 Thermodynamics Research Center, 1997 p=1 bar. Recommended entropies and heat capaci...
3 52.02 200.00 Thermodynamics Research Center, 1997 p=1 bar. Recommended entropies and heat capaci...
4 61.46 273.15 Thermodynamics Research Center, 1997 p=1 bar. Recommended entropies and heat capaci...
In [11]:
# remove ± com uma lista de um índice só, ex x = ['1 ± 0.1','2 ± 0.3',...]. Retorna os valores e as incertezas
def remove_maismenos(x):
    n = len(x)
    y = []
    err_y = []
    for i in range(n):
        aux = x[i].split('±')
        y.append(aux[0])
        if len(aux)>1:
            err_y.append(aux[1])
        else:
            err_y.append(None)
    return(y,err_y)

# Extrai dados de temperatura e Cp
T = Dd['Temperature (K)'].values
Cp = Dd['Cp,gas (J/mol*K)'].values

# remove +- com a função remove_maismenos()
Cp,err_Cp = remove_maismenos(Cp)

# plota
plt.plot(T,Cp,'bo')
plt.xlabel('$ T (K) $',fontweight = 'heavy',fontsize=20)
plt.ylabel('$ C_p (J / mol / K) $',fontweight = 'heavy',fontsize=20)
Out[11]:
Text(0, 0.5, '$ C_p (J / mol / K) $')

Varreduras de várias propriedades¶

No site do NIST, também podem ser feitas varreduras de diversas proopriedades de espécies individuais, sobretudo em função de pressão e temperatura. Dentre estas, o site menciona:

  • Densidade
  • Cp
  • Entalpia
  • Energia interna
  • Viscosidade
  • Coeficiente de Joule-Thomson
  • Volume específico
  • Cv
  • Entropia
  • Velocidade do som
  • Condutividade térmica
  • Tensão superficial (apenas a curva de saturação)

Podem ser feitas pesquisas sobre propriedades de substâncias:

  • Propriedades isotérmicas
  • Propriedades isobáricas
  • Propriedades isocóricas
  • Propriedades de saturação – incrementos de temperatura
  • Propriedades de saturação – incrementos de pressão

Exemplo - importando as propriedades isotérmicas da água¶

Obtenha as propriedades listadas no site NIST para a água a 298 K entre 0.1- 10 MPa.

Solução

Vamos abrir o site NIST. A seguir, vamos selecionar o composto e água e as propriedades isotérmicas, conforme ilustrado

fig1

Vamos Podemos escolher a temperatura e a faixa de pressão.

fig1

Ao solicitar a pesquisa, temos as propriedades tabeladas em função da variação de pressão. O site correspondente pode ser aberto aqui. Podemos extrair a tabela usando o pandas conforme ilustrado a seguir

Vale ressaltar que o comando pd.readextrai as tabelas de dado documento como uma lista. Pode-se seguir [numero_da_tabela] para obter uma tabela específica. No exemplo, como se trata da primeira tabela, o número dela na lista é [0].

In [147]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# importando a primeira tabela
endereco = 'https://webbook.nist.gov/cgi/fluid.cgi?T=298&PLow=0.1&PHigh=10&PInc=1&Digits=5&ID=C7732185&Action=Load&Type=IsoTherm&TUnit=K&PUnit=MPa&DUnit=mol%2Fl&HUnit=kJ%2Fmol&WUnit=m%2Fs&VisUnit=uPa*s&STUnit=N%2Fm&RefState=DEF'
Dd = pd.read_html(endereco)[0]

# imprime a tabela
Dd
Out[147]:
Temperature (K) Pressure (MPa) Density (mol/l) Volume (l/mol) Internal Energy (kJ/mol) Enthalpy (kJ/mol) Entropy (J/mol*K) Cv (J/mol*K) Cp (J/mol*K) Sound Spd. (m/s) Joule-Thomson (K/MPa) Viscosity (uPa*s) Therm. Cond. (W/m*K) Phase
0 298.0 0.1 55.347 0.018068 1.8770 1.8788 6.5773 74.550 75.329 1496.3 -0.22157 893.07 0.60627 liquid
1 298.0 1.1 55.372 0.018060 1.8757 1.8955 6.5727 74.489 75.277 1498.0 -0.22154 892.93 0.60684 liquid
2 298.0 2.1 55.397 0.018052 1.8743 1.9122 6.5680 74.429 75.225 1499.6 -0.22151 892.79 0.60740 liquid
3 298.0 3.1 55.422 0.018044 1.8729 1.9289 6.5633 74.369 75.173 1501.3 -0.22149 892.66 0.60797 liquid
4 298.0 4.1 55.446 0.018035 1.8716 1.9455 6.5587 74.310 75.122 1503.0 -0.22146 892.53 0.60853 liquid
5 298.0 5.1 55.471 0.018027 1.8702 1.9621 6.5540 74.250 75.072 1504.7 -0.22143 892.40 0.60909 liquid
6 298.0 6.1 55.496 0.018019 1.8688 1.9787 6.5492 74.191 75.022 1506.3 -0.22140 892.27 0.60965 liquid
7 298.0 7.1 55.521 0.018011 1.8675 1.9953 6.5445 74.133 74.972 1508.0 -0.22137 892.15 0.61020 liquid
8 298.0 8.1 55.545 0.018003 1.8661 2.0119 6.5397 74.074 74.922 1509.7 -0.22134 892.03 0.61076 liquid
9 298.0 9.1 55.570 0.017995 1.8648 2.0285 6.5350 74.016 74.873 1511.4 -0.22131 891.92 0.61131 liquid
10 298.0 10.1 55.595 0.017987 1.8634 2.0451 6.5302 73.959 74.824 1513.0 -0.22127 891.81 0.61186 liquid

Pressão de vapor¶

O NIST também apresenta dados das equações de Antoine para as espécies. A equação apresentada pelo site encontra-se escrita na forma:

$$ \log_{10}(P) = A − \frac{B}{T + C}, \ \ \rm{ P \ em \ bar, \ T \ em \ K} $$

Vamos ilustrar para o etanol. Trata-se da primeira tabela da página.

In [148]:
endereco = 'https://webbook.nist.gov/cgi/cbook.cgi?ID=C64175&Mask=4&Type=ANTOINE&Plot=on'
DdPvap = pd.read_html(endereco)[0]
# Imprime o dataframe
DdPvap
Out[148]:
Temperature (K) A B C Reference Comment
0 364.8 - 513.91 4.92531 1432.526 -61.819 Ambrose, Sprake, et al., 1975 Coefficents calculated by NIST from author's d...
1 292.77 - 366.63 5.24677 1598.673 -46.424 Ambrose and Sprake, 1970 Coefficents calculated by NIST from author's d...
2 273. - 351.70 5.37229 1670.409 -40.191 Kretschmer and Wiebe, 1949 Coefficents calculated by NIST from author's d...

Da tabela acima, podemos combinar as equaçõespara obter em uma ampla faixa de temperatura.

In [153]:
def extrai_Antoine(DdPvap):
    n = len(DdPvap)
    eq = []
    for pos in range(n):
        Tfaixa = str(DdPvap.iloc[pos][0])
        Tfaixa = ''.join(Tfaixa.split())
        Tfaixa = Tfaixa.split('-')
        Tfaixa = [float(Tfaixa[0]),float(Tfaixa[1])]
        coef = DdPvap.iloc[pos][1:4]
        eq.append([coef,Tfaixa])
    return eq

def fc_Pvap(T,eq):
    n = len(eq)
    for i in range(n):
        coef = eq[i][0]
        Tfaixa = eq[i][1]
        if T>=Tfaixa[0] and T<=Tfaixa[1]:
            Pvap = 10**(coef[0]-(coef[1]/(T+coef[2])))
            break
    else:
        print('Temperatura fora da faixa')
        Pvap = None
    return(Pvap)

eqnum = 0
T = 100
eq = extrai_Antoine(DdPvap)
Pvap = fc_Pvap(T,eq)
print(Pvap)

T_lista = np.linspace(273,513,100)
Pvap_lista = []
for T in T_lista:
    Pvap_lista.append(fc_Pvap(T,eq))
    
plt.plot(T_lista,Pvap_lista,'b-')
plt.xlabel('$ T (K) $',fontweight = 'heavy',fontsize=20)
plt.ylabel('$ P (bar) $',fontweight = 'heavy',fontsize=20)
Temperatura fora da faixa
None
Out[153]:
Text(0, 0.5, '$ P (bar) $')

Comentários¶

Fica claro que a potencialidade de uso do site NIST é muito rica, com possíbilidade de explorar diversas propriedades dos compostos.

Referências¶

  • P.J. Linstrom and W.G. Mallard, Eds., NIST Chemistry WebBook, NIST Standard Reference Database Number 69, National Institute of Standards and Technology, Gaithersburg MD, 20899, https://doi.org/10.18434/T4D303, (recuperadas 20 fevereiro 2024).
    • Poling, B.E., Prausnitz, J.M., O’Connell, J.P., 2001. The properties of gases and liquids, 5th ed. ed. McGraw-Hill, New York.
    • Smith, J.M., Van Ness, H.C., Abbott, M.M., 2018. Introduction to chemical engineering thermodynamics, 8th ed. ed, McGraw-Hill chemical engineering series. McGraw-Hill, Boston.