#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 11 14:52:24 2025

@author: arofcn
"""




import netCDF4
import math
import os,datetime, glob, cartopy.feature, cmocean,pickle
cwd = os.getcwd()
os.chdir('/home2/arofcn/pY/')
import funcoes_mod, colormaps_LOF
os.chdir(cwd)
import matplotlib.pyplot as plt
import glob
import pandas as pd
from os.path import join, exists
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdates
import matplotlib as mpl
import scipy.io as sio
import cartopy.crs as ccrs
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
from matplotlib.text import Text
import xarray as xr
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
from scipy.interpolate import griddata
plt.rcParams.update({'font.size': 20})
land_50m = cartopy.feature.NaturalEarthFeature(category='cultural',
                                               name='admin_1_states_provinces_lines',scale='50m',facecolor='none')

# =============================================================================
IDM=1500 #numeros de pontod idm
JDM=1100 #numeros de pontos jdm
KDM=32  #numeros total de camadas
IJDM=IDM*JDM
npad=4096-(IJDM%4096) # 2^12
data_type = np.dtype(np.float32).newbyteorder ('>') # '>' é ieee-be #arquivo binário

# LENDO GRID DO MODELO
grid_fid=open('regional.grid.a',mode='rb'); # endereco do regional grid
lon = np.fromfile (grid_fid,dtype=data_type,count=IJDM)
plon=lon.reshape(JDM,IDM)
grid_fid.seek(4*(npad+IJDM),0)
lat = np.fromfile (grid_fid,dtype=data_type,count=IJDM)
plat=lat.reshape(JDM,IDM)

# LENDO BATIMETRIA DO MODELO
depth_fid=open('regional.depth.a',mode='rb'); # endereco do regional grid
bat = np.fromfile (depth_fid,dtype=data_type,count=IJDM)
bat=np.where(bat > 1e10, np.nan,bat) 
bat = bat.reshape(JDM,IDM)
# ggg=np.where(plon>180)[0];plon[ggg[1],ggg[0]]=plon[ggg[1],ggg[0]]-360

lonn=np.arange(np.min(np.min(plon)), np.max(np.max(plon)), 1/4)
latn=np.arange(np.min(np.min(plat)), np.max(np.max(plat)), 1/4)
lonn1,latn1=np.meshgrid(lonn,latn)
batim = griddata((plon.ravel(),plat.ravel()),bat.ravel(),(lonn1, latn1), method='nearest')
ggg=np.where(lonn>180)[0];
LON=np.concatenate((lonn[ggg]-360,lonn[:ggg[0]]),axis=0);
hh = int(np.where(lonn>=179)[0][1])

batim1 = np.concatenate((batim[:,ggg[0]:],batim[:,:ggg[0]]),axis=1)

# =============================================================================
anoini = 2015;anoend = 2015


test='teste19_ERA5_Newbatim'



coord={'lat':LON,'lon':latn}
data_type = lambda : np.dtype(np.float32).newbyteorder ('>')
def dominio(IDM,JDM):
    IJDM=IDM*JDM;
    npad=4096-(IJDM%4096)
    return IJDM,npad
#

# ssh = sio.loadmat('SSH_VEL_medias_2016a2018.mat')
f = h5py.File('SSH_VEL_medias_2015a2015.mat','r')
ssh =np.array(f.get('velm'))
lat =np.array(f.get('lat'))
lon =np.array(f.get('lon'))
lon1,lat1=np.meshgrid(lon[0,:],lat[:,0])

lonn=np.arange(np.min(np.min(lon)), np.max(np.max(lon)), 1/4)
latn=np.arange(np.min(np.min(lat)), np.max(np.max(lat)), 1/4)

lonn1,latn1=np.meshgrid(lonn,latn)

ssh1 = griddata((lon1.ravel(),lat1.ravel()),ssh.ravel().T,(lonn1, latn1), method='nearest')

fig = plt.figure(figsize=(20,10),
              #tight_layout=False
              )
axs = plt.axes(projection=ccrs.PlateCarree())     
args ={'var':ssh1,
   'titulo':f" ",
   # 'vmin':34,'vmax':37
    'vmin':-1,'vmax':1
   }
# cmap='PuBu'
# cmap=colormaps_LOF.barcolor('no_green')
# axs.set_extent([coord['lon'][0],coord['lon'][-1],coord['lat'][0],
    # coord['lat'][-1]], crs=ccrs.PlateCarree())
# axs.set_extent([-110,0,10,60], crs=ccrs.PlateCarree())
axs.add_feature(cartopy.feature.LAND);axs.add_feature(cartopy.feature.RIVERS)
axs.add_feature(land_50m,edgecolor='gray');axs.coastlines()
axs.add_feature(cartopy.feature.BORDERS,edgecolor='grey')
dados=axs.pcolormesh(lonn,latn,args['var'],transform = ccrs.PlateCarree(),cmap=cmap,
        vmin=args['vmin'],vmax=args['vmax'], 
        shading='nearest')
# CS=axs.contour(lon[0,:],lat[:,0],ssh.T, levels=np.arange(0.4,1,.2),extend='both',linewidths=1,transform=ccrs.PlateCarree())

cbar_ax = fig.add_axes([0.25, 0.07, 0.5, 0.015])
sm = plt.cm.ScalarMappable(cmap=cmap,norm=plt.Normalize(args['vmin'],args['vmax']))
sm._A = []
plt.colorbar(sm,cax=cbar_ax,orientation='horizontal',ax=axs,shrink=0.4,extend='both')
grid3=axs.gridlines(draw_labels=True, alpha=0.6,linestyle=':')
grid3.bottom_labels = False;
CS=axs.contour(LON,latn,batim1, levels=[200,2000],colors=['#808080', '#A0A0A0'],extend='both',linewidths=1,transform=ccrs.PlateCarree())
# plt.savefig(f"/home2/efraime/global/hycom_analises/temperatura/figuras_campos_teste06_merra2_com_CERES/camadas/anomaliaMEDIA_campo_temp_camada{(prof+1):02d}_TOTAL-woa23_ZOMM.png",dpi=200,bbox_inches='tight')
# plt.close()
