#!/bin/bash -l
# OPE1 — chuyển GRIB vừa tải sang NetCDF và xếp đúng bố cục mà PrePro/ mong đợi.
#
# DÙNG grib_to_netcdf CHỨ KHÔNG DÙNG cdo.  Hai lý do, cả hai đều đã kiểm chứng:
#   1. cdo đặt tên biến theo shortName của GRIB (2t, 10u, 2d) hoặc var167, trong khi
#      toàn bộ script PrePro/ gọi tên t2m, u10, d2m -- đúng tên mà grib_to_netcdf
#      sinh ra.  Dùng cdo là mọi lệnh selvar phía sau trượt hết.
#   2. Đây cũng là cách người dùng đã dùng khi tải reforecast
#      (Data_Download/Test_EC_New/*.sh).
#
# Sau khi chuyển còn hai việc ghép/đổi tên mà PrePro/ ngầm giả định:
#   * QUV_plev_cf + P_srf_cf  ->  pquv_cf   (calc_IVT.py cần q,u,v VÀ sp trong cùng
#     một tệp)
#   * nhóm Tx tải về đã đặt sẵn tên Tx_tm_6hours_cf ngay từ bước tải.
#
# Cách dùng:  ./ope1_prepare.sh 2026-08-29 [thư_mục_gốc]

set -euo pipefail
INIT="${1:?cần ngày khởi tạo YYYY-MM-DD}"
ROOT="${2:-/home/tanpv/Data/QG.25.196/EC_RT}"
YEAR="${INIT%%-*}"
G2N=/home/hapt/miniconda3/bin/grib_to_netcdf

conv () {   # conv <thư mục con> <tiền tố>
    local sub="$1" pre="$2"
    local g="${ROOT}/${sub}/${YEAR}/${pre}_${INIT}.grib"
    local n="${ROOT}/${sub}/${YEAR}/${pre}_${INIT}.nc"
    if [[ ! -s "$g" ]]; then echo "  THIẾU: $g"; return 1; fi
    if [[ -s "$n" ]]; then echo "  đã có: $(basename "$n")"; return 0; fi
    "$G2N" -o "$n" "$g" > /dev/null
    echo "  $(basename "$n")  ntime=$(cdo -s ntime "$n")  biến: $(cdo -s showname "$n" | tr -s ' ')"
}

echo "[prep] chuyển GRIB -> NetCDF cho ${INIT}"
conv Srf_daily_ave Srf_daily_cf
conv Srf_24hour    Srf_24hour_cf
conv Tx_tm         Tx_tm_6hours_cf
conv H_plev        H_plev_cf
conv T_plev        T_plev_cf
conv W_plev        W_plev_cf
conv QUV_plev      QUV_plev_cf
conv QUV_plev      P_srf_cf
conv H500          H500_cf
conv T850          T850_cf

echo "[prep] ghép QUV_plev + P_srf -> pquv_cf (calc_IVT.py cần q,u,v và sp cùng tệp)"
PQ="${ROOT}/QUV_plev/${YEAR}/pquv_cf_${INIT}.nc"
cdo -O merge "${ROOT}/QUV_plev/${YEAR}/QUV_plev_cf_${INIT}.nc" \
             "${ROOT}/QUV_plev/${YEAR}/P_srf_cf_${INIT}.nc" "$PQ"
echo "  $(basename "$PQ")  ntime=$(cdo -s ntime "$PQ")  biến: $(cdo -s showname "$PQ" | tr -s ' ')"
echo "[prep] xong"
