o
    #jYK                     @   s>  d Z ddlZddlmZ ddlZdejdededefdd	Zdejdededefd
dZ	dejdededefddZ
dejdededefddZdejdededefddZdejdededefddZdejdededefddZdejdededefddZdejdededefddZdejdededefddZdejdededefddZdejdededefddZdejdededefd d!Zdejdededefd"d#Zdejdededefd$d%Zdejdededefd&d'Zdejdededefd(d)Zdejdededefd*d+Zdejdededefd,d-Zdejdededefd.d/Zdejdededefd0d1Zdejdededefd2d3Zdejdededefd4d5Zdejdededefd6d7Zdejdededefd8d9Z dejdededefd:d;Z!dejdededefd<d=Z"dejdededefd>d?Z#dejdededefd@dAZ$dejdededefdBdCZ%dejdededefdDdEZ&dejdededefdFdGZ'dejdededefdHdIZ(dejdededefdJdKZ)dejdededefdLdMZ*dejdededefdNdOZ+dejdededefdPdQZ,dejdededefdRdSZ-dejdededefdTdUZ.dejdededefdVdWZ/dejdededefdXdYZ0dejdededefdZd[Z1dejdededefd\d]Z2dejdededefd^d_Z3dejdededefd`daZ4dejdededefdbdcZ5i ddedee	dfe
dgedhediedjedkedledmednedoedpedqedredsedtei duedvedwedxedyedzed{ed|e d}e!d~e"de#de$de%de&de'de(de)e*e+e,e-e.e/e0e1e2e3e4e5dZ6dedejdededef
ddZ7dS )uM  
plot_variables.py — Uma função de plot por variável do modelo Eta (46 variáveis)

Cada função:
  plot_<VAR>(data, timestamp, output_dir, **kwargs) -> str

  - data       : np.ndarray (NY, NX) já lido pelo reader.py
  - timestamp  : datetime do campo
  - output_dir : diretório de saída das figuras
  - retorna    : caminho da figura salva

Uso típico:
    from reader import read_field
    from plot_variables import plot_TP2M
    from config import TIMESTAMPS

    arr   = read_field(data_dir, TIMESTAMPS[6], "TP2M")
    fpath = plot_TP2M(arr, TIMESTAMPS[6], "figuras/TP2M")
    N)datetimedata	timestamp
output_dirreturnc                 K      t j| d||fi |S )u-   Pressão ao Nível do Mar — Mesinger (hPa).PSLMpu
plot_fieldr   r   r   kw r   E/dados/sismom/SisMOM/sismom_fig/Figuras_Eta/scripts/plot_variables.py	plot_PSLM      r   c                 K   r   )u   Pressão de Superfície (hPa).PSLCr	   r   r   r   r   	plot_PSLC$   r   r   c                 K   r   )zTemperatura a 2 m (K).TP2Mr	   r   r   r   r   	plot_TP2M-   r   r   c                 K   r   )u   Temperatura Máxima (K).MXTPr	   r   r   r   r   	plot_MXTP2   r   r   c                 K   r   )u   Temperatura Mínima (K).MNTPr	   r   r   r   r   	plot_MNTP7   r   r   c                 K   r   )z!Temperatura de Orvalho a 2 m (K).DP2Mr	   r   r   r   r   	plot_DP2M<   r   r   c                 K   r   )u   Umidade Específica a 2 m (%).US2Mr	   r   r   r   r   	plot_US2ME   r   r   c                 K   r   )zUmidade Relativa a 2 m (kg/kg).UR2Mr	   r   r   r   r   	plot_UR2MJ   r   r   c                 K   r   )z'Componente Zonal do Vento a 10 m (m/s).U10Mr	   r   r   r   r   	plot_U10MS   r   r!   c                 K   r   )z,Componente Meridional do Vento a 10 m (m/s).V10Mr	   r   r   r   r   	plot_V10MX   r   r#   c                 K   r   )z Magnitude do Vento a 10 m (m/s).MAGVr	   r   r   r   r   	plot_MAGV]   r   r%   c                 K   r   )z(Componente Zonal do Vento a 100 m (m/s).U100r	   r   r   r   r   	plot_U100b   r   r'   c                 K   r   )z-Componente Meridional do Vento a 100 m (m/s).V100r	   r   r   r   r   	plot_V100g   r   r)   c                 K   2   | dtj | dd tj| d||fi |S )u=   Precipitação Total Acumulada em 6h (mm). Converte m → mm.
convert_fnunits_overridemmPREC
setdefaultr
   Zm_to_mmr   r   r   r   r   	plot_PRECp      r1   c                 K   r*   )uB   Precipitação Convectiva Acumulada em 6h (mm). Converte m → mm.r+   r,   r-   PRCVr/   r   r   r   r   	plot_PRCVw   r2   r4   c                 K   r*   )uD   Precipitação Estratiforme Acumulada em 6h (mm). Converte m → mm.r+   r,   r-   PRGEr/   r   r   r   r   	plot_PRGE~   r2   r6   c                 K   r*   )u-   Neve Acumulada em 6h (mm). Converte m → mm.r+   r,   r-   NEVEr/   r   r   r   r   	plot_NEVE   r2   r8   c                 K   r   )uB   Fluxo de Calor Latente de Superfície — média temporal (W/m²).CLSFr	   r   r   r   r   	plot_CLSF   r   r:   c                 K   r   )uD   Fluxo de Calor Sensível de Superfície — média temporal (W/m²).CSSFr	   r   r   r   r   	plot_CSSF   r   r<   c                 K   r   )u3   Fluxo de Calor no Solo — média temporal (W/m²).GHFLr	   r   r   r   r   	plot_GHFL   r   r>   c                 K   r   )u(   Temperatura de Superfície — skin (K).TSFCr	   r   r   r   r   	plot_TSFC   r   r@   c                 K   r   )zTemperatura do Solo (K).TSOILr	   r   r   r   r   
plot_TSOIL   r   rB   c                 K   r   )zUmidade do Solo (0-1).USOILr	   r   r   r   r   
plot_USOIL   r   rD   c                 K   r   )u0   Disponibilidade de Água no Solo (adimensional).SMAVr	   r   r   r   r   	plot_SMAV   r   rF   c                 K   r   )zEscoamento Superficial 6h.RNOFr	   r   r   r   r   	plot_RNOF   r   rH   c                 K   r   )zEscoamento Subsuperficial 6h.RNSGr	   r   r   r   r   	plot_RNSG   r   rJ   c                 K   r   )u1   Tensão de Cisalhamento U de Superfície (N/m²).USSTr	   r   r   r   r   	plot_USST   r   rL   c                 K   r   )u1   Tensão de Cisalhamento V de Superfície (N/m²).VSSTr	   r   r   r   r   	plot_VSST   r   rN   c                 K   r   )u    Fração de Nuvens Baixas (0-1).LWNVr	   r   r   r   r   	plot_LWNV   r   rP   c                 K   r   )u!   Fração de Nuvens Médias (0-1).MDNVr	   r   r   r   r   	plot_MDNV   r   rR   c                 K   r   )u   Fração de Nuvens Altas (0-1).HINVr	   r   r   r   r   	plot_HINV   r   rT   c                 K   r   )zNebulosidade Total (0-1).CLDr	   r   r   r   r   plot_CLD   r   rV   c                 K   r   )uC   Radiação SW Incidente de Superfície — média temporal (W/m²).OCISr	   r   r   r   r   	plot_OCIS   r   rX   c                 K   r   )uC   Radiação LW Incidente de Superfície — média temporal (W/m²).OLISr	   r   r   r   r   	plot_OLIS   r   rZ   c                 K   r   )u@   Radiação SW Sainte de Superfície — média temporal (W/m²).OCESr	   r   r   r   r   	plot_OCES   r   r\   c                 K   r   )u@   Radiação LW Sainte de Superfície — média temporal (W/m²).OLESr	   r   r   r   r   	plot_OLES   r   r^   c                 K   r   )u8   Radiação SW Sainte no TOA — média temporal (W/m²).ROCEr	   r   r   r   r   	plot_ROCE  r   r`   c                 K   r   )u8   Radiação LW Sainte no TOA — média temporal (W/m²).ROLEr	   r   r   r   r   	plot_ROLE  r   rb   c                 K   r   )u%   Albedo de Superfície (adimensional).ALBEr	   r   r   r   r   	plot_ALBE  r   rd   c                 K   r   )u9   CAPE — Energia Potencial Convectiva Disponível (J/kg).CAPEr	   r   r   r   r   	plot_CAPE  r   rf   c                 K   r   )u1   Água Precipitável Integrada na Coluna (kg/m²).AGPLr	   r   r   r   r   	plot_AGPL  r   rh   c                 K   r   )u=   Transporte Zonal de Vapor Integrado na Coluna (Q×U, kg/m/s).QUINTr	   r   r   r   r   
plot_QUINT   r   rj   c                 K   r   )uB   Transporte Meridional de Vapor Integrado na Coluna (Q×V, kg/m/s).QVINTr	   r   r   r   r   
plot_QVINT%  r   rl   c                 K   r   )u5   Água Líquida de Nuvem Integrada na Coluna (kg/m²).CWINTr	   r   r   r   r   
plot_CWINT*  r   rn   c                 K   r   )u+   Gelo de Nuvem Integrado na Coluna (kg/m²).CIINTr	   r   r   r   r   
plot_CIINT/  r   rp   c                 K   r   )u(   Altura da Camada Limite Planetária (m).HPBLr	   r   r   r   r   	plot_HPBL8  r   rr   r   r   r   r   r   r   r   r   r    r"   r$   r&   r(   r.   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rS   rU   rW   rY   )r[   r]   r_   ra   rc   re   rg   ri   rk   rm   ro   rq   var_namec                 K   s6   t | }|du rtd|  d||||fi |S )u   
    Dispatcher: chama a função de plot correta para a variável.

    Exemplo:
        fpath = plot_variable("TP2M", arr, timestamp, "figuras/TP2M")
    Nu   Variável 'u*   ' não possui função de plot registrada.)PLOT_FUNCTIONSget
ValueError)rs   r   r   r   kwargsfnr   r   r   plot_variables  s   
ry   )8__doc__numpynpr   Z
plot_utilsr
   ndarraystrr   r   r   r   r   r   r   r   r!   r#   r%   r'   r)   r1   r4   r6   r8   r:   r<   r>   r@   rB   rD   rF   rH   rJ   rL   rN   rP   rR   rT   rV   rX   rZ   r\   r^   r`   rb   rd   rf   rh   rj   rl   rn   rp   rr   rt   ry   r   r   r   r   <module>   s   													
 !"#2