Copernicus CDS seasonal-original-single-levels Snapshot 02·09·2026

Hồ sơ C3S Seasonal

Nguồn nào còn chạy real-time, hindcast dài bao nhiêu, và bộ số liệu này khai thác được tới đâu cho bài toán dự báo nội mùa ngày nóng cực đoan ở Việt Nam.

Trung tâm
9 trung tâm · 35 system
Còn real-time
10 luồng
Lưới giao hàng
1.0° (JMA 1.25°)
Hạn dự báo
184 – 215 ngày (6–7 tháng)
Phương pháp
Đo trực tiếp qua CDS API

Năm điều quan trọng nhất

  • 10 luồng còn phát dự báo thật (9 trung tâm). 25 system còn lại chỉ là lưu trữ hoặc vừa bị thay thế.
  • CDS không giao lưới gốc mô hình. Tất cả về 1.0°, riêng JMA 1.25° — chỉ ~30 ô lưới trên đất liền Việt Nam.
  • Cả 10 hệ thống đều có mx2t24 bước 24h — đủ dựng ngưỡng min(Tx90p, 35°C) trực tiếp.
  • Phát hành 1 lần/tháng. Bản init ngày 01 chỉ tới tay ngày 06 (ECMWF) hoặc 10 (còn lại) → mất trọn tuần 1.
  • 6/10 hệ thống có ensemble hindcast khác ensemble real-time (ECMWF 25→51). Đây là bẫy hiệu chỉnh nghiêm trọng.
  • 6/10 hệ chỉ có đúng một ngày khởi tạo mỗi tháng — ngày 01, không đổi suốt chuỗi. NCEP là hệ duy nhất chạy 4 cycle/ngày (00/06/12/18 UTC).
01

Nguồn nào thực sự cho dự báo real-time

Dataset liệt kê 35 giá trị system nhưng phần lớn đã ngừng chạy. Tiêu chí phân loại ở đây là dữ liệu thực có trong catalogue tại thời điểm 02/09/2026: hệ thống còn sống phải có dữ liệu tới tháng 08/2026 — tháng mới nhất đã được phát hành.

Real-time đang phát dự báo nghiệp vụ Vừa thay còn số liệu 2025–đầu 2026, đã dừng Lưu trữ chỉ còn giá trị nghiên cứu
Trung tâmMã CDSHệ thốngTrạng tháiTháng cuối có dữ liệu
ECMWFecmwf / 51SEAS5.1Real-time2026-08
Météo-Francemeteo_france / 9System 9Real-time2026-08
UK Met Officeukmo / 610GloSea6-GC5.1Real-time2026-08
DWDdwd / 22GCFS2.2Real-time2026-08
CMCCcmcc / 4SPS4Real-time2026-08
NCEPncep / 2CFSv2Real-time2026-08
JMAjma / 4CPS4Real-time2026-08
ECCCeccc / 4CanESM5.1p1bcReal-time2026-08
ECCCeccc / 5GEM5.2-NEMOReal-time2026-08
BOM (Úc)bom / 2ACCESS-S2Real-time2026-08
Mười luồng real-time, xác định từ file constraints.json của CDS.

Vừa thay ukmo/604, ukmo/605, jma/3, dwd/21, cmcc/35, meteo_france/8 — vẫn còn số liệu tới 2025 hoặc đầu 2026 nhưng đã bị hệ thống mới thay thế; không dùng cho thiết kế nghiệp vụ.

Lưu trữ ecmwf/4, ecmwf/5, meteo_france/5,6,7, ukmo/12,13,14,15,600–603, dwd/2, cmcc/3, eccc/1,2,3, jma/2 — chỉ còn hữu ích khi cần chuỗi hindcast của phiên bản mô hình cũ.

Có mặt đúng hẹn hay không

“Đang chạy real-time” và “giao đúng hẹn” là hai chuyện khác nhau. Kiểm tra từng phiên bản catalogue của 12 lô gần nhất và hỏi: hệ nào thực sự có mặt với init ngày 01 của đúng tháng đó?

Hệ thốngCó mặt / số lôTừ 09/2025 đến 08/2026
ecmwf / 5112 / 12Không sót lô nào
meteo_france / 912 / 12Không sót lô nào
dwd / 2212 / 12Không sót lô nào
cmcc / 412 / 12Không sót lô nào
ncep / 212 / 12Không sót lô nào
eccc / 412 / 12Không sót lô nào
eccc / 512 / 12Không sót lô nào
bom / 212 / 12Không sót lô nào
ukmo / 61012 / 12Liên tục nhưng đổi số hiệu: 604 → 605 (T3) → 610 (từ T4/2026)
jma / 410 / 12Vắng mặt T2 và T3/2026 — CPS3 ngừng 21/01/2026, CPS4 vào từ T4/2026
Đọc từ nội dung thật của từng phiên bản catalogue, không phải từ thông báo.

Hai bất thường duy nhất trong 12 tháng:

  • Khoảng trống JMA. Lô tháng 2 và tháng 3/2026 chỉ có 9 hệ. JMA CPS3 bị ngừng ngày 21/01/2026 còn CPS4 mãi tháng 4/2026 mới vào — hai tháng không có đóng góp nào từ JMA. Một pipeline đa mô hình cố định 10 thành viên sẽ gãy ở đây.
  • Lô tháng 3/2026 đi sớm. Ghi lúc 09/03 15:05 UTC thay vì ngày 10 — sớm một ngày, không phải trễ. Lô ngày 06 tháng đó vẫn đúng hẹn với riêng ECMWF.

Không có lô nào bị trễ trong suốt 12 tháng. Rủi ro thực tế không nằm ở việc chậm giờ mà ở việc một trung tâm biến mất giữa hai phiên bản hệ thống — đã xảy ra với JMA, và sẽ còn xảy ra với UKMO vì nó đổi số hiệu 2–3 lần mỗi năm.

02

Cấu hình đầy đủ mười hệ thống real-time

Số ensemble dưới đây là đếm số bản ghi GRIB thực tế từ các yêu cầu tải thử (một điểm lưới, một lead, biến mx2t24), không lấy từ tài liệu. Với hệ thống lagged, con số là số thành viên của một ngày init; ensemble đầy đủ được tạo bằng cách gộp nhiều ngày init liên tiếp.

◆ đo trực tiếp từ CDS API / file GRIB (02/09/2026) ○ lấy từ tài liệu chính thức của trung tâm
Mã CDSHệ thống Lưới giao ◆ Hindcast ◆Số năm RT từ Ens HC ◆Ens RT ◆ Hạn (ngày)
ecmwf / 51SEAS5.11.0°1981–20163620172551215
meteo_france / 9System 91.0°1993–20243204/20253151215
ukmo / 610GloSea6-GC5.11.0°1993–20162403/202672215
dwd / 22GCFS2.21.0°1993–20233103/20253050184
cmcc / 4SPS41.0°1993–20243208/20253050184
ncep / 2CFSv21.0°1993–2016242019/202044215
jma / 4CPS41.25°1993–20202803/202655215
eccc / 4CanESM5.1p1bc1.0°1993–~2024 ○~32~20242020214
eccc / 5GEM5.2-NEMO1.0°1993–~2024 ○~3206/20242020214
bom / 2ACCESS-S21.0°1993–20182603/2025311215
Cột Ens là số bản ghi trên một cycle. Hàng tô đậm là lựa chọn khuyến nghị làm trục chính (xem mục 07).

Cấu trúc cycle và ngày khởi tạo

Đây là chỗ dễ đếm nhầm nhất, vì hai đại lượng khác hẳn nhau cùng bị gọi là “thành viên ensemble”. Kiểm tra khoá dataTime trong từng bản ghi GRIB tách được chúng ra: nếu các bản ghi cùng dataTime và khác number thì đó là nhiễu động của cùng một cycle; nếu khác dataTime thì đó là các cycle khác nhau trong ngày.

Mã CDSCycle/ngày ◆Ngày init/tháng — hindcast ◆Ngày init/nămNgày init — real-time ◆Lần chạy/năm (HC)
ecmwf / 511 · 00 UTC1 — luôn là ngày 01121 — ngày 01300
meteo_france / 91 · 00 UTC1 — luôn là ngày 01121 — ngày 01372
dwd / 221 · 00 UTC1 — luôn là ngày 01121 — ngày 01360
cmcc / 41 · 00 UTC1 — luôn là ngày 01121 — ngày 01360
eccc / 41 · 00 UTC1 — luôn là ngày 01121 — ngày 01240
eccc / 51 · 00 UTC1 — luôn là ngày 01121 — ngày 01240
jma / 41 · 00 UTC2 — ngày trôi theo lịch24hằng ngày120
ukmo / 6101 · 00 UTC4 — ngày 01, 09, 17, 25
chỉ tháng 3–9
24hằng ngày168
ncep / 24 · 00, 06, 12, 18 UTC~6 — chu kỳ 5 ngày liên tục, ngày trôi73hằng ngày292
bom / 21 · 00 UTC9 — ngày 01 + 8 ngày cuối tháng10811 — ngày 01 + 10 ngày cuối324
“Lần chạy/năm” = ngày init × cycle/ngày × số bản ghi mỗi cycle, tính trên hindcast.

Số bản ghi mỗi cycle đã được kiểm chứng là đồng nhất trên mọi ngày init, không riêng ngày 01: ukmo/610 ngày 17/07/2010 vẫn 7 bản ghi và ngày 15/07/2026 vẫn 2; ncep/2 ngày 15/07/2026 vẫn đủ 4 cycle 00/06/12/18 UTC; bom/2 ngày 25/07 cho 3 bản ghi ở hindcast và 11 ở real-time.

Ba điểm dễ hiểu sai

NCEP không phải ensemble 4 thành viên. Bốn bản ghi đều mang number=0 nhưng dataTime lần lượt là 0, 600, 1200, 1800 — tức 4 cycle riêng biệt trong ngày, mỗi cycle một lần chạy đơn. Đây là hệ duy nhất trong cả 10 hệ chạy nhiều hơn một cycle mỗi ngày.

Ngày init của NCEP và JMA trôi theo lịch. NCEP chạy chu kỳ 5 ngày liên tục xuyên tháng, nên ngày cụ thể đổi mỗi tháng: tháng 1 là 1, 6, 11, 16, 21, 26, 31 nhưng tháng 2 lại là 5, 10, 15, 20, 25. Đừng hard-code ngày init — phải đọc từ constraints.json.

BOM không khởi tạo rải đều trong tháng. Mẫu thực tế là ngày 01 cộng với 8–10 ngày cuối tháng (ví dụ tháng 7: ngày 1, 24–31). Đây là cấu trúc ensemble trễ, các ngày cuối tháng là thành viên lagged cho kỳ dự báo bắt đầu tháng sau.

UKMO bị chia nhỏ theo số hiệu system

Met Office sinh lại hindcast cho từng phiên bản hệ thống, và số hiệu system đổi ngay giữa năm. Luồng real-time nhảy qua nhiều số hiệu: 603 (T1–T2/2025) → 604 (T2/2025–T2/2026) → 605 (T2–T3/2026) → 610 (T3–T8/2026).

Hệ quả trực tiếp: ukmo/610 mới chỉ có hindcast cho tháng 3 đến tháng 9 (24 ngày init/năm), không phải cả năm.

Mã CDSHindcast trải tháng ◆Ngày init/nămBản ghi/cycle ◆Cycle độc lậpReal-time phục vụ
ukmo / 6031–12 · trọn năm487 ○1.152T1–T2/2025
ukmo / 6041–12 · trọn năm4871.152T2/2025 – T2/2026
ukmo / 6052–3 · chỉ 2 tháng47 ○96T2–T3/2026
ukmo / 6103–9247576T3–T8/2026 (hiện hành)
Cột cuối cho thấy luồng nghiệp vụ nhảy qua bốn số hiệu system chỉ trong 14 tháng.

Muốn chuỗi UKMO đủ 12 tháng thì phải dùng ukmo/604 — đã kiểm chứng có hindcast trọn năm (cả tháng 1 lẫn tháng 7 đều 7 bản ghi), 4 ngày init mỗi tháng, tổng 1.152 cycle độc lập. Cấu hình 7 bản ghi ở hindcast và 2 ở real-time giữ nguyên qua các số hiệu system, nên đổi phiên bản không làm thay đổi cỡ ensemble — chỉ đổi cửa sổ tháng và phiên bản mô hình. Cái giá phải trả là nó không còn khớp với phiên bản đang chạy nghiệp vụ. Với bài toán nắng nóng mùa hè ở Việt Nam thì cửa sổ tháng 3–9 của 610 lại vừa đủ dùng, nên đây là đánh đổi chấp nhận được.

Rủi ro vận hành

Số hiệu system của UKMO đổi khoảng 2–3 lần mỗi năm và không báo trước trong dữ liệu. Một pipeline nghiệp vụ hard-code system=610 sẽ lặng lẽ ngừng nhận dữ liệu khi Met Office chuyển sang số hiệu kế tiếp. Phải dò số hiệu khả dụng từ constraints.json ở mỗi chu kỳ chạy, hoặc chấp nhận dùng cố định một phiên bản cũ cho cả huấn luyện lẫn dự báo.

Về độ phân giải không gian

Đây là điểm dễ hiểu nhầm nhất. Độ phân giải gốc của các mô hình cao hơn nhiều — ECMWF SEAS5 chạy ở TCo319 ≈ 36 km, Met Office ở N216 ≈ 0,83°×0,55°, JMA ở TL319 ≈ 55 km ○ — nhưng CDS không giao lưới gốc. Mọi thứ đã được nội suy về lưới đều trước khi lưu trữ.

Hệ quả cho Việt Nam

Ở 1,0° (≈110 km), toàn bộ phần đất liền Việt Nam chỉ rơi vào khoảng 30 ô lưới (ước tính từ diện tích 331.000 km²). Dải lãnh thổ hẹp theo kinh tuyến, phân hoá địa hình mạnh Đông–Tây Trường Sơn hoàn toàn không được phân giải. Downscaling về 0,25° là bắt buộc, không phải tuỳ chọn.

03

Dung lượng mẫu hindcast để huấn luyện

Với mô hình AI theo điểm lưới, câu hỏi thực sự là có bao nhiêu mẫu độc lập. Bảng dưới tách ba đại lượng thường bị gộp làm một: ngày init, cycle độc lập (ngày init × số cycle trong ngày — mỗi cycle là một trạng thái khí quyển ban đầu riêng) và tổng lần chạy (các nhiễu động trong cùng một cycle tương quan rất mạnh, không phải mẫu độc lập).

Mã CDSNăm HCNgày init/nămTổng ngày initCycle/ngàyCycle độc lậpBản ghi/cycleTổng lần chạy
ncep / 224731.75247.00817.008
bom / 2261082.80812.80838.424
jma / 42824672167253.360
ukmo / 6102424576157674.032
ecmwf / 51361243214322510.800
meteo_france / 9321238413843111.904
cmcc / 4321238413843011.520
eccc / 4~32123841384207.680
eccc / 5~32123841384207.680
dwd / 22311237213723011.160
Tính cho một điểm lưới, một lead day, gộp cả 12 tháng. Sắp theo số cycle độc lập giảm dần. ukmo/610 chỉ có hindcast tháng 3–9 nên con số của nó là cho cửa sổ đó, không phải cả năm.

Hai nhóm rõ rệt, đánh đổi ngược chiều nhau:

  • Nhóm giàu cycle, nghèo nhiễu động — NCEP (7.008 cycle), BOM (2.808). Đây là nhóm hợp với bài toán phân loại EHD theo điểm lưới, nơi số tình huống khí quyển khác nhau mới là thứ quyết định. NCEP dẫn đầu nhờ 4 cycle mỗi ngày trên chu kỳ 5 ngày liên tục.
  • Nhóm nghèo cycle, giàu nhiễu động — ECMWF, Météo-France, CMCC, DWD, ECCC. Chỉ 372–432 cycle nhưng 20–31 bản ghi mỗi cycle, cho phép ước lượng xác suất EHD trực tiếp từ tỷ lệ thành viên vượt ngưỡng thay vì phải học nó.
Đối chiếu với thiết kế EXP3

Ghi chú trong EXP3 lo rằng 104 init × 20 năm = 2.080 mẫu, sau khi tách nhóm nEHDE chỉ còn ~208, là quá ít. Hai hệ thống ở đây vượt qua con số 2.080 đó về số cycle độc lập: NCEP 7.008 và BOM 2.808 — và chúng độc lập với chuỗi ECMWF S2S đang dùng, nên có thể gộp để tăng dung lượng thay vì phải gộp tuần W1–W6.

Ngược lại, ukmo/610 chỉ cho 576 cycle chứ không phải 1.152 như con số 4 ngày init/tháng gợi ý, vì hindcast của phiên bản này chỉ trải tháng 3–9. Nếu cần UKMO trọn năm phải chuyển sang ukmo/604.

04

Biến sẵn có cho bài toán EHD

Đây là điểm mạnh rõ ràng nhất của bộ số liệu. Toàn bộ 10 hệ thống real-time đều cung cấp đầy đủ nhóm biến dưới đây ở bước thời gian 24 giờ, từ lead 24h tới hết hạn dự báo.

Vai tròTên biến CDSDùng để làm gì
Target chínhmaximum_2m_temperature_in_the_last_24_hoursTx ngày — dựng trực tiếp ngưỡng min(Tx90p31d, 35°C)
Target phụminimum_2m_temperature_in_the_last_24_hoursTn ngày — đêm nóng, xác định đợt nắng nóng kéo dài
Nền nhiệt2m_temperatureNhiệt độ trung bình, tách bias hệ thống khỏi bias phần đuôi phân bố
Ẩm2m_dewpoint_temperatureĐiểm sương → chỉ số nhiệt–ẩm, phân biệt nắng nóng khô và oi bức
Cưỡng bứcsurface_solar_radiation_downwardsBức xạ tới — tiền đề vật lý của cực trị Tx
Mặt đệmsoil_temperature_level_1Nhiệt độ đất tầng 1 — trí nhớ khô hạn, khuếch đại nắng nóng
Hoàn lưumean_sea_level_pressureÁp thấp nóng phía Tây, rãnh gió mùa
Hoàn lưu10m_u/v_component_of_windGió Tây khô nóng (hiệu ứng phơn) qua Trường Sơn
Che phủtotal_cloud_coverMây — điều biến chính của biên độ nhiệt ngày
Biênsea_surface_temperatureNhiệt độ mặt biển — tín hiệu chậm, nguồn khả dự báo mùa
tcc không có ở NCEP; các biến còn lại đủ ở cả 10 hệ thống.
05

Độ trễ phát hành — ràng buộc quyết định

C3S phát hành theo lô, mỗi tháng một lần. Với dự báo mùa 6 tháng thì vài ngày trễ không đáng kể, nhưng với bài toán nội mùa 45 ngày thì nó ăn mất phần lead có giá trị nhất. Đây là ràng buộc quyết định toàn bộ thiết kế nghiệp vụ, nên mục này tách riêng phần tài liệu công bố khỏi phần quan sát trực tiếp.

  1. Ngày 01, 00 UTCCác hệ thống khởi tạo dự báo. Đây là lead day 0.
  2. Ngày 02 – 05Dữ liệu nằm trong thời gian cấm vận. Không truy cập được.
  3. Ngày 06, 12:05 UTCECMWF SEAS5.1 lên CDS — và chỉ ECMWF. Đã mất 5,50 ngày lead. ◆
  4. Ngày 10, 12:05 UTCChín hệ còn lại lên CDS, cùng lúc với toàn bộ ngày init lagged 02–31 của tháng trước. Đã mất 9,50 ngày lead. ◆

Đo trực tiếp thời điểm dữ liệu lên hệ thống

Không cần suy đoán từ tài liệu. Mỗi lần CDS đăng ký dữ liệu mới, nó sinh lại constraints.json của dataset và ghi vào một object store công khai, giữ nguyên mọi phiên bản cũ kèm dấu thời gian ghi. Liệt kê bucket đó khôi phục được đúng thời điểm từng lô dữ liệu có mặt — không cần API key, không cần chờ.

LôNội dung ◆Số lần quan sátĐộ trễ so với init (ngày)Giờ phát hành UTC
Ngày 06Chỉ ecmwf/51205,503 – 5,52512:04 – 12:35
Ngày 109 hệ còn lại + init lagged 02–31 tháng trước199,504 – 9,52512:05 – 12:35
39 lô phát hành liên tiếp từ 01/2025 đến 08/2026. Ngoài hai lô định kỳ chỉ có 2 lần ghi ngoài lịch trong 20 tháng, đều là cập nhật catalogue khi nâng cấp hệ thống chứ không phải phát hành dữ liệu.

Biên độ dao động của cả 39 lô chỉ khoảng 30 phút. Đây là lịch đủ ổn định để chốt cron nghiệp vụ.

Bằng chứng: lô ngày 06 chỉ có ECMWF

Tải đúng hai phiên bản catalogue của tháng 8/2026 và hỏi hệ nào đã có init 01/08:

06/08 12:05:35 → ecmwf/51
10/08 12:05:38 → bom/2 · cmcc/4 · dwd/22 · eccc/4 · eccc/5 · ecmwf/51 · jma/4 · meteo_france/9 · ncep/2 · ukmo/610

Bốn ngày giữa hai lô là chênh lệch thật giữa ECMWF và phần còn lại, không phải sai số quan sát.

Bằng chứng: init lagged về cùng lô với tháng sau

Số ngày init của ukmo/610 và ncep/2 trong từng phiên bản catalogue:

                    T05   T06   T07   T08
06/06 12:23      1      0      0      0
10/06 12:30    31      1      0      0
06/07 12:29    31      1      0      0
10/07 12:27    31    30      1      0
06/08 12:05    31    30      1      0
10/08 12:05    31    30    31      1

Mỗi lô ngày 10 mang về đồng thời hai thứ: init ngày 01 của tháng hiện tại, và toàn bộ ngày init 02–31 của tháng trước. Lô ngày 06 không thêm gì cho các hệ này.

Độ trễ cụ thể của init lagged — ví dụ tháng 7/2026, tất cả về lúc 10/08 12:05: init ngày 02 trễ 39 ngày 12 giờ, ngày 15 trễ 26 ngày 12 giờ, ngày 31 trễ 10 ngày 12 giờ. Không dùng được cho nghiệp vụ real-time.

Cửa sổ lead thực sự khai thác được

Tính theo tuần kể từ ngày khởi tạo: W1 = ngày 1–7, W2 = 8–14, W3 = 15–21, W4 = 22–28, W5 = 29–35, W6 = 36–42.

NguồnDữ liệu vềLead đã mấtTuần còn trọn vẹnLần/năm
ecmwf / 51ngày 06, 12 UTC5,5 ngàyW2 → W6 (+ 2 ngày cuối W1)12
9 hệ còn lại · init ngày 01ngày 10, 12 UTC9,5 ngàyW3 → W6 (+ 4 ngày cuối W2)12
Init lagged ngày 02–31tháng M+110 – 40 ngàykhông dùng được—
Hạn 215 ngày không phải ràng buộc; ràng buộc nằm ở đầu bên kia của cửa sổ.
Hệ quả cho việc chọn nguồn

Bốn ngày chênh lệch giữa lô ngày 06 và lô ngày 10 đổi thành trọn một tuần dự báo: ECMWF cho W2 đến W6, chín hệ còn lại chỉ cho W3 đến W6. Đây là lý do mạnh nhất — mạnh hơn cả độ dài hindcast — để đặt ecmwf/51 làm trục chính và coi các hệ khác là thành phần bổ sung cho hạn dài hơn.

Vậy bộ số liệu này là subseasonal hay seasonal?

Câu trả lời nằm ở chỗ tách hạn dự báo khỏi tần suất cập nhật. Hai thứ này thường bị gộp làm một, nhưng chỉ một trong hai là ràng buộc thật.

Tiêu chíYêu cầu của bài toán subseasonalBộ C3S seasonal đáp ứng
Hạn dự báotuần 2 – tuần 6Đạt. ECMWF cho trọn W2–W6, chín hệ còn lại W3–W6. Hạn 184–215 ngày dư sức.
Biến cần thiếtTx ngày, bước 24hĐạt. Cả 10 hệ đều có mx2t24 từ lead 24h.
Dung lượng hindcastđủ dài để hiệu chỉnh theo lead-weekĐạt. 24–36 năm, hơn hẳn hindcast on-the-fly 20 năm của S2S.
Tần suất cập nhậtít nhất hằng tuầnKhông đạt. Chỉ 12 lần/năm, mỗi tháng một lần.

Ba trên bốn tiêu chí đạt. Nên nói bộ này “chỉ dùng cho seasonal” là chưa chính xác — nó có phủ đúng khoảng subseasonal. Cái nó không làm được là cập nhật.

NCEP không phải ngoại lệ trong nghiệp vụ real-time

Số ngày init thực sự có sẵn, đọc lúc 02/09/2026:

                      T07 (đã đủ)    T08 (mới nhất)
ncep/2             31               1
ukmo/610          31               1
ecmwf/51           1               1

Trong real-time, NCEP cũng chỉ có đúng một ngày init như chín hệ còn lại — 30 ngày init kia phải chờ lô tháng sau. Tệ hơn, NCEP nằm ở lô ngày 10 nên về muộn hơn ECMWF 4 ngày. Ưu thế 4 cycle/ngày của NCEP chỉ tồn tại trong hindcast, tức chỉ có giá trị cho huấn luyện, không cho vận hành.

Cách gọi đúng cho bộ số liệu này là “dự báo nội mùa phát hành hằng tháng”. Nó trả lời được câu “sáu tuần tới có đợt nắng nóng nào không”, mỗi tháng một lần. Nó không trả lời được câu “tuần này tình hình thay đổi thế nào so với tuần trước”.

Kiểm tra theo ngưỡng vận hành

Một hệ dự báo nội mùa nghiệp vụ cần thoả đồng thời hai điều kiện, và cả hai đều là ngưỡng cứng chứ không phải mong muốn:

  • C1 — Nhịp khởi tạo ≤ 5 ngày. Thưa hơn thì giữa hai lần cập nhật, bản dự báo đang dùng đã trôi quá xa so với trạng thái khí quyển thực.
  • C2 — Độ trễ số liệu ≤ 5 ngày. Trễ hơn thì phần lead có kỹ năng cao nhất đã bị ăn mất trước khi dùng được.
NguồnNhịp mô hình sản xuấtNhịp thực giao đượcĐộ trễC1C2Nghiệp vụ subseasonal
ecmwf / 5130 ngày30 ngày5,50 ngày✗✗Không
ncep / 20,25 ngày30 ngày9,50 ngày✗✗Không
ukmo / 6101 ngày30 ngày9,50 ngày✗✗Không
jma / 41 ngày30 ngày9,50 ngày✗✗Không
bom / 2~3 ngày30 ngày9,50 ngày✗✗Không
meteo_france/9 · dwd/22 · cmcc/4 · eccc/4 · eccc/5 — giống hệt: 30 / 30 / 9,50 · ✗ ✗
0/10 nguồn trên CDS đáp ứng cả hai ngưỡng. Kể cả ECMWF, vốn sát nhất, vẫn trượt cả hai.

Cột thứ hai và thứ ba là chỗ đáng chú ý nhất. Bốn hệ — NCEP, UKMO, JMA, BOM — sản xuất ở nhịp vượt xa ngưỡng C1, nhưng nhịp giao qua CDS vẫn là 30 ngày. Nút thắt nằm ở khâu phát hành của C3S, không nằm ở mô hình. Muốn khai thác nhịp thật thì phải lấy dữ liệu từ trung tâm gốc.

Những đường thực sự đáp ứng được cả hai ngưỡng

Đường lấy dữ liệuNhịp initĐộ trễC1C2
CFSv2 · NOAA NOMADS cfs/prod0,25 ngàyvài giờ✓✓
ECMWF extended-range · S2S database3,5 ngày48 giờ ○✓✓
JMA, ECCC, KMA, CMA… · S2S databasetuỳ hệ48 giờ ○tuỳ✓
BoM, CNRM · S2S databasetuỳ hệ1 tuần ○tuỳ✗
UKMO · S2S databasetuỳ hệ3 tuần ○tuỳ✗
Toàn bộ C3S seasonal · CDS30 ngày5,5 – 9,5 ngày✗✗
Độ trễ của S2S database đã được ECMWF rút từ 3 tuần xuống 48 giờ năm 2024, nhưng chỉ cho một số trung tâm — UKMO vẫn giữ 3 tuần.
Điều này xác nhận hướng đi của hai dự án hiện có

CFSv2 từ NOMADS là nguồn mở duy nhất thoả cả hai ngưỡng với biên độ rộng rãi: 4 cycle mỗi ngày, độ trễ tính bằng giờ. Sản phẩm cfs_flux và cfs_pgb mà dự án HW_CFS_raw đang dùng ở dạng reforecast chính là hai bộ này ở dạng nghiệp vụ.

ECMWF extended-range qua S2S database thoả cả hai với 2 lần/tuần và 48 giờ trễ — đúng nguồn dự án HW đang dùng.

Vai trò còn lại của bộ C3S seasonal trên CDS vì thế thu hẹp rõ rệt: không phải nguồn nghiệp vụ, mà là kho hindcast dài 24–36 năm để huấn luyện và hiệu chỉnh, cộng thêm outlook đa mô hình hằng tháng cho hạn dài hơn 6 tuần.

Kiểm tra lại bất cứ lúc nào

Lịch này là thông báo từ tháng 3/2023 và C3S đã từng đổi. Script info/release_schedule.py dựng lại toàn bộ lịch phát hành từ object store, chạy lúc nào cũng cho kết quả cập nhật tới lô gần nhất:

python release_schedule.py                 # lich + thong ke do tre
python release_schedule.py --diff          # tung lo mang them nhung gi
python release_schedule.py --dataset seasonal-monthly-single-levels

Không cần API key, không cần cron, không phải chờ tháng sau — bucket đã giữ sẵn 63 phiên bản catalogue từ tháng 3/2024. Nên chạy lại mỗi khi thiết kế lại lịch nghiệp vụ, hoặc khi một trung tâm nâng cấp hệ thống.

06

Bẫy hiệu chỉnh: ensemble hindcast ≠ ensemble real-time

Sáu trên mười hệ thống thay đổi kích thước ensemble giữa chế độ hindcast và chế độ real-time. Nếu huấn luyện mô hình trên hindcast rồi áp dụng nguyên xi cho real-time, phân bố của mọi đặc trưng dạng ensemble — độ tán, phân vị, tỷ lệ thành viên vượt ngưỡng — sẽ lệch một cách hệ thống.

Mã CDSEns hindcastEns real-timeThay đổi
ecmwf / 512551gấp 2,0×
meteo_france / 93151gấp 1,6×
dwd / 223050gấp 1,7×
cmcc / 43050gấp 1,7×
bom / 2311gấp 3,7×
ukmo / 61072giảm 3,5× (mỗi ngày init)
ncep / 244không đổi
jma / 455không đổi
eccc / 42020không đổi
eccc / 52020không đổi

Hai cách xử lý, chọn theo mục tiêu:

  • Cắt bớt về mẫu số chung. Chỉ dùng N thành viên đầu ở cả hai chế độ (ECMWF: 25). Đơn giản, an toàn, nhưng bỏ phí một nửa thông tin real-time.
  • Dùng đặc trưng bất biến theo cỡ ensemble. Trung bình, độ lệch chuẩn hiệu chỉnh bậc tự do, phân vị nội suy, tỷ lệ vượt ngưỡng. Tránh mọi đặc trưng phụ thuộc thứ hạng thô hay giá trị cực trị của ensemble, vì cực trị phụ thuộc trực tiếp vào số thành viên.

Nếu chọn ukmo/610, chú ý chiều thay đổi bị đảo: hindcast nhiều thành viên hơn real-time trên mỗi ngày init. Bù lại bằng cách gộp lagged nhiều ngày init trong real-time để đạt cỡ ensemble hiệu dụng tương đương.

07

Khuyến nghị khai thác

Trục chính

ECMWF SEAS5.1

ecmwf/51 — hindcast 36 năm, dài nhất toàn bộ dataset; 51 thành viên real-time; phát hành sớm nhất (ngày 06). Nền tảng để hiệu chỉnh và làm chuẩn so sánh.

Multi-model

Bốn hệ cùng init ngày 01

meteo_france/9, dwd/22, cmcc/4, eccc/5 — cùng lịch khởi tạo nên ghép thành super-ensemble không cần căn chỉnh thời gian. Cho ~180 thành viên mỗi lần dự báo.

Tăng dung lượng mẫu

NCEP và BOM

ncep/2 cho 7.008 cycle độc lập, bom/2 cho 2.808 — gấp 6,5 và 2,6 lần ECMWF. Dùng cho khâu huấn luyện và kiểm định, không dùng cho nghiệp vụ vì độ trễ ~40 ngày.

Bắc cầu dự án

NCEP CFSv2

ncep/2 — cùng mô hình với dự án HW_CFS_raw nhưng đã được C3S chuẩn hoá về lưới 1° với hindcast 1993–2016 liền mạch. Dùng để đối chứng quy trình downscaling đang xây từ số liệu gốc.

Cân nhắc quan trọng về phạm vi

Nếu mục tiêu thực sự là nội mùa tuần 1–4, đây không phải công cụ tối ưu. Bộ C3S seasonal khởi tạo mỗi tháng một lần và mất trọn tuần 1 vì độ trễ phát hành. ECMWF extended-range 46 ngày — hai lần mỗi tuần, hindcast on-the-fly 20 năm, nằm trong S2S database chứ không phải CDS — mới đúng công cụ, và dự án HW đã có nó.

Vai trò hợp lý của bộ số liệu này là bổ sung cho tuần 3–6, nơi tín hiệu khả dự báo chuyển từ điều kiện ban đầu khí quyển sang cưỡng bức chậm của đại dương và mặt đệm, cộng thêm nguồn hindcast dài để huấn luyện mà bộ S2S không có.

08

Tái lập kết quả

Toàn bộ bảng cấu hình dựng lại được từ hai lệnh. Lấy catalogue để biết năm, tháng, ngày init và lead khả dụng:

curl -sSL "https://cds.climate.copernicus.eu/api/catalogue/v1/collections/\
seasonal-original-single-levels/constraints.json" -o cons.json

Đếm số thành viên ensemble bằng một yêu cầu tải cực nhỏ — một điểm lưới, một lead, một biến — rồi đếm số bản ghi GRIB:

import cdsapi
cdsapi.Client().retrieve("seasonal-original-single-levels", {
    "originating_centre": "ecmwf", "system": "51",
    "variable": ["maximum_2m_temperature_in_the_last_24_hours"],
    "year": ["2026"], "month": ["07"], "day": ["01"],
    "leadtime_hour": ["24"], "data_format": "grib",
    "area": [22, 105, 21, 106],          # 1 gridpoint
}, "probe.grib")

# grib_ls -p dataDate,dataTime,number probe.grib
#
#   ecmwf/51 -> 51 ban ghi, dataTime deu = 0, number = 0..50
#               => 1 cycle/ngay, 51 nhieu dong
#   ncep/2   ->  4 ban ghi, dataTime = 0/600/1200/1800, number deu = 0
#               => 4 cycle/ngay, moi cycle 1 lan chay

Khoá dataTime là thứ phân biệt cycle với nhiễu động — bỏ qua nó là nguồn gốc của việc đếm nhầm NCEP thành “ensemble 4 thành viên”. Ngày init hợp lệ của mỗi tháng cũng phải đọc từ constraints.json chứ không suy ra được, vì NCEP và JMA có ngày init trôi theo lịch:

import json
cons = json.load(open("cons.json"))
V = "maximum_2m_temperature_in_the_last_24_hours"

def init_days(centre, system, year, month):
    d = set()
    for b in cons:
        if (V in b["variable"] and centre in b["originating_centre"]
                and system in b["system"] and year in b["year"]
                and month in b["month"]):
            d |= set(b["day"])
    return sorted(d)

init_days("ncep", "2", "2010", "01")   # ['01','06','11','16','21','26','31']
init_days("ncep", "2", "2010", "02")   # ['05','10','15','20','25']

Hàng đợi CDS chỉ chạy một job mỗi lần cho mỗi tài khoản, nên 20 lần thăm dò mất khoảng 20 phút. Mỗi file chỉ vài KB.