Kamis, 21 Mei 2026
Sumber: NCAR & UCAR News (halaman sumber)
Mengapa Turbulensi Udara Semakin Berbahaya bagi Penerbangan
Bagi penumpang, turbulensi terasa seperti jalan berbatu di udara. Bagi meteorolog penerbangan, turbulensi adalah persoalan serius yang kini semakin intens seiring perubahan iklim. Riset 2023 yang dilaporkan NCAR menunjukkan bahwa angin-angin tercepat di lapisan atas troposfer mengalami akselerasi sekitar 2% per derajat Celsius pemanasan global. Lebih mengkhawatirkan lagi, kecepatan angin persentil teratas melesat 2,5 kali lebih cepat dibanding rata-rata angin keseluruhan.
Implikasinya langsung: semakin kencang jet stream, semakin besar potensi geser angin vertikal (\(\partial u / \partial z\)) di ketinggian jelajah pesawat, dan semakin tinggi risiko Clear Air Turbulence (CAT). Studi terpisah oleh Williams dan Prosser (2023) menemukan kenaikan signifikan dalam frekuensi CAT severe di atas Samudra Atlantik Utara selama empat dekade terakhir. Ini bukan sekadar ketidaknyamanan — turbulensi ekstrem berpotensi menyebabkan cedera penumpang dan kerusakan struktur pesawat.
Yang berubah dalam beberapa tahun terakhir bukan hanya intensitas turbulensi, tapi juga cara kita mengukurnya. Eddy Dissipation Rate (EDR) kini menjadi standar internasional yang diakui ICAO untuk pelaporan turbulensi secara objektif oleh pesawat. EDR menggantikan laporan subjektif "terasa berat" atau "guncangan kuat" dengan angka yang terstandarisasi — dan angka itu bisa diverifikasi, diperkirakan secara numerik, dan diteruskan ke penerbangan lain di jalur yang sama.
Definisi Turbulensi dan Kategori Intensitasnya
Turbulensi didefinisikan sebagai gerakan udara yang tidak beraturan akibat eddies dan arus vertikal. Definisi ini luas — dan memang demikian adanya, karena turbulensi muncul dari berbagai mekanisme yang berbeda.
Ada empat tipe utama yang dikenali dalam meteorologi penerbangan. CAT — Clear Air Turbulence — terjadi di ketinggian 15.000 kaki ke atas, tidak terkait dengan awan cumuliform, dan tidak terlihat oleh pilot maupun radar. CAT muncul dalam patch memanjang searah aliran angin, sering kali di dekat jet stream atau front upper-level. Mechanical turbulence terjadi saat angin permukaan melebihi sekitar 20 knot dan mengalir di atas terrain yang kasar — gesekan menciptakan eddies di lapisan bawah. Convective turbulence didorong oleh pemanasan diferensial permukaan: daerah tanah terbuka memanas lebih cepat daripada vegetasi atau permukaan air, menghasilkan updraft yang mendorong turbulensi vertikal. Wake turbulence dihasilkan oleh pesawat itu sendiri — pusaran ujung sayap (wingtip vortices) meninggalkan jejak turbulen yang berbahaya bagi pesawat yang mengikutinya. ICAO menggolongkan pesawat menjadi tiga kelas berat — Light (di bawah 15.500 lb), Medium (15.500–300.000 lb), dan Heavy (di atas 300.000 lb) — untuk menentukan jarak pisah minimum terkait wake turbulence.
ICAO menetapkan empat kategori intensitas turbulensi. Light berarti sedikit perubahan ketinggian atau sikap pesawat, hanya tarikan ringan pada sabuk pengaman. Moderate ditandai dengan tarikan sabuk pengaman yang jelas, benda-benda yang tidak terikat bisa terlempar, namun pilot masih memegang kendali penuh atas pesawat. Severe mengakibatkan perubahan besar dan tiba-tiba, pesawat sesaat kehilangan kendali arah. Extreme adalah kategori paling kritis: pesawat terlempar secara keras dan berpotensi mengalami kerusakan struktural. Mountain wave yang intens bisa menghasilkan updraft dan downdraft hingga 5.000 kaki per menit pada kondisi ekstrem — sementara arus vertikal di sekitar thunderstorm bisa mencapai 2.000–6.000 kaki per menit.
Mekanisme Fisik: Geser Angin Vertikal dan Ketidakstabilan Kelvin-Helmholtz
Inti dari pembentukan CAT adalah vertical wind shear — perubahan kecepatan atau arah angin horizontal terhadap ketinggian, dinyatakan sebagai \(\partial u / \partial z\). Ketika lapisan udara bergerak dengan kecepatan berbeda di ketinggian yang berdekatan, terjadi gesekan dinamis antara lapisan-lapisan tersebut.
Sumber: NWS / NOAA, Training Page (halaman sumber)
Parameter kunci untuk memprediksi kapan shear ini memicu turbulensi adalah Bilangan Richardson (\(Ri\)):
$$Ri = \frac{N^2}{\left(\partial u / \partial z\right)^2}$$
Di sini \(N^2\) adalah frekuensi Brunt-Väisälä kuadrat — ukuran stabilitas statik atmosfer. Ketika \(Ri < 0{,}25\), shear mendominasi stabilitas dan instabilitas Kelvin-Helmholtz (KH) berkembang. Visualisasinya seperti dua lapisan cairan yang mengalir berlawanan arah: antarmuka antara keduanya mulai bergulung membentuk billow — pita-pita spiral yang terlihat indah dari citra satelit tetapi fatal bagi penerbangan. Billow-billow KH ini kemudian pecah menjadi eddies turbulen yang ukurannya sebanding dengan dimensi pesawat.
ECMWF mengidentifikasi empat mekanisme fisik utama yang menghasilkan CAT: shear instabilities (KH instability) seperti yang dijelaskan di atas, upper-level frontogenesis di mana front aktif menciptakan zona shear intens di troposfer atas, mountain waves berkapasitas besar yang terbentuk saat aliran melintasi pegunungan tinggi, dan breaking of convectively generated gravity waves yang merambat dari sistem konveksi dalam ke lapisan atas atmosfer.
Skala EDR: Pengukuran Objektif Turbulensi Pesawat
EDR — Eddy Dissipation Rate — didefinisikan oleh ICAO sebagai akar pangkat tiga dari laju disipasi energi kinetik turbulen: \(\varepsilon^{1/3}\), dengan satuan \(\text{m}^{2/3}\,\text{s}^{-1}\). Nilainya berkisar dari mendekati 0 (udara halus) hingga mendekati 1 (turbulensi ekstrem).
Untuk pesawat kelas medium (setara B737/A320), kategori EDR yang digunakan Aviation Weather Center (AWC) NOAA/NCEP kira-kira adalah: Light di kisaran \(0{,}1\)–\(0{,}4\), Moderate di \(0{,}4\)–\(0{,}7\), dan Severe di atas \(0{,}7\). Namun ini bukan skala yang fixed — EDR adalah metrik fisik, dan respons pesawat terhadap EDR yang sama bervariasi bergantung pada kelas berat dan karakteristik aerodinamisnya. Pesawat ringan (Light class) akan merasakan turbulensi yang lebih intens pada nilai EDR yang sama dibandingkan pesawat berbadan lebar (Heavy class).
Dalam sistem penerbangan operasional, AWC menerbitkan AIRMET untuk area dengan turbulensi moderate-or-greater, dan SIGMET untuk turbulensi severe atau extreme yang mencakup area minimal 3.000 mil persegi. Laporan EDR dari pesawat komersial — yang kini mencakup ratusan ribu observasi per hari lewat program AMDAR dan sejenisnya — menjadi input verifikasi penting bagi model NWP.
ECMWF mengimplementasikan tiga diagnostik CAT berbasis EDR dalam IFS Cycle 47r3: Ellrod1 (shear × total deformation), GWD (subgrid gravity-wave drag), dan DISS (total turbulent dissipation). Yang menarik, overhead komputasional untuk menambahkan diagnostik Ellrod1 ke dalam satu siklus forecast IFS hanya sekitar 4–5% — biaya kecil untuk informasi CAT yang bernilai tinggi bagi penerbangan internasional.
Jet Stream, ENSO, dan Variabilitas Musiman Turbulensi
Mekanisme di balik akselerasi jet stream — sebagaimana dijelaskan dalam riset yang dilaporkan NCAR — bersifat termodinamis. Perubahan iklim meningkatkan kelembapan di atas daerah tropis lebih cepat daripada di atas daerah kutub, memperkuat kontras densitas antara keduanya — dan kontras densitas inilah yang mendorong pembentukan serta intensifikasi jet stream. Implikasinya: angin tercepat di jet stream melesat lebih cepat daripada rata-rata, shear vertikal di dekat jet core meningkat, dan potensi CAT di ketinggian jelajah pesawat tumbuh secara tidak proporsional.
Di atas dinamika iklim jangka panjang itu, ENSO berperan sebagai modulator musiman terpenting. Selama fase El Niño, jet stream subtropis bergeser ke selatan dan memanjang lebih jauh ke timur melintasi Samudra Pasifik Utara. Pola ini terjadi karena perairan Pasifik tengah dan timur yang lebih hangat memindahkan "kolom" udara naik ke timur, menggeser sirkulasi Hadley dan intensifying wind-shear zones di hilir jet stream. Sebaliknya, saat La Niña, jet stream cenderung menyusut ke barat dan bergerak ke utara.
Sumber: NOAA Climate.gov; NCEP/NCAR Reanalysis data, analisis Michelle L'Heureux (halaman sumber)
Ini membuat fase ENSO menjadi prediktor musiman terbaik untuk posisi jet stream, dan secara tidak langsung untuk risiko CAT di rute-rute penerbangan yang berada dalam jalur pengaruhnya. Meteorolog yang mengelola perencanaan penerbangan jangka panjang kini rutin memasukkan indeks ENSO ke dalam penilaian risiko CAT musiman — bukan sebagai determinan tunggal, melainkan sebagai tilting of probabilities yang signifikan. Pada kondisi El Niño yang kuat, rute Pasifik Utara dan jalur melintasi Amerika bagian selatan cenderung mengalami lebih banyak episode turbulensi moderate hingga severe dibandingkan kondisi netral.
Gabungan dua sinyal ini — akselerasi jet stream jangka panjang akibat perubahan iklim dan modulasi musiman dari ENSO — membuat peramalan turbulensi semakin memerlukan pemahaman multi-skala: dari Richardson number lokal hingga indeks iklim global.
Eksplorasi artikel meteorologi lainnya di meteo.my.id (https://meteo.my.id) — dari dinamika monsun, analisis ERA5 dengan Python, hingga peramalan jet stream yang relevan bagi penerbangan.
Referensi
- Turbulence — NWS Houston/Galveston Training Page — Referensi pelatihan NWS yang komprehensif mencakup semua tipe turbulensi, kategori intensitas ICAO, dan mekanisme fisik dari mountain wave hingga wake turbulence.
- AWC Turbulence — Aviation Weather Center (NOAA/NCEP) — Dokumentasi resmi Aviation Weather Center tentang skala EDR, cara nilai EDR dipetakan ke kategori intensitas per kelas berat pesawat, dan kriteria penerbitan AIRMET/SIGMET.
- Forecasting Clear-Air Turbulence — ECMWF Newsletter No. 168 — Artikel newsletter ECMWF yang menjelaskan implementasi tiga diagnostik CAT berbasis EDR ke dalam IFS, diverifikasi terhadap hampir 200.000 observasi EDR dari pesawat.
- Jet Stream Winds Will Accelerate with Warming Climate — NCAR & UCAR News — Laporan riset 2023 dari NSF NCAR dan University of Chicago yang menunjukkan akselerasi angin jet stream sekitar 2% per °C pemanasan global serta implikasinya terhadap turbulensi penerbangan.
- What We Talk About When We Talk About the Jet Stream and El Niño — NOAA Climate.gov — Penjelasan NOAA Climate.gov tentang bagaimana fase ENSO menggeser posisi dan intensitas jet stream subtropis, menjadikan ENSO sebagai prediktor musiman terbaik untuk pola CAT.
Rabu, 20 Mei 2026
Apa itu titik embun dan mengapa itu penting dalam meteorologi
Setiap pagi di daerah tropis, kita sering melihat butiran air di atas daun atau kaca jendela yang berembun. Fenomena ini bukan sekadar pemandangan menarik — ia adalah tanda langsung dari konsep paling mendasar dalam meteorologi: titik embun atau dewpoint.
Dewpoint adalah suhu di mana udara menjadi jenuh (saturasi) apabila didinginkan pada tekanan dan kandungan uap air yang konstan. Ketika suhu udara turun ke titik embun, uap air mulai mengkondensasi menjadi tetes air cair. Itulah mengapa embun terbentuk di dini hari ketika permukaan tanah mendingin, dan mengapa kita melihat awan ketika massa udara lembap terangkat dan mendingin adiabatik.
Dalam praktik operasional meteorologi, dewpoint digunakan untuk beberapa tujuan penting. Pertama, dewpoint mengukur kandungan uap air absolut di udara secara langsung — berbeda dengan relative humidity yang bergantung pada suhu. Dua massa udara dengan relative humidity 70% bisa memiliki kandungan uap air yang sangat berbeda jika suhunya berbeda. Dewpoint menghilangkan ambiguitas ini.
Kedua, selisih antara suhu udara dan dewpoint — yang sering disebut dewpoint depression — menunjukkan seberapa jauh udara dari kondisi saturasi. Selisih kecil (kurang dari 3°C) menandakan udara sangat lembap dan berpotensi membentuk awan atau kabut. Selisih besar menandakan udara kering.
Ketiga, distribusi spasial dewpoint pada peta sinoptik membantu prakirawan mengidentifikasi batas massa udara, garis konvergensi, dan potensi curah hujan. Nilai dewpoint di atas 25°C di wilayah tropis, misalnya, sering berkaitan dengan kondisi yang mendukung pembentukan konveksi dalam.
Untuk stasiun pengamatan BMKG maupun data model GFS dan ERA5, temperatur dan relative humidity tersedia secara rutin. Dari kedua variabel itulah kita dapat menghitung dewpoint dengan formula Magnus.
Formula Magnus dan konstantanya
Formula Magnus (sering disebut juga Magnus-Tetens atau Alduchov-Eskridge) adalah aproksimasi analitik yang menghubungkan tekanan uap jenuh (saturation vapor pressure) dengan suhu. Bentuk standar yang paling banyak digunakan adalah:
γ(T, RH) = ln(RH / 100) + (b · T) / (c + T)
Td = c · γ / (b − γ)
di mana: - T = suhu udara dalam °C - RH = relative humidity dalam persen (0–100) - b dan c = konstanta Magnus yang bergantung pada rentang suhu - Td = dewpoint dalam °C
Konstanta Magnus yang paling umum digunakan berasal dari Alduchov & Eskridge (1996): - Untuk suhu di atas 0°C (kondensasi di atas permukaan air cair): b = 17.625, c = 243.04 - Untuk suhu di bawah 0°C (deposisi di atas es): b = 22.587, c = 273.86
Pemilihan konstanta yang tepat penting untuk akurasi. Pada suhu tropis (20–35°C) konstanta Alduchov-Eskridge memberikan kesalahan kurang dari 0.35°C dibandingkan formulasi psikrometri yang lebih ketat (August-Roche-Magnus exact). Aproksimasi ini sangat praktis karena tidak memerlukan tabel uap atau iterasi numerik.
Perlu dicatat bahwa formula Magnus adalah aproksimasi dari hubungan Clausius-Clapeyron, yang secara termodinamika mendeskripsikan bagaimana tekanan uap jenuh bergantung pada suhu. Variabel antara — nilai γ — adalah logaritma dari tekanan uap aktual dibagi tekanan uap jenuh pada 0°C, ditambah koreksi suhu. Dengan memecah persamaan menjadi dua langkah (hitung γ, lalu hitung Td), kita dapat menginspeksi nilai antara untuk keperluan debugging atau analisis lebih lanjut.
Berikut adalah snippet yang mendefinisikan konstanta dan mengekspresikan formula sebagai Python, termasuk kedua set konstanta:
import math
# Konstanta Magnus (Alduchov & Eskridge 1996)
MAGNUS_LIQUID = {"b": 17.625, "c": 243.04} # T >= 0°C (kondensasi di atas air cair)
MAGNUS_ICE = {"b": 22.587, "c": 273.86} # T < 0°C (deposisi di atas es)
def _select_constants(T_C: float) -> dict:
"""Pilih set konstanta Magnus berdasarkan suhu."""
return MAGNUS_LIQUID if T_C >= 0 else MAGNUS_ICE
# Demonstrasikan persamaan gamma untuk beberapa nilai suhu dan RH
test_cases = [
(30.0, 75.0),
(10.0, 60.0),
(-5.0, 80.0),
]
print(f"{'T (°C)':>8} {'RH (%)':>8} {'Konstanta b':>12} {'Konstanta c':>12} {'γ':>10}")
print("-" * 60)
for T, RH in test_cases:
k = _select_constants(T)
b, c = k["b"], k["c"]
gamma = math.log(RH / 100.0) + (b * T) / (c + T)
print(f"{T:8.1f} {RH:8.1f} {b:12.3f} {c:12.3f} {gamma:10.5f}")
T (°C) RH (%) Konstanta b Konstanta c γ
------------------------------------------------------------
30.0 75.0 17.625 243.040 1.64885
10.0 60.0 17.625 243.040 0.18570
-5.0 80.0 22.587 273.860 -0.64319
Menghitung titik embun dari suhu dan kelembaban relatif
Dengan konstanta dan persamaan yang sudah kita definisikan, langkah berikutnya adalah membungkus seluruh logika ke dalam satu fungsi Python yang siap pakai. Fungsi calc_dewpoint di bawah ini mengintegrasikan pemilihan konstanta otomatis, sehingga bisa menangani rentang suhu tropis maupun suhu di bawah beku.
import math
# Set konstanta sudah didefinisikan di snippet-1 — kita gunakan ulang
MAGNUS_LIQUID = {"b": 17.625, "c": 243.04}
MAGNUS_ICE = {"b": 22.587, "c": 273.86}
def _select_constants(T_C: float) -> dict:
return MAGNUS_LIQUID if T_C >= 0 else MAGNUS_ICE
def calc_dewpoint(T_C: float, RH: float) -> float:
"""
Hitung dewpoint (°C) dari suhu udara T_C (°C) dan
relative humidity RH (%) menggunakan formula Magnus.
Parameter:
T_C : suhu udara dalam derajat Celsius
RH : relative humidity dalam persen (1–100)
Kembalikan:
Td : suhu dewpoint dalam derajat Celsius
"""
if not (0 < RH <= 100):
raise ValueError(f"RH harus dalam rentang (0, 100], diterima: {RH}")
k = _select_constants(T_C)
b, c = k["b"], k["c"]
gamma = math.log(RH / 100.0) + (b * T_C) / (c + T_C)
return c * gamma / (b - gamma)
# Contoh: kondisi stasiun tropis di Makassar pukul 14.00 WITA
T_makassar = 33.2 # °C
RH_makassar = 68.0 # %
Td = calc_dewpoint(T_makassar, RH_makassar)
print(f"Suhu udara : {T_makassar:.1f} °C")
print(f"Relative humidity: {RH_makassar:.0f} %")
print(f"Dewpoint : {Td:.2f} °C")
print(f"Dewpoint depression: {T_makassar - Td:.2f} °C")
# Contoh kedua: kondisi pegunungan pada malam hari
T_gunung = 18.0
RH_gunung = 92.0
Td_gunung = calc_dewpoint(T_gunung, RH_gunung)
print()
print(f"Suhu udara (gunung) : {T_gunung:.1f} °C")
print(f"Relative humidity : {RH_gunung:.0f} %")
print(f"Dewpoint : {Td_gunung:.2f} °C")
print(f"Dewpoint depression : {T_gunung - Td_gunung:.2f} °C — udara hampir jenuh")
Suhu udara : 33.2 °C
Relative humidity: 68 %
Dewpoint : 26.50 °C
Dewpoint depression: 6.70 °C
Suhu udara (gunung) : 18.0 °C
Relative humidity : 92 %
Dewpoint : 16.68 °C
Dewpoint depression : 1.32 °C — udara hampir jenuh
Perhatikan dua hal dari hasil ini. Pertama, di Makassar dengan suhu 33.2°C dan RH 68%, dewpoint sekitar 26°C — nilai yang umum di pesisir Indonesia pada siang hari dan menandakan kandungan uap air yang cukup tinggi untuk mendukung konveksi. Kedua, dewpoint depression di stasiun gunung dengan RH 92% sangat kecil, artinya udara sudah mendekati saturasi dan kabut atau awan rendah sangat mungkin terbentuk.
Aplikasi praktis pola kelembaban harian dan titik embun
Di wilayah tropis, suhu udara dan relative humidity berubah secara sistematis sepanjang hari mengikuti siklus radiasi matahari. Suhu mencapai puncak sekitar pukul 13.00–15.00 LT, sementara RH mencapai titik terendahnya pada jam yang sama. Sebaliknya, dini hari adalah waktu suhu paling rendah dan RH paling tinggi.
Yang menarik adalah bahwa dewpoint umumnya lebih stabil sepanjang hari dibandingkan suhu atau RH. Ini karena kandungan uap air absolut di lapisan batas atmosfer tidak berubah drastis dalam skala jam, kecuali ada adveksi massa udara baru atau penguapan/kondensasi yang signifikan.
Snippet berikut mensimulasikan 24 jam pengamatan per jam dengan pola suhu dan RH yang realistis, lalu menghitung dewpoint per jam menggunakan fungsi calc_dewpoint yang sudah didefinisikan di snippet-2.
# calc_dewpoint sudah tersedia dari snippet-2 — tidak perlu didefinisikan ulang
hours = list(range(24))
# Pola suhu sintetis: minimum ~26°C pukul 05.00, maksimum ~34°C pukul 14.00
import math as _math
T_series = [26.0 + 8.0 * _math.sin(_math.pi * (h - 5) / 18) if 5 <= h <= 23 else
26.0 + 8.0 * _math.sin(_math.pi * (h + 19) / 18)
for h in hours]
# Pola RH sintetis: kebalikan suhu — tinggi di dini hari, rendah di siang.
# Clip ke (0, 100] karena formula Magnus tidak terdefinisi di luar rentang ini.
RH_series = [min(100.0, max(1.0,
95.0 - 35.0 * _math.sin(_math.pi * (h - 5) / 18) if 5 <= h <= 23 else
95.0 - 35.0 * _math.sin(_math.pi * (h + 19) / 18)))
for h in hours]
# Hitung dewpoint per jam
Td_series = [calc_dewpoint(T, RH) for T, RH in zip(T_series, RH_series)]
print(f"{'Jam':>4} {'T (°C)':>7} {'RH (%)':>7} {'Td (°C)':>8} {'T-Td':>6}")
print("-" * 42)
for h, T, RH, Td in zip(hours, T_series, RH_series, Td_series):
print(f"{h:4d} {T:7.2f} {RH:7.2f} {Td:8.2f} {T-Td:6.2f}")
print()
Td_min = min(Td_series)
Td_max = max(Td_series)
print(f"Rentang dewpoint: {Td_min:.2f} – {Td_max:.2f} °C (variasi {Td_max - Td_min:.2f} °C)")
print(f"Rentang suhu : {min(T_series):.2f} – {max(T_series):.2f} °C (variasi {max(T_series)-min(T_series):.2f} °C)")
Jam T (°C) RH (%) Td (°C) T-Td
------------------------------------------
0 24.61 100.00 24.61 0.00
1 23.26 100.00 23.26 0.00
2 22.00 100.00 22.00 -0.00
3 20.86 100.00 20.86 0.00
4 19.87 100.00 19.87 0.00
5 26.00 95.00 25.14 0.86
6 27.39 88.92 25.40 1.99
7 28.74 83.03 25.57 3.17
8 30.00 77.50 25.63 4.37
9 31.14 72.50 25.61 5.53
10 32.13 68.19 25.52 6.61
11 32.93 64.69 25.40 7.53
12 33.52 62.11 25.27 8.25
13 33.88 60.53 25.17 8.70
14 34.00 60.00 25.14 8.86
15 33.88 60.53 25.17 8.70
16 33.52 62.11 25.27 8.25
17 32.93 64.69 25.40 7.53
18 32.13 68.19 25.52 6.61
19 31.14 72.50 25.61 5.53
20 30.00 77.50 25.63 4.37
21 28.74 83.03 25.57 3.17
22 27.39 88.92 25.40 1.99
23 26.00 95.00 25.14 0.86
Rentang dewpoint: 19.87 – 25.63 °C (variasi 5.76 °C)
Rentang suhu : 19.87 – 34.00 °C (variasi 14.13 °C)
Dari output ini kita dapat melihat bahwa variasi harian dewpoint jauh lebih kecil dibandingkan variasi suhu. Saat dewpoint depression mengecil di dini hari, kondisi mendekati saturasi dan pembentukan kabut atau awan stratus menjadi mungkin. Ini adalah pola yang konsisten di banyak stasiun pesisir dan pegunungan Indonesia.
Langkah selanjutnya akurasi formula dan data real meteorologi
Formula Magnus memberikan akurasi yang memadai untuk sebagian besar aplikasi meteorologi operasional. Pada rentang suhu tropis (15–40°C) dengan RH di atas 30%, kesalahan absolut relatif terhadap formulasi Wexler (standar WMO) umumnya di bawah 0.5°C. Untuk analisis yang memerlukan presisi lebih tinggi — misalnya kalkulasi equivalent potential temperature atau kajian boundary layer detail — pertimbangkan menggunakan library MetPy yang mengimplementasikan formulasi Bolton (1980) atau persamaan Huang (2018).
Untuk data nyata, beberapa sumber yang dapat kita gunakan:
- BMKG open data: data pengamatan permukaan (stasiun sinoptik) tersedia melalui API publik BMKG.
- ERA5: reanalysis ECMWF menyediakan variabel 2m_dewpoint_temperature langsung, sehingga tidak perlu menghitung secara manual. Namun memahami formula Magnus tetap penting untuk memverifikasi dan menginterpretasikan data tersebut.
- GFS: gridded forecast data dari NCEP/NOAA menyediakan 2m temperature dan 2m specific humidity yang bisa dikonversi ke dewpoint.
# Bandingkan Magnus dengan pendekatan Bolton (1980) — referensi umum di MetPy
import math
def calc_dewpoint(T_C: float, RH: float) -> float:
"""Magnus dewpoint (Alduchov & Eskridge 1996)."""
k = {"b": 17.625, "c": 243.04} if T_C >= 0 else {"b": 22.587, "c": 273.86}
b, c = k["b"], k["c"]
gamma = math.log(RH / 100.0) + (b * T_C) / (c + T_C)
return c * gamma / (b - gamma)
def calc_dewpoint_bolton(T_C: float, RH: float) -> float:
"""
Dewpoint menggunakan formula Bolton (1980), Eq. 10.
Akurat untuk -35°C < T < 35°C.
"""
e = (RH / 100.0) * 6.112 * math.exp((17.67 * T_C) / (T_C + 243.5))
return (243.5 * math.log(e / 6.112)) / (17.67 - math.log(e / 6.112))
# Bandingkan pada beberapa titik suhu dan RH
print(f"{'T':>6} {'RH':>6} {'Magnus Td':>10} {'Bolton Td':>10} {'Selisih':>8}")
print("-" * 48)
test_points = [
(35.0, 85.0), (28.0, 70.0), (20.0, 50.0),
(10.0, 40.0), (0.0, 90.0),
]
for T, RH in test_points:
td_m = calc_dewpoint(T, RH)
td_b = calc_dewpoint_bolton(T, RH)
print(f"{T:6.1f} {RH:6.1f} {td_m:10.4f} {td_b:10.4f} {abs(td_m-td_b):8.4f}")
print()
print("Selisih rata-rata (Magnus vs Bolton): kecil untuk suhu tropis.")
print("Gunakan MetPy atau Bolton untuk presisi lebih tinggi di suhu ekstrem.")
T RH Magnus Td Bolton Td Selisih
------------------------------------------------
35.0 85.0 32.0976 32.1008 0.0032
28.0 70.0 22.0181 22.0240 0.0059
20.0 50.0 9.2611 9.2701 0.0090
10.0 40.0 -2.9931 -2.9843 0.0088
0.0 90.0 -1.4442 -1.4433 0.0009
Selisih rata-rata (Magnus vs Bolton): kecil untuk suhu tropis.
Gunakan MetPy atau Bolton untuk presisi lebih tinggi di suhu ekstrem.
Dengan memahami formula Magnus, kita sudah memiliki alat dasar yang kuat untuk mengolah data temperatur dan relative humidity dari sumber mana pun — baik dari pengamatan manual BMKG, unduhan ERA5 via CDS API, maupun output model WRF lokal.
Memvisualisasikan Permukaan Dewpoint(T, RH)
Formula Magnus paling intuitif saat kita lihat sebagai permukaan dua dimensi: untuk setiap kombinasi T dan RH, ada satu nilai dewpoint. Snippet di bawah membangun matriks 50×50 dewpoint untuk T = 0–40 °C dan RH = 20–100 %, lalu menggambarnya sebagai gradien dengan kontur isolinedewpoint setiap 5 °C.
# Prereq globals (dari snippet-4):
# calc_dewpoint(T_C, RH) — fungsi Magnus yang sudah didefinisikan
import numpy as np
import matplotlib.pyplot as plt
T_grid = np.linspace(0, 40, 60)
RH_grid = np.linspace(20, 100, 60)
TT, HH = np.meshgrid(T_grid, RH_grid)
Td_grid = np.zeros_like(TT)
for i in range(TT.shape[0]):
for j in range(TT.shape[1]):
Td_grid[i, j] = calc_dewpoint(float(TT[i, j]), float(HH[i, j]))
fig, ax = plt.subplots(figsize=(10, 6.5))
mesh = ax.pcolormesh(TT, HH, Td_grid, cmap="viridis", shading="auto",
vmin=-15, vmax=35)
contours = ax.contour(TT, HH, Td_grid, levels=range(-10, 36, 5),
colors="white", linewidths=0.8, alpha=0.9)
ax.clabel(contours, fmt="%d °C", fontsize=9, inline=True)
sat_line = ax.plot([0, 40], [100, 100], color="#E65100", linewidth=2.0,
label="RH 100 % — Td = T")[0]
for T_eg, RH_eg, label in [
(33.2, 68.0, "Makassar siang"),
(18.0, 92.0, "Pegunungan malam"),
]:
td_eg = calc_dewpoint(T_eg, RH_eg)
ax.scatter([T_eg], [RH_eg], s=120, color="white", edgecolor="black",
linewidth=1.4, zorder=5)
ax.annotate(f"{label}\nTd = {td_eg:.1f} °C",
xy=(T_eg, RH_eg),
xytext=(T_eg - 12, RH_eg - 18),
fontsize=9, color="#222",
arrowprops=dict(arrowstyle="->", color="#222", lw=0.8))
ax.set_xlabel("Suhu udara T (°C)", fontsize=11)
ax.set_ylabel("Relative humidity RH (%)", fontsize=11)
ax.set_title("Dewpoint sebagai Fungsi T dan RH (Formula Magnus)",
fontsize=12, weight="bold", pad=10)
plt.colorbar(mesh, ax=ax, label="Dewpoint Td (°C)")
ax.legend(loc="lower right", fontsize=9)
plt.tight_layout()
plt.savefig("dewpoint_surface.png", dpi=150, bbox_inches="tight")
Pola yang muncul: isoline dewpoint membentuk garis miring naik dari kiri-bawah ke kanan-atas. Ini sesuai intuisi — dewpoint tinggi (di atas 25 °C) hanya muncul saat suhu udara cukup tinggi DAN RH cukup tinggi. Pada garis RH = 100 % di paling atas, dewpoint identik dengan suhu udara (kondisi jenuh). Dua titik contoh tertanda menunjukkan kontras maritim siang vs pegunungan malam yang sama-sama menghasilkan dewpoint sekitar 17–27 °C tapi dengan kombinasi T/RH yang sangat berbeda.
Langkah lanjutan yang bisa kita eksplorasi antara lain: menghitung wet-bulb temperature dari dewpoint menggunakan iterasi Davies-Jones, mengintegrasikan kalkulasi dewpoint ke dalam pipeline xarray untuk memproses grid ERA5 secara vektorisasi, atau memvisualisasikan distribusi spasial dewpoint di seluruh kepulauan Indonesia menggunakan cartopy. Setiap teknik tersebut dibangun di atas pemahaman dasar formula Magnus yang telah kita bahas di artikel ini.