The adiabatic lapse rate describes how the temperature of an air parcel changes as it rises or descends in the atmosphere without exchanging heat with its surroundings. This concept is fundamental to meteorology, aviation, and outdoor activities like hiking or mountaineering.
Types of Adiabatic Lapse Rates
There are two primary types of adiabatic lapse rates used in atmospheric thermodynamics:
Dry Adiabatic Lapse Rate (DALR): This applies to unsaturated air (air with relative humidity less than 100%). As dry air rises, it expands and cools at a constant rate of approximately 9.8°C per 1,000 meters (or roughly 5.4°F per 1,000 feet).
Saturated (Moist) Adiabatic Lapse Rate (SALR): Once the air cools enough to reach its dew point, water vapor condenses into liquid water (forming clouds). This condensation releases latent heat, which slows the cooling process. The SALR varies but is typically averaged at 6.0°C per 1,000 meters (or roughly 3.3°F per 1,000 feet).
The Calculation Formula
To calculate the temperature at a new altitude, you can use the following formula:
Lapse Rate: The rate of cooling per 1,000 units of distance (meters or feet).
Example Calculation
Imagine you are hiking a mountain. You start at sea level (0 meters) where the temperature is 25°C. You plan to hike to a peak at 2,000 meters. The air is dry.
Determine the Rate: Since the air is dry, we use the DALR of 9.8°C/1000m.
Calculate Temperature Loss: (2,000 / 1,000) × 9.8 = 19.6°C.
Subtract from Initial Temp: 25°C – 19.6°C = 5.4°C.
The temperature at the peak would be approximately 5.4°C.
Why Temperature Increases When Descending
The process works in reverse. As an air parcel descends, it is compressed by increasing atmospheric pressure. This compression heats the air. This causes phenomena like the "Chinook" or "Foehn" winds, where wind coming down the side of a mountain range is significantly warmer than the air at the summit.
function toggleUnits() {
var system = document.getElementById('unitSystem').value;
var tempUnit = document.getElementById('tempUnit');
var altUnit1 = document.getElementById('altUnit1');
var altUnit2 = document.getElementById('altUnit2');
var rateUnit = document.getElementById('rateUnit');
if (system === 'metric') {
tempUnit.innerText = "°C";
altUnit1.innerText = "m";
altUnit2.innerText = "m";
rateUnit.innerText = "°C/1000m";
} else {
tempUnit.innerText = "°F";
altUnit1.innerText = "ft";
altUnit2.innerText = "ft";
rateUnit.innerText = "°F/1000ft";
}
// Reset result area to avoid confusion with old units
document.getElementById('result-area').style.display = 'none';
}
function toggleCustomRate() {
var type = document.getElementById('lapseType').value;
var customContainer = document.getElementById('customRateContainer');
if (type === 'custom') {
customContainer.style.display = 'block';
} else {
customContainer.style.display = 'none';
}
}
function calculateLapseRate() {
// 1. Get Inputs
var system = document.getElementById('unitSystem').value;
var tStart = parseFloat(document.getElementById('initialTemp').value);
var hStart = parseFloat(document.getElementById('startAlt').value);
var hEnd = parseFloat(document.getElementById('endAlt').value);
var type = document.getElementById('lapseType').value;
var customRate = parseFloat(document.getElementById('customRateVal').value);
// 2. Validation
if (isNaN(tStart) || isNaN(hStart) || isNaN(hEnd)) {
alert("Please enter valid numeric values for temperature and altitudes.");
return;
}
// 3. Define Rate based on selection and system
var rate = 0;
var rateText = "";
if (type === 'custom') {
if (isNaN(customRate)) {
alert("Please enter a valid custom lapse rate.");
return;
}
rate = customRate;
rateText = "Custom (" + rate + (system === 'metric' ? "°C/1000m" : "°F/1000ft") + ")";
} else {
if (system === 'metric') {
// Metric Constants (°C per 1000m)
if (type === 'dry') { rate = 9.8; rateText = "Dry Adiabatic (9.8°C/1000m)"; }
else if (type === 'saturated') { rate = 6.0; rateText = "Moist Adiabatic (~6.0°C/1000m)"; }
else if (type === 'env') { rate = 6.5; rateText = "Standard Atmosphere (6.5°C/1000m)"; }
} else {
// Imperial Constants (°F per 1000ft)
if (type === 'dry') { rate = 5.4; rateText = "Dry Adiabatic (5.4°F/1000ft)"; }
else if (type === 'saturated') { rate = 3.3; rateText = "Moist Adiabatic (~3.3°F/1000ft)"; }
else if (type === 'env') { rate = 3.56; rateText = "Standard Atmosphere (3.6°F/1000ft)"; }
}
}
// 4. Calculate
var altDiff = hEnd – hStart;
// Formula: T_new = T_old – (Rate * (DeltaH / 1000))
// Note: If going UP (positive diff), temp decreases (subtraction).
// If going DOWN (negative diff), temp increases (minus a negative = plus).
var tempChange = rate * (altDiff / 1000);
var tFinal = tStart – tempChange;
// 5. Formatting Output
var unitT = (system === 'metric') ? "°C" : "°F";
var unitH = (system === 'metric') ? "m" : "ft";
// Display Logic
document.getElementById('resAltChange').innerText = altDiff.toLocaleString() + " " + unitH;
// Format Temp Change (Show + or – explicitly for clarity)
var changeSign = (tempChange = 0) ? "+" : "";
document.getElementById('resTempChange').innerText = displaySign + actualDifference.toFixed(2) + " " + unitT;
document.getElementById('resFinalTemp').innerText = tFinal.toFixed(2) + " " + unitT;
document.getElementById('resAppliedRate').innerText = rateText;
document.getElementById('result-area').style.display = 'block';
}