Skip to main content

Densidade atmosférica e suas mudanças devido à altitude

A atmosfera terrestre é dividida em camadas que variam em temperatura, densidade, pressão e altitude. Hoje vamos focar em uma dessas variáveis: a densidade do ar; ela é definida como a razão entre massa e volume (Kgm2)(\frac{Kg}{m^2}):

ρ=mV\rho = \frac{m}{V}

Quanto maior a altitude e mais distante da superfície, menor será a densidade. Mas por que?

Podemos atribuir à essa queda três fatores:

  1. À medida que aumentamos a altura, há menos “ar” acima de nós, pressionando-nos, diminuindo a pressão e, assim, a densidade;
  2. Pela gravidade diminuir conforme aumenta-se a altitude, o peso efetivo do ar decai, diminuindo também a densidade;
  3. Em maiores altitudes, a temperatura do ar fica mais fria, sendo assim, menos denso.

Com isso, nota-se que não é simples compreender a divisão atmosférica, visto que há tantos fatores envolvidos. Portanto, vamos simplificar nosso estudo e simular um modelo no qual a atmosfera é uma única camada isotérmica, ou seja, não possui variação de temperatura, e em que há uma diminuição exponencial da densidade com a altitude:

ρ=ρ0ehH\rho = \rho_0 e^{\frac{-h}{H}}

Para ρ0=1225Kgm3\rho_0 = 1225 \frac{Kg}{m^3} como a densidade ao nível do mar. Vamos também assumir um intervalo para a altitude, com 200 valores entre 0 e 80 km. A partir disso, já podemos estabelecer essas relações em um gráfico e ver como é o decaimento da densidade nesse modelo simplificado. Lembrando que na realidade esse processo é bem mais complexo e não exclui a variação da temperatura!

Dados simulados, não são baseados em medidas experimentais. Trata-se apenas de uma representação sobre a proporcionalidade direta entre as variáveis. A escala logarítmica foi adotada para o eixo y e a escala linear para o eixo x para uma melhor visualização do intervalo estudado.

Dados simulados, não são baseados em medidas experimentais. Trata-se apenas de uma representação sobre a proporcionalidade direta entre as variáveis. A escala logarítmica foi adotada para o eixo y e para o eixo x para uma melhor visualização da função estudada.

Logo, percebemos que, independente das escalas, a diminuição da densidade conforme aumentamos a altitude é observada e comprovada.

Código utilizado para as simulações:

  • Gráfico 1:
import numpy as np
import matplotlib.pyplot as plt
import imageio
import os


def atmospheric_density(altitude):
"""
Calcula a densidade atmosférica usando um modelo exponencial:
\rho(h) = \rho_0 * exp(-h/H)
onde:
- \rho_0 = 1.225 kg/m³ (densidade ao nível do mar)
- H = 8.5 km (altura de escala)
"""
rho_0 = 1.225 # kg/m³ (densidade ao nível do mar)
H = 8500 # metros (altura de escala)
return rho_0 * np.exp(-altitude / H)


# Gerando valores de altitude de 0 a 80 km
altitudes = np.linspace(0, 80000, 200)


# Calculando as densiades atmosféricas
densities = atmospheric_density(altitudes)


# Create a directory to store the frames
if not os.path.exists("frames"):
os.makedirs("frames")


# Generate frames for the GIF
for i in range(1, len(altitudes) + 1):
plt.figure(figsize=(8, 5))
plt.plot(altitudes[:i] / 1000, densities[:i], label='Densidade Atmosférica', color='b')
plt.xlabel('Altitude (km)')
plt.ylabel('Densidade (kg/m³)')
plt.title('Densidade Atmosférica vs. Altitude')
plt.yscale('log')
plt.legend()
plt.grid()


# Save the frame
filename = f"frames/frame_{i:03d}.png" # Pad with leading zeros for proper sorting
plt.savefig(filename)
plt.close()


# Create the GIF using imageio
frames = []
for i in range(1, len(altitudes) + 1):
filename = f"frames/frame_{i:03d}.png"
frames.append(imageio.imread(filename))
imageio.mimsave("atmospheric_density.gif", frames, fps=10)


print("GIF created successfully!")
  • Gráfico 2:
import numpy as np
import matplotlib.pyplot as plt
import imageio
import os


def atmospheric_density(altitude):
"""
Calcula a densidade atmosférica usando um modelo exponencial:
\rho(h) = \rho_0 * exp(-h/H)
onde:
- \rho_0 = 1.225 kg/m³ (densidade ao nível do mar)
- H = 8.5 km (altura de escala)
"""
rho_0 = 1.225 # kg/m³ (densidade ao nível do mar)
H = 8500 # metros (altura de escala)
return rho_0 * np.exp(-altitude / H)


# Gerando valores de altitude de 0 a 80 km
altitudes = np.linspace(0, 80000, 200)


# Calculando as densiades atmosféricas
densities = atmospheric_density(altitudes)


# Create a directory to store the frames
if not os.path.exists("frames"):
os.makedirs("frames")


# Generate frames for the GIF
for i in range(1, len(altitudes) + 1):
plt.figure(figsize=(8, 5))
plt.plot(altitudes[:i] / 1000, densities[:i], label='Densidade Atmosférica', color='b')
plt.xlabel('Altitude (km)')
plt.ylabel('Densidade (kg/m³)')
plt.title('Densidade Atmosférica vs. Altitude')
# set scale to 'log' for both x and y axes
plt.xscale('log')
plt.yscale('log')
plt.legend()
plt.grid()


# Save the frame
filename = f"frames/frame_{i:03d}.png" # Pad with leading zeros for proper sorting
plt.savefig(filename)
plt.close()


# Create the GIF using imageio
frames = []
for i in range(1, len(altitudes) + 1):
filename = f"frames/frame_{i:03d}.png"
frames.append(imageio.imread(filename))
imageio.mimsave("atmospheric_density_exp.gif", frames, fps=10)


print("GIF created successfully!")