%
% Lectura de archivos de salt modelo ECCO
% Lee una región pequeña, para todo el periodo y
% Guarda una Matriz de la región en cada tiempo
% Región 2: 
%           (lon >= -80 &  lon <= -70);
%           (lat >= -40 &  lat <= -20);
%
% Orpa Nov 2020
%

% Camino para archivos de temperatura
camino = 'E:\RESPALDO\DATA\Data\ECCO\SALT_nc\';
archi = dir(camino);
% Prueba leer primer archivo de la lista y le agrega el path
archi1 = [camino getfield(archi,{3,1},'name')];


%Lectura_Basica_NetCDF(archi1)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Abre archivo para leer lat lon prof y 
% obtener parámetros para definir región a leern
ncid = netcdf.open(archi1, 'NOWRITE');
% Lee Lat, Lon y salt
% Variables en archivo
% 0 Time
% 1 Depth_T        Profunidades estándares
% 2 Latitude       cada 0.25
% 3 Longitude      cada 0.25
% 4 salt   
%  FillValue -> -9.9999998e+22
%  Missing_value -> -9.9999998e+22

t = netcdf.getVar(ncid,0,'double');
z = netcdf.getVar(ncid,1,'double');
lat = netcdf.getVar(ncid,2,'double');
lon = netcdf.getVar(ncid,3,'double');

% Define región a leer
indlon = find(lon >= -80 &  lon <= -69);
indlat = find(lat >= -40 &  lat <= -20);
indz = find(z <= 70000 );
narchi = max(size(archi))-2;   % Número de archivos es -2 por (. y ..)
% Lee región dadda por índices [lat lon prof tiempo]  
auxlec1 = [indlon(1)-1, indlat(1)-1 , indz(1)-1 , 0];
auxlec2 = [length(indlon),length(indlat), length(indz), 1];
% Cierra el archivo 
netcdf.close(ncid)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COMIENZA ITERACIÓN PARA LEER REGIÓN EN TODOS LOS ARCHIVOS
% Prelocaliza espacio en memoria para salt
% No tengo suficiente memoria para todos los tiempos sacaré promedio
salt = zeros(length(indlon), length(indlat), length(indz), narchi);
%salt = zeros(length(indlon), length(indlat), length(indz));
% EXTRE REGIÓN
% Itera para todos los archivos 

for i = 1:narchi
    archi1 = [camino getfield(archi,{i+2},'name')];
    ncid = netcdf.open(archi1, 'NOWRITE');
    % lee archivo y acumula salt
    salt(:,:,:,i) = netcdf.getVar(ncid, 4, auxlec1, auxlec2,'double'); 
    netcdf.close(ncid)
end


% región reducida
latr = lat(indlat);
lonr = lon(indlon);

% genera vector con fechas
fec = zeros(narchi,3);  % note que narchi ya fue ajustado restando 2  
for i = 1:narchi
    aux = getfield(archi,{i+2},'name');
    % SALT_199201.nc  Para salt va de 6 a 9 en Theta es de 7 a 10
    fec(i,:) = [str2double(aux(6:9)) str2double(aux(10:11)) 15];
end

% Guarda Matriz
% save Salt_Reg_2.mat salt lonr latr z fec 

% % Luego se deben remover valore de datos no válidos y convertir a NaN
% ind = (salt > 100 | salt < -10);
% salt(ind) = NaN;

