diff --git a/DUNEX_2022_Process.m b/DUNEX_2022_Process.m new file mode 100644 index 0000000..cb29846 --- /dev/null +++ b/DUNEX_2022_Process.m @@ -0,0 +1,311 @@ +%% Read and process results from long term DUNEX Run +addpath(genpath('matlab/applications/delft3d_matlab'),'-begin') +addpath(genpath('D:/DUNEX_RT/Operation/Hindcast'),'-begin') + +%% Model Results 9 + +%trihPath = 'D:\DUNEX_RT\Operation\Hindcast\Setup\trih-dunx22.dat'; + +trihPath = 'D:\Alexander\Setup8_NoWaves\trih-dunx22.dat'; +% trihPath = 'D:\Alexander\Setup8_NoWind_NoWaves\trih-dunx22.dat'; + +% trihPath = '\\tsclient\F\DUNEX_RT\trih-dunx22.dat'; + +runSteps = 1:8785; + +% Read in model data + +modelHistNamesB = qpread(qpfopen(trihPath),1,'water level','stations'); + +modelHistWLB = qpread(qpfopen(trihPath),1,'water level','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistVelB = qpread(qpfopen(trihPath),1,'depth averaged velocity','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWaveHeightB = qpread(qpfopen(trihPath),1,'significant wave height','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWavePerB = qpread(qpfopen(trihPath),1,'peak wave period','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWaveDirB = qpread(qpfopen(trihPath),1,'wave direction','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWindSpeedB = qpread(qpfopen(trihPath),1,'wind speed','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWindDirB = qpread(qpfopen(trihPath),1,'wind direction','griddata',runSteps,[98:129 6 7 8 9]); + +%% Model Results + +trihPath = 'D:\Alexander\Setup8\trih-dunx22.def'; +% trihPath = 'D:\Alexander\Setup8_NoWind_NoWaves\trih-dunx22.dat'; +% trihPath = 'D:\Alexander\Setup8_NoWind\trih-dunx22.dat'; + +runSteps = 1:8785; + +% Read in model data + +modelHistNames = qpread(qpfopen(trihPath),1,'water level','stations'); + +modelHistWL = qpread(qpfopen(trihPath),1,'water level','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistVel = qpread(qpfopen(trihPath),1,'depth averaged velocity','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWaveHeight = qpread(qpfopen(trihPath),1,'significant wave height','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWavePer = qpread(qpfopen(trihPath),1,'peak wave period','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWaveDir = qpread(qpfopen(trihPath),1,'wave direction','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWindSpeed = qpread(qpfopen(trihPath),1,'wind speed','griddata',runSteps,[98:129 6 7 8 9]); + +modelHistWindDir = qpread(qpfopen(trihPath),1,'wind direction','griddata',runSteps,[98:129 6 7 8 9]); + + +%% WL QA/AC +axisLimits=[datetime(2020,07,20) datetime(2020,10,01,00,00,00)]; + +dateStart = axisLimits(1); +dateEnd = axisLimits(2); + +delfTime = axisLimits(1):minutes(10):axisLimits(2); + +%% Read in WL +stations{6} = 8651370; %Dck +stations{7} = 8652587; %Oregon Inlet +stations{8} = 8654467; %Hatteras +stations{9} = 8656483; %Beau + +for Stat=[6 7 8 9] + for Month = 1:3 + if Month==1 + dateStartM=dateStart +((Month-1).*days(31)); + dateEndM=dateStart +((Month).*days(31)); + else + dateStartM=dateEndM + days(1); + dateEndM=dateStart +((Month).*days(31)); + end + + url = ['https://tidesandcurrents.noaa.gov/api/datagetter?product=water_level&application=NOS.COOPS.TAC.WL&'... + 'begin_date=' datestr(dateStartM,'yyyymmdd') '&end_date=' datestr(dateEndM,'yyyymmdd') '&datum=NAVD' '&station=' num2str(stations{Stat})... + '&time_zone=GMT&units=metric&format=csv']; + + wlIN = webread(url); + + if Month==1 + measuredWL_D = datenum(wlIN.DateTime); + measuredWL_W = wlIN.WaterLevel; + else + measuredWL_D = vertcat(measuredWL_D,datenum(wlIN.DateTime)); + measuredWL_W = vertcat(measuredWL_W,wlIN.WaterLevel); + end + + clear windIN wlIN + end + + switch Stat + case 6 + tideOutN = interp1(measuredWL_D,... + measuredWL_W,... + datenum(axisLimits(1):minutes(10):axisLimits(2))); + case 7 + tideOutOI = interp1(measuredWL_D,... + measuredWL_W,... + datenum(axisLimits(1):minutes(10):axisLimits(2))); + case 8 + tideOutHat = interp1(measuredWL_D,... + measuredWL_W,... + datenum(axisLimits(1):minutes(10):axisLimits(2))); + case 9 + tideOutS = interp1(measuredWL_D,... + measuredWL_W,... + datenum(axisLimits(1):minutes(10):axisLimits(2))); + end +end + +%% Read in merged WL +MergedWL_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_WL.csv'); +MergedHs_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_SigWave.csv'); +MergedDir_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_Dir.csv'); +MergedPer_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_Period.csv'); +MergedVelX_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_VelX.csv'); +MergedVelY_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_VelY.csv'); +MergedWindD_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_WindDir.csv'); +MergedWindS_Table = readtable('D:\Alexander\MATLAB\DunexBounds\Dunex_RT_WindSpeed.csv'); + + +%% Hs QA/QC + +% Read in NDBC +StatCount=1; + +for Station = [44095] + buoyIn{StatCount} = readtable(... + ['D:\DUNEX_RT\Operation\Hindcast\Buoy\'... + num2str(Station) 'h2020.txt']); + + buoyOut{StatCount} = struct; + buoyOut{StatCount}.WVHT = buoyIn{StatCount}.WVHT; + buoyOut{StatCount}.DateTime = datetime(buoyIn{StatCount}.x_YY,... + buoyIn{StatCount}.MM,buoyIn{StatCount}.DD,buoyIn{StatCount}.hh,... + buoyIn{StatCount}.mm,0); + + buoyOut{StatCount}.DateTime(buoyOut{StatCount}.WVHT==99) = []; + buoyOut{StatCount}.WVHT(buoyOut{StatCount}.WVHT==99) = []; + + StatCount=StatCount+1; + +end + +%% Create FrankenTimeline + +Dunex_RT_WL = MergedWL_Table; +Dunex_RT_SigWave = MergedHs_Table; +Dunex_RT_Dir = MergedDir_Table; +Dunex_RT_Period = MergedPer_Table; +Dunex_RT_VelX = MergedVelX_Table; +Dunex_RT_VelY = MergedVelY_Table; +Dunex_RT_WindDir = MergedWindD_Table; +Dunex_RT_WindSpeed = MergedWindS_Table; + +for i = 1:32 + modelWL_Inter(:, i) = interp1(modelHistWL.Time,... + modelHistWL.Val(:,i), datenum(MergedWL_Table.DateTime)); + modelHs_Inter(:, i) = interp1(modelHistWaveHeight.Time,... + modelHistWaveHeight.Val(:,i), datenum(MergedHs_Table.DateTime)); + modelDir_Inter(:, i) = interp1(modelHistWaveDir.Time,... + modelHistWaveDir.Val(:,i), datenum(MergedDir_Table.DateTime)); + modelPer_Inter(:, i) = interp1(modelHistWavePer.Time,... + modelHistWavePer.Val(:,i), datenum(MergedPer_Table.DateTime)); + modelVelX_Inter(:, i) = interp1(modelHistVel.Time,... + modelHistVel.XComp(:,i), datenum(MergedVelX_Table.DateTime)); + modelVelY_Inter(:, i) = interp1(modelHistVel.Time,... + modelHistVel.YComp(:,i), datenum(MergedVelY_Table.DateTime)); + modelWindD_Inter(:, i) = interp1(modelHistWindDir.Time,... + modelHistWindDir.Val(:,i), datenum(MergedWindD_Table.DateTime)); + modelWindS_Inter(:, i) = interp1(modelHistWindSpeed.Time,... + modelHistWindSpeed.Val(:,i), datenum(MergedWindS_Table.DateTime)); + + Dunex_RT_WL{isnan(Dunex_RT_WL{:,i}), i} =... + modelWL_Inter(isnan(Dunex_RT_WL{:,i}), i); + Dunex_RT_SigWave{isnan(Dunex_RT_SigWave{:,i}), i} =... + modelHs_Inter(isnan(Dunex_RT_SigWave{:,i}), i); + Dunex_RT_Dir{isnan(Dunex_RT_Dir{:,i}), i} =... + modelDir_Inter(isnan(Dunex_RT_Dir{:,i}), i); + Dunex_RT_Period{isnan(Dunex_RT_Period{:,i}), i} =... + modelPer_Inter(isnan(Dunex_RT_Period{:,i}), i); + Dunex_RT_VelX{isnan(Dunex_RT_VelX{:,i}), i} =... + modelVelX_Inter(isnan(Dunex_RT_VelX{:,i}), i); + Dunex_RT_VelY{isnan(Dunex_RT_VelY{:,i}), i} =... + modelVelY_Inter(isnan(Dunex_RT_VelY{:,i}), i); + Dunex_RT_WindDir{isnan(Dunex_RT_WindDir{:,i}), i} =... + modelWindD_Inter(isnan(Dunex_RT_WindDir{:,i}), i); + Dunex_RT_WindSpeed{isnan(Dunex_RT_WindSpeed{:,i}), i} =... + modelWindS_Inter(isnan(Dunex_RT_WindSpeed{:,i}), i); + +end +%% Plot WL Hat + +wlValF = figure +subplot(2,1,1) +title('Hatteras Coast Guard') +hold on +plot(modelHistWL.Time, modelHistWL.Val(:,35),'-r') +% plot(modelHistWLB.Time, modelHistWLB.Val(:,35),'-b') +plot(datenum(axisLimits(1):minutes(10):axisLimits(2)), tideOutHat, '-k') +% plot(datenum(MergedWL_Table.DateTime),MergedWL_Table.x106_DUNEX_9,'-b') +% plot(datenum(Dunex_RT_WL.DateTime),Dunex_RT_WL.x106_DUNEX_9,'-m') + +legend('Large-scale Model','Observations','Orientation','horizontal','Location','south') +ylabel('Water Level [m]') +ax=gca; +ax.XLim = datenum([datetime(2020,08,01,00,00,00) datetime(2020,10,01,00,00,00)]); +ax.YLim = [-0.5 0.75]; +datetick('x','keeplimits') + + +% figure +subplot(2,1,2) +title('Oregon Inlet Marina') + +hold on +plot(modelHistWL.Time, modelHistWL.Val(:,34),'-r') +% plot(modelHistWLB.Time, modelHistWLB.Val(:,34),'-b') + +% plot(datenum(axisLimits(1):minutes(10):axisLimits(2)), tideOutS, '-k') +plot(datenum(axisLimits(1):minutes(10):axisLimits(2)), tideOutOI, '-k') +% plot(datenum(MergedWL_Table.DateTime),MergedWL_Table.x106_DUNEX_9,'-b') +% plot(datenum(Dunex_RT_WL.DateTime),Dunex_RT_WL.x106_DUNEX_9,'-m') + +legend('Large-scale Model','Observations','Orientation','horizontal','Location','south') +ylabel('Water Level [m]') + +ax=gca; + +ax.XLim = datenum([datetime(2020,08,01,00,00,00) datetime(2020,10,01,00,00,00)]); +ax.YLim = [-0.5 1]; + +datetick('x','keeplimits') + + +wlValF.Units='inches'; +wlValF.PaperOrientation='portrait'; +wlValF.Position=[0 0 8 4]; + +exportgraphics(wlValF, 'D:\Alexander\LargeScaleWL_Val.png', 'Resolution', 300) +%% Plot Hs + +figure +hold on +plot(modelHistWaveHeight.Time, modelHistWaveHeight.Val(:,34),'-r') +% plot(datenum(axisLimits(1):minutes(10):axisLimits(2)), tideOutS, '-k') +plot(datenum(buoyOut{3}.DateTime), buoyOut{3}.WVHT, '-k') +% plot(datenum(MergedHs_Table.DateTime),MergedHs_Table.x129_DUNEX_32,'-b') +plot(datenum(MergedHs_Table.DateTime),MergedHs_Table.x106_DUNEX_3,'-b') +plot(datenum(Dunex_RT_SigWave.DateTime),Dunex_RT_SigWave.x106_DUNEX_3,'-m') + +datetick('x','keeplimits') + +%% Save + +writetable(Dunex_RT_WL, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_WL_RevB.csv') +writetable(Dunex_RT_SigWave, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_SigWave_RevB.csv') +writetable(Dunex_RT_Dir, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_Dir_RevB.csv') +writetable(Dunex_RT_Period, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_Period_RevB.csv') +writetable(Dunex_RT_VelX, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_VelX_RevB.csv') +writetable(Dunex_RT_VelY, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_VelY_RevB.csv') +writetable(Dunex_RT_WindDir, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_WindDir_RevB.csv') +writetable(Dunex_RT_WindSpeed, 'D:\Alexander\MATLAB\DunexBoundsB\Dunex_RT_WindSpeed_RevB.csv') + + +%% Save Raw Model +varNames = {'WL', 'SigWave', 'Dir', 'Period', 'VelX', 'VelY', 'WindDir', 'WindSpeed'}; + + +for v = 1:8%[1 5 6 7 8] +clear table_Raw + switch v + case 1 + table_Raw = array2table(modelHistWL.Val); + case 2 + table_Raw = array2table(modelHistWaveHeight.Val); + case 3 + table_Raw = array2table(modelHistWaveDir.Val); + case 4 + table_Raw = array2table(modelHistWavePer.Val); + case 5 + table_Raw = array2table(modelHistVel.XComp); + case 6 + table_Raw = array2table(modelHistVel.YComp); + case 7 + table_Raw = array2table(modelHistWindSpeed.Val); + case 8 + table_Raw = array2table(modelHistWindDir.Val); + end + + + table_Raw.Properties.VariableNames = modelHistNames([98:129 6 7 8 9]); + table_Raw.DateTime = datetime(datevec(modelHistWL.Time)); + + writetable(table_Raw, ['D:\Alexander\MATLAB\DUNEX_NoWind\Dunex_RT_NoWind'... + varNames{v} '.csv']) + +end + + diff --git a/Dunex_Archive_Merge.m b/Dunex_Archive_Merge.m new file mode 100644 index 0000000..f462a54 --- /dev/null +++ b/Dunex_Archive_Merge.m @@ -0,0 +1,190 @@ +%% Script to merge DUNEX-RT Archive to a "best series" dataset +% Alexander Rey, July 15, 2022 + +addpath(genpath('matlab/applications/delft3d_matlab'),'-begin') +addpath(genpath('D:/DUNEX_RT/Operation/Hindcast'),'-begin') +%% Get descriptive information of the hist file +runDate = datetime(2020, 07, 20); +histVars = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate,'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1); +histStations = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate,'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'water level','stations'); + +%% Extract data from July 20, 2020 to October 2, 2020 + +% Extract only the first 6 hours (36 time steps) +% Extract only stations for DUNEX (98-129) +mergedHistWL = []; +mergedHistVelX = []; +mergedHistVelY = []; +mergeHistWaveHeight = []; +mergeHistWavePer = []; +mergeHistWaveDir = []; +mergedHistTime = []; +mergeHistWindSpeed = []; +mergeHistWindDir = []; + +% Loop through times +for runDate = datetime(2020, 07, 20):hours(6):datetime(2020, 10, 02) +% for runDate = datetime(2020, 09, 16):hours(6):datetime(2020, 09, 26) +% for runDate = datetime(2020, 08, 03):hours(6):datetime(2020, 08, 06) + + % If file is missing go back and use correct time steps from later in + % the run + if exist(['D:\DUNEX_RT\Archive\' datestr(runDate,'yyyy-mm-dd_HH')... + '_HistOut7.dat'],'file') == 2 + runSteps = 2:37; + hoursBack = 0; + elseif exist(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(6), 'yyyy-mm-dd_HH')... + '_HistOut7.dat'],'file') == 2 + runSteps = 38:73; + hoursBack = 6 + elseif exist(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(12),'yyyy-mm-dd_HH')... + '_HistOut7.dat'],'file') == 2 + runSteps = 74:109; + hoursBack = 12 + elseif exist(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(18),'yyyy-mm-dd_HH')... + '_HistOut7.dat'],'file') == 2 + runSteps = 110:145; + hoursBack = 18 + elseif exist(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(24),'yyyy-mm-dd_HH')... + '_HistOut7.dat'],'file') == 2 + runSteps = 146:181; + hoursBack = 24 + elseif exist(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(30),'yyyy-mm-dd_HH')... + '_HistOut7.dat'],'file') == 2 + runSteps = 182:217; + hoursBack = 30 + else + % If missing + mergedHistWL = [mergedHistWL nan([32,36])]; + mergedHistVelX = [mergedHistVelX nan([32,36])]; + mergedHistVelY = [mergedHistVelY nan([32,36])]; + mergeHistWaveHeight = [mergeHistWaveHeight nan([32,36])]; + mergeHistWavePer = [mergeHistWavePer nan([32,36])]; + mergeHistWaveDir = [mergeHistWaveDir nan([32,36])]; + mergeHistWindSpeed = [mergeHistWindSpeed nan([32,36])]; + mergeHistWindDir = [mergeHistWindDir nan([32,36])]; + mergedHistTime = [mergedHistTime datenum(runDate+minutes(10):minutes(10):runDate+hours(6))]; + continue + end + + % Read in model data + modelHistWL = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'water level','griddata',runSteps,98:129); + + modelHistVel = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'depth averaged velocity','griddata',runSteps,98:129); + + modelHistWaveHeight = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'significant wave height','griddata',runSteps,98:129); + + modelHistWavePer = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'peak wave period','griddata',runSteps,98:129); + + modelHistWaveDir = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'wave direction','griddata',runSteps,98:129); + + modelHistWindSpeed = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'wind speed','griddata',runSteps,98:129); + + modelHistWindDir = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'wind direction','griddata',runSteps,98:129); + + % Merge + mergedHistWL = [mergedHistWL modelHistWL.Val']; + mergedHistVelX = [mergedHistVelX modelHistVel.XComp']; + mergedHistVelY = [mergedHistVelY modelHistVel.YComp']; + mergeHistWaveHeight = [mergeHistWaveHeight modelHistWaveHeight.Val']; + mergeHistWavePer = [mergeHistWavePer modelHistWavePer.Val']; + mergeHistWaveDir = [mergeHistWaveDir modelHistWaveDir.Val']; + mergeHistWindSpeed = [mergeHistWindSpeed modelHistWindSpeed.Val']; + mergeHistWindDir = [mergeHistWindDir modelHistWindDir.Val']; + mergedHistTime = [mergedHistTime modelHistWL.Time']; + + disp(runDate) +end + +extractBed = qpread(qpfopen(['D:\DUNEX_RT\Archive\' datestr(runDate-hours(hoursBack),'yyyy-mm-dd_HH')... + '_HistOut7.dat']),1,'bed level','griddata',1,98:129); +extractPtX = extractBed.X(1,:); +extractPtY = extractBed.Y(1,:); +%% Plot + +figure +plot(mergedHistTime, mergedHistWL(10, :)) +datetick('x') +ylabel('DUNEX-RT Water Level (mNAVD88)') + +figure +plot(mergedHistTime, mergeHistWaveHeight(10, :)) +datetick('x') +ylabel('DUNEX-RT Significant Wave Height (m8)') + + +%% Export data + +MergedWL_Table = array2table(mergedHistWL'); +MergedWL_Table.Properties.VariableNames = histStations(98:129); +MergedWL_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedWL_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_WL.csv') + +MergedVelX_Table = array2table(mergedHistVelX'); +MergedVelX_Table.Properties.VariableNames = histStations(98:129); +MergedVelX_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedVelX_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_VelX.csv') + +MergedVelY_Table = array2table(mergedHistVelY'); +MergedVelY_Table.Properties.VariableNames = histStations(98:129); +MergedVelY_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedVelY_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_VelY.csv') + +MergedWaveHeight_Table = array2table(mergeHistWaveHeight'); +MergedWaveHeight_Table.Properties.VariableNames = histStations(98:129); +MergedWaveHeight_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedWaveHeight_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_SigWave.csv') + +MergedWavePeriod_Table = array2table(mergeHistWavePer'); +MergedWavePeriod_Table.Properties.VariableNames = histStations(98:129); +MergedWavePeriod_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedWavePeriod_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_Period.csv') + +MergedWaveDir_Table = array2table(mergeHistWaveDir'); +MergedWaveDir_Table.Properties.VariableNames = histStations(98:129); +MergedWaveDir_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedWaveDir_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_Dir.csv') + +MergedWindSpeed_Table = array2table(mergeHistWindSpeed'); +MergedWindSpeed_Table.Properties.VariableNames = histStations(98:129); +MergedWindSpeed_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedWindSpeed_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_WindSpeed.csv') + +MergedWindDir_Table = array2table(mergeHistWindDir'); +MergedWindDir_Table.Properties.VariableNames = histStations(98:129); +MergedWindDir_Table.DateTime = datetime(datevec(mergedHistTime)) ; +writetable(MergedWindDir_Table, 'D:\Alexander\MATLAB\DunexBounds\Dunex_RT_WindDir.csv') + +stationDetails = cell2table([histStations(98:129) num2cell(extractPtX') num2cell(extractPtY') num2cell(squeeze(extractBed.Val(1,1,:)))]); +stationDetails.Properties.VariableNames = {'StationName','UTMx','UTMy', 'BedLevel'}; +writetable(stationDetails, 'D:\Alexander\MATLAB\DunexBounds\stationDetails.csv') + + + + + + + + + + + + + + + + + + + + + diff --git a/Dunex_Operational_Feb28.m b/Dunex_Operational_Feb28.m index 1a29b02..367cbd0 100644 --- a/Dunex_Operational_Feb28.m +++ b/Dunex_Operational_Feb28.m @@ -5,9 +5,9 @@ clear all cd D:\DUNEX_RT\Operation echo off; -addpath('NCtoolbox') +% addpath('NCtoolbox') addpath('m_map') -setup_nctoolbox +% setup_nctoolbox flowGrid = load('Cone7W_100.mat'); waveGrid = load('Cone7W_250.mat'); load('LMSL_RT.mat') @@ -30,7 +30,7 @@ props.setProperty('mail.smtp.starttls.enable','true'); % Every 6 hours nistTime = datetime(datevec(now())) - tzoffset(datetime(datevec(now()),'TimeZone','local')); -masterTime = dateshift(nistTime,'start','hour')-hours(2) % Assume script will run at 5 and a half hours after model start +masterTime = dateshift(nistTime,'start','hour')-hours(2) % Assume script will run 2 hours after model start clear nistTime masterDate = datetime(year(masterTime),month(masterTime),day(masterTime)); @@ -40,14 +40,17 @@ else FIRST_RUN = 1; end +% setup_nctoolbox +% pause(1) + %% Import try Import=0; %% Clean files from previous run - system('taskkill /IM "d_hydro.exe" /F') - system('taskkill /IM "wave.exe" /F') +% system('taskkill /IM "d_hydro.exe" /F') +% system('taskkill /IM "wave.exe" /F') delete com-* delete hot* @@ -81,17 +84,26 @@ try % datestr(masterTime-hours(6),'yyyymmdd')... % '/estofs.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; - url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% datestr(masterTime-hours(6),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; + +% url = ['https://noaa-gestofs-pds.s3.amazonaws.com/_stofs-3D-Atlantic/stofs_3d_atl.'... +% datestr(masterTime-hours(6),'yyyymmdd')... +% '/stofs_3d_atl.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; + url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/stofs/prod/stofs_2d_glo.'... datestr(masterTime-hours(6),'yyyymmdd')... - '/estofs.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; - + '/stofs_2d_glo.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; + websave('ESTOFS.grib',url,options) - ESTOFS = ncgeodataset('ESTOFS.grib'); - - m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); - [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); - [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); - clear meshX meshY +% ESTOFS = ncgeodataset('ESTOFS.grib'); + % Convert grib file to NetCDF + system(['D:\DUNEX_RT\Windows_64\wgrib2.exe D:\DUNEX_RT\Operation\ESTOFS.grib '... + '-netcdf D:\DUNEX_RT\Operation\ESTOFS.nc']); + + latESTOFS = ncread('D:\DUNEX_RT\Operation\ESTOFS.nc','latitude'); + lonESTOFS = wrapTo180(ncread('D:\DUNEX_RT\Operation\ESTOFS.nc','longitude')); + ESTstart = 6; %7 ESTrun = 6; catch @@ -105,17 +117,26 @@ try % url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... % datestr(masterTime-days(1),'yyyymmdd')... % '/estofs.t' datestr(masterTime-days(1),'hh') 'z.conus.east.f000.grib2']; - url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% datestr(masterTime-days(1),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-days(1),'hh') 'z.conus.east.f000.grib2']; + + url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/stofs/prod/stofs_2d_glo.'... datestr(masterTime-days(1),'yyyymmdd')... - '/estofs.t' datestr(masterTime-days(1),'hh') 'z.conus.east.f000.grib2']; + '/stofs_2d_glo.t' datestr(masterTime-days(1),'hh') 'z.conus.east.f000.grib2']; websave('ESTOFS.grib',url,options) - ESTOFS = ncgeodataset('ESTOFS.grib'); +% ESTOFS = ncgeodataset('ESTOFS.grib'); - m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); - [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); - [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); - clear meshX meshY + % Convert grib file to NetCDF + system(['D:\DUNEX_RT\Windows_64\wgrib2.exe D:\DUNEX_RT\Operation\ESTOFS.grib '... + '-netcdf D:\DUNEX_RT\Operation\ESTOFS.nc']); + +% m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); + + latESTOFS = ncread('D:\DUNEX_RT\Operation\ESTOFS.nc','latitude'); + lonESTOFS = wrapTo180(ncread('D:\DUNEX_RT\Operation\ESTOFS.nc','longitude')); + ESTstart = 24; %25 ESTrun = 24; end @@ -170,7 +191,8 @@ try % Find ESTOFS values from small grid idxCount=1; errorET = 0; - for i = ESTstart:ESTstart+96 + i = ESTstart; + while i <=ESTstart+96 if errorET<10 try % url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... @@ -178,23 +200,57 @@ try % '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.conus.east.f'... % num2str(i,'%03d') '.grib2']; - url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% datestr(masterTime-hours(ESTrun),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.conus.east.f'... +% num2str(i,'%03d') '.grib2']; + + url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/stofs/prod/stofs_2d_glo.'... datestr(masterTime-hours(ESTrun),'yyyymmdd')... - '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.conus.east.f'... + '/stofs_2d_glo.t' datestr(masterTime-hours(ESTrun),'hh') 'z.conus.east.f'... num2str(i,'%03d') '.grib2']; - websave(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... - datestr(masterTime,'YYYY-mm-DD_HH') '_f' num2str(idxCount-1,'%03d') '.grib'],url,options) + + ESTOFSstring = ['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime,'YYYY-mm-DD_HH') '_f' num2str(idxCount-1,'%03d')]; + + %websave([ESTOFSstring '.grib'],url,options) + % Use Powershell since sometimes websave doesn't + % work??? But Powershell seems to? Something about + % content encoding? Also, the first part of the + % string is required due to some https thing with + % powershell + system(['powershell -command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri ' ... + url ' -OutFile ' ESTOFSstring '.grib"']); + + % Convert grib file to NetCDF using wgrib2 + system(['D:\DUNEX_RT\Windows_64\wgrib2.exe '... + ESTOFSstring '.grib '... + '-netcdf ' ... + ESTOFSstring '.nc']); + + % Remove grib file + eval(['delete ' ESTOFSstring '.grib']) + if i<=ESTstart+48 - ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... - datestr(masterTime,'YYYY-mm-DD_HH') '_f' num2str(idxCount-1,'%03d') '.grib']); +% ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... +% datestr(masterTime,'YYYY-mm-DD_HH') '_f' num2str(idxCount-1,'%03d') '.grib']); - waterLevelsGRID(idxCount,:,:) = ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(1,min(idxESTOFS(:,1)):max(idxESTOFS(:,1)),... - min(idxESTOFS(:,2)):max(idxESTOFS(:,2))); % Extract small grid + waterLevelsGRID(idxCount,:,:) = ncread([ESTOFSstring '.nc'],... + 'ELEV_surface',[min(idxESTOFS(:,1)),min(idxESTOFS(:,2)),1],... + [max(idxESTOFS(:,1))-min(idxESTOFS(:,1))+1,max(idxESTOFS(:,2))-min(idxESTOFS(:,2))+1,1]); + +% waterLevelsGRID(idxCount,:,:) = ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(1,min(idxESTOFS(:,1)):max(idxESTOFS(:,1)),... +% min(idxESTOFS(:,2)):max(idxESTOFS(:,2))); % Extract small grid + disp(i) + disp(idxCount) end - idxCount = idxCount + 1; + i = i + 1; + idxCount = idxCount + 1; + errorET = 0; catch - errorET = errorET+1; + disp('ERROR ET') + errorET = errorET+1 end else error('ESTOFS ERROR') @@ -204,8 +260,8 @@ try idxCount=1; for i = 1:length(idxESTOFS) - waterLevels(:,idxCount) = waterLevelsGRID(:,idxESTOFS(idxCount,1)-min(idxESTOFS(:,1))+1,... - idxESTOFS(idxCount,2)-min(idxESTOFS(:,2))+1); + waterLevels(:,idxCount) = squeeze(waterLevelsGRID(:,idxESTOFS(idxCount,1)-min(idxESTOFS(:,1))+1,... + idxESTOFS(idxCount,2)-min(idxESTOFS(:,2))+1))'; idxCount = idxCount + 1; end @@ -215,12 +271,12 @@ try % url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... % datestr(masterTime-hours(ESTrun),'yyyymmdd')... % '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.points.cwl.nc']; - url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... - datestr(masterTime-hours(ESTrun),'yyyymmdd')... - '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.points.cwl.nc']; - - websave(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... - datestr(masterTime,'YYYY-mm-DD_HH') '_points.nc'],url,options) +% url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... +% datestr(masterTime-hours(ESTrun),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.points.cwl.nc']; +% +% websave(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... +% datestr(masterTime,'YYYY-mm-DD_HH') '_points.nc'],url,options) % fprintf(fileID,[boundryNames{Boundry} ' N T 750 1322 1081 1322 0.0000000e+000\n']); % fprintf(fileID,[boundryNames{Boundry} ' N T 475 1 1081 1 0.0000000e+000\n']); @@ -234,12 +290,16 @@ try datestr(masterTime-hours(6),'yyyymmdd')... '/gfswave.atlocn.0p16_' datestr(masterTime-hours(6),'hh') 'z']; - MWW3 = ncgeodataset(url); - clear url - - lonMWW3=wrapTo180(MWW3{'lon'}(:)); - latMWW3=MWW3{'lat'}(:); +% MWW3 = ncgeodataset(url); +% clear url +% +% lonMWW3=wrapTo180(MWW3{'lon'}(:)); +% latMWW3=MWW3{'lat'}(:); + lonMWW3=wrapTo180(ncread(url,'lon')); + latMWW3=wrapTo180(ncread(url,'lat')); + + % Find MWW3 index for grid points along boundry idxCount=1; for i = 1:25:length(waveGrid.data.Y)-25 % Every ~200 km @@ -293,29 +353,45 @@ try clear idxCount +% % Extract WW3 Hs for 36 hours at indexes +% wavesGRID_Hs = MWW3{'htsgwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... +% min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid htsgwsfc +% %swell_1 +% % Period +% wavesGRID_P = MWW3{'perpwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... % +% min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid perpwsfc +% %swper_1 +% % Direction +% wavesGRID_Dir = MWW3{'dirpwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... +% min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid dirpwsfc +% %swdir_1 % Extract WW3 Hs for 36 hours at indexes - wavesGRID_Hs = MWW3{'htsgwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... - min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid htsgwsfc + wavesGRID_Hs = ncread(url,'htsgwsfc',[min(idxMWW3(:,2)),min(idxMWW3(:,1)),7],... + [max(idxMWW3(:,2))-min(idxMWW3(:,2))+1, max(idxMWW3(:,1))-min(idxMWW3(:,1))+1,23-7+1]); % Extract small grid htsgwsfc %swell_1 % Period - wavesGRID_P = MWW3{'perpwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... % - min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid perpwsfc + wavesGRID_P = ncread(url,'perpwsfc',[min(idxMWW3(:,2)),min(idxMWW3(:,1)),7],... + [max(idxMWW3(:,2))-min(idxMWW3(:,2))+1, max(idxMWW3(:,1))-min(idxMWW3(:,1))+1,23-7+1]); % Extract small grid htsgwsfc + %swper_1 % Direction - wavesGRID_Dir = MWW3{'dirpwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... - min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid dirpwsfc - %swdir_1 + wavesGRID_Dir = ncread(url,'dirpwsfc',[min(idxMWW3(:,2)),min(idxMWW3(:,1)),7],... + [max(idxMWW3(:,2))-min(idxMWW3(:,2))+1, max(idxMWW3(:,1))-min(idxMWW3(:,1))+1,23-7+1]);% Extract small grid htsgwsfc + + + + % Find WW3 values from small grid idxCount=1; for i = 1:length(idxMWW3) - waves(:,idxCount,1) = wavesGRID_Hs(:,idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,... - idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1); %Hs + waves(:,idxCount,1) = wavesGRID_Hs(idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1,... + idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,:); %Hs - waves(:,idxCount,2) = wavesGRID_P(:,idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,... - idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1); %Tp + waves(:,idxCount,2) = wavesGRID_P(idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1,... + idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,:); %Tp - waves(:,idxCount,3) = wavesGRID_Dir(:,idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,... - idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1); %Dir + waves(:,idxCount,3) = wavesGRID_Dir(idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1,... + idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,:); %Dir idxCount = idxCount + 1; end @@ -347,40 +423,56 @@ try [pCheck,gridParams] = system(['perl "D:\DUNEX_RT\Windows_64\grid_defn.pl" '... 'D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2']); - [wCheck,gridParams] = system(['wgrib2 D:\DUNEX_RT\Operation\HRRR\hrrrT' ... +% [wCheck,gridParams] = system(['wgrib2 D:\DUNEX_RT\Operation\HRRR\hrrrT' ... +% num2str(ForcastHour,'%02d') '.grib2 -new_grid_winds earth -new_grid ' ... +% gridParams ' D:\DUNEX_RT\Operation\HRRR\hrrrT'... +% num2str(ForcastHour,'%02d') '.grib2.regrid']); + + % Convert Winds + [wCheck,~] = system(['wgrib2 D:\DUNEX_RT\Operation\HRRR\hrrrT' ... num2str(ForcastHour,'%02d') '.grib2 -new_grid_winds earth -new_grid ' ... gridParams ' D:\DUNEX_RT\Operation\HRRR\hrrrT'... num2str(ForcastHour,'%02d') '.grib2.regrid']); + + % Convert grib file to NetCDF + [nCheck,~] = system(['D:\DUNEX_RT\Windows_64\wgrib2.exe D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.grib2.regrid' ... + ' -netcdf D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc']); + + end % delete(gcp('nocreate')) - HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(0,'%02d') '.grib2.regrid']); +% HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(0,'%02d') '.grib2.regrid']); clear url - m_proj('lambert conformal conic','ori',[262.5 38.5],'clo',262.5,'par',[38.5 38.5],'ell','sphere');%,'lat',[20 55],'lon',[-60 -130] - [meshX,meshY] = meshgrid(HRRR{'x'}(:),HRRR{'y'}(:)); - [windGridLON,windGridLAT] = m_xy2ll(meshX.*1000,meshY.*1000); +% m_proj('lambert conformal conic','ori',[262.5 38.5],'clo',262.5,'par',[38.5 38.5],'ell','sphere');%,'lat',[20 55],'lon',[-60 -130] +% [meshX,meshY] = meshgrid(HRRR{'x'}(:),HRRR{'y'}(:)); +% [windGridLON,windGridLAT] = m_xy2ll(meshX.*1000,meshY.*1000); + + windGridLON = ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'longitude'); + windGridLAT = ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'latitude'); windGridLON=wrapTo180(windGridLON); - clear meshX meshY % Extract MWW3 Hs for 48 hours at indexes for ForcastHour = 0:48 - HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2.regrid']); - windU(ForcastHour+1,:,:) = HRRR{'u-component_of_wind_height_above_ground'}(:,:,:); %U Winds @ 10m [m/s] - windV(ForcastHour+1,:,:) = HRRR{'v-component_of_wind_height_above_ground'}(:,:,:); %V Winds @ 10m [m/s] +% HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2.regrid']); + windU(ForcastHour+1,:,:) = ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'UGRD_10maboveground'); + windV(ForcastHour+1,:,:) = ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'VGRD_10maboveground'); %V Winds @ 10m [m/s] - HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2']); - pressure(ForcastHour+1,:,:) = HRRR{'Pressure_surface'}(:,:,:); %Surface Pressure [pa] + pressure(ForcastHour+1,:,:) = ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'PRES_surface'); %Surface Pressure [pa] - if ForcastHour==0 - rain(ForcastHour+1,:,:) = HRRR{'Total_precipitation_surface_0_Hour_Accumulation'}(1,:,:); %Surface precipitation [kg/m^2] - elseif ForcastHour==1 - rain(ForcastHour+1,:,:) = HRRR{'Total_precipitation_surface_1_Hour_Accumulation'}(1,:,:); %Surface precipitation [kg/m^2] - else - rain(ForcastHour+1,:,:) = HRRR{'Total_precipitation_surface_Mixed_intervals_Accumulation'}(2,:,:); %Surface precipitation [kg/m^2] - end - temperature(ForcastHour+1) = squeeze(nanmean(nanmean(HRRR{'Temperature_surface'}(:,:,:)- 273.15,2),3)); %Surface Temperature [C] + rain(ForcastHour+1,:,:) =ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'APCP_surface');%Surface precipitation [kg/m^2] + temperature(ForcastHour+1) = squeeze(nanmean(nanmean(ncread(['D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.regrid.nc'],'TMP_surface')- 273.15, 1), 2)); %Surface Temperature [C] end % Extract Temp @@ -698,6 +790,8 @@ try vDatNavDInter(vDatOrder) = naninterp(interp1(... linspace(1,length(vDatOrder),length(vDatOrderOld)),... vDatNavD(vDatOrderOld),1:length(vDatOrder))); + disp(size(waterLevels)) + disp(size(masterTime:hours(1):masterTime+hours(48))) for i = 1:length(idxNCOM) wlO(:,i) = interp1(masterTime:hours(1):masterTime+hours(48),waterLevels(:,i)+0,masterTime:minutes(10):masterTime+hours(48),'pchip'); end @@ -1740,14 +1834,21 @@ try for e = [1 4] try - clear meshX meshY - m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); - ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... - datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(0,'%03d') '.grib']); +% clear meshX meshY +% m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); +% ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... +% datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(0,'%03d') '.grib']); - [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); - [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); - clear meshX meshY +% [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); +% [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); + + latESTOFS = ncread(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(0,'%03d') '.nc'],'latitude'); + lonESTOFS = wrapTo180(ncread(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(0,'%03d') '.nc'],'longitude')); + + +% clear meshX meshY ESTOFS_Val{e} = 1; catch ESTOFS_Val{e} = 0; @@ -1764,11 +1865,17 @@ try [estofIDX] = NearestValue(wlDeg,lonESTOFS,latESTOFS); %Lat for i = 1:ESTOFSrunLength(e)+1 - ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... - datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(i-1,'%03d') '.grib']); +% ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... +% datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(i-1,'%03d') '.grib']); - waterLevelsESTOFS{e}(i,Stat) = squeeze(ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(1,estofIDX(1),estofIDX(2))); +% waterLevelsESTOFS{e}(i,Stat) = squeeze(ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(1,estofIDX(1),estofIDX(2))); +% + waterLevelsESTOFS{e}(i,Stat) = squeeze(ncread(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(i-1,'%03d') '.nc'],... + 'ELEV_surface',[estofIDX(1),estofIDX(2),1], [1, 1, 1])); + end + waterLevelsESTOFSINTER{e}(:,Stat) = interp1(masterTime-hours(ESTOFStimeOffset(e)):minutes(60):masterTime+hours(48),... waterLevelsESTOFS{e}(:,Stat),masterTime-hours(ESTOFStimeOffset(e)):minutes(15):masterTime+hours(48),'spline'); end @@ -1778,6 +1885,10 @@ try end end + % Remove ESTOFS Netcdf files older than a week + system('ForFiles /p "D:\DUNEX_RT\Archive\ESTOFS" /s /d -7 /c "cmd /c del /q @file"') + + %% Validation import WL % Duck @@ -1849,18 +1960,35 @@ try % [hohonuBase num2str(hohonuStation(Stat)) '/statistic/?cleaned=false&format=json&from='... % datestr(dateStartM,'yyyy-mm-dd') '+00%3A00&to=' datestr(dateEndM,'yyyy-mm-dd')... % '+23%3A59']); - websave(fname,... - [hohonuBase num2str(hohonuStation(Stat)) '/statistic/?datum=NAVD&from='... - datestr(dateStartM,'yyyy-mm-dd') '%' datestr(dateStartM,'HHMM:SS') '&to='... - datestr(dateEndM,'yyyy-mm-dd') '%' datestr(dateEndM,'HHMM:SS')... - '&cleaned=false&format=json&station_type=Hohonu&tz=000000'], options); + % Try catch for 429 errpr + try + websave(fname,... + [hohonuBase num2str(hohonuStation(Stat)) '/statistic/?datum=NAVD&from='... + datestr(dateStartM,'yyyy-mm-dd') '%20' datestr(dateStartM,'HH:MM') '&to='... + datestr(dateEndM,'yyyy-mm-dd') '%20' datestr(dateEndM,'HH:MM')... + '&cleaned=False&format=json&station_type=Hohonu&tz=000000'], options); + catch + statWL(:,Stat) = 0; + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'Hohonu Error\n'); + + % close file + fclose(fid) + continue + end fid = fopen(fname); raw = fread(fid,inf); str = char(raw'); fclose(fid); - hohonuIN = jsondecode(str); + hohonuLOAD = jsondecode(str); + + % save data where not nan + hohonuIN.data{1} = hohonuLOAD.data{1}(~isnan(hohonuLOAD.data{2})); + hohonuIN.data{2} = hohonuLOAD.data{2}(~isnan(hohonuLOAD.data{2})); % Filter out data more than 1 standard deviation % hmean = mean((hohonuDatums(Stat) - hohonuIN.data{2}) * 0.001); @@ -1874,20 +2002,31 @@ try hohonuFilt1 = abs((hohonuIN.data{2} * 0.3048))>(abs(hmean)+hstd*1.5); % Sharp jump filter- if a jump is greater than 10x the average - % jump - hohonuFilt2 = [0;abs(diff(hohonuIN.data{2} * 0.3048))>... - (mean(diff(hohonuIN.data{2} * 0.3048),'omitnan')*10)]; - + % jump or greater than 0.1 m Plus before and after points + hohonuFilt2A = [0;abs(diff(hohonuIN.data{2} * 0.3048))>... + min(abs(mean(diff(hohonuIN.data{2} * 0.3048),'omitnan')*10),0.1)]; + hohonuFilt2B = [0; hohonuFilt2A(1:end-1)]; + hohonuFilt2C = [hohonuFilt2A(2:end); 0]; + hohonuFilt2 = hohonuFilt2A | hohonuFilt2B | hohonuFilt2C; + dateStartMtz = datetime(dateStartM,'TimeZone','UTC'); dateEndMtz = datetime(dateEndM,'TimeZone','UTC'); % statWL(:,Stat) = interp1(... % datetime(hohonuIN.data{1}(~hohonuFilt),'InputFormat','yyyy-MM-dd''T''HH:mm:SSZ','TimeZone','UTC'),... % (hohonuDatums(Stat) - hohonuIN.data{2}(~hohonuFilt)) * 0.001,dateStartMtz:minutes(15):dateEndMtz); - statWL(:,Stat) = interp1(... - datetime(hohonuIN.data{1}(~hohonuFilt1 & hohonuFilt2),'InputFormat','yyyy-MM-dd''T''HH:mm:SSZ','TimeZone','UTC'),... - hohonuIN.data{2}(~hohonuFilt1 & hohonuFilt2) * 0.3048,dateStartMtz:minutes(15):dateEndMtz); - + + % Skip if no data or if more than 33% of the points are + % filtered + if isempty(hohonuIN.data{2}) ||... + isempty(hohonuIN.data{2}(~hohonuFilt1 & ~hohonuFilt2) * 0.3048) ||... + sum(~hohonuFilt1 & ~hohonuFilt2) < length(hohonuFilt2)/3 + statWL(:,Stat) = 0; + else + statWL(:,Stat) = interp1(... + datetime(hohonuIN.data{1}(~hohonuFilt1 & ~hohonuFilt2),'InputFormat','yyyy-MM-dd''T''HH:mm:SSZ','TimeZone','UTC'),... + hohonuIN.data{2}(~hohonuFilt1 & ~hohonuFilt2) * 0.3048,dateStartMtz:minutes(15):dateEndMtz); + end catch err %open file fid = fopen('errorFile.log','a+'); @@ -2260,7 +2399,7 @@ try modelwlPlot(1:213,locLine(Loc)+4) = num2cell(statWL(:,Loc)); end elseif Loc>=17 % Hohonu starts at 17 - if isnan(statWL(1,Loc-12)) %-12 to get to Hohonu IDX + if all(isnan(statWL(:,Loc-12))) %-12 to get to Hohonu IDX modelwlPlot(1:385,locLine(Loc)+4) = num2cell(zeros(385,1)); else modelwlPlot(1:213,locLine(Loc)+4) = num2cell(statWL(:,Loc-12)); @@ -2424,7 +2563,7 @@ catch err end %% -quit +% quit diff --git a/Dunex_Operational_Feb28_June1_Backup.m b/Dunex_Operational_Feb28_June1_Backup.m new file mode 100644 index 0000000..60cad13 --- /dev/null +++ b/Dunex_Operational_Feb28_June1_Backup.m @@ -0,0 +1,2443 @@ +%% NC DUNEX Realtime script +% Alexander Rey, August 12, 2019 +% Moved to COASTLINES Feb 29, 2020 + +clear all +cd D:\DUNEX_RT\Operation +echo off; +% addpath('NCtoolbox') +addpath('m_map') +% setup_nctoolbox +flowGrid = load('Cone7W_100.mat'); +waveGrid = load('Cone7W_250.mat'); +load('LMSL_RT.mat') +addpath('D:\DUNEX_RT\Operation\abogaard-matlab2gsheets-6d76271') +setenv('PATH', [getenv('PATH') ';D:\DUNEX_RT\Windows_64']); + +%% Details for e-mail server +setpref('Internet','SMTP_Server','smtp.sendgrid.net'); +setpref('Internet','E_mail','mail@alexanderrey.ca'); +setpref('Internet','SMTP_Username','apikey'); +setpref('Internet','SMTP_Password','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'); +props = java.lang.System.getProperties; +props.setProperty('mail.smtp.auth','true'); +props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory'); +props.setProperty('mail.smtp.socketFactory.port','465'); +props.setProperty('mail.smtp.starttls.enable','true'); + + +%% Master Model Time Step +% Every 6 hours + +nistTime = datetime(datevec(now())) - tzoffset(datetime(datevec(now()),'TimeZone','local')); +masterTime = dateshift(nistTime,'start','hour')-hours(2) % Assume script will run at 5 and a half hours after model start +clear nistTime +masterDate = datetime(year(masterTime),month(masterTime),day(masterTime)); + +if exist(['tri-rst.rt_run.' datestr(masterTime,'yyyymmdd.HH') '0000'])==2 + FIRST_RUN = 0; +else + FIRST_RUN = 1; +end + +%% Import +try + Import=0; + + + %% Clean files from previous run + system('taskkill /IM "d_hydro.exe" /F') + system('taskkill /IM "wave.exe" /F') + + delete com-* + delete hot* + delete rt_run.prt* + delete tri-diag.* + delete TMP_* + + delete trim-* + delete wavm-* + delete trih-* + delete obs.loct00* + delete WNDNOW + delete swan.inp + delete PRINT* + delete hot* + delete SWANOUT* + delete Errfile* + delete WAVE2FLOW* + delete FLOW2WAVE* + + clear HRRR_UTM + while Import==0 + try + %% Import data from NOMADS + %% Extratropical Surge and Tide Operational Forecast System for the Atlantic + % (ESTOFS Atlantic) for water levels + options = weboptions; + options.Timeout = 90; + try +% url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... +% datestr(masterTime-hours(6),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; + + url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... + datestr(masterTime-hours(6),'yyyymmdd')... + '/estofs.t' datestr(masterTime-hours(6),'hh') 'z.conus.east.f000.grib2']; + + websave('ESTOFS.grib',url,options) + ESTOFS = ncgeodataset('ESTOFS.grib'); + + m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); + [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); + [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); + clear meshX meshY + ESTstart = 6; %7 + ESTrun = 6; + catch + % url = ['http://nomads.ncep.noaa.gov/dods/estofs_atl/'... + % datestr(masterTime-days(1),'yyyymmdd')... + % '/estofs_atl_conus_' datestr(masterTime-days(1),'hh') 'z']; + % ESTOFS = ncgeodataset(url); + % lonESTOFS=ESTOFS{'lon'}(:); + % latESTOFS=ESTOFS{'lat'}(:); + % ESTstart = 24+ESTstart; +% url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... +% datestr(masterTime-days(1),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-days(1),'hh') 'z.conus.east.f000.grib2']; + url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... + datestr(masterTime-days(1),'yyyymmdd')... + '/estofs.t' datestr(masterTime-days(1),'hh') 'z.conus.east.f000.grib2']; + + websave('ESTOFS.grib',url,options) + ESTOFS = ncgeodataset('ESTOFS.grib'); + + m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); + [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); + [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); + clear meshX meshY + ESTstart = 24; %25 + ESTrun = 24; + end + + + clear url + + % Find ESTOFS index for grid points along boundry + idxCount=1; + for i = 2:10:length(flowGrid.data.Y)-1 % Every 5 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(1081,i),flowGrid.data.Y(1081,i),'18 S'); + [idxESTOFS(idxCount,:)] = ... + NearestValue([gridDeg(idxCount,:)],latESTOFS,lonESTOFS); %Lat + wlIDX(idxCount,:) = [1082,i]; + + idxCount = idxCount + 1; + end + + wlBoundCount(1) = 0; + wlBoundCount(2) = idxCount -1; + + + for i = 750:11:1080 % Every 5 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(i,1321),flowGrid.data.Y(i,1321),'18 S'); + % [idxESTOFS(idxCount,1)] = NearestValue(gridDeg(idxCount,1),latESTOFS); %Lat + % [idxESTOFS(idxCount,2)] = NearestValue(gridDeg(idxCount,2),lonESTOFS); %Lon + [idxESTOFS(idxCount,:)] = ... + NearestValue([gridDeg(idxCount,:)],latESTOFS,lonESTOFS); + wlIDX(idxCount,:) = [i,1322]; + idxCount = idxCount + 1; + end + + wlBoundCount(3) = idxCount -1; + + for i = 475:5:1080 % Every 5 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(i,1),flowGrid.data.Y(i,1),'18 S'); + % [idxESTOFS(idxCount,1)] = NearestValue(gridDeg(idxCount,1),latESTOFS); %Lat + % [idxESTOFS(idxCount,2)] = NearestValue(gridDeg(idxCount,2),lonESTOFS); %Lon + [idxESTOFS(idxCount,:)] = ... + NearestValue([gridDeg(idxCount,:)],latESTOFS,lonESTOFS); + wlIDX(idxCount,:) = [i,1]; + idxCount = idxCount + 1; + end + wlBoundCount(4) = idxCount -1; + + clear idxCount gridDeg + + % Extract ESTOFS Water Levels for 36 hours at indexes + % waterLevelsGRID = ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(ESTstart:ESTstart+36,min(idxESTOFS(:,1)):max(idxESTOFS(:,1)),... + % min(idxESTOFS(:,2)):max(idxESTOFS(:,2))); % Extract small grid + + % Find ESTOFS values from small grid + idxCount=1; + errorET = 0; + for i = ESTstart:ESTstart+96 + if errorET<10 + try +% url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... +% datestr(masterTime-hours(ESTrun),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.conus.east.f'... +% num2str(i,'%03d') '.grib2']; + + url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... + datestr(masterTime-hours(ESTrun),'yyyymmdd')... + '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.conus.east.f'... + num2str(i,'%03d') '.grib2']; + websave(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime,'YYYY-mm-DD_HH') '_f' num2str(idxCount-1,'%03d') '.grib'],url,options) + + if i<=ESTstart+48 + ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime,'YYYY-mm-DD_HH') '_f' num2str(idxCount-1,'%03d') '.grib']); + + waterLevelsGRID(idxCount,:,:) = ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(1,min(idxESTOFS(:,1)):max(idxESTOFS(:,1)),... + min(idxESTOFS(:,2)):max(idxESTOFS(:,2))); % Extract small grid + end + idxCount = idxCount + 1; + catch + errorET = errorET+1; + end + else + error('ESTOFS ERROR') + end + + end + + idxCount=1; + for i = 1:length(idxESTOFS) + waterLevels(:,idxCount) = waterLevelsGRID(:,idxESTOFS(idxCount,1)-min(idxESTOFS(:,1))+1,... + idxESTOFS(idxCount,2)-min(idxESTOFS(:,2))+1); + + idxCount = idxCount + 1; + end + + + % Save ESTOFS Points +% url = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/estofs/prod/estofs.'... +% datestr(masterTime-hours(ESTrun),'yyyymmdd')... +% '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.points.cwl.nc']; + url = ['https://noaa-gestofs-pds.s3.amazonaws.com/estofs.'... + datestr(masterTime-hours(ESTrun),'yyyymmdd')... + '/estofs.t' datestr(masterTime-hours(ESTrun),'hh') 'z.points.cwl.nc']; + + websave(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime,'YYYY-mm-DD_HH') '_points.nc'],url,options) + % fprintf(fileID,[boundryNames{Boundry} ' N T 750 1322 1081 1322 0.0000000e+000\n']); + % fprintf(fileID,[boundryNames{Boundry} ' N T 475 1 1081 1 0.0000000e+000\n']); + + clear idxCount + + disp('Loaded ESTOFS') + %% Multi-grid Wave model (WAVEWATCH III) + % 4 arc minute US East Coast grid for waves + + url = ['https://nomads.ncep.noaa.gov/dods/wave/gfswave/'... + datestr(masterTime-hours(6),'yyyymmdd')... + '/gfswave.atlocn.0p16_' datestr(masterTime-hours(6),'hh') 'z']; + + MWW3 = ncgeodataset(url); + clear url + + lonMWW3=wrapTo180(MWW3{'lon'}(:)); + latMWW3=MWW3{'lat'}(:); + + % Find MWW3 index for grid points along boundry + idxCount=1; + for i = 1:25:length(waveGrid.data.Y)-25 % Every ~200 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(waveGrid.data.X(end-2,i),waveGrid.data.Y(end-2,i),'18 S'); + waveDistAlong(idxCount) = sum(sqrt(diff(waveGrid.data.X(end-2,1:i)).^2+... + diff(waveGrid.data.Y(end-2,1:i)).^2)); + + waveUTM(idxCount,1) = waveGrid.data.X(end-2,i); + waveUTM(idxCount,2) = waveGrid.data.Y(end-2,i); + + [idxMWW3(idxCount,1)] = NearestValue(gridDeg(idxCount,1),latMWW3); %Lat + [idxMWW3(idxCount,2)] = NearestValue(gridDeg(idxCount,2),lonMWW3); %Lon + + idxCount = idxCount + 1; + end + waveBoundCount(1) = 0; + waveBoundCount(2) = idxCount -1; + + for i = size(waveGrid.data.X,1)-25:-25:350% Every ~200 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(waveGrid.data.X(i,end-2),waveGrid.data.Y(i,end-2),'18 S'); + waveDistAlong(idxCount) = sum(sqrt(diff(waveGrid.data.X(i:end-2,end-2)).^2+... + diff(waveGrid.data.Y(i:end-2,end-2)).^2)); + + waveUTM(idxCount,1) = waveGrid.data.X(i,end-2); + waveUTM(idxCount,2) = waveGrid.data.Y(i,end-2); + + [idxMWW3(idxCount,1)] = NearestValue(gridDeg(idxCount,1),latMWW3); %Lat + [idxMWW3(idxCount,2)] = NearestValue(gridDeg(idxCount,2),lonMWW3); %Lon + + idxCount = idxCount + 1; + end + % 0 132 163 285 + + waveBoundCount(3) = idxCount -1; + + for i = size(waveGrid.data.X,1)-25:-25:240 % Every ~200 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(waveGrid.data.X(i,2),waveGrid.data.Y(i,2),'18 S'); + waveDistAlong(idxCount) = sum(sqrt(diff(waveGrid.data.X(i:end-2,1)).^2+... + diff(waveGrid.data.Y(i:end-2,1)).^2)); + + waveUTM(idxCount,1) = waveGrid.data.X(i,2); + waveUTM(idxCount,2) = waveGrid.data.Y(i,2); + + [idxMWW3(idxCount,1)] = NearestValue(gridDeg(idxCount,1),latMWW3); %Lat + [idxMWW3(idxCount,2)] = NearestValue(gridDeg(idxCount,2),lonMWW3); %Lon + + idxCount = idxCount + 1; + end + + waveBoundCount(4) = idxCount -1; + + clear idxCount + + % Extract WW3 Hs for 36 hours at indexes + wavesGRID_Hs = MWW3{'htsgwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... + min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid htsgwsfc + %swell_1 + % Period + wavesGRID_P = MWW3{'perpwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... % + min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid perpwsfc + %swper_1 + % Direction + wavesGRID_Dir = MWW3{'dirpwsfc'}(7:23,min(idxMWW3(:,1)):max(idxMWW3(:,1)),... + min(idxMWW3(:,2)):max(idxMWW3(:,2))); % Extract small grid dirpwsfc + %swdir_1 + % Find WW3 values from small grid + idxCount=1; + for i = 1:length(idxMWW3) + waves(:,idxCount,1) = wavesGRID_Hs(:,idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,... + idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1); %Hs + + waves(:,idxCount,2) = wavesGRID_P(:,idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,... + idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1); %Tp + + waves(:,idxCount,3) = wavesGRID_Dir(:,idxMWW3(idxCount,1)-min(idxMWW3(:,1))+1,... + idxMWW3(idxCount,2)-min(idxMWW3(:,2))+1); %Dir + + idxCount = idxCount + 1; + end + clear idxCount + disp('Loaded WW3') + + + %% HRRR (High-Resolution Rapid Refresh) + % Wind Speeds, Directions, Pressures, Precipitations + % url = ['http://nomads.ncep.noaa.gov/dods/hrrr/hrrr'... + % datestr(masterTime,'yyyymmdd')... + % '/hrrr_sfc.t' datestr(masterTime,'hh') 'z']; +% delete(gcp('nocreate')) +% parpool(8); + + for ForcastHour = 0:48 + % url = ['http://nomads.ncep.noaa.gov/pub/data/nccf/com/hrrr/prod/'... + % 'hrrr.' datestr(masterTime,'yyyymmdd')... + % '/conus/hrrr.t' num2str(hour(masterTime),'%02d') 'z.'... + % 'wrfsfcf' num2str(ForcastHour,'%02d') '.grib2']; + + url = ['https://nomads.ncep.noaa.gov/cgi-bin/filter_hrrr_2d.pl?file=hrrr.'... + 't' num2str(hour(masterTime),'%02d') 'z.wrfsfc'... + 'f' num2str(ForcastHour,'%02d') '.grib2&'... + 'lev_10_m_above_ground=on&lev_surface=on&var_APCP=on&var_PRES=on&var_UGRD=on&var_VGRD=on&var_TMP=on&subregion=&leftlon=-78&rightlon=-74&toplat=38&bottomlat=32.5&dir=%2F'... + 'hrrr.' datestr(masterTime,'yyyymmdd') '%2Fconus']; + + websave(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2'],url,options) + + [pCheck,gridParams] = system(['perl "D:\DUNEX_RT\Windows_64\grid_defn.pl" '... + 'D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2']); + [wCheck,gridParams] = system(['wgrib2 D:\DUNEX_RT\Operation\HRRR\hrrrT' ... + num2str(ForcastHour,'%02d') '.grib2 -new_grid_winds earth -new_grid ' ... + gridParams ' D:\DUNEX_RT\Operation\HRRR\hrrrT'... + num2str(ForcastHour,'%02d') '.grib2.regrid']); + end +% delete(gcp('nocreate')) + + HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(0,'%02d') '.grib2.regrid']); + clear url + + m_proj('lambert conformal conic','ori',[262.5 38.5],'clo',262.5,'par',[38.5 38.5],'ell','sphere');%,'lat',[20 55],'lon',[-60 -130] + [meshX,meshY] = meshgrid(HRRR{'x'}(:),HRRR{'y'}(:)); + [windGridLON,windGridLAT] = m_xy2ll(meshX.*1000,meshY.*1000); + windGridLON=wrapTo180(windGridLON); + clear meshX meshY + + % Extract MWW3 Hs for 48 hours at indexes + for ForcastHour = 0:48 + + HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2.regrid']); + windU(ForcastHour+1,:,:) = HRRR{'u-component_of_wind_height_above_ground'}(:,:,:); %U Winds @ 10m [m/s] + windV(ForcastHour+1,:,:) = HRRR{'v-component_of_wind_height_above_ground'}(:,:,:); %V Winds @ 10m [m/s] + + HRRR = ncgeodataset(['D:\DUNEX_RT\Operation\HRRR\hrrrT' num2str(ForcastHour,'%02d') '.grib2']); + pressure(ForcastHour+1,:,:) = HRRR{'Pressure_surface'}(:,:,:); %Surface Pressure [pa] + + if ForcastHour==0 + rain(ForcastHour+1,:,:) = HRRR{'Total_precipitation_surface_0_Hour_Accumulation'}(1,:,:); %Surface precipitation [kg/m^2] + elseif ForcastHour==1 + rain(ForcastHour+1,:,:) = HRRR{'Total_precipitation_surface_1_Hour_Accumulation'}(1,:,:); %Surface precipitation [kg/m^2] + else + rain(ForcastHour+1,:,:) = HRRR{'Total_precipitation_surface_Mixed_intervals_Accumulation'}(2,:,:); %Surface precipitation [kg/m^2] + end + temperature(ForcastHour+1) = squeeze(nanmean(nanmean(HRRR{'Temperature_surface'}(:,:,:)- 273.15,2),3)); %Surface Temperature [C] + end + % Extract Temp + + disp('Loaded HRRR') + + + %% IMPORT NCOM + + try + nComDate=masterDate; +% ncomeURL = ['http://nomads.ncep.noaa.gov:80/dods/ncom/ncom' datestr(nComDate,'YYYYmmDD') '/ncom_useast_']; +% ncomeURL = ['https://www.ncei.noaa.gov/thredds-coastal/dodsC/us_east/us_east_20201218_to_current/20201220/coamps_ncom_useast_u_1_2020122000_00000000.nc']; +% ncomeURL = ['https://www.ncei.noaa.gov/thredds-coastal/dodsC/us_east/us_east_20201218_to_current/' datestr(nComDate,'YYYYmmDD')... +% '/coamps_ncom_useast_u_1_']; + +% mget(ncom_ftp,['grids/operational/NCOM/regional/GRIB2/ncom_useast_' datestr(nComDate,'YYYYmmDD') '00.grb2'],['D:\DUNEX_RT\Operation\NCOM\']); + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0025-0048.tgz']; + + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0049-0072.tgz']; + if exist(ncom_downloadPath) ~= 2 + mkdir(['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0025-0048.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0000-0024.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0000-0024.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0049-0072.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0049-0072.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0073-0096.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0073-0096.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + end + + if exist(['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate-days(2),'YYYYmmDD')]) == 7 + rmdir(['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate-days(2),'YYYYmmDD')], 's') + end + ncom_filePath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\coamps_ncom_useast_u_1_' datestr(nComDate,'YYYYmmDD') '00_00']; + % NCOM.Lat = ncread([ncomeURL datestr(nComDate,'YYYYmmDD')],'lat',[331],[240]); + % NCOM.Lat = ncread([ncomeURL datestr(nComDate,'YYYYmmDD') '00_00000000.nc'],'lat',[331],[240]); + NCOM.Lat = ncread([ncom_filePath '48' '0000.nc'],'lat',[331],[240]); + NCOM.Lon = ncread([ncom_filePath '48' '0000.nc'],'lon',91,180); + % NCOM.Lat = ncom_grib{'lat',[331],[240]}; + % NCOM.Lon = ncom_grib{'lon',91,180}; + catch + try + if hour(masterTime) ~= 18 + nComDate=masterDate-days(1); + else + nComDate=masterDate; + end +% ncomeURL = ['http://nomads.ncep.noaa.gov:80/dods/ncom/ncom' datestr(nComDate,'YYYYmmDD') '/ncom_useast_']; +% ncomeURL = ['https://www.ncei.noaa.gov/thredds-coastal/dodsC/us_east/us_east_20201218_to_current/' datestr(nComDate,'YYYYmmDD')... +% '/coamps_ncom_useast_u_1_']; +% mget(ncom_ftp,['grids/operational/NCOM/regional/GRIB2/ncom_useast_' datestr(nComDate,'YYYYmmDD') '00.grb2'],['D:\DUNEX_RT\Operation\NCOM\']); +% ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\grids\operational\NCOM\regional\GRIB2\ncom_useast_' datestr(nComDate,'YYYYmmDD') '00.grb2']; +% ncom_grib = ncgeodataset(ncom_downloadPath); + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0049-0072.tgz']; + if exist(ncom_downloadPath) ~= 2 + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0025-0048.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '00.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0000-0024.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0000-0024.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0049-0072.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0049-0072.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + ncomURL = ['https://nomads.ncep.noaa.gov/pub/data/nccf/com/ncom/prod/ncom.' datestr(nComDate,'YYYYmmDD') '/' 'useast_u_ocn_ncout_grid1_'... + datestr(nComDate,'YYYYmmDD') '00_t0073-0096.tgz']; + ncom_downloadPath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\ncom_useast_' datestr(nComDate,'YYYYmmDD') '0073-0096.tgz']; + websave(ncom_downloadPath,ncomURL,options) + untar(ncom_downloadPath,['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD')]) + + end + + if exist(['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate-days(2),'YYYYmmDD')]) == 7 + rmdir(['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate-days(2),'YYYYmmDD')], 's') + end + ncom_filePath = ['D:\DUNEX_RT\Operation\NCOM\' datestr(masterDate,'YYYYmmDD') '\coamps_ncom_useast_u_1_' datestr(nComDate,'YYYYmmDD') '00_00']; +% NCOM.Lat = ncread([ncomeURL datestr(nComDate,'YYYYmmDD')],'lat',[331],[240]); +% NCOM.Lat = ncread([ncomeURL datestr(nComDate,'YYYYmmDD') '00_00000000.nc'],'lat',[331],[240]); + NCOM.Lat = ncread([ncom_filePath '48' '0000.nc'],'lat',[331],[240]); + NCOM.Lon = ncread([ncom_filePath '48' '0000.nc'],'lon',91,180); +% NCOM.Lat = ncom_grib{'lat',[331],[240]}; +% NCOM.Lon = ncom_grib{'lon',91,180}; + + catch + load(['ModelOut_03-Mar-2020_18Z'],'NCOM'); + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'%s : %s\n',datestr(masterTime),'NCOM Fallback'); + sendmail('alexander.rey@queensu.ca',[datestr(masterTime) ': NCOM Fallback']) ; + + % close file + fclose(fid) + end + end + + if FIRST_RUN == 1 + NCOM.depth = ncread('D:\Alexander\NCOM\2019090500_t000.nc','depth'); + end + + Noffset = hours(masterTime - nComDate); + tStep = Noffset; + tCount = 1; + + try + for Ni = masterTime:hours(3):masterTime+hours(48) + noData=1; + while noData==1 + try +% NCOMstep = tStep./3+1; + NCOMstep = 1; + +% NCOM.water_u(:,:,:,tCount) = ncread([ncomeURL datestr(masterDate,'YYYYmmDD')],... +% 'water_u',[NCOMstep 1 331 91],[1 40 240 180],[1 1 1 1]); +% NCOM.water_u(:,:,:,tCount) = ncread([ncomeURL datestr(nComDate,'YYYYmmDD') '00_00' num2str(tStep) '0000.nc'],... +% 'water_u',[91 331 1 NCOMstep],[180 240 inf 1],[1 1 1 1]); +% NCOM.water_v(:,:,:,tCount) = ncread([ncomeURL datestr(nComDate,'YYYYmmDD') '00_00' num2str(tStep) '0000.nc'],... +% 'water_v',[91 331 1 NCOMstep],[180 240 inf 1],[1 1 1 1]); +% NCOM.surf_el(:,:,tCount) = ncread([ncomeURL datestr(nComDate,'YYYYmmDD') '00_00' num2str(tStep) '0000.nc'],... +% 'surf_el',[91 331 NCOMstep],[180 240 1],[1 1 1]); +% NCOM.salinity(:,:,:,tCount) = ncread([ncomeURL datestr(nComDate,'YYYYmmDD') '00_00' num2str(tStep) '0000.nc'],... +% 'salinity',[91 331 1 NCOMstep],[180 240 inf 1],[1 1 1 1]); + NCOM.water_u(:,:,:,tCount) = ncread([ncom_filePath num2str(tStep,'%02d') '0000.nc'],... + 'water_u',[91 331 1 1],[180 240 inf 1],[1 1 1 1]); + NCOM.water_v(:,:,:,tCount) = ncread([ncom_filePath num2str(tStep,'%02d') '0000.nc'],... + 'water_v',[91 331 1 1],[180 240 inf 1],[1 1 1 1]); + NCOM.surf_el(:,:,tCount) = ncread([ncom_filePath num2str(tStep,'%02d') '0000.nc'],... + 'surf_el',[91 331 1],[180 240 1],[1 1 1]); + NCOM.salinity(:,:,:,tCount) =ncread([ncom_filePath num2str(tStep,'%02d') '0000.nc'],... + 'salinity',[91 331 1 1],[180 240 inf 1],[1 1 1 1]); + + if (squeeze(NCOM.water_v(100,100,1,end))==0|squeeze(NCOM.water_u(100,100,1,end))==0|squeeze(NCOM.surf_el(100,100,end))==0|squeeze(NCOM.salinity(100,100,1,end))==0)==1 + noData=1; + else + noData=0; + end + catch + noData=1; + end + disp(Ni) + end + NCOM.time(tCount) = Ni; + tStep=tStep+3; + tCount = tCount+1; + end + catch + load(['ModelOut_03-Mar-2020_18Z'],'NCOM'); + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'%s : %s\n',datestr(masterTime),'NCOM Fallback'); + sendmail('alexander.rey@queensu.ca',[datestr(masterTime) ': NCOM Fallback']) ; + + % close file + fclose(fid) + end + + + + %% NCOM Process + NCOM.mag = vecmag(NCOM.water_u,NCOM.water_v); + + if FIRST_RUN == 1 + depthWeight = [diff(NCOM.depth)' 0]; + + for Layer = 1:40 + DAVfac(:,:,Layer,:) = ones(180,240,1,17).*depthWeight(Layer); + end + DAVtrue = DAVfac; + N_depth = NCOM.depth; + save('NCOMstuff.mat','DAVtrue','DAVfac','N_depth') + else + load('NCOMstuff.mat') + NCOM.depth = N_depth; + clear N_depth; + end + DAVtrue(isnan(NCOM.mag(:,:,1:40,:))==1) = 0; + DAVfac(isnan(NCOM.mag(:,:,1:40,:))==1) = nan; + DAVFac2 = sum(DAVtrue,3); + clear DAVtrue + NCOM.dav = nansum(DAVfac.*NCOM.mag(:,:,1:40,:),3)./DAVFac2; + NCOM.davX = nansum(DAVfac.*NCOM.water_u(:,:,1:40,:),3)./DAVFac2; + NCOM.davY = nansum(DAVfac.*NCOM.water_v(:,:,1:40,:),3)./DAVFac2; + + Import=1 + catch err + + clear waterLevels + + %open file + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'Line %d on %s : %s\n',err.stack.line,datestr(masterTime),err.message); + sendmail('alexander.rey@queensu.ca',['DUNEX-RT: ' datestr(masterTime) err.message]) ; + + % close file + fclose(fid) + disp('FAILED TO IMPORT FROM NOMADS') + pause(600) + end + end + + + load('shoreline.mat'); + + %% Format data for Delft3D + %% Evap + fileID=fopen('TemperatureRT.eva','w'); + refTime=minutes(masterTime-masterDate); + records=49; + for i = 1 : records + fprintf(fileID,'%d. 0. 0. %2.2f\n',refTime,temperature(i)); + + refTime = refTime + 60;% 1 hour time steps for temperature + end + + fclose(fileID); + + %% NCOM ESTOFS + % Currents from NCOM + + idxCount=1; + for i = 2:10:length(flowGrid.data.Y)-1 % Every 5 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(1081,i),flowGrid.data.Y(1081,i),'18 S'); + % [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(2161,i),flowGrid.data.Y(2161,i),'18 S'); + + [idxNCOM(idxCount,1)] = NearestValue(gridDeg(idxCount,1),NCOM.Lat); %Lat + [idxNCOM(idxCount,2)] = NearestValue(gridDeg(idxCount,2),wrapTo180(NCOM.Lon)); %Lon + crIDX(idxCount,:) = [1081,i]; + % crIDX(idxCount,:) = [2161,i]; + + idxCount = idxCount + 1; + end + + crBoundCount(1) = 0; + crBoundCount(2) = idxCount -1; + + for i = 750:11:1080 % Every 5 km + % for i = round(linspace(1488,2161,14)) % Every 5 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(i,1321),flowGrid.data.Y(i,1321),'18 S'); + % [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(i,2641),flowGrid.data.Y(i,2641),'18 S'); + + [idxNCOM(idxCount,1)] = NearestValue(gridDeg(idxCount,1),NCOM.Lat); %Lat + [idxNCOM(idxCount,2)] = NearestValue(gridDeg(idxCount,2),wrapTo180(NCOM.Lon)); %Lon + crIDX(idxCount,:) = [i,1320]; + % crIDX(idxCount,:) = [i,2641]; + + idxCount = idxCount + 1; + end + crBoundCount(3) = idxCount -1; + + for i = 475:5:1080 % Every 5 km + % for i = round(linspace(910,2161,26)) % Every 5 km + [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(i,1),flowGrid.data.Y(i,1),'18 S'); + % [gridDeg(idxCount,1),gridDeg(idxCount,2)] = utm2deg(flowGrid.data.X(i,1),flowGrid.data.Y(i,1),'18 S'); + + [idxNCOM(idxCount,1)] = NearestValue(gridDeg(idxCount,1),NCOM.Lat); %Lat + [idxNCOM(idxCount,2)] = NearestValue(gridDeg(idxCount,2),wrapTo180(NCOM.Lon)); %Lon + crIDX(idxCount,:) = [i,1]; + % crIDX(idxCount,:) = [i,1]; + + idxCount = idxCount + 1; + end + crBoundCount(4) = idxCount -1; + + + clear idxCount + + %% Interpolate Water Level + % for tStep = 1:length(tideOutN) + % wlO(tStep,1:crBoundCount(2)) = linspace(tideOutS(tStep),tideOutN(tStep),crBoundCount(2)); + % wlO(tStep,crBoundCount(2)+1:crBoundCount(3)) = linspace(tideOutN(tStep),tideOutN(tStep),crBoundCount(3)-crBoundCount(2)); + % wlO(tStep,crBoundCount(3)+1:crBoundCount(4)) = linspace(tideOutS(tStep),tideOutS(tStep),crBoundCount(4)-crBoundCount(3)); + % end + + vDatOrder = [crBoundCount(3)+1:1:crBoundCount(4) ... + crBoundCount(1)+1:1:crBoundCount(2) ... + crBoundCount(3):-1:crBoundCount(2)+1]; + + crBoundCountOld = [0 27 34 46]; + vDatOrderOld = [crBoundCountOld(3)+1:1:crBoundCountOld(4) ... + crBoundCountOld(1)+1:1:crBoundCountOld(2) ... + crBoundCountOld(3):-1:crBoundCountOld(2)+1]; + + vDatNavD = LMSL_RT(:,3); + vDatNavD(vDatNavD==-999999)=nan; + + % interp1(vDatNavD(vDatOrder),1:46) + vDatNavDInter(vDatOrder) = naninterp(interp1(... + linspace(1,length(vDatOrder),length(vDatOrderOld)),... + vDatNavD(vDatOrderOld),1:length(vDatOrder))); + for i = 1:length(idxNCOM) + wlO(:,i) = interp1(masterTime:hours(1):masterTime+hours(48),waterLevels(:,i)+0,masterTime:minutes(10):masterTime+hours(48),'pchip'); + end + + %% Match to grid + flowBed = load('Dec6_100Bed.mat'); + clear wlN mag DM dirGrid currents RN_1 currents_2 currents_40 currDir currDir40 + idxCount=1; + for i = 1:length(idxNCOM) + currX = squeeze(NCOM.davX(idxNCOM(idxCount,2),idxNCOM(idxCount,1),1,:)); + currY = squeeze(NCOM.davY(idxNCOM(idxCount,2),idxNCOM(idxCount,1),1,:)); + + currX40 = squeeze(NCOM.water_u(idxNCOM(idxCount,2),idxNCOM(idxCount,1),:,:)); + currY40 = squeeze(NCOM.water_v(idxNCOM(idxCount,2),idxNCOM(idxCount,1),:,:)); + + + currDir(i,:) = wrapTo360(atan2d(-currY,currX)+90); + currDir40(i,:,:) = wrapTo360(atan2d(-currY40,currX40)+90); + + xGridDir(i,:) = ([flowGrid.data.X(crIDX(idxCount,1)-2,crIDX(idxCount,2)-0) flowGrid.data.X(crIDX(idxCount,1)-1,crIDX(idxCount,2)-0)]); + yGridDir(i,:) = ([flowGrid.data.Y(crIDX(idxCount,1)-2,crIDX(idxCount,2)-0) flowGrid.data.Y(crIDX(idxCount,1)-1,crIDX(idxCount,2)-0)]); + wlN(:,idxCount) = squeeze(NCOM.surf_el(idxNCOM(idxCount,2),idxNCOM(idxCount,1),:))+vDatNavDInter(i); + mag(:,idxCount) = vecmag(currX,currY); + + % if idxCount==1 + % DM(idxCount) = -squeeze(flowBed.data.Val(crIDX(idxCount+1,1)-1,crIDX(idxCount+1,2))); + % else + DM(idxCount) = -squeeze(flowBed.data.Val(crIDX(idxCount,1)-1,crIDX(idxCount,2))); + % end + + if i>crBoundCount(2) && i<=crBoundCount(3) + dirGrid(i) = wrapTo360(atan2d(-diff(yGridDir(i,:)),diff(xGridDir(i,:)))+90); + currents(:,idxCount) = sind(dirGrid(i)-currDir(i,:))'.*vecmag(currX,currY); + RN_1(:,idxCount) = currents(:,idxCount) - wlN(:,idxCount).*sqrt(9.81./DM(idxCount)); + currents_2(:,idxCount) = currY; + + for j=1:40 + currents_40(:,j,idxCount) = squeeze(sind(dirGrid(i)-squeeze(currDir40(i,j,:))).*vecmag(currX40(j,:),currY40(j,:))'); + end + + elseif i>crBoundCount(3) + dirGrid(i) = wrapTo360(atan2d(-diff(yGridDir(i,:)),diff(xGridDir(i,:)))+90); + currents(:,idxCount) = sind(dirGrid(i)-currDir(i,:))'.*vecmag(currX,currY); + RN_1(:,idxCount) = currents(:,idxCount) + wlN(:,idxCount).*sqrt(9.81./DM(idxCount)); + currents_2(:,idxCount) = currY; + + for j=1:40 + currents_40(:,j,idxCount) = squeeze(sind(dirGrid(i)-squeeze(currDir40(i,j,:))).*vecmag(currX40(j,:),currY40(j,:))'); + end + + else + dirGrid(i) = wrapTo360(atan2d(-diff(yGridDir(i,:)),diff(xGridDir(i,:)))); + currents(:,idxCount) = -sind(dirGrid(i)-currDir(i,:))'.*vecmag(currX,currY); + % currents(:,idxCount) = sind(dirGrid(i)-0)'.*vecmag(currY); + + RN_1(:,idxCount) = -currents(:,idxCount) - wlN(:,idxCount).*sqrt(9.81./DM(idxCount)); + currents_2(:,idxCount) = currX; + + for j=1:40 + currents_40(:,j,idxCount) = squeeze(-sind(dirGrid(i)-squeeze(currDir40(i,j,:))).*vecmag(currX40(j,:),currY40(j,:))'); + end + + end + + % disp(idxCount) + idxCount = idxCount + 1; + + end + + % fprintf(fileID,[boundryNames{Boundry} ' N T 750 1322 1081 1322 0.0000000e+000\n']); + % fprintf(fileID,[boundryNames{Boundry} ' N T 475 1 1081 1 0.0000000e+000\n']); + + clear idxCount + + %% interpolate Currents + clear currentsOut + for i = 1:3 + [xIN,yIN] = meshgrid([crBoundCount(i)+1:crBoundCount(i+1)],... + datenum(NCOM.time)); + + [xOut,yOut] = meshgrid([crBoundCount(i)+1:crBoundCount(i+1)],... + datenum(masterTime:minutes(10):masterTime+hours(48))); + + + currentsOut(:,crBoundCount(i)+1:crBoundCount(i+1)) = ... + interp2(xIN,yIN,... + currents(:,crBoundCount(i)+1:crBoundCount(i+1)),... + xOut,yOut); + + currents2Out(:,crBoundCount(i)+1:crBoundCount(i+1)) = ... + interp2(xIN,yIN,... + currents_2(:,crBoundCount(i)+1:crBoundCount(i+1)),... + xOut,yOut); + + wlNOut(:,crBoundCount(i)+1:crBoundCount(i+1)) = ... + interp2(xIN,yIN,... + wlN(:,crBoundCount(i)+1:crBoundCount(i+1)),... + xOut,yOut); + + RNOut_1(:,crBoundCount(i)+1:crBoundCount(i+1)) = ... + interp2(xIN,yIN,... + RN_1(:,crBoundCount(i)+1:crBoundCount(i+1)),... + xOut,yOut); + + % for j = 1:length(idxNCOM) + % currents40Out(:,crBoundCount(i)+1:crBoundCount(i+1)) = ... + % interp2(xIN,yIN,... + % squeeze(currents_40(:,j,crBoundCount(i)+1:crBoundCount(i+1))),... + % xOut,yOut); + % end + + end + idxCount=1; + + + for i = 1:length(idxNCOM) + if i>crBoundCount(2) && i<=crBoundCount(3) + RNOut_2(:,i) = 1.0.*currentsOut(:,idxCount) - wlO(:,idxCount).*sqrt(9.81./DM(idxCount)); + % RNOut_2(:,i) = 1.0.*currentsOut(:,idxCount) - 0.*sqrt(9.81./DM(idxCount)); + + elseif i>crBoundCount(3) + if i<230 + RNOut_2(:,i) = 1.0.*currentsOut(:,idxCount) + wlO(:,idxCount).*sqrt(9.81./DM(idxCount)); +% RNOut_2(:,i) = 1.0.*currentsOut(:,idxCount) + 1.*sqrt(9.81./DM(idxCount)); + else + RNOut_2(:,i) = 0.0.*currentsOut(:,idxCount) + wlO(:,idxCount).*sqrt(9.81./DM(idxCount)); + % RNOut_2(:,i) = 1.0.*currentsOut(:,idxCount) + 0.*sqrt(9.81./DM(idxCount)); + end + else + RNOut_2(:,i) = 0.0.*currentsOut(:,idxCount) - wlO(:,idxCount).*sqrt(9.81./DM(idxCount)); + % RNOut_2(:,i) = -1.0.*currentsOut(:,idxCount) - 0.*sqrt(9.81./DM(idxCount)); + end + + + + idxCount = idxCount+1; + end + + %% R Boundry Files + records=size(RNOut_2,1); + + for i = 1:crBoundCount(4) + boundryNames(i) = {['NCOM' num2str(i)]}; + end + + % boundryTypes(1) = {'water elevation (z)'}; + boundryTypes(1:crBoundCount(4)) = {'riemann (r)'}; + boundryUnits(1:crBoundCount(4)) = {'[m/s]'}; + + fileID=fopen('NCOM_R2.bct','w'); + + for Boundry = [2:length(boundryNames)] + refTime=minutes(masterTime-masterDate); + if Boundry==1 + elseif ismember(Boundry-1,crBoundCount)==1 + continue + end + + header=[... + 'table-name ''Boundary Section : %d''\n'... + 'contents ''Uniform ''\n'... + 'location ''' boundryNames{Boundry} ' ''\n'... + 'time-function ''non-equidistant''\n'... + 'reference-time %d\n'... + 'time-unit ''minutes''\n'... + 'interpolation ''linear''\n'... + 'parameter ''time '' unit ''[min]''\n'... + 'parameter ''' boundryTypes{Boundry} ' end A'' unit ''' boundryUnits{Boundry} '''\n'... + 'parameter ''' boundryTypes{Boundry} ' end B'' unit ''' boundryUnits{Boundry} '''\n'... + 'records-in-table %d\n'... + ]; + + + fprintf(fileID,header,Boundry,str2num(datestr(masterDate,'yyyymmdd')),records); + for line = 1:records + fprintf(fileID,'%d %1.4f %1.4f\n',refTime,RNOut_2(line,Boundry-1),RNOut_2(line,Boundry)); + + refTime=refTime+10; + end + end + + fclose(fileID); + %% Boundry definition file-R + fileID=fopen('NCOM_R.bnd','w'); + crIDX2=crIDX; + crIDX2(crBoundCount(2)+1:crBoundCount(3),2) = crIDX(crBoundCount(2)+1:crBoundCount(3),2)+2; + crIDX2(crBoundCount(1)+1:crBoundCount(2),1) = 1082; + + for Boundry = [2:length(boundryNames)] + if ismember(Boundry-1,crBoundCount)==1 + continue + else + + boundStart = crIDX2(Boundry-1,:); + boundEnd = crIDX2(Boundry,:); + + fprintf(fileID,[boundryNames{Boundry} ' R T ' num2str(boundStart(1)) ' ' num2str(boundStart(2)) ' '... + num2str(boundEnd(1)) ' ' num2str(boundEnd(2)) ' 0.0000000e+000 Uniform \n']); + end + end + fclose(fileID); + + + %% Waves + records = size(waves,1); + fileID=fopen('WW3.bcw','w'); + + for i = 1:3 + boundryNames(i) = {['East' num2str(i)]}; + end + + for Boundry = 1:3 + refTime=minutes(masterTime-masterDate); + + header=[... + 'location ''East%d''\n'... + 'time-function ''non-equidistant''\n'... + 'reference-time %d\n'... + 'time-unit ''minutes''\n'... + 'interpolation ''linear''\n'... + 'parameter ''time '' unit ''[min]''\n'... + ]; + + + fprintf(fileID,header,Boundry,str2num(datestr(masterTime,'yyyymmdd'))); + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'parameter ''WaveHeight '' unit ''[m]''\n'); + end + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'parameter ''Period '' unit ''[s]''\n'); + end + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'parameter ''Direction '' unit ''[N^o]''\n'); + end + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'parameter ''DirSpreading '' unit ''[-]''\n'); + end + + for line = 1:records + fprintf(fileID,'%d ',refTime); + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'%1.4f ',waves(line,Segment,1)); %Hs + end + fprintf(fileID,'\n '); + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'%1.4f ',waves(line,Segment,2)); %Period + end + fprintf(fileID,'\n '); + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'%1.4f ',waves(line,Segment,3)); %Direction + end + fprintf(fileID,'\n '); + + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'%1.4f ',4); %Spread + end + fprintf(fileID,'\n'); + + % fprintf(fileID,'%.2f %1.4f %1.4f %1.4f %1.4f\n',refTime,... + % waves(line,Boundry,1),waves(line,Boundry,2),waves(line,Boundry,3),4); + refTime=refTime+180; + end + end + + fclose(fileID); + + + %% Modify MDF file to change reference date + + fileID = fopen('rt_base.mdf'); + cac = textscan( fileID, '%s', 'Delimiter','\n', 'CollectOutput',true ); + fclose( fileID ); + fileID = fopen('rt_run.mdf', 'w' ); + + refTime=minutes(masterTime-masterDate); + + for i = 1 : 15 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + fprintf( fileID, 'Itdate = #%04d-%02d-%02d#\n',... + year(masterTime),month(masterTime),day(masterTime)); + + for i = 17 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + fprintf( fileID,['Tstart = %#.7e \n','Tstop = %#.7e \n'],refTime,refTime+2880); + + + + for i = 20:29 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + + if FIRST_RUN == 0 + restID = ['tri-rst.rt_run.' datestr(masterTime,'yyyymmdd.HH') '0000']; + if exist(restID)==2 + eval(['movefile ' restID ' tri-rst.6h_restart']) + end + + fprintf( fileID,['Commnt = initial conditions from restart file\n'... + 'Restid = #6h_restart#\n']); + % delete tri-rst.rt* + else + + % fprintf( fileID,['Commnt = initial conditions from map file\n'... + % 'Restid = #Jan16_06#\n']); + + % fprintf( fileID,'Zeta0 = %#.7e \n',nanmean(nanmean(squeeze(wlO(1,:))))); + fprintf( fileID,'Zeta0 = %#.7e \n',0); + + end + + for i = 31:53 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + % if FIRST_RUN==1 + % fprintf( fileID, 'Vicouv = 1.0000000e+002 \n'); + % else + fprintf( fileID, '%s\n', cac{1}{54} ); + % end + + for i = 55:64 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + if FIRST_RUN==1 + fprintf( fileID, 'Tlfsmo = 0.0000000e+001 \n'); + else + fprintf( fileID, 'Tlfsmo = 0.0000000e+000 \n'); + end + + for i = 66:94 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + + + fprintf( fileID,[... + 'Flmap = %#.7e 60 %#.7e\n',... + 'Flhis = %#.7e 10 %#.7e\n',... + 'Flpp = %#.7e 60 %#.7e\n'],... + refTime,refTime+2880,refTime,refTime+2880,refTime,refTime+2880); + + for i = 98:109 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + clear cac + %% Modify MDW file to add times and change reference date + + fileID = fopen('rt_base.mdw'); + cac = textscan( fileID, '%s', 'Delimiter','\n', 'CollectOutput',true ); + fclose( fileID ); + fileID = fopen('rt_run.mdw', 'w' ); + + refTime=minutes(masterTime-masterDate); + + for i = 1 : 7 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + fprintf( fileID, 'ReferenceDate = %04d-%02d-%02d\n',... + year(masterTime),month(masterTime),day(masterTime)); + + for i = 9 : 71 + fprintf( fileID, '%s\n', cac{1}{i} ); + end + + % for i = 1 : records + % fprintf( fileID,'[TimePoint] \n Time = %#.7e \n',(i-1).*180); + % end + + bounOri{1}='East'; + bounOri{2}='North'; + bounOri{3}='South'; + bounRot{1}='counter-clockwise'; + bounRot{2}='counter-clockwise'; + bounRot{3}='clockwise'; + bounDef{1}='grid-coordinates'; + bounDef{2}='orientation'; + bounDef{3}='orientation'; + + + for Boundry = 1 : 3 + + if Boundry ==1 + fprintf(fileID,['[Boundary]\n'... + 'Name = East%d\n'... + 'Definition = %s\n'... + 'StartCoordM = %d\n'... + 'EndCoordM = %d\n'... + 'StartCoordN = %d\n'... + 'EndCoordN = %d\n'... + 'SpectrumSpec = parametric\n'... + 'SpShapeType = pierson-moskowitz\n'... + 'GaussSpread = 9.9999998e-003\n'... + 'PeriodType = peak\n'... + 'DirSpreadType = power\n'... + 'PeakEnhanceFac = 3.3000000e+000\n'... + ],Boundry,bounDef{Boundry},432,432,2,528); + else + fprintf(fileID,['[Boundary]\n'... + 'Name = East%d\n'... + 'Definition = %s\n'... + 'Orientation = %s\n'... + 'SpectrumSpec = parametric\n'... + 'SpShapeType = pierson-moskowitz\n'... + 'GaussSpread = 9.9999998e-003\n'... + 'PeriodType = peak\n'... + 'DirSpreadType = power\n'... + 'PeakEnhanceFac = 3.3000000e+000\n'... + 'DistanceDir = %s\n'... + ],Boundry,bounDef{Boundry},bounOri{Boundry},bounRot{Boundry}); + end + for Segment = waveBoundCount(Boundry)+1:waveBoundCount(Boundry+1) + fprintf(fileID,'CondSpecAtDist = %d\n',waveDistAlong(Segment)); + end + end + + clear cac + fclose( fileID ); + + + %% Met Files + % Create new UTM grid of the HRRR Data + [UTM1D(:,1),UTM1D(:,2)] = wgs2utm(reshape(windGridLAT,1,[]),reshape(windGridLON,1,[]),... + 18,'N'); + HRRR_UTM(:,:,1) = double(reshape(UTM1D(:,1),size(windGridLON,1),size(windGridLON,2))); + HRRR_UTM(:,:,2) = double(reshape(UTM1D(:,2),size(windGridLON,1),size(windGridLON,2))); + clear UTM1D + + G7LR = load('C7_1400_V2_C.mat'); + G7bath = load('C7_1400_V2_D.mat'); + % Remove land rainfall + % if FIRST_RUN == 1 + landmask=zeros(size(G7LR.data.X(1:end-1,1:end-1)',1),size(G7LR.data.X(1:end-1,1:end-1)',2)); + % [HR_deg(:,1),HR_deg(:,2)] = utm2deg(reshape(G7LR.data.X(1:end-1,1:end-1)',1,[]),reshape(G7LR.data.Y(1:end-1,1:end-1)',1,[]),repmat('18 S',length(reshape(G7LR.data.X(1:end-1,1:end-1)',1,[])),1)); + % for ShoreLevel = 1:length(shoreline) + % landmask_Temp(:,:) = reshape(inpolygon(HR_deg(:,1),HR_deg(:,2),shoreline(ShoreLevel).Lat,shoreline(ShoreLevel).Lon),size(G7LR.data.X(1:end-1,1:end-1)',1),size(G7LR.data.X(1:end-1,1:end-1)',2)); + % + % landmask = landmask|landmask_Temp; + % clear landmask_Temp + % + % [shoreTempX,shoreTempY,shoreTempCell] = deg2utm(shoreline(ShoreLevel).Lat,shoreline(ShoreLevel).Lon); + % shoreUTM{ShoreLevel}(:,1) = shoreTempX(all((shoreTempCell==repmat('18 S',length(shoreTempCell),1))')); + % shoreUTM{ShoreLevel}(:,2) = shoreTempY(all((shoreTempCell==repmat('18 S',length(shoreTempCell),1))')); + % clear shoreTempX shoreTempY shoreTempCell + % disp(ShoreLevel) + % end + % save('shorelineInfo.mat','landmask','shoreUTM'); + % else + % load('shorelineInfo.mat'); + % end + clear HR_deg ShoreLevel + landmask(G7bath.data.Val'<0)=1; + landmask=logical(landmask); + + if masterTime>=datetime(2019,09,05,00,00,00) + runSteps = 49; + else + runSteps = 8; + end + + % Zero out met array + HRRR_INTER = zeros(4,runSteps,size(G7LR.data.X(1:end-1,1:end-1),2),size(G7LR.data.X(1:end-1,1:end-1),1)); + + % Interpolate against flowGrid for each time step + for TS = 1:runSteps + HRRR_INTER(1,TS,:,:) = griddata(HRRR_UTM(:,:,1),HRRR_UTM(:,:,2),... + double(squeeze(windU(TS,:,:))),G7LR.data.X(1:end-1,1:end-1)',G7LR.data.Y(1:end-1,1:end-1)','natural'); + + HRRR_INTER(2,TS,:,:) = griddata(HRRR_UTM(:,:,1),HRRR_UTM(:,:,2),... + double(squeeze(windV(TS,:,:))),G7LR.data.X(1:end-1,1:end-1)',G7LR.data.Y(1:end-1,1:end-1)','natural'); + + rainTemp = griddata(HRRR_UTM(:,:,1),HRRR_UTM(:,:,2),... + double(squeeze(rain(TS,:,:))),G7LR.data.X(1:end-1,1:end-1)',G7LR.data.Y(1:end-1,1:end-1)','natural'); + rainTemp(landmask)=rainTemp(landmask)*0; % 100% infiltration + HRRR_INTER(3,TS,:,:) = rainTemp; % Convert to hours + clear rainTemp + + HRRR_INTER(4,TS,:,:) = griddata(HRRR_UTM(:,:,1),HRRR_UTM(:,:,2),... + double(squeeze(pressure(TS,:,:))),G7LR.data.X(1:end-1,1:end-1)',G7LR.data.Y(1:end-1,1:end-1)','natural'); + end + + % Set nan to Delft3D zero value + HRRR_INTER(isnan(HRRR_INTER)==1)=-999.000; + + % Create input files + m = size(HRRR_INTER,3); + n = size(HRRR_INTER,4); + d3ddx = 5000; + d3ddy = 5000; + disp(m) + d3d_input_uvpFieldsCL_FUN(masterTime,m,n,... + squeeze(HRRR_INTER(4,:,:,:)),squeeze(HRRR_INTER(1,:,:,:)),squeeze(HRRR_INTER(2,:,:,:)),squeeze(HRRR_INTER(3,:,:,:)),1,'hrrr',runSteps) + + save(['ModelIn_6_HRRR' datestr(masterTime,'YYYY-mm-DD_HH') '.mat'],'windU','windV','pressure','rain','temperature','waves','waterLevels','NCOM','-v7.3') + + %% Run Delft3D FLOW/WAVE! + % system('. /home/cluster/D7545/enviorment.sh' + + system('runcoast_flow2d3d_parallel_wave.bat') + if exist('wavm-rt_run.dat')~=2 + fid = fopen('errorFile.log','a+'); + fprintf(fid,'Delft Batch File Fallback\n'); + + % close file + fclose(fid) + disp('Run Fallback') + pause(60) + + delete com-* + delete hot* + delete rt_run.prt* + delete tri-diag.* + delete TMP_* + + delete trim-* + delete wavm-* + delete trih-* + delete obs.loct00* + delete WNDNOW + delete swan.inp + delete PRINT* + delete hot* + delete SWANOUT* + delete Errfile* + delete WAVE2FLOW* + delete FLOW2WAVE* + delete swn-diag.* + + system('runcoast_flow2d3d_parallel_wave.bat') + end + + %% Move things + pause(60) + + eval(['copyfile trih-rt_run.dat D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_histOut7.dat']) + eval(['copyfile trih-rt_run.def D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_histOut7.def']) + + eval(['movefile ModelIn_6_HRRR' datestr(masterTime,'YYYY-mm-DD_HH') '.mat D:\DUNEX_RT\Archive\ModelIn_7' datestr(masterTime,'YYYY-mm-DD_HH') '.mat']) + % eval(['copyfile tri-rst.rt* D:\Alexander\RealtimeHRRR\']) + + +% eval(['copyfile hrrr.amu D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_hrrr7.amu']) +% eval(['copyfile hrrr.amv D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_hrrr7.amv']) +% eval(['copyfile hrrr.ampr D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_hrrr7.ampr']) +% eval(['copyfile hrrr.amp D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_hrrr7.amp']) +% eval(['copyfile trim-rt_run.dat D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_mapOut7.dat']) +% eval(['copyfile trim-rt_run.def D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_mapOut7.def']) +% eval(['copyfile wavm-rt_run.dat D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_waveOut7.dat']) +% eval(['copyfile wavm-rt_run.def D:\DUNEX_RT\Archive\' datestr(masterTime,'YYYY-mm-DD_HH') '_waveOut7.def']) + + + + %% Clear things not needed for plotting + clear HRRR_INTER flowGrid lonHRRR_Mesh windU windV rain pressure waveGrid + + + delete(gcp('nocreate')) + parpool(3); + %% Import Model Results + addpath(genpath('matlab/applications/delft3d_matlab'),'-begin') + + modelWater = qpread(qpfopen('trim-rt_run.dat'),1,'water level','griddata',0,0,0); + flowGrid = load('Cone7W_100.mat'); + waveGrid = load('Cone7W_250.mat'); + flowBed = load('Dec6_100Bed.mat'); + waveBed = load('Dec6_250Bed.mat'); + + %% Create GeoTIFF for water levels + clear X Y Val geoDat geoMeshX geoMeshY R xWorldLimits yWorldLimits rasterSize + +% timeIDX = [1 4 7 13 25 37]; + timeIDX = [1 7 13 25 37 49]; + timeIDXNames = [1 4 7 13 25 37]; % For Geoserver + + yMinOffset = 75; + yMaxOffset = 25; + + parfor Time = 1:6 + % X{Time} = modelWater.X; + % Y{Time} = modelWater.Y; + X{Time} = flowGrid.data.X; + Y{Time} = flowGrid.data.Y; + + modelPlot_1 = squeeze(modelWater.Val(timeIDX(Time),1:end-1,1:end-1)); + + xWorldLimits{Time} = [min(min(X{Time}(1:end,1:end))) max(max(X{Time}(1:end,1:end)))]; + yWorldLimits{Time} = [min(min(Y{Time}(1:end,1:end))) max(max(Y{Time}(1:end,1:end)))]; + % rasterSize = [(size(data.X,1)-2).*2 (size(data.X,2)-2).*2]; + rasterSize{Time} = [length(xWorldLimits{Time}(1):100:xWorldLimits{Time}(2)) length(yWorldLimits{Time}(1):100:yWorldLimits{Time}(2))]; + + R{Time} = maprefpostings(xWorldLimits{Time},yWorldLimits{Time},[rasterSize{Time}(2) rasterSize{Time}(1)]) + [geoMeshX{Time},geoMeshY{Time}] = meshgrid(R{Time}.XWorldLimits(1):100:R{Time}.XWorldLimits(2),... + R{Time}.YWorldLimits(1):100:R{Time}.YWorldLimits(2)); + + modelMask = squeeze(flowBed.data.Val>1); + modelPlot_1(modelMask)=nan; + modelPlot_1(400:520,525:620)=nan; + modelPlot_1(:,1:yMinOffset)=nan; + modelPlot_1(:,size(modelMask,2)-yMaxOffset:size(modelMask,2))=nan; + + geoDat{Time} = -griddata(reshape(X{Time}(1:end-1,1:end-1),1,[]),... + reshape(Y{Time}(1:end-1,1:end-1),1,[]),... + reshape(modelPlot_1,1,[]),... + geoMeshX{Time},geoMeshY{Time},'natural'); + + geoDat{Time}(isnan(geoDat{Time})==1) = -999; + + geotiffwrite(['WL_' num2str(timeIDXNames(Time)) '.tif'],geoDat{Time},... + R{Time},'CoordRefSysCode',32618) + disp(Time) + % clear X Y Val geoDat geoMeshX geoMeshY + end + + clear modelWater + + modelWaterDAV = qpread(qpfopen('trim-rt_run.dat'),1,'depth averaged velocity','griddata',0,0,0); + + %% Create GeoTIFF for DAVs + clear X Y Val geoDat geoMeshX geoMeshY R xWorldLimits yWorldLimits rasterSize geoDat modelPlot_1 + +% timeIDX = [1 4 7 13 25 37]; + timeIDX = [1 7 13 25 37 49]; + if FIRST_RUN == 1 + Times = 2:6; + else + Times = 1:6; + end + + + parfor Time = Times + X{Time} = flowGrid.data.X; + Y{Time} = flowGrid.data.Y; + modelPlot_1 = sqrt(squeeze(modelWaterDAV.XComp(timeIDX(Time),1:end-1,1:end-1)).^2+... + squeeze(modelWaterDAV.YComp(timeIDX(Time),1:end-1,1:end-1)).^2); + + xWorldLimits{Time} = [min(min(X{Time}(1:end,1:end))) max(max(X{Time}(1:end,1:end)))]; + yWorldLimits{Time} = [min(min(Y{Time}(1:end,1:end))) max(max(Y{Time}(1:end,1:end)))]; + % rasterSize = [(size(data.X,1)-2).*2 (size(data.X,2)-2).*2]; + rasterSize{Time} = [length(xWorldLimits{Time}(1):100:xWorldLimits{Time}(2)) length(yWorldLimits{Time}(1):100:yWorldLimits{Time}(2))]; + + R{Time} = maprefpostings(xWorldLimits{Time},yWorldLimits{Time},[rasterSize{Time}(2) rasterSize{Time}(1)]) + [geoMeshX{Time},geoMeshY{Time}] = meshgrid(R{Time}.XWorldLimits(1):100:R{Time}.XWorldLimits(2),... + R{Time}.YWorldLimits(1):100:R{Time}.YWorldLimits(2)); + + modelPlot_1(modelPlot_1==0)=nan; + + modelMask = squeeze(flowBed.data.Val>1); + modelPlot_1(modelMask)=nan; + modelPlot_1(400:520,525:620)=nan; + modelPlot_1(:,1:yMinOffset)=nan; + modelPlot_1(:,size(modelMask,2)-yMaxOffset:size(modelMask,2))=nan; + + + geoDat{Time} = -griddata(reshape(X{Time}(1:end-1,1:end-1),1,[]),... + reshape(Y{Time}(1:end-1,1:end-1),1,[]),... + reshape(modelPlot_1,1,[]),... + geoMeshX{Time},geoMeshY{Time},'natural'); + geoDat{Time}(isnan(geoDat{Time})==1) = -999; + + geotiffwrite(['DAV_' num2str(timeIDXNames(Time)) '.tif'],geoDat{Time},... + R{Time},'CoordRefSysCode',32618) + disp(Time) + % clear X Y Val geoDat geoMeshX geoMeshY + end + + %% Quiver for DAV + clear X Y ValX ValY XXd YYd geoS XdatE YdatE Xdat Ydat Udat Vdat geoDat + vecScale(4) = 100000; + vecScale(3) = 50000; + vecScale(2) = 2500; + vecScale(1) = 1000; + + for Time = Times + + X{Time} = flowGrid.data.X(2:end,2:end); + Y{Time} = flowGrid.data.Y(2:end,2:end); + modelPlot_1 = squeeze(modelWaterDAV.XComp(timeIDX(Time),2:end,2:end)); + modelPlot_2 = squeeze(modelWaterDAV.YComp(timeIDX(Time),2:end,2:end)); + + modelMask = squeeze(flowBed.data.Val>1); + modelPlot_1(modelMask)=nan; + modelPlot_1(400:520,525:620)=nan; + modelPlot_2(modelMask)=nan; + modelPlot_2(400:520,525:620)=nan; + + modelPlot_1(:,1:yMinOffset)=nan; + modelPlot_1(:,size(modelMask,2)-yMaxOffset:size(modelMask,2))=nan; + modelPlot_2(:,1:yMinOffset)=nan; + modelPlot_2(:,size(modelMask,2)-yMaxOffset:size(modelMask,2))=nan; + + + qSpace = [4 16 50 100] + + Count{Time}=1; + + for Detail = 1:4 + q{Time} = quiver(X{Time}(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0),Y{Time}(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0),... + squeeze(modelPlot_1(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0)),squeeze(modelPlot_2(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0)),'color','k'); + + Xdat{Time} = reshape(q{Time}.XData,1,[]); + Ydat{Time} = reshape(q{Time}.YData,1,[]); + + Udat{Time} = reshape(q{Time}.UData,1,[]); + Vdat{Time} = reshape(q{Time}.VData,1,[]); + + for i = 1:length(Xdat{Time}) + if ((Udat{Time}(i))==0 && (Vdat{Time}(i))==0) ||... + (isnan(Xdat{Time}(i))==1 || isnan(Ydat{Time}(i))==1) ||... + ((isnan(Udat{Time}(i)))==1 && isnan(Vdat{Time}(i))==1) + continue + end + + geoS{Time}(Count{Time}).Geometry = 'Line'; + + geoS{Time}(Count{Time}).Detail = Detail; + XdatE{Time} = Xdat{Time}(i)+Udat{Time}(i).*vecScale(Detail); + YdatE{Time} = Ydat{Time}(i)+Vdat{Time}(i).*vecScale(Detail); + [XXd{Time}(1),YYd{Time}(1)] = utm2deg(Xdat{Time}(i),Ydat{Time}(i),'18 S'); + [XXd{Time}(2),YYd{Time}(2)] = utm2deg(XdatE{Time}',YdatE{Time}','18 S'); + geoS{Time}(Count{Time}).BoundingBox = [min(XXd{Time}) min(YYd{Time});... + max(XXd{Time}) max(YYd{Time})]; + geoS{Time}(Count{Time}).Lat = [XXd{Time}(1) XXd{Time}(2)]; + geoS{Time}(Count{Time}).Lon = [YYd{Time}(1) YYd{Time}(2)]; + + + Count{Time}=Count{Time}+1; + end + close all + + Xdat{Time}=[]; + Ydat{Time}=[]; + Udat{Time}=[]; + Vdat{Time}=[]; + q{Time}=[]; + end + disp(Time) + + shapewrite(geoS{Time}(1:end-1),['DAV_' num2str(timeIDXNames(Time)) '_D.shp']) + eval(['copyfile vector.prj DAV_' num2str(timeIDXNames(Time)) '_D.prj']) + + end + + clear modelWaterDAV + + %% Create GeoTIFF for HS + + modelWaves = qpread(qpfopen('wavm-rt_run.dat'),1,'hsig wave height','griddata',0,0,0); + modelWavesDir = qpread(qpfopen('wavm-rt_run.dat'),1,'hsig wave vector (mean direction)','griddata',0,0,0); + + clear X Y Val geoDat geoMeshX geoMeshY R xWorldLimits yWorldLimits rasterSize GeoS + +% timeIDX = [1 4 7 13 25 37]; + timeIDX = [1 7 13 25 37 49]; + parfor Time = 1:6 + X{Time} = waveGrid.data.X(1:end-1,1:end-1); + Y{Time} = waveGrid.data.Y(1:end-1,1:end-1); + modelPlot_1 = (squeeze(modelWaves.Val(timeIDX(Time),:,:))); + + xWorldLimits{Time} = [min(min(X{Time}(1:end,1:end))) max(max(X{Time}(1:end,1:end)))]; + yWorldLimits{Time} = [min(min(Y{Time}(1:end,1:end))) max(max(Y{Time}(1:end,1:end)))]; + % rasterSize = [(size(data.X,1)-2).*2 (size(data.X,2)-2).*2]; + rasterSize{Time} = [length(xWorldLimits{Time}(1):250:xWorldLimits{Time}(2)) length(yWorldLimits{Time}(1):250:yWorldLimits{Time}(2))]; + + R{Time} = maprefpostings(xWorldLimits{Time},yWorldLimits{Time},[rasterSize{Time}(2) rasterSize{Time}(1)]) + [geoMeshX{Time},geoMeshY{Time}] = meshgrid(R{Time}.XWorldLimits(1):250:R{Time}.XWorldLimits(2),... + R{Time}.YWorldLimits(1):250:R{Time}.YWorldLimits(2)); + + modelPlot_1(modelPlot_1==0)=nan; + + modelMask = squeeze(waveBed.data.Val<-1); + modelPlot_1(modelMask)=nan; + modelPlot_1(155:205,210:265)=nan; + + geoDat{Time} = -griddata(reshape(X{Time}(1:end-0,1:end-0),1,[]),... + reshape(Y{Time}(1:end-0,1:end-0),1,[]),... + reshape(modelPlot_1,1,[]),... + geoMeshX{Time},geoMeshY{Time},'natural'); + geoDat{Time}(isnan(geoDat{Time})==1) = -999; + + geotiffwrite(['HS_' num2str(timeIDXNames(Time)) '.tif'],geoDat{Time},... + R{Time},'CoordRefSysCode',32618) + disp(Time) + % clear X Y Val geoDat geoMeshX geoMeshY + end + + + + %% Quiver for HS + clear X Y ValX ValY XXd YYd geoS XdatE YdatE Xdat Ydat Udat Vdat geoDat + + vecScale(4) = 15000; + vecScale(3) = 5000; + vecScale(2) = 1000; + vecScale(1) = 500; + + for Time = 1:6 + + X{Time} = waveGrid.data.X(1:end-1,1:end-1); + Y{Time} = waveGrid.data.Y(1:end-1,1:end-1); + modelPlot_1 = squeeze(modelWavesDir.XComp(timeIDX(Time),:,:)); + modelPlot_2 = squeeze(modelWavesDir.YComp(timeIDX(Time),:,:)); + + modelMask = squeeze(waveBed.data.Val<-1); + modelPlot_1(modelMask)=nan; + modelPlot_1(155:205,210:265)=nan; + modelPlot_2(modelMask)=nan; + modelPlot_2(155:205,210:265)=nan; + + + qSpace = [2 10 20 40] + Count{Time}=1; + + for Detail = 1:4 + q{Time} = quiver(X{Time}(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0),Y{Time}(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0),... + squeeze(modelPlot_1(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0)),squeeze(modelPlot_2(1:qSpace(Detail):end-0,1:qSpace(Detail):end-0)),'color','k'); + + Xdat{Time} = reshape(q{Time}.XData,1,[]); + Ydat{Time} = reshape(q{Time}.YData,1,[]); + + Udat{Time} = reshape(q{Time}.UData,1,[]); + Vdat{Time} = reshape(q{Time}.VData,1,[]); + + + for i = 1:length(Xdat{Time}) + if (Udat{Time}(i))==0 && (Vdat{Time}(i))==0 + continue + elseif isnan(Xdat{Time}(i))==1 || isnan(Ydat{Time}(i))==1 + continue + elseif isnan(Udat{Time}(i))==1 && isnan(Vdat{Time}(i))==1 + continue + end + + geoS{Time}(Count{Time}).Geometry = 'Line'; + + geoS{Time}(Count{Time}).Detail = Detail; + XdatE{Time} = Xdat{Time}(i)+Udat{Time}(i).*vecScale(Detail); + YdatE{Time} = Ydat{Time}(i)+Vdat{Time}(i).*vecScale(Detail); + [XXd{Time}(1),YYd{Time}(1)] = utm2deg(Xdat{Time}(i),Ydat{Time}(i),'18 S'); + [XXd{Time}(2),YYd{Time}(2)] = utm2deg(XdatE{Time}',YdatE{Time}','18 S'); + geoS{Time}(Count{Time}).BoundingBox = [min(XXd{Time}) min(YYd{Time});... + max(XXd{Time}) max(YYd{Time})]; + geoS{Time}(Count{Time}).Lat = [XXd{Time}(1) XXd{Time}(2)]; + geoS{Time}(Count{Time}).Lon = [YYd{Time}(1) YYd{Time}(2)]; + + + Count{Time}=Count{Time}+1; + end + close all + end + disp(Time) + + shapewrite(geoS{Time}(1:end-1),['HS_' num2str(timeIDXNames(Time)) '_D.shp']) + eval(['copyfile vector.prj HS_' num2str(timeIDXNames(Time)) '_D.prj']) + + end + + clear modelWaves + clear modelWavesDIR + + %% Create GeoTIFF for Wind + modelWaterWind = qpread(qpfopen('trim-rt_run.dat'),1,'wind speed','griddata',0,0,0); + + + clear X Y Val geoDat geoMeshX geoMeshY R xWorldLimits yWorldLimits rasterSize geoS ValX ValY + +% timeIDX = [1 4 7 13 25 37]; + timeIDX = [1 7 13 25 37 49]; + parfor Time = 1:6 + X{Time} = flowGrid.data.X; + Y{Time} = flowGrid.data.Y; + Val{Time} = sqrt(squeeze(modelWaterWind.XComp(timeIDX(Time),:,:)).^2+... + squeeze(modelWaterWind.YComp(timeIDX(Time),:,:)).^2); + + xWorldLimits{Time} = [min(min(X{Time}(1:end,1:end))) max(max(X{Time}(1:end,1:end)))]; + yWorldLimits{Time} = [min(min(Y{Time}(1:end,1:end))) max(max(Y{Time}(1:end,1:end)))]; + % rasterSize = [(size(data.X,1)-2).*2 (size(data.X,2)-2).*2]; + rasterSize{Time} = [length(xWorldLimits{Time}(1):1000:xWorldLimits{Time}(2)) length(yWorldLimits{Time}(1):1000:yWorldLimits{Time}(2))]; + + R{Time} = maprefpostings(xWorldLimits{Time},yWorldLimits{Time},[rasterSize{Time}(2) rasterSize{Time}(1)]) + [geoMeshX{Time},geoMeshY{Time}] = meshgrid(R{Time}.XWorldLimits(1):1000:R{Time}.XWorldLimits(2),... + R{Time}.YWorldLimits(1):1000:R{Time}.YWorldLimits(2)); + + Val{Time}(Val{Time}==0)=nan; + geoDat{Time} = -griddata(reshape(X{Time}(2:end-2,2:end-2),1,[]),... + reshape(Y{Time}(2:end-2,2:end-2),1,[]),... + reshape(Val{Time}(2:end-2,2:end-2),1,[]),... + geoMeshX{Time},geoMeshY{Time},'natural'); + geoDat{Time}(isnan(geoDat{Time})==1) = -999; + + geotiffwrite(['Uw_' num2str(timeIDXNames(Time)) '.tif'],geoDat{Time},... + R{Time},'CoordRefSysCode',32618) + disp(Time) + % clear X Y Val geoDat geoMeshX geoMeshY + end + + + + %% Quiver for Wind + clear X Y ValX ValY XXd YYd geoS XdatE YdatE Xdat Ydat Udat Vdat geoDat + + + vecScale(4) = 3000; + vecScale(3) = 500; + vecScale(2) = 100; + vecScale(1) = 40; + + for Time = 1:6 + + X{Time} = flowGrid.data.X; + Y{Time} = flowGrid.data.Y; + ValX{Time} = squeeze(modelWaterWind.XComp(timeIDX(Time),:,:)); + ValY{Time} = squeeze(modelWaterWind.YComp(timeIDX(Time),:,:)); + + + qSpace = [5 25 50 100] + Count{Time}=1; + + for Detail = 1:4 + q{Time} = quiver(X{Time}(2:qSpace(Detail):end-0,2:qSpace(Detail):end-0),Y{Time}(2:qSpace(Detail):end-0,2:qSpace(Detail):end-0),... + squeeze(ValX{Time}(2:qSpace(Detail):end-0,2:qSpace(Detail):end-0)),squeeze(ValY{Time}(2:qSpace(Detail):end-0,2:qSpace(Detail):end-0)),'color','k'); + + Xdat{Time} = reshape(q{Time}.XData,1,[]); + Ydat{Time} = reshape(q{Time}.YData,1,[]); + + Udat{Time} = reshape(q{Time}.UData,1,[]); + Vdat{Time} = reshape(q{Time}.VData,1,[]); + + + for i = 1:length(Xdat{Time}) + if (Udat{Time}(i))==0 && (Vdat{Time}(i))==0 + continue + elseif isnan(Xdat{Time}(i))==1 || isnan(Ydat{Time}(i))==1 + continue + end + + geoS{Time}(Count{Time}).Geometry = 'Line'; + + geoS{Time}(Count{Time}).Detail = Detail; + XdatE{Time} = Xdat{Time}(i)+Udat{Time}(i).*vecScale(Detail); + YdatE{Time} = Ydat{Time}(i)+Vdat{Time}(i).*vecScale(Detail); + [XXd{Time}(1),YYd{Time}(1)] = utm2deg(Xdat{Time}(i),Ydat{Time}(i),'18 S'); + [XXd{Time}(2),YYd{Time}(2)] = utm2deg(XdatE{Time}',YdatE{Time}','18 S'); + geoS{Time}(Count{Time}).BoundingBox = [min(XXd{Time}) min(YYd{Time});... + max(XXd{Time}) max(YYd{Time})]; + geoS{Time}(Count{Time}).Lat = [XXd{Time}(1) XXd{Time}(2)]; + geoS{Time}(Count{Time}).Lon = [YYd{Time}(1) YYd{Time}(2)]; + + + Count{Time}=Count{Time}+1; + end + close all + end + disp(Time) + + shapewrite(geoS{Time}(1:end-1),['Uw_' num2str(timeIDXNames(Time)) '_D.shp']) + eval(['copyfile vector.prj Uw_' num2str(timeIDXNames(Time)) '_D.prj']) + + end + + clear modelWaterWind + + %% Create GeoTIFF for Prep + + modelWaterPrep = qpread(qpfopen('trim-rt_run.dat'),1,'precipitation rate','griddata',0,0,0); + + clear X Y Val geoDat geoMeshX geoMeshY R xWorldLimits yWorldLimits rasterSize geoS + +% timeIDX = [1 4 7 13 25 37]; + timeIDX = [1 7 13 25 37 49]; + parfor Time = 1:6 + X{Time} = flowGrid.data.X; + Y{Time} = flowGrid.data.Y; + Val{Time} = (squeeze(modelWaterPrep.Val(timeIDX(Time),:,:))); + + xWorldLimits{Time} = [min(min(X{Time}(1:end,1:end))) max(max(X{Time}(1:end,1:end)))]; + yWorldLimits{Time} = [min(min(Y{Time}(1:end,1:end))) max(max(Y{Time}(1:end,1:end)))]; + % rasterSize = [(size(data.X,1)-2).*2 (size(data.X,2)-2).*2]; + rasterSize{Time} = [length(xWorldLimits{Time}(1):10000:xWorldLimits{Time}(2)) length(yWorldLimits{Time}(1):10000:yWorldLimits{Time}(2))]; + + R{Time} = maprefpostings(xWorldLimits{Time},yWorldLimits{Time},[rasterSize{Time}(2) rasterSize{Time}(1)]) + [geoMeshX{Time},geoMeshY{Time}] = meshgrid(R{Time}.XWorldLimits(1):10000:R{Time}.XWorldLimits(2),... + R{Time}.YWorldLimits(1):10000:R{Time}.YWorldLimits(2)); + + geoDat{Time} = -griddata(reshape(X{Time}(2:end-2,2:end-2),1,[]),... + reshape(Y{Time}(2:end-2,2:end-2),1,[]),... + reshape(Val{Time}(2:end-2,2:end-2),1,[]),... + geoMeshX{Time},geoMeshY{Time},'natural'); + + geotiffwrite(['Prep_' num2str(timeIDXNames(Time)) '.tif'],geoDat{Time},... + R{Time},'CoordRefSysCode',32618) + disp(Time) + % clear X Y Val geoDat geoMeshX geoMeshY + end + + clear modelWaterPrep + + %% Export to GEOSERVER + try + copyfile *.tif \\geoserver.engineering.queensu.ca\TIFFS\ + copyfile *.dbf \\geoserver.engineering.queensu.ca\TIFFS\ + copyfile *.shx \\geoserver.engineering.queensu.ca\TIFFS\ + copyfile *.shp \\geoserver.engineering.queensu.ca\TIFFS\ + copyfile *.prj \\geoserver.engineering.queensu.ca\TIFFS\ + catch + end + + %% Import Model forecast +% modelWaterHist = qpread(qpfopen('D:\DUNEX_RT\Archive\2022-01-31_12_histOut7.dat'),1,'water level','data',0,0); +% modelCurHist = qpread(qpfopen('D:\DUNEX_RT\Archive\2022-01-31_12_histOut7.dat'),1,'depth averaged velocity','data',0,0); + + + modelWaterHist = qpread(qpfopen('trih-rt_run.dat'),1,'water level','data',0,0); + modelCurHist = qpread(qpfopen('trih-rt_run.dat'),1,'depth averaged velocity','data',0,0); + + %% Validation import ESTOFS + %load('DUNEX_Nov20.mat') + load('DUNEX_Sept7.mat') %hohonu pts + + clear ESTOFS lonESTOFS lonESTOFS + + wLIDX=[6 7 8 38]; + wlGrid = [5000 -4000 0 -2000]; + wlGridY = [0 0 2000 5000]; %7500 + ESTOFStimeOffset = [0 12 24 48]; + ESTOFSrunLength = [48 60 72 96]; + + for e = [1 4] + try + clear meshX meshY + m_proj('lambert conformal conic','ori',[-95 25.0],'clo',-95,'par',[25 25],'ell','sphere'); + ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(0,'%03d') '.grib']); + + [meshX,meshY] = meshgrid(ESTOFS{'x'}(:),ESTOFS{'y'}(:)); + [lonESTOFS,latESTOFS] = m_xy2ll(meshX.*1000,meshY.*1000); + clear meshX meshY + ESTOFS_Val{e} = 1; + catch + ESTOFS_Val{e} = 0; + end + end + clear waterLevelsESTOFSINTER waterLevelsESTOFS + for e = [1 4] + try + for Stat = 1:4 + if ESTOFS_Val{e} == 0 + estofsWL(:,Stat,e) = zeros(49,1); + else + [wlDeg(2),wlDeg(1)] = utm2deg(pointsCS{wLIDX(Stat),2}+wlGrid(Stat),pointsCS{wLIDX(Stat),3}+wlGridY(Stat),'18 S'); + [estofIDX] = NearestValue(wlDeg,lonESTOFS,latESTOFS); %Lat + + for i = 1:ESTOFSrunLength(e)+1 + ESTOFS = ncgeodataset(['D:\DUNEX_RT\Archive\ESTOFS\ESTOFS_' ... + datestr(masterTime-hours(ESTOFStimeOffset(e)),'YYYY-mm-DD_HH') '_f' num2str(i-1,'%03d') '.grib']); + + waterLevelsESTOFS{e}(i,Stat) = squeeze(ESTOFS{'Ocean_Surface_Elevation_Relative_to_Geoid_surface'}(1,estofIDX(1),estofIDX(2))); + end + waterLevelsESTOFSINTER{e}(:,Stat) = interp1(masterTime-hours(ESTOFStimeOffset(e)):minutes(60):masterTime+hours(48),... + waterLevelsESTOFS{e}(:,Stat),masterTime-hours(ESTOFStimeOffset(e)):minutes(15):masterTime+hours(48),'spline'); + end + end + catch + waterLevelsESTOFSINTER{e}(:,Stat) = zeros(1,385); + end + end + + + %% Validation import WL + % Duck + % Oregon Inlet + % Hatteras + % Beaufort + clear stations statWL + options = weboptions; + options.Timeout = 30; + + stations = {8651370,8652587,8654467,8656483}; + dateStartM = masterTime-hours(48); + dateEndM = masterTime+hours(5); + + for Stat = 1:4 + try + url = ['https://tidesandcurrents.noaa.gov/api/datagetter?product=water_level&application=NOS.COOPS.TAC.WL&'... + 'begin_date=' datestr(dateStartM,'yyyymmdd') '&end_date=' datestr(dateEndM,'yyyymmdd') '&datum=NAVD' '&station=' num2str(stations{Stat})... + '&time_zone=GMT&units=metric&format=csv']; + + wlIN = webread(url,options); + + statWL(:,Stat) = interp1(wlIN.DateTime,wlIN.WaterLevel,dateStartM:minutes(15):dateEndM); + catch err + %open file + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'Line %d on %s : %s\n',err.stack.line,datestr(masterTime),err.message); + sendmail('alexander.rey@queensu.ca',['Ext-DUNEX-RT: ' datestr(masterTime) err.message]) ; + + % close file + fclose(fid) + + statWL(:,Stat) = 0; + end + + + clear wlIN + + end + + %% Validate Import Hohonu + hohonuBase = 'https://dashboard.hohonu.io/api/stations/node-'; + options = weboptions; + options.Timeout = 90; + + hohonuStation(5:10) = [ + 10015; %Duck, Dare County, NC + 10020; %Southern Shores, NC + 10011; %Collington Creek Inn Dock, Kill Devil Hills + 10012; %Jennette's Pier, Nags Head + 10009; %Hwy 64, Little Bridge + 10010]; %Coastal Studies Institute, Wanchese, NC + + hohonuDatums(5:10) = [ + 6.03; + 6.41; + 5.777; + 25.742; + 6.889; + 8.3]*304.8; % In feet, convert to mm + + + for Stat = 5:10 + fname = ['D:\DUNEX_RT\Operation\Hohonu\' num2str(hohonuStation(Stat)) '.json']; + try +% websave(fname,... +% [hohonuBase num2str(hohonuStation(Stat)) '/statistic/?cleaned=false&format=json&from='... +% datestr(dateStartM,'yyyy-mm-dd') '+00%3A00&to=' datestr(dateEndM,'yyyy-mm-dd')... +% '+23%3A59']); + websave(fname,... + [hohonuBase num2str(hohonuStation(Stat)) '/statistic/?datum=NAVD&from='... + datestr(dateStartM,'yyyy-mm-dd') '%' datestr(dateStartM,'HHMM:SS') '&to='... + datestr(dateEndM,'yyyy-mm-dd') '%' datestr(dateEndM,'HHMM:SS')... + '&cleaned=false&format=json&station_type=Hohonu&tz=000000'], options); + + fid = fopen(fname); + raw = fread(fid,inf); + str = char(raw'); + fclose(fid); + + hohonuIN = jsondecode(str); + + % Filter out data more than 1 standard deviation +% hmean = mean((hohonuDatums(Stat) - hohonuIN.data{2}) * 0.001); +% hstd = std((hohonuDatums(Stat) - hohonuIN.data{2}) * 0.001); +% hohonuFilt = abs((hohonuDatums(Stat) - hohonuIN.data{2}) * 0.001)>(abs(hmean)+hstd*1.5); + hmean = mean(hohonuIN.data{2} * 0.3048, 'omitnan'); + hstd = std(hohonuIN.data{2} * 0.3048, 'omitnan'); + + % Standard deviation filter- greater than 1.5x the standard + % deviation + hohonuFilt1 = abs((hohonuIN.data{2} * 0.3048))>(abs(hmean)+hstd*1.5); + + % Sharp jump filter- if a jump is greater than 10x the average + % jump + hohonuFilt2 = [0;abs(diff(hohonuIN.data{2} * 0.3048))>... + (mean(diff(hohonuIN.data{2} * 0.3048),'omitnan')*10)]; + + dateStartMtz = datetime(dateStartM,'TimeZone','UTC'); + dateEndMtz = datetime(dateEndM,'TimeZone','UTC'); + +% statWL(:,Stat) = interp1(... +% datetime(hohonuIN.data{1}(~hohonuFilt),'InputFormat','yyyy-MM-dd''T''HH:mm:SSZ','TimeZone','UTC'),... +% (hohonuDatums(Stat) - hohonuIN.data{2}(~hohonuFilt)) * 0.001,dateStartMtz:minutes(15):dateEndMtz); + statWL(:,Stat) = interp1(... + datetime(hohonuIN.data{1}(~hohonuFilt1 & hohonuFilt2),'InputFormat','yyyy-MM-dd''T''HH:mm:SSZ','TimeZone','UTC'),... + hohonuIN.data{2}(~hohonuFilt1 & hohonuFilt2) * 0.3048,dateStartMtz:minutes(15):dateEndMtz); + + catch err + %open file + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'Line %d on %s : %s\n',err.stack.line,datestr(masterTime),err.message); + sendmail('alexander.rey@queensu.ca',['Ext-DUNEX-RT: ' datestr(masterTime) err.message]) ; + + % close file + fclose(fid) + + statWL(:,Stat) = 0; + end + clear fid raw str hohonuIN fname + end + + + + + %% Validation import Currents + % Duck + clear statCur + for Stat = 1 + % url = 'https://chlthredds.erdc.dren.mil/thredds/dodsC/frf/oceanography/currents/awac-11m/awac-11m.ncml'; + % curTime = ncread(url,'time'); + % curVal = ncread(url,'currentSpeed'); + try + if day(masterTime)<2 + websave('statCNC.nc',['https://chlthredds.erdc.dren.mil/thredds/fileServer/frf/oceanography/currents/awac-11m/' datestr(masterTime-days(3),'YYYY') '/FRF-ocean_currents_awac-11m_' ... + datestr(masterTime-days(3),'YYYYmm') '.nc'],options); + curTime = ncread('statCNC.nc','time'); + curVal = ncread('statCNC.nc','currentSpeed'); + + websave('statCNC.nc',['https://chlthredds.erdc.dren.mil/thredds/fileServer/frf/oceanography/currents/awac-11m/' datestr(masterTime,'YYYY') '/FRF-ocean_currents_awac-11m_' ... + datestr(masterTime,'YYYYmm') '.nc'],options); + curTime = vertcat(curTime,ncread('statCNC.nc','time')); + curVal = vertcat(curVal,ncread('statCNC.nc','currentSpeed')); + + else + websave('statCNC.nc',['https://chlthredds.erdc.dren.mil/thredds/fileServer/frf/oceanography/currents/awac-11m/' datestr(masterTime,'YYYY') '/FRF-ocean_currents_awac-11m_' ... + datestr(masterTime,'YYYYmm') '.nc'],options); + + curTime = ncread('statCNC.nc','time'); + curVal = ncread('statCNC.nc','currentSpeed'); + end + + statCur(:) = interp1(datetime(curTime,'convertFrom','POSIX'),curVal,dateStartM:minutes(15):dateEndM); + clear wlIN + catch err + %open file + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'Line %d on %s : %s\n',err.stack.line,datestr(masterTime),err.message); +% sendmail('alexander.rey@queensu.ca',['Ext-DUNEX-RT: ' datestr(masterTime) err.message]) ; + + % close file + fclose(fid) + + statCur(:) = zeros(length(dateStartM:minutes(15):dateEndM),1); + end + end + + %% Validation import Waves + % Virginia Beach + % Duck 26 + % Nages Head + % Oregon Inlet + % Diamond Shoals + clear stations + + stations = {44014,44100,44086,44095,41025}; + dateStartM = masterTime-hours(48); + dateEndM = masterTime+hours(5); + + clear statWave + + for Stat = 1:5 + try + if ismember(Stat,[1,5]) == 1 + url = ['https://www.ndbc.noaa.gov/data/5day2/' num2str(stations{Stat}) '_5day.txt']; + + websave('NDBCdata.txt',url,options); + opts = delimitedTextImportOptions("NumVariables", 39); + + % Specify range and delimiter + opts.DataLines = [3, Inf]; + opts.Delimiter = " "; + + % Specify column names and types + opts.VariableNames = ["YY", "MM", "DD", "hh", "mm", "WDIR", "WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP", "WTMP", "DEWP", "VIS", "PTDY", "TIDE", "Var20", "Var21", "Var22", "Var23", "Var24", "Var25", "Var26", "Var27", "Var28", "Var29", "Var30", "Var31", "Var32", "Var33", "Var34", "Var35", "Var36", "Var37", "Var38", "Var39"]; + opts.SelectedVariableNames = ["YY", "MM", "DD", "hh", "mm", "WDIR", "WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP", "WTMP", "DEWP", "VIS", "PTDY", "TIDE"]; + opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "double", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string"]; + opts = setvaropts(opts, [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], "WhitespaceRule", "preserve"); + opts = setvaropts(opts, 15, "TrimNonNumeric", true); + opts = setvaropts(opts, 15, "ThousandsSeparator", ","); + opts = setvaropts(opts, [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], "EmptyFieldRule", "auto"); + opts.ExtraColumnsRule = "ignore"; + opts.EmptyLineRule = "read"; + opts.ConsecutiveDelimitersRule = "join"; + opts.LeadingDelimitersRule = "ignore"; + + else + url = ['https://www.ndbc.noaa.gov/data/realtime2/' num2str(stations{Stat}) '.txt']; + websave('NDBCdata.txt',url); + + opts = delimitedTextImportOptions("NumVariables", 52); + + % Specify range and delimiter + opts.DataLines = [3, Inf]; + opts.Delimiter = " "; + + % Specify column names and types + opts.VariableNames = ["YY", "MM", "DD", "hh", "mm", "WDIR", "WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP", "WTMP", "DEWP", "VIS", "PTDY", "TIDE", "Var20", "Var21", "Var22", "Var23", "Var24", "Var25", "Var26", "Var27", "Var28", "Var29", "Var30", "Var31", "Var32", "Var33", "Var34", "Var35", "Var36", "Var37", "Var38", "Var39", "Var40", "Var41", "Var42", "Var43", "Var44", "Var45", "Var46", "Var47", "Var48", "Var49", "Var50", "Var51", "Var52"]; + opts.SelectedVariableNames = ["YY", "MM", "DD", "hh", "mm", "WDIR", "WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP", "WTMP", "DEWP", "VIS", "PTDY", "TIDE"]; + opts.VariableTypes = ["double", "double", "double", "double", "double", "categorical", "categorical", "categorical", "double", "double", "double", "double", "categorical", "categorical", "double", "double", "categorical", "categorical", "categorical", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string"]; + opts = setvaropts(opts, [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], "WhitespaceRule", "preserve"); + opts = setvaropts(opts, [9, 10, 11, 12, 15], "TrimNonNumeric", true); + opts = setvaropts(opts, [9, 10, 11, 12, 15], "ThousandsSeparator", ","); + opts = setvaropts(opts, [6, 7, 8, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], "EmptyFieldRule", "auto"); + opts.ExtraColumnsRule = "ignore"; + opts.EmptyLineRule = "read"; + opts.ConsecutiveDelimitersRule = "join"; + opts.LeadingDelimitersRule = "ignore"; + + end + + % Import the data + waveIN = readtable("NDBCdata.txt", opts); + waveNAN = isnan(waveIN.WVHT)==0; + % Hs + statWave(:,1,Stat) = interp1(datetime(waveIN.YY(waveNAN),(waveIN.MM(waveNAN)),(waveIN.DD(waveNAN)),... + (waveIN.hh(waveNAN)),(waveIN.mm(waveNAN)),zeros(length(waveIN.YY(waveNAN)),1)),... + (waveIN.WVHT(waveNAN)),dateStartM:minutes(15):dateEndM); + % DPD + % statWave(:,2,Stat) = interp1(datetime(waveIN.YY(waveNAN),(waveIN.MM(waveNAN)),(waveIN.DD(waveNAN)),... + % (waveIN.hh(waveNAN)),(waveIN.mm(waveNAN)),zeros(length(waveIN.YY(waveNAN)),1)),... + % (waveIN.DPD(waveNAN)),dateStartM:minutes(10):dateEndM); + % APD + statWave(:,3,Stat) = interp1(datetime(waveIN.YY(waveNAN),(waveIN.MM(waveNAN)),(waveIN.DD(waveNAN)),... + (waveIN.hh(waveNAN)),(waveIN.mm(waveNAN)),zeros(length(waveIN.YY(waveNAN)),1)),... + (waveIN.APD(waveNAN)),dateStartM:minutes(15):dateEndM); + %MWD + statWave(:,4,Stat) = interp1(datetime(waveIN.YY(waveNAN),(waveIN.MM(waveNAN)),(waveIN.DD(waveNAN)),... + (waveIN.hh(waveNAN)),(waveIN.mm(waveNAN)),zeros(length(waveIN.YY(waveNAN)),1)),... + (waveIN.MWD(waveNAN)),dateStartM:minutes(15):dateEndM); + clear waveIN opts + catch err + %open file + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + %fprintf(fid,'Line %d on %s : %s\n',err.stack.line,datestr(masterTime),err.message); + %sendmail('alexander.rey@queensu.ca',['Ext-DUNEX-RT: ' datestr(masterTime) err.message]); + + % close file + fclose(fid) + statWave(:,:,Stat) = zeros(size(dateStartM:minutes(15):dateEndM,2),4,1); + end + end + statWave(isnan(statWave))=0; + %% Import Model Waves + + for i = 1:49 + startRow = 8; + formatSpec = '%13f%14f%14f%14f%14f%14f%14f%14f%14f%14f%14f%14f%f%[^\n\r]'; + + fileID = fopen(['Sept7.loct00000' num2str(i,'%02d') '.tab'],'r'); + + % This call is based on the structure of the file used to generate this + % code. If an error occurs for a different file, try regenerating the code + % from the Import Tool. + dataArray = textscan(fileID, formatSpec, 'Delimiter', '', 'WhiteSpace', '', 'TextType', 'string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine', '\r\n'); + + fclose(fileID); + modelWaveIN= table(dataArray{1:end-1}, 'VariableNames', {'Xp','Yp','Depth','Hsig','Dir','RTpea','kTm01','Dspr','Ubot','XWindv','YWindv','XVel','YVel'}); + + modelWave(:,1,i) = modelWaveIN.Hsig; + modelWave(:,3,i) = modelWaveIN.RTpea; + modelWave(:,4,i) = modelWaveIN.Dir; + + + clearvars filename startRow formatSpec fileID dataArray ans modelWaveIN; + + end + + %% Import Model WL + modelWL = modelWaterHist.Val; + modelCur = sqrt(modelCurHist.XComp.^2+modelCurHist.YComp.^2); + + for idx = 1:size(modelWL,2) + modelWLInter(:,idx) = interp1(modelWaterHist.Time,modelWL(:,idx),datenum(masterTime:minutes(15):masterTime+hours(48))); + end + for idx = 1:size(modelCur,2) + modelCurInter(:,idx) = sqrt(interp1(modelCurHist.Time,modelCurHist.XComp(:,idx),datenum(masterTime:minutes(15):masterTime+hours(48))).^2+... + interp1(modelCurHist.Time,modelCurHist.YComp(:,idx),datenum(masterTime:minutes(15):masterTime+hours(48))).^2); + end + + save(['ModelOut_' datestr(masterTime,'dd-mmm-yyyy_HH') 'Z.mat'],'modelWL','modelWave','statWL','statWave','modelCur','statCur','modelWLInter','modelCurInter','-v7.3'); + + %% Import Historic Model WL + if masterTime>=datetime(2021,07,08) + try + H12 = load(['ModelOut_' datestr(masterTime-hours(12),'dd-mmm-yyyy_HH') 'Z.mat']); + catch + end + try + H24 = load(['ModelOut_' datestr(masterTime-hours(24),'dd-mmm-yyyy_HH') 'Z.mat']); + catch + end + try + H48 = load(['ModelOut_' datestr(masterTime-hours(48),'dd-mmm-yyyy_HH') 'Z.mat']); + catch + end + end + %% Save html for Currents + googleDates = days(masterTime-hours(48)+minutes((0:384)*15)-datetime(1899,12,30,00,00,00)); +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1763350398',[2,1],googleDates') + googleDatesCell(2:length(googleDates)+1) = num2cell(googleDates); + googleDatesCell{1} = 'Time'; + locLine = 1:5:67; + locationsWave ={'FRF 11 m AWAC '}; + +% % for i = 1:433 +% % for j = 1:100 +% % modelDavDel(i,j)={''}; +% % end +% % end +% % mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1763350398',[2,2],modelDavDel) + + davIDX=[17 161:172]; + + clear modelCurPlot curValLoc + for Loc = 1:13 + for Line=1:5 + switch Line + case 1 + curValLoc{Line} = ['Forecast']; + if exist('modelCur','var') ==0 + modelCurPlot(1:385,locLine(Loc)+0) = num2cell(zeros(385,1)); + continue + end + modelCurPlot(1:192,locLine(Loc)+0) = {''}; + modelCurPlot(193:1:385,locLine(Loc)+0) = num2cell(modelCurInter(:,davIDX(Loc))); + case 2 + curValLoc{Line} = ['-12 Hour: ' datestr(masterTime-hours(12),'mm/dd HH') 'Z Run']; + if exist('H12','var') ==0 + modelCurPlot(1:385,locLine(Loc)+1) = num2cell(zeros(385,1)); + continue + end + modelCurPlot(1:143,locLine(Loc)+1) = {''}; + modelCurPlot(337:385,locLine(Loc)+1) = {''}; + modelCurPlot(144:1:336,locLine(Loc)+1) = num2cell(H12.modelCurInter(:,davIDX(Loc))); + + case 3 + curValLoc{Line} = ['-24 Hour: ' datestr(masterTime-hours(24),'mm/dd HH') 'Z Run']; + if exist('H24','var') ==0 + modelCurPlot(1:385,locLine(Loc)+2) = num2cell(zeros(385,1)); + continue + end + modelCurPlot(1:96,locLine(Loc)+2) = {''}; + modelCurPlot(290:385,locLine(Loc)+2) = {''}; + modelCurPlot(97:1:289,locLine(Loc)+2) = num2cell(H24.modelCurInter(:,davIDX(Loc))); + + case 4 + curValLoc{Line} = ['-48 Hour: ' datestr(masterTime-hours(48),'mm/dd HH') 'Z Run']; + if exist('H48','var') ==0 + modelCurPlot(1:385,locLine(Loc)+3) = num2cell(zeros(385,1)); + continue + end + modelCurPlot(194:385,locLine(Loc)+3) = {''}; + modelCurPlot(1:1:193,locLine(Loc)+3) = num2cell(H48.modelCurInter(:,davIDX(Loc))); + case 5 + curValLoc{Line} = ['Observed Velocity']; + if Loc> 1 || isnan(statCur(1,Loc)) + modelCurPlot(1:385,locLine(Loc)+4) = num2cell(zeros(385,1)); + continue + end + modelCurPlot(214:385,locLine(Loc)+4) = {''}; + modelCurPlot(1:213,locLine(Loc)+4) = num2cell(statCur); + + end + + end + end + +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1763350398',... +% [1,locLine(Loc)],modelCurPlot) +% +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1763350398',... +% [1,locLine(Loc)],curValLoc) + curValLoc = repmat(curValLoc,1,Loc); + + mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1763350398',... + [1,1],horzcat(googleDatesCell',vertcat(curValLoc(1:size(modelCurPlot,2)),modelCurPlot))) + %% Save html for WL + googleDates = days(masterTime-hours(48)+minutes((0:384)*15)-datetime(1899,12,30,00,00,00)); +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1102090436',[2,1],googleDates') + googleDatesCell(2:length(googleDates)+1) = num2cell(googleDates); + googleDatesCell{1} = 'Time'; + + clear wlValLoc + +% locLine = [2 7 12 17 22 27]; +% locLine = [2 9 16 23 30 37]; +% locLine = 1:7:114; + locLine = 1:7:156; % Hohonu locations + + locationsWl ={'FRF Pier',... + 'Oregon Inlet',... + 'Hatteras',... + 'Beaufort'}; + +% % for i = 1:433 +% % for j = 1:121 +% % modelWlDel(i,j)={''}; +% % end +% % end +% % mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1102090436',[2,2],modelWlDel) + + wLIDX=[6 7 8 38 161:172 181:186]; + clear modelWlPlot wlValLoc + for Loc = 1:length(wLIDX) +% modelwlPlot = cell(432,4); + for Line=[1:5 6 9] + switch Line + case 1 + wlValLoc{Line} = ['Forecast']; + if exist('modelCur','var') ==0 + modelwlPlot(1:385,locLine(Loc)+0) = num2cell(zeros(385,1)); + continue + end + modelwlPlot(1:192,locLine(Loc)+0) = {''}; + modelwlPlot(193:1:385,locLine(Loc)+0) = num2cell(modelWLInter(:,wLIDX(Loc))); + case 2 + wlValLoc{Line} = ['-12 Hour: ' datestr(masterTime-hours(12),'mm/dd HH') 'Z Run']; + if exist('H12','var') ==0 + modelwlPlot(1:385,locLine(Loc)+1) = num2cell(zeros(385,1)); + continue + end + modelwlPlot(1:143,locLine(Loc)+1) = {''}; + modelwlPlot(337:385,locLine(Loc)+1) = {''}; + modelwlPlot(144:1:336,locLine(Loc)+1) = num2cell(H12.modelWLInter(:,wLIDX(Loc))); + + case 3 + wlValLoc{Line} = ['-24 Hour: ' datestr(masterTime-hours(24),'mm/dd HH') 'Z Run']; + if exist('H24','var') ==0 + modelwlPlot(1:385,locLine(Loc)+2) = num2cell(zeros(385,1)); + continue + end + modelwlPlot(1:96,locLine(Loc)+2) = {''}; + modelwlPlot(290:385,locLine(Loc)+2) = {''}; + modelwlPlot(97:1:289,locLine(Loc)+2) = num2cell(H24.modelWLInter(:,wLIDX(Loc))); + + case 4 + wlValLoc{Line} = ['-48 Hour: ' datestr(masterTime-hours(48),'mm/dd HH') 'Z Run']; + if exist('H48','var') ==0 + modelwlPlot(1:385,locLine(Loc)+3) = num2cell(zeros(385,1)); + continue + end + modelwlPlot(194:385,locLine(Loc)+3) = {''}; + modelwlPlot(1:1:193,locLine(Loc)+3) = num2cell(H48.modelWLInter(:,wLIDX(Loc))); + case 5 + wlValLoc{Line} = ['Observed Water Level']; + modelwlPlot(214:385,locLine(Loc)+4) = {''}; + if Loc <5 + if isnan(statWL(1,Loc)) + modelwlPlot(1:385,locLine(Loc)+4) = num2cell(zeros(385,1)); + else + modelwlPlot(1:213,locLine(Loc)+4) = num2cell(statWL(:,Loc)); + end + elseif Loc>=17 % Hohonu starts at 17 + if isnan(statWL(1,Loc-12)) %-12 to get to Hohonu IDX + modelwlPlot(1:385,locLine(Loc)+4) = num2cell(zeros(385,1)); + else + modelwlPlot(1:213,locLine(Loc)+4) = num2cell(statWL(:,Loc-12)); + end + else + modelwlPlot(1:385,locLine(Loc)+4) = num2cell(zeros(385,1)); + end + case 6 + wlValLoc{Line} = ['ESTOFS Forecast']; +% % if Loc>4 || ESTOFS_Val{1} == 0 + modelwlPlot(1:385,locLine(Loc)+5) = num2cell(zeros(385,1)); +% % continue +% % end +% % modelwlPlot(1:192,locLine(Loc)+5) = {''}; +% % modelwlPlot(193:385,locLine(Loc)+5) = num2cell(waterLevelsESTOFSINTER{1}(:,Loc)); + case 9 + wlValLoc{7} = ['-48 Hour ESTOFS']; +% if Loc>4 || ESTOFS_Val{4} == 0 + modelwlPlot(1:385,locLine(Loc)+6) = num2cell(zeros(385,1)); +% % continue +% % end +% % modelwlPlot(1:1:385,locLine(Loc)+6) = num2cell(waterLevelsESTOFSINTER{4}(:,Loc)); + end + end + disp(Loc) + + end + +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1102090436',... +% [2,locLine(Loc)],modelwlPlot) +% +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1102090436',... +% [1,locLine(Loc)],wlValLoc) + + wlValLoc = repmat(wlValLoc,1,Loc); + + mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','1102090436',... + [1,1],horzcat(googleDatesCell',vertcat(wlValLoc(1:size(modelwlPlot,2)),modelwlPlot))) + + %% Save html for Waves + googleDates = days(masterTime-hours(48)+minutes((0:384)*15)-datetime(1899,12,30,00,00,00)); + googleDatesCell(2:length(googleDates)+1) = num2cell(googleDates); + googleDatesCell{1} = 'Time'; + +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','319734265',[2,1],googleDates') + +% locLine = [2 7 12 17 22 27]; + locLine = 1:5:114; + + locationsWave ={'Virginia Beach',... + 'FRF 26 m',... + 'Nags Head',... + 'Oregon Inlet',... + 'Diamond Shoals'}; + + clear waveValLoc modelwavePlot + + for i = 1:385 + for j = 1:85 + modelwavePlot(i,j)={''}; + end + end +% % mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','319734265',[2,2],modelWaveDel) + + waveIDX = [12 13 14 15 16 161:172]; + for Loc = 1:length(waveIDX) +% modelwavePlot = cell(432,5); + for Line=1:5 + switch Line + case 1 + waveValLoc{Line} = ['Forecast']; + if exist('modelWave','var') ==0 + modelwavePlot(1:385,locLine(Loc)+0) = num2cell(zeros(433,1)); + continue + end + modelwavePlot(1:191,locLine(Loc)+0) = {''}; + modelwavePlot(192,locLine(Loc)+0) = {0}; + modelwavePlot(193:4:385,locLine(Loc)+0) = num2cell(modelWave(waveIDX(Loc),1,:)); + case 2 + waveValLoc{Line} = ['-12 Hour: ' datestr(masterTime-hours(12),'mm/dd HH') 'Z Run']; + if exist('H12','var') ==0 || size(H12.modelWave,1)5 || isnan(statWave(1,1,Loc)) + modelwavePlot(1:385,locLine(Loc)+4) = num2cell(zeros(385,1)); + continue + end + modelwavePlot(215:385,locLine(Loc)+4) = {''}; + modelwavePlot(214,locLine(Loc)+4) = {0}; + modelwavePlot(1:1:213,locLine(Loc)+4) = num2cell(statWave(:,1,Loc)); + + end + + end +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','319734265',... +% [2,locLine(Loc)],modelwavePlot) +% +% mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','319734265',... +% [1,locLine(Loc)],waveValLoc) + end + + waveValLoc = repmat(waveValLoc,1,Loc); + + mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','319734265',... + [1,1],horzcat(googleDatesCell',vertcat(waveValLoc(1:size(modelwavePlot,2)),modelwavePlot))) + + + + + %% Import and modify times +% modelHour = [0 3 6 12 24 48]; + modelHour = [0 6 12 24 36 48]; + for i = 1:6 + dateText(i) = {[datestr(masterTime+hours(modelHour(i)),'mmm dd, HH:MM') ' UTC (Hour '... + num2str(modelHour(i),'%d') ')']}; + end + mat2sheets('1K6toMh7L8nL3rtoPLJxD1Ebfqaty0wkPJSUGXNAbhoU','0',[1,1],... + dateText) + +catch err + %open file + fid = fopen('errorFile.log','a+'); + % write the error to file + % first line: message + fprintf(fid,'Line %d on %s : %s\n',err.stack.line,datestr(masterTime),err.message); + sendmail('alexander.rey@queensu.ca',['ALL-DUNEX-RT: ' datestr(masterTime) err.message]) ; + + % close file + fclose(fid) + +end + +%% +quit + + + + + + + + + + + + + + + + diff --git a/NDBCdata.txt b/NDBCdata.txt index a01d496..b12117d 100644 --- a/NDBCdata.txt +++ b/NDBCdata.txt @@ -1,715 +1,721 @@ #YY MM DD hh mm WDIR WSPD GST WVHT DPD APD MWD PRES ATMP WTMP DEWP VIS PTDY TIDE #yr mo dy hr mn degT m/s m/s m sec sec degT hPa degC degC degC nmi hPa ft -2022 05 31 00 40 140 4.0 5.0 MM MM MM MM 1020.0 MM 25.4 MM MM MM MM -2022 05 31 00 30 140 4.0 5.0 MM MM MM MM 1020.1 MM 25.5 MM MM MM MM -2022 05 31 00 20 140 4.0 5.0 MM MM MM MM 1020.1 MM 25.5 MM MM MM MM -2022 05 31 00 10 140 5.0 6.0 MM MM MM MM 1020.0 MM 25.6 MM MM MM MM -2022 05 31 00 00 140 5.0 6.0 MM MM MM MM 1020.0 MM MM MM MM MM MM -2022 05 30 23 50 140 5.0 6.0 MM MM MM MM 1020.2 MM 25.6 MM MM MM MM -2022 05 30 23 40 140 5.0 6.0 MM MM MM MM 1020.1 MM 25.7 MM MM MM MM -2022 05 30 23 20 140 5.0 6.0 MM MM MM MM 1020.0 MM 25.9 MM MM MM MM -2022 05 30 23 10 140 5.0 6.0 MM MM MM MM 1020.0 MM 25.9 MM MM MM MM -2022 05 30 23 00 140 5.0 6.0 MM MM MM MM 1020.0 MM 26.0 MM MM MM MM -2022 05 30 22 50 130 5.0 6.0 MM MM MM MM 1020.0 MM 26.0 MM MM MM MM -2022 05 30 22 40 130 5.0 6.0 MM MM MM MM 1020.0 MM 26.0 MM MM MM MM -2022 05 30 22 30 130 5.0 6.0 MM MM MM MM 1020.0 MM 26.0 MM MM MM MM -2022 05 30 22 20 130 5.0 6.0 MM MM MM MM 1020.0 MM 26.1 MM MM MM MM -2022 05 30 22 10 130 5.0 6.0 MM MM MM MM 1020.0 MM 26.0 MM MM MM MM -2022 05 30 22 00 130 5.0 6.0 MM MM MM MM 1020.0 MM MM MM MM -0.6 MM -2022 05 30 21 50 130 4.0 6.0 MM MM MM MM 1020.0 MM 25.9 MM MM MM MM -2022 05 30 21 40 140 4.0 5.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 21 30 140 4.0 5.0 MM MM MM MM 1020.2 MM 25.9 MM MM MM MM -2022 05 30 21 20 140 5.0 5.0 MM MM MM MM 1020.3 MM 26.0 MM MM MM MM -2022 05 30 21 10 140 5.0 6.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 21 00 130 5.0 6.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 20 50 130 4.0 5.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 20 40 130 4.0 5.0 MM MM MM MM 1020.2 MM 26.1 MM MM MM MM -2022 05 30 20 30 130 4.0 5.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 20 20 120 4.0 5.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 20 10 120 4.0 5.0 MM MM MM MM 1020.2 MM 26.0 MM MM MM MM -2022 05 30 20 00 120 4.0 5.0 MM MM MM MM 1020.2 MM 26.0 MM MM -1.1 MM -2022 05 30 19 50 110 4.0 5.0 MM MM MM MM 1020.3 MM 26.1 MM MM MM MM -2022 05 30 19 40 110 4.0 4.0 MM MM MM MM 1020.4 MM 25.7 MM MM MM MM -2022 05 30 19 30 110 4.0 5.0 MM MM MM MM 1020.6 MM 25.8 MM MM MM MM -2022 05 30 19 20 110 4.0 5.0 MM MM MM MM 1020.6 MM 25.8 MM MM MM MM -2022 05 30 19 10 110 4.0 5.0 MM MM MM MM 1020.6 MM 26.0 MM MM MM MM -2022 05 30 19 00 100 4.0 5.0 MM MM MM MM 1020.6 MM MM MM MM MM MM -2022 05 30 18 50 110 3.0 4.0 MM MM MM MM 1020.7 MM 25.9 MM MM MM MM -2022 05 30 18 40 110 4.0 4.0 MM MM MM MM 1020.7 MM 26.0 MM MM MM MM -2022 05 30 18 30 100 4.0 5.0 MM MM MM MM 1020.8 MM 26.0 MM MM MM MM -2022 05 30 18 20 100 4.0 5.0 MM MM MM MM 1020.9 MM 25.9 MM MM MM MM -2022 05 30 18 10 90 3.0 4.0 MM MM MM MM 1020.8 MM 25.9 MM MM MM MM -2022 05 30 18 00 80 3.0 4.0 MM MM MM MM 1021.0 MM 26.0 MM MM -0.5 MM -2022 05 30 17 50 90 4.0 5.0 MM MM MM MM 1021.1 MM 26.0 MM MM MM MM -2022 05 30 17 40 90 4.0 5.0 MM MM MM MM 1021.1 MM 25.9 MM MM MM MM -2022 05 30 17 30 100 4.0 5.0 MM MM MM MM 1021.0 MM 26.0 MM MM MM MM -2022 05 30 17 20 90 3.0 4.0 MM MM MM MM 1021.1 MM 25.8 MM MM MM MM -2022 05 30 17 10 80 3.0 4.0 MM MM MM MM 1021.2 MM 25.8 MM MM MM MM -2022 05 30 17 00 80 3.0 4.0 MM MM MM MM 1021.3 MM 25.7 MM MM MM MM -2022 05 30 16 50 80 3.0 4.0 MM MM MM MM 1021.3 MM 25.5 MM MM MM MM -2022 05 30 16 40 80 3.0 4.0 MM MM MM MM 1021.3 MM 25.7 MM MM MM MM -2022 05 30 16 30 70 3.0 4.0 MM MM MM MM 1021.3 MM 25.7 MM MM MM MM -2022 05 30 16 20 70 3.0 4.0 MM MM MM MM 1021.4 MM 25.6 MM MM MM MM -2022 05 30 16 10 70 3.0 4.0 MM MM MM MM 1021.4 MM 25.6 MM MM MM MM -2022 05 30 16 00 70 3.0 4.0 MM MM MM MM 1021.4 MM MM MM MM MM MM -2022 05 30 15 50 70 3.0 4.0 MM MM MM MM 1021.5 MM 25.7 MM MM MM MM -2022 05 30 15 40 70 3.0 3.0 MM MM MM MM 1021.5 MM 25.7 MM MM MM MM -2022 05 30 15 30 70 3.0 3.0 MM MM MM MM 1021.5 MM 25.6 MM MM MM MM -2022 05 30 15 20 70 3.0 3.0 MM MM MM MM 1021.5 MM 25.7 MM MM MM MM -2022 05 30 15 10 70 3.0 3.0 MM MM MM MM 1021.5 MM 25.6 MM MM MM MM -2022 05 30 15 00 60 3.0 3.0 MM MM MM MM 1021.5 MM MM MM MM MM MM -2022 05 30 14 50 60 3.0 3.0 MM MM MM MM 1021.5 MM 25.6 MM MM MM MM -2022 05 30 14 40 60 3.0 3.0 MM MM MM MM 1021.4 MM 25.6 MM MM MM MM -2022 05 30 14 30 50 3.0 3.0 MM MM MM MM 1021.5 MM 25.6 MM MM MM MM -2022 05 30 14 20 60 3.0 3.0 MM MM MM MM 1021.5 MM 25.5 MM MM MM MM -2022 05 30 14 10 60 3.0 3.0 MM MM MM MM 1021.5 MM 25.6 MM MM MM MM -2022 05 30 14 00 60 2.0 3.0 MM MM MM MM 1021.4 MM MM MM MM MM MM -2022 05 30 13 50 60 2.0 3.0 MM MM MM MM 1021.4 MM 25.6 MM MM MM MM -2022 05 30 13 40 70 2.0 3.0 MM MM MM MM 1021.5 MM 25.5 MM MM MM MM -2022 05 30 13 30 70 2.0 3.0 MM MM MM MM 1021.4 MM 25.5 MM MM MM MM -2022 05 30 13 20 80 2.0 3.0 MM MM MM MM 1021.4 MM 25.5 MM MM MM MM -2022 05 30 13 10 90 2.0 3.0 MM MM MM MM 1021.4 MM 25.5 MM MM MM MM -2022 05 30 13 00 80 2.0 3.0 MM MM MM MM 1021.3 MM 25.5 MM MM +1.6 MM -2022 05 30 12 50 90 2.0 3.0 MM MM MM MM 1021.2 MM 25.4 MM MM MM MM -2022 05 30 12 40 100 2.0 2.0 MM MM MM MM 1021.2 MM 25.4 MM MM MM MM -2022 05 30 12 30 110 2.0 2.0 MM MM MM MM 1021.1 MM 25.4 MM MM MM MM -2022 05 30 12 20 100 2.0 3.0 MM MM MM MM 1021.0 MM 25.4 MM MM MM MM -2022 05 30 12 10 100 2.0 3.0 MM MM MM MM 1020.9 MM 25.4 MM MM MM MM -2022 05 30 12 00 110 2.0 3.0 MM MM MM MM 1020.8 MM 25.4 MM MM +1.2 MM -2022 05 30 11 50 100 2.0 3.0 MM MM MM MM 1020.8 MM 25.4 MM MM MM MM -2022 05 30 11 40 110 2.0 3.0 MM MM MM MM 1020.7 MM 25.4 MM MM MM MM -2022 05 30 11 30 100 2.0 3.0 MM MM MM MM 1020.5 MM 25.4 MM MM MM MM -2022 05 30 11 20 110 2.0 3.0 MM MM MM MM 1020.5 MM 25.4 MM MM MM MM -2022 05 30 11 10 110 3.0 3.0 MM MM MM MM 1020.3 MM 25.4 MM MM MM MM -2022 05 30 11 00 110 3.0 4.0 MM MM MM MM 1020.3 MM 25.4 MM MM +0.9 MM -2022 05 30 10 50 90 3.0 4.0 MM MM MM MM 1020.2 MM 25.4 MM MM MM MM -2022 05 30 10 40 90 3.0 3.0 MM MM MM MM 1020.2 MM 25.4 MM MM MM MM -2022 05 30 10 30 100 3.0 3.0 MM MM MM MM 1020.1 MM 25.4 MM MM MM MM -2022 05 30 10 20 100 3.0 3.0 MM MM MM MM 1020.0 MM 25.4 MM MM MM MM -2022 05 30 10 10 100 3.0 3.0 MM MM MM MM 1019.8 MM 25.4 MM MM MM MM -2022 05 30 10 00 100 3.0 3.0 MM MM MM MM 1019.7 MM 25.4 MM MM MM MM -2022 05 30 09 50 110 3.0 3.0 MM MM MM MM 1019.7 MM 25.3 MM MM MM MM -2022 05 30 09 40 110 3.0 3.0 MM MM MM MM 1019.6 MM 25.3 MM MM MM MM -2022 05 30 09 30 100 3.0 3.0 MM MM MM MM 1019.5 MM 25.3 MM MM MM MM -2022 05 30 09 20 110 3.0 4.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 09 10 110 3.0 4.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 09 00 110 3.0 4.0 MM MM MM MM 1019.6 MM 25.4 MM MM +0.0 MM -2022 05 30 08 50 110 3.0 4.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 08 40 110 3.0 4.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 08 30 110 3.0 4.0 MM MM MM MM 1019.4 MM 25.4 MM MM MM MM -2022 05 30 08 20 120 3.0 4.0 MM MM MM MM 1019.3 MM 25.4 MM MM MM MM -2022 05 30 08 10 120 3.0 3.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 08 00 110 3.0 3.0 MM MM MM MM 1019.4 MM MM MM MM MM MM -2022 05 30 07 50 110 2.0 3.0 MM MM MM MM 1019.5 MM 25.2 MM MM MM MM -2022 05 30 07 40 120 3.0 3.0 MM MM MM MM 1019.6 MM 25.2 MM MM MM MM -2022 05 30 07 30 120 3.0 3.0 MM MM MM MM 1019.5 MM 25.2 MM MM MM MM -2022 05 30 07 20 120 3.0 4.0 MM MM MM MM 1019.5 MM 25.1 MM MM MM MM -2022 05 30 07 10 120 3.0 4.0 MM MM MM MM 1019.3 MM 25.2 MM MM MM MM -2022 05 30 07 00 130 4.0 4.0 MM MM MM MM 1019.4 MM 25.2 MM MM MM MM -2022 05 30 06 50 120 3.0 4.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 06 40 130 4.0 4.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 06 30 120 4.0 4.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 06 20 120 3.0 4.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 06 10 120 4.0 4.0 MM MM MM MM 1019.4 MM 25.3 MM MM MM MM -2022 05 30 06 00 120 4.0 5.0 MM MM MM MM 1019.4 MM MM MM MM MM MM -2022 05 30 05 50 110 4.0 5.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 05 40 120 4.0 5.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 05 30 120 4.0 5.0 MM MM MM MM 1019.2 MM 25.3 MM MM MM MM -2022 05 30 05 20 120 4.0 5.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 05 10 120 4.0 5.0 MM MM MM MM 1019.3 MM 25.3 MM MM MM MM -2022 05 30 05 00 120 4.0 5.0 MM MM MM MM 1019.4 MM 25.3 MM MM +0.5 MM -2022 05 30 04 50 120 5.0 5.0 MM MM MM MM 1019.5 MM 25.3 MM MM MM MM -2022 05 30 04 40 120 4.0 5.0 MM MM MM MM 1019.5 MM 25.3 MM MM MM MM -2022 05 30 04 30 120 5.0 5.0 MM MM MM MM 1019.5 MM 25.3 MM MM MM MM -2022 05 30 04 20 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 04 10 120 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 04 00 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 03 50 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 03 40 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 03 30 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 03 20 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.4 MM MM MM MM -2022 05 30 03 10 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.5 MM MM MM MM -2022 05 30 03 00 110 4.0 5.0 MM MM MM MM 1019.4 MM 25.5 MM MM MM MM -2022 05 30 02 50 110 4.0 5.0 MM MM MM MM 1019.5 MM 25.5 MM MM MM MM -2022 05 30 02 40 110 4.0 5.0 MM MM MM MM 1019.4 MM 25.5 MM MM MM MM -2022 05 30 02 30 110 4.0 4.0 MM MM MM MM 1019.3 MM 25.5 MM MM MM MM -2022 05 30 02 20 110 4.0 5.0 MM MM MM MM 1019.2 MM 25.5 MM MM MM MM -2022 05 30 02 10 110 4.0 5.0 MM MM MM MM 1019.0 MM 25.6 MM MM MM MM -2022 05 30 02 00 110 4.0 4.0 MM MM MM MM 1018.9 MM 25.6 MM MM MM MM -2022 05 30 01 50 110 4.0 4.0 MM MM MM MM 1018.8 MM 25.6 MM MM MM MM -2022 05 30 01 40 100 3.0 4.0 MM MM MM MM 1018.7 MM 25.7 MM MM MM MM -2022 05 30 01 30 100 3.0 4.0 MM MM MM MM 1018.6 MM 25.8 MM MM MM MM -2022 05 30 01 20 100 3.0 4.0 MM MM MM MM 1018.4 MM 25.8 MM MM MM MM -2022 05 30 01 10 100 3.0 4.0 MM MM MM MM 1018.3 MM 25.9 MM MM MM MM -2022 05 30 01 00 100 3.0 4.0 MM MM MM MM 1018.1 MM 25.8 MM MM +1.3 MM -2022 05 30 00 50 110 3.0 4.0 MM MM MM MM 1018.1 MM 25.9 MM MM MM MM -2022 05 30 00 40 90 2.0 3.0 MM MM MM MM 1018.1 MM 26.0 MM MM MM MM -2022 05 30 00 30 70 3.0 3.0 MM MM MM MM 1018.1 MM 26.0 MM MM MM MM -2022 05 30 00 20 70 3.0 4.0 MM MM MM MM 1018.0 MM 26.0 MM MM MM MM -2022 05 30 00 10 80 3.0 4.0 MM MM MM MM 1017.8 MM 26.0 MM MM MM MM -2022 05 30 00 00 80 3.0 4.0 MM MM MM MM 1017.8 MM 26.0 MM MM MM MM -2022 05 29 23 50 80 3.0 4.0 MM MM MM MM 1017.7 MM 25.8 MM MM MM MM -2022 05 29 23 40 80 3.0 4.0 MM MM MM MM 1017.7 MM 25.9 MM MM MM MM -2022 05 29 23 20 80 2.0 3.0 MM MM MM MM 1017.5 MM 25.9 MM MM MM MM -2022 05 29 23 10 80 2.0 3.0 MM MM MM MM 1017.4 MM 25.9 MM MM MM MM -2022 05 29 23 00 70 2.0 3.0 MM MM MM MM 1017.2 MM 25.8 MM MM MM MM -2022 05 29 22 50 60 2.0 4.0 MM MM MM MM 1017.2 MM 25.9 MM MM MM MM -2022 05 29 22 40 40 3.0 5.0 MM MM MM MM 1017.0 MM 25.7 MM MM MM MM -2022 05 29 22 30 50 3.0 5.0 MM MM MM MM 1016.9 MM 25.9 MM MM MM MM -2022 05 29 22 20 30 3.0 5.0 MM MM MM MM 1016.9 MM 26.2 MM MM MM MM -2022 05 29 22 10 30 4.0 6.0 MM MM MM MM 1016.8 MM 26.0 MM MM MM MM -2022 05 29 22 00 30 4.0 5.0 MM MM MM MM 1016.8 MM MM MM MM MM MM -2022 05 29 21 50 30 4.0 5.0 MM MM MM MM 1016.9 MM 25.8 MM MM MM MM -2022 05 29 21 40 30 4.0 5.0 MM MM MM MM 1017.0 MM 25.9 MM MM MM MM -2022 05 29 21 30 30 4.0 4.0 MM MM MM MM 1017.1 MM 26.2 MM MM MM MM -2022 05 29 21 20 20 4.0 5.0 MM MM MM MM 1017.1 MM 25.8 MM MM MM MM -2022 05 29 21 10 30 4.0 5.0 MM MM MM MM 1017.1 MM 26.0 MM MM MM MM -2022 05 29 21 00 20 4.0 5.0 MM MM MM MM 1017.1 MM 25.8 MM MM -1.4 MM -2022 05 29 20 50 20 4.0 5.0 MM MM MM MM 1017.3 MM 25.8 MM MM MM MM -2022 05 29 20 40 30 4.0 5.0 MM MM MM MM 1017.2 MM 25.6 MM MM MM MM -2022 05 29 20 30 30 3.0 5.0 MM MM MM MM 1017.3 MM 25.8 MM MM MM MM -2022 05 29 20 20 40 3.0 5.0 MM MM MM MM 1017.4 MM 25.6 MM MM MM MM -2022 05 29 20 10 30 4.0 5.0 MM MM MM MM 1017.6 MM 26.0 MM MM MM MM -2022 05 29 20 00 40 3.0 5.0 MM MM MM MM 1017.6 MM 25.7 MM MM MM MM -2022 05 29 19 50 60 2.0 4.0 MM MM MM MM 1018.0 MM 25.7 MM MM MM MM -2022 05 29 19 40 130 1.0 2.0 MM MM MM MM 1018.0 MM 25.6 MM MM MM MM -2022 05 29 19 30 140 1.0 2.0 MM MM MM MM 1018.1 MM 25.5 MM MM MM MM -2022 05 29 19 20 150 2.0 2.0 MM MM MM MM 1018.1 MM 25.4 MM MM MM MM -2022 05 29 19 10 140 2.0 2.0 MM MM MM MM 1018.2 MM 25.6 MM MM MM MM -2022 05 29 19 00 140 2.0 3.0 MM MM MM MM 1018.4 MM MM MM MM +0.0 MM -2022 05 29 18 50 150 2.0 3.0 MM MM MM MM 1018.3 MM 25.4 MM MM MM MM -2022 05 29 18 40 150 2.0 3.0 MM MM MM MM 1018.3 MM 25.4 MM MM MM MM -2022 05 29 18 30 140 2.0 3.0 MM MM MM MM 1018.3 MM 25.4 MM MM MM MM -2022 05 29 18 20 140 2.0 3.0 MM MM MM MM 1018.5 MM 25.4 MM MM MM MM -2022 05 29 18 10 130 2.0 3.0 MM MM MM MM 1018.5 MM 25.6 MM MM MM MM -2022 05 29 18 00 130 2.0 3.0 MM MM MM MM 1018.5 MM 25.4 MM MM +0.6 MM -2022 05 29 17 50 120 2.0 2.0 MM MM MM MM 1018.6 MM 25.4 MM MM MM MM -2022 05 29 17 40 120 2.0 3.0 MM MM MM MM 1018.6 MM 25.4 MM MM MM MM -2022 05 29 17 30 120 2.0 3.0 MM MM MM MM 1018.5 MM 25.2 MM MM MM MM -2022 05 29 17 20 120 3.0 3.0 MM MM MM MM 1018.4 MM 25.4 MM MM MM MM -2022 05 29 17 10 120 2.0 3.0 MM MM MM MM 1018.3 MM 25.2 MM MM MM MM -2022 05 29 17 00 140 3.0 4.0 MM MM MM MM 1018.3 MM MM MM MM MM MM -2022 05 29 16 50 130 4.0 4.0 MM MM MM MM 1018.3 MM 25.2 MM MM MM MM -2022 05 29 16 40 130 4.0 4.0 MM MM MM MM 1018.3 MM 25.4 MM MM MM MM -2022 05 29 16 30 130 4.0 4.0 MM MM MM MM 1018.3 MM 25.4 MM MM MM MM -2022 05 29 16 20 120 3.0 4.0 MM MM MM MM 1018.4 MM 25.2 MM MM MM MM -2022 05 29 16 10 120 4.0 4.0 MM MM MM MM 1018.3 MM 25.2 MM MM MM MM -2022 05 29 16 00 100 3.0 4.0 MM MM MM MM 1018.2 MM 25.2 MM MM +1.2 MM -2022 05 29 15 50 90 2.0 3.0 MM MM MM MM 1018.2 MM 25.1 MM MM MM MM -2022 05 29 15 40 80 3.0 3.0 MM MM MM MM 1018.2 MM 25.1 MM MM MM MM -2022 05 29 15 30 90 3.0 4.0 MM MM MM MM 1018.1 MM 25.2 MM MM MM MM -2022 05 29 15 20 90 3.0 3.0 MM MM MM MM 1018.1 MM 25.0 MM MM MM MM -2022 05 29 15 10 80 3.0 4.0 MM MM MM MM 1018.0 MM 25.0 MM MM MM MM -2022 05 29 15 00 80 3.0 4.0 MM MM MM MM 1017.9 MM 25.0 MM MM +1.6 MM -2022 05 29 14 50 70 3.0 4.0 MM MM MM MM 1017.8 MM 25.0 MM MM MM MM -2022 05 29 14 40 70 3.0 4.0 MM MM MM MM 1017.8 MM 24.9 MM MM MM MM -2022 05 29 14 30 70 4.0 4.0 MM MM MM MM 1017.8 MM 24.9 MM MM MM MM -2022 05 29 14 20 70 3.0 4.0 MM MM MM MM 1017.8 MM 24.9 MM MM MM MM -2022 05 29 14 10 70 4.0 4.0 MM MM MM MM 1017.7 MM 24.9 MM MM MM MM -2022 05 29 14 00 70 4.0 4.0 MM MM MM MM 1017.6 MM 24.8 MM MM MM MM -2022 05 29 13 50 70 3.0 4.0 MM MM MM MM 1017.7 MM 24.8 MM MM MM MM -2022 05 29 13 40 50 3.0 4.0 MM MM MM MM 1017.5 MM 24.8 MM MM MM MM -2022 05 29 13 30 50 3.0 4.0 MM MM MM MM 1017.5 MM 24.8 MM MM MM MM -2022 05 29 13 20 40 3.0 4.0 MM MM MM MM 1017.3 MM 24.7 MM MM MM MM -2022 05 29 13 10 50 3.0 4.0 MM MM MM MM 1017.2 MM 24.7 MM MM MM MM -2022 05 29 13 00 50 3.0 4.0 MM MM MM MM 1017.0 MM 24.7 MM MM +1.8 MM -2022 05 29 12 50 40 3.0 4.0 MM MM MM MM 1017.0 MM 24.7 MM MM MM MM -2022 05 29 12 40 40 3.0 4.0 MM MM MM MM 1016.8 MM 24.7 MM MM MM MM -2022 05 29 12 30 40 3.0 4.0 MM MM MM MM 1016.7 MM 24.6 MM MM MM MM -2022 05 29 12 20 50 3.0 4.0 MM MM MM MM 1016.7 MM 24.6 MM MM MM MM -2022 05 29 12 10 50 3.0 4.0 MM MM MM MM 1016.5 MM 24.6 MM MM MM MM -2022 05 29 12 00 50 3.0 4.0 MM MM MM MM 1016.3 MM MM MM MM MM MM -2022 05 29 11 50 50 3.0 4.0 MM MM MM MM 1016.1 MM 24.6 MM MM MM MM -2022 05 29 11 40 60 3.0 4.0 MM MM MM MM 1016.1 MM 24.6 MM MM MM MM -2022 05 29 11 30 50 3.0 4.0 MM MM MM MM 1015.9 MM 24.6 MM MM MM MM -2022 05 29 11 20 50 3.0 4.0 MM MM MM MM 1015.8 MM 24.6 MM MM MM MM -2022 05 29 11 10 50 3.0 4.0 MM MM MM MM 1015.8 MM 24.5 MM MM MM MM -2022 05 29 11 00 50 3.0 4.0 MM MM MM MM 1015.7 MM MM MM MM MM MM -2022 05 29 10 50 50 3.0 4.0 MM MM MM MM 1015.5 MM 24.5 MM MM MM MM -2022 05 29 10 40 60 3.0 4.0 MM MM MM MM 1015.4 MM 24.5 MM MM MM MM -2022 05 29 10 30 60 3.0 3.0 MM MM MM MM 1015.3 MM 24.5 MM MM MM MM -2022 05 29 10 20 70 3.0 3.0 MM MM MM MM 1015.3 MM 24.5 MM MM MM MM -2022 05 29 10 10 60 2.0 3.0 MM MM MM MM 1015.3 MM 24.4 MM MM MM MM -2022 05 29 10 00 40 2.0 3.0 MM MM MM MM 1015.2 MM MM MM MM MM MM -2022 05 29 09 50 40 2.0 3.0 MM MM MM MM 1015.0 MM 24.4 MM MM MM MM -2022 05 29 09 40 10 2.0 3.0 MM MM MM MM 1015.0 MM 24.4 MM MM MM MM -2022 05 29 09 30 10 2.0 2.0 MM MM MM MM 1014.9 MM 24.3 MM MM MM MM -2022 05 29 09 20 360 1.0 2.0 MM MM MM MM 1014.9 MM 24.1 MM MM MM MM -2022 05 29 09 10 350 1.0 1.0 MM MM MM MM 1014.9 MM 24.1 MM MM MM MM -2022 05 29 09 00 350 1.0 1.0 MM MM MM MM 1014.8 MM 24.1 MM MM +0.0 MM -2022 05 29 08 50 350 1.0 2.0 MM MM MM MM 1014.8 MM 24.2 MM MM MM MM -2022 05 29 08 40 360 1.0 2.0 MM MM MM MM 1014.8 MM 24.2 MM MM MM MM -2022 05 29 08 30 340 1.0 2.0 MM MM MM MM 1014.7 MM 24.2 MM MM MM MM -2022 05 29 08 20 330 1.0 2.0 MM MM MM MM 1014.7 MM 24.1 MM MM MM MM -2022 05 29 08 10 MM 0.0 1.0 MM MM MM MM 1014.8 MM 24.2 MM MM MM MM -2022 05 29 08 00 MM 0.0 1.0 MM MM MM MM 1014.7 MM 24.2 MM MM MM MM -2022 05 29 07 50 MM 0.0 1.0 MM MM MM MM 1014.5 MM 24.2 MM MM MM MM -2022 05 29 07 40 MM 0.0 1.0 MM MM MM MM 1014.5 MM 24.2 MM MM MM MM -2022 05 29 07 30 290 1.0 2.0 MM MM MM MM 1014.4 MM 24.3 MM MM MM MM -2022 05 29 07 20 300 1.0 2.0 MM MM MM MM 1014.4 MM 24.3 MM MM MM MM -2022 05 29 07 10 290 1.0 2.0 MM MM MM MM 1014.4 MM 24.2 MM MM MM MM -2022 05 29 07 00 290 2.0 2.0 MM MM MM MM 1014.5 MM MM MM MM MM MM -2022 05 29 06 50 290 2.0 2.0 MM MM MM MM 1014.5 MM 24.1 MM MM MM MM -2022 05 29 06 40 280 2.0 2.0 MM MM MM MM 1014.6 MM 24.2 MM MM MM MM -2022 05 29 06 30 280 1.0 2.0 MM MM MM MM 1014.5 MM 24.2 MM MM MM MM -2022 05 29 06 20 280 1.0 2.0 MM MM MM MM 1014.5 MM 24.2 MM MM MM MM -2022 05 29 06 10 280 1.0 2.0 MM MM MM MM 1014.5 MM 24.2 MM MM MM MM -2022 05 29 06 00 280 1.0 2.0 MM MM MM MM 1014.7 MM MM MM MM MM MM -2022 05 29 05 50 280 1.0 2.0 MM MM MM MM 1014.7 MM 24.3 MM MM MM MM -2022 05 29 05 40 290 2.0 2.0 MM MM MM MM 1014.7 MM 24.3 MM MM MM MM -2022 05 29 05 30 280 2.0 2.0 MM MM MM MM 1014.7 MM 24.3 MM MM MM MM -2022 05 29 05 20 260 2.0 3.0 MM MM MM MM 1014.8 MM 24.3 MM MM MM MM -2022 05 29 05 10 250 3.0 4.0 MM MM MM MM 1014.7 MM 24.3 MM MM MM MM -2022 05 29 05 00 260 4.0 4.0 MM MM MM MM 1014.8 MM MM MM MM MM MM -2022 05 29 04 50 260 4.0 5.0 MM MM MM MM 1014.6 MM 24.4 MM MM MM MM -2022 05 29 04 40 260 4.0 5.0 MM MM MM MM 1014.5 MM 24.4 MM MM MM MM -2022 05 29 04 30 270 5.0 6.0 MM MM MM MM 1014.4 MM 24.4 MM MM MM MM -2022 05 29 04 20 260 5.0 6.0 MM MM MM MM 1014.3 MM 24.4 MM MM MM MM -2022 05 29 04 10 260 5.0 6.0 MM MM MM MM 1014.2 MM 24.4 MM MM MM MM -2022 05 29 04 00 250 5.0 5.0 MM MM MM MM 1014.2 MM MM MM MM MM MM -2022 05 29 03 50 240 4.0 5.0 MM MM MM MM 1014.1 MM 24.4 MM MM MM MM -2022 05 29 03 40 230 4.0 5.0 MM MM MM MM 1014.1 MM MM MM MM MM MM -2022 05 29 03 30 240 4.0 4.0 MM MM MM MM 1014.2 MM 24.4 MM MM MM MM -2022 05 29 03 20 250 4.0 4.0 MM MM MM MM 1014.2 MM 24.4 MM MM MM MM -2022 05 29 03 10 240 4.0 4.0 MM MM MM MM 1014.1 MM 24.4 MM MM MM MM -2022 05 29 03 00 240 4.0 4.0 MM MM MM MM 1014.2 MM MM MM MM MM MM -2022 05 29 02 50 250 3.0 4.0 MM MM MM MM 1014.2 MM 24.4 MM MM MM MM -2022 05 29 02 40 250 3.0 4.0 MM MM MM MM 1014.2 MM 24.4 MM MM MM MM -2022 05 29 02 30 260 3.0 5.0 MM MM MM MM 1014.1 MM 24.4 MM MM MM MM -2022 05 29 02 20 260 4.0 4.0 MM MM MM MM 1014.0 MM 24.3 MM MM MM MM -2022 05 29 02 10 260 4.0 5.0 MM MM MM MM 1013.8 MM 24.3 MM MM MM MM -2022 05 29 02 00 260 4.0 5.0 MM MM MM MM 1013.7 MM MM MM MM MM MM -2022 05 29 01 50 250 4.0 5.0 MM MM MM MM 1013.6 MM 24.3 MM MM MM MM -2022 05 29 01 40 260 4.0 5.0 MM MM MM MM 1013.4 MM 24.3 MM MM MM MM -2022 05 29 01 30 260 4.0 5.0 MM MM MM MM 1013.2 MM 24.3 MM MM MM MM -2022 05 29 01 20 250 4.0 5.0 MM MM MM MM 1012.9 MM 24.4 MM MM MM MM -2022 05 29 01 10 250 4.0 5.0 MM MM MM MM 1012.8 MM 24.4 MM MM MM MM -2022 05 29 01 00 250 4.0 5.0 MM MM MM MM 1012.7 MM 24.5 MM MM +1.0 MM -2022 05 29 00 50 250 4.0 5.0 MM MM MM MM 1012.7 MM 24.5 MM MM MM MM -2022 05 29 00 40 240 4.0 5.0 MM MM MM MM 1012.5 MM 24.5 MM MM MM MM -2022 05 29 00 30 240 4.0 5.0 MM MM MM MM 1012.5 MM 24.5 MM MM MM MM -2022 05 29 00 20 250 4.0 5.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 29 00 10 260 5.0 5.0 MM MM MM MM 1012.5 MM 24.4 MM MM MM MM -2022 05 29 00 00 250 5.0 6.0 MM MM MM MM 1012.4 MM MM MM MM +0.9 MM -2022 05 28 23 50 240 5.0 6.0 MM MM MM MM 1012.3 MM 24.3 MM MM MM MM -2022 05 28 23 40 230 5.0 6.0 MM MM MM MM 1012.2 MM 24.3 MM MM MM MM -2022 05 28 23 20 220 4.0 5.0 MM MM MM MM 1012.1 MM 24.3 MM MM MM MM -2022 05 28 23 10 220 4.0 5.0 MM MM MM MM 1012.0 MM 24.3 MM MM MM MM -2022 05 28 23 00 220 4.0 5.0 MM MM MM MM 1011.9 MM MM MM MM MM MM -2022 05 28 22 50 210 4.0 5.0 MM MM MM MM 1011.8 MM 24.2 MM MM MM MM -2022 05 28 22 40 210 4.0 6.0 MM MM MM MM 1011.8 MM 24.1 MM MM MM MM -2022 05 28 22 30 210 5.0 7.0 MM MM MM MM 1011.8 MM 24.1 MM MM MM MM -2022 05 28 22 20 220 6.0 7.0 MM MM MM MM 1011.7 MM 24.0 MM MM MM MM -2022 05 28 22 10 220 5.0 7.0 MM MM MM MM 1011.8 MM 24.1 MM MM MM MM -2022 05 28 22 00 220 6.0 7.0 MM MM MM MM 1011.7 MM 24.0 MM MM MM MM -2022 05 28 21 50 220 5.0 6.0 MM MM MM MM 1011.6 MM 24.0 MM MM MM MM -2022 05 28 21 40 220 6.0 7.0 MM MM MM MM 1011.7 MM 24.0 MM MM MM MM -2022 05 28 21 30 220 6.0 7.0 MM MM MM MM 1011.7 MM 24.0 MM MM MM MM -2022 05 28 21 20 220 6.0 7.0 MM MM MM MM 1011.7 MM 23.9 MM MM MM MM -2022 05 28 21 10 220 7.0 8.0 MM MM MM MM 1011.7 MM 24.0 MM MM MM MM -2022 05 28 21 00 210 7.0 8.0 MM MM MM MM 1011.5 MM MM MM MM MM MM -2022 05 28 20 50 220 7.0 8.0 MM MM MM MM 1011.5 MM 24.2 MM MM MM MM -2022 05 28 20 40 220 6.0 7.0 MM MM MM MM 1011.5 MM 24.2 MM MM MM MM -2022 05 28 20 30 220 6.0 7.0 MM MM MM MM 1011.6 MM 24.2 MM MM MM MM -2022 05 28 20 20 220 6.0 8.0 MM MM MM MM 1011.6 MM 24.2 MM MM MM MM -2022 05 28 20 10 220 6.0 8.0 MM MM MM MM 1011.5 MM 24.2 MM MM MM MM -2022 05 28 20 00 220 6.0 8.0 MM MM MM MM 1011.6 MM 24.2 MM MM MM MM -2022 05 28 19 50 220 7.0 8.0 MM MM MM MM 1011.7 MM 24.2 MM MM MM MM -2022 05 28 19 40 220 6.0 8.0 MM MM MM MM 1011.7 MM 24.2 MM MM MM MM -2022 05 28 19 30 220 6.0 8.0 MM MM MM MM 1011.7 MM 24.3 MM MM MM MM -2022 05 28 19 20 220 7.0 8.0 MM MM MM MM 1011.7 MM 24.2 MM MM MM MM -2022 05 28 19 10 220 7.0 8.0 MM MM MM MM 1011.6 MM 24.3 MM MM MM MM -2022 05 28 19 00 220 8.0 10.0 MM MM MM MM 1011.7 MM 24.4 MM MM -0.6 MM -2022 05 28 18 50 220 7.0 9.0 MM MM MM MM 1011.7 MM 24.3 MM MM MM MM -2022 05 28 18 40 230 7.0 8.0 MM MM MM MM 1011.9 MM 24.3 MM MM MM MM -2022 05 28 18 30 220 7.0 8.0 MM MM MM MM 1012.0 MM 24.3 MM MM MM MM -2022 05 28 18 20 220 7.0 8.0 MM MM MM MM 1012.0 MM 24.4 MM MM MM MM -2022 05 28 18 10 230 7.0 9.0 MM MM MM MM 1012.1 MM 24.4 MM MM MM MM -2022 05 28 18 00 220 7.0 8.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 28 17 50 230 6.0 8.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 28 17 40 230 6.0 7.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 28 17 30 230 6.0 8.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 28 17 20 220 6.0 8.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 28 17 10 220 6.0 8.0 MM MM MM MM 1012.4 MM 24.5 MM MM MM MM -2022 05 28 17 00 230 6.0 7.0 MM MM MM MM 1012.5 MM MM MM MM MM MM -2022 05 28 16 50 230 6.0 7.0 MM MM MM MM 1012.6 MM 24.5 MM MM MM MM -2022 05 28 16 40 230 5.0 7.0 MM MM MM MM 1012.6 MM 24.5 MM MM MM MM -2022 05 28 16 30 240 5.0 6.0 MM MM MM MM 1012.6 MM 24.5 MM MM MM MM -2022 05 28 16 20 250 5.0 6.0 MM MM MM MM 1012.6 MM 24.4 MM MM MM MM -2022 05 28 16 10 250 5.0 6.0 MM MM MM MM 1012.3 MM 24.4 MM MM MM MM -2022 05 28 16 00 250 4.0 5.0 MM MM MM MM 1012.3 MM 24.3 MM MM MM MM -2022 05 28 15 50 240 4.0 5.0 MM MM MM MM 1012.2 MM 24.2 MM MM MM MM -2022 05 28 15 40 230 5.0 6.0 MM MM MM MM 1011.9 MM 24.2 MM MM MM MM -2022 05 28 15 30 230 5.0 6.0 MM MM MM MM 1012.0 MM 24.2 MM MM MM MM -2022 05 28 15 20 240 5.0 6.0 MM MM MM MM 1012.0 MM 24.2 MM MM MM MM -2022 05 28 15 10 240 5.0 7.0 MM MM MM MM 1012.2 MM 24.3 MM MM MM MM -2022 05 28 15 00 240 5.0 6.0 MM MM MM MM 1012.1 MM 24.3 MM MM MM MM -2022 05 28 14 50 240 5.0 7.0 MM MM MM MM 1012.1 MM 24.3 MM MM MM MM -2022 05 28 14 40 240 6.0 7.0 MM MM MM MM 1012.0 MM 24.3 MM MM MM MM -2022 05 28 14 30 250 6.0 7.0 MM MM MM MM 1012.3 MM 24.3 MM MM MM MM -2022 05 28 14 20 250 7.0 8.0 MM MM MM MM 1012.3 MM 24.3 MM MM MM MM -2022 05 28 14 10 250 7.0 8.0 MM MM MM MM 1012.1 MM 24.4 MM MM MM MM -2022 05 28 14 00 250 7.0 9.0 MM MM MM MM 1012.0 MM 24.4 MM MM MM MM -2022 05 28 13 50 250 6.0 8.0 MM MM MM MM 1012.0 MM 24.4 MM MM MM MM -2022 05 28 13 40 250 7.0 8.0 MM MM MM MM 1012.0 MM 24.4 MM MM MM MM -2022 05 28 13 30 260 6.0 8.0 MM MM MM MM 1012.1 MM 24.4 MM MM MM MM -2022 05 28 13 20 260 6.0 7.0 MM MM MM MM 1012.1 MM 24.4 MM MM MM MM -2022 05 28 13 10 250 6.0 7.0 MM MM MM MM 1012.3 MM 24.4 MM MM MM MM -2022 05 28 13 00 260 5.0 7.0 MM MM MM MM 1012.4 MM MM MM MM +2.2 MM -2022 05 28 12 50 280 7.0 11.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 28 12 40 260 8.0 11.0 MM MM MM MM 1012.1 MM 24.5 MM MM MM MM -2022 05 28 12 30 250 8.0 10.0 MM MM MM MM 1011.9 MM 24.5 MM MM MM MM -2022 05 28 12 20 250 8.0 10.0 MM MM MM MM 1011.9 MM 24.5 MM MM MM MM -2022 05 28 12 10 250 8.0 9.0 MM MM MM MM 1011.7 MM 24.5 MM MM MM MM -2022 05 28 12 00 250 8.0 9.0 MM MM MM MM 1011.5 MM 24.5 MM MM +1.9 MM -2022 05 28 11 50 240 8.0 9.0 MM MM MM MM 1011.0 MM 24.5 MM MM MM MM -2022 05 28 11 40 240 7.0 9.0 MM MM MM MM 1010.7 MM 24.5 MM MM MM MM -2022 05 28 11 30 240 7.0 9.0 MM MM MM MM 1010.7 MM 24.5 MM MM MM MM -2022 05 28 11 20 240 7.0 9.0 MM MM MM MM 1010.4 MM 24.5 MM MM MM MM -2022 05 28 11 10 240 8.0 10.0 MM MM MM MM 1010.4 MM 24.5 MM MM MM MM -2022 05 28 11 00 230 9.0 10.0 MM MM MM MM 1010.5 MM 24.5 MM MM MM MM -2022 05 28 10 50 230 9.0 11.0 MM MM MM MM 1010.5 MM 24.5 MM MM MM MM -2022 05 28 10 40 230 9.0 11.0 MM MM MM MM 1010.5 MM 24.6 MM MM MM MM -2022 05 28 10 30 230 9.0 11.0 MM MM MM MM 1010.5 MM 24.6 MM MM MM MM -2022 05 28 10 20 230 9.0 11.0 MM MM MM MM 1010.3 MM 24.6 MM MM MM MM -2022 05 28 10 10 220 10.0 12.0 MM MM MM MM 1010.2 MM 24.7 MM MM MM MM -2022 05 28 10 00 220 10.0 14.0 MM MM MM MM 1010.2 MM 24.8 MM MM -0.3 MM -2022 05 28 09 50 220 12.0 14.0 MM MM MM MM 1010.2 MM 24.8 MM MM MM MM -2022 05 28 09 40 220 13.0 18.0 MM MM MM MM 1010.4 MM 24.8 MM MM MM MM -2022 05 28 09 30 220 14.0 18.0 MM MM MM MM 1010.4 MM 24.8 MM MM MM MM -2022 05 28 09 20 220 14.0 21.0 MM MM MM MM 1010.5 MM 24.8 MM MM MM MM -2022 05 28 09 10 240 12.0 17.0 MM MM MM MM 1010.2 MM 24.8 MM MM MM MM -2022 05 28 09 00 210 10.0 12.0 MM MM MM MM 1009.6 MM 24.8 MM MM MM MM -2022 05 28 08 50 210 9.0 13.0 MM MM MM MM 1009.7 MM 24.7 MM MM MM MM -2022 05 28 08 40 220 9.0 11.0 MM MM MM MM 1009.8 MM 24.7 MM MM MM MM -2022 05 28 08 30 220 9.0 11.0 MM MM MM MM 1009.8 MM 24.7 MM MM MM MM -2022 05 28 08 20 220 9.0 12.0 MM MM MM MM 1009.8 MM 24.7 MM MM MM MM -2022 05 28 08 10 220 9.0 11.0 MM MM MM MM 1010.0 MM 24.7 MM MM MM MM -2022 05 28 08 00 220 9.0 12.0 MM MM MM MM 1010.0 MM 24.7 MM MM -1.3 MM -2022 05 28 07 50 220 8.0 11.0 MM MM MM MM 1010.0 MM 24.6 MM MM MM MM -2022 05 28 07 40 210 10.0 12.0 MM MM MM MM 1010.2 MM 24.6 MM MM MM MM -2022 05 28 07 30 200 10.0 13.0 MM MM MM MM 1010.2 MM 24.6 MM MM MM MM -2022 05 28 07 20 210 10.0 13.0 MM MM MM MM 1010.4 MM 24.5 MM MM MM MM -2022 05 28 07 10 220 9.0 12.0 MM MM MM MM 1010.4 MM 24.4 MM MM MM MM -2022 05 28 07 00 230 9.0 11.0 MM MM MM MM 1010.5 MM 24.4 MM MM -1.7 MM -2022 05 28 06 50 230 10.0 14.0 MM MM MM MM 1010.6 MM 24.4 MM MM MM MM -2022 05 28 06 40 220 8.0 10.0 MM MM MM MM 1010.8 MM 24.5 MM MM MM MM -2022 05 28 06 30 220 8.0 10.0 MM MM MM MM 1010.9 MM 24.5 MM MM MM MM -2022 05 28 06 20 220 8.0 10.0 MM MM MM MM 1010.7 MM 24.5 MM MM MM MM -2022 05 28 06 10 220 9.0 11.0 MM MM MM MM 1011.0 MM MM MM MM MM MM -2022 05 28 06 00 230 11.0 13.0 MM MM MM MM 1011.2 MM MM MM MM -1.2 MM -2022 05 28 05 50 220 11.0 13.0 MM MM MM MM 1011.4 MM 24.5 MM MM MM MM -2022 05 28 05 40 210 12.0 16.0 MM MM MM MM 1011.4 MM 24.5 MM MM MM MM -2022 05 28 05 30 220 14.0 17.0 MM MM MM MM 1011.5 MM 24.5 MM MM MM MM -2022 05 28 05 20 210 11.0 15.0 MM MM MM MM 1011.2 MM 24.5 MM MM MM MM -2022 05 28 05 10 210 11.0 13.0 MM MM MM MM 1011.5 MM 24.5 MM MM MM MM -2022 05 28 05 00 210 10.0 12.0 MM MM MM MM 1011.3 MM MM MM MM MM MM -2022 05 28 04 50 210 9.0 12.0 MM MM MM MM 1011.7 MM 24.5 MM MM MM MM -2022 05 28 04 40 210 9.0 11.0 MM MM MM MM 1012.0 MM 24.5 MM MM MM MM -2022 05 28 04 30 210 8.0 11.0 MM MM MM MM 1012.0 MM 24.5 MM MM MM MM -2022 05 28 04 20 210 10.0 12.0 MM MM MM MM 1012.1 MM 24.4 MM MM MM MM -2022 05 28 04 10 210 10.0 12.0 MM MM MM MM 1012.3 MM 24.4 MM MM MM MM -2022 05 28 04 00 210 10.0 12.0 MM MM MM MM 1012.2 MM 24.4 MM MM MM MM -2022 05 28 03 50 210 9.0 11.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 28 03 40 210 9.0 12.0 MM MM MM MM 1012.5 MM 24.4 MM MM MM MM -2022 05 28 03 30 210 9.0 12.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 28 03 20 210 9.0 13.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 28 03 10 210 10.0 12.0 MM MM MM MM 1012.5 MM 24.4 MM MM MM MM -2022 05 28 03 00 210 10.0 12.0 MM MM MM MM 1012.4 MM 24.4 MM MM +0.0 MM -2022 05 28 02 50 210 9.0 11.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 28 02 40 210 9.0 12.0 MM MM MM MM 1012.6 MM 24.4 MM MM MM MM -2022 05 28 02 30 210 9.0 11.0 MM MM MM MM 1012.4 MM 24.5 MM MM MM MM -2022 05 28 02 20 210 8.0 11.0 MM MM MM MM 1012.6 MM 24.4 MM MM MM MM -2022 05 28 02 10 210 9.0 11.0 MM MM MM MM 1012.6 MM 24.5 MM MM MM MM -2022 05 28 02 00 210 9.0 12.0 MM MM MM MM 1012.7 MM MM MM MM MM MM -2022 05 28 01 50 210 9.0 11.0 MM MM MM MM 1013.0 MM 24.4 MM MM MM MM -2022 05 28 01 40 210 8.0 9.0 MM MM MM MM 1012.9 MM 24.5 MM MM MM MM -2022 05 28 01 30 220 7.0 9.0 MM MM MM MM 1013.2 MM 24.5 MM MM MM MM -2022 05 28 01 20 220 7.0 9.0 MM MM MM MM 1013.1 MM 24.5 MM MM MM MM -2022 05 28 01 10 220 7.0 9.0 MM MM MM MM 1012.9 MM 24.5 MM MM MM MM -2022 05 28 01 00 220 7.0 8.0 MM MM MM MM 1012.9 MM MM MM MM MM MM -2022 05 28 00 50 220 7.0 9.0 MM MM MM MM 1012.8 MM 24.5 MM MM MM MM -2022 05 28 00 40 220 7.0 9.0 MM MM MM MM 1012.9 MM 24.5 MM MM MM MM -2022 05 28 00 30 220 8.0 9.0 MM MM MM MM 1012.6 MM 24.5 MM MM MM MM -2022 05 28 00 20 210 7.0 9.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 28 00 10 210 8.0 9.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 28 00 00 210 7.0 9.0 MM MM MM MM 1012.3 MM 24.4 MM MM MM MM -2022 05 27 23 50 220 7.0 9.0 MM MM MM MM 1012.3 MM 24.4 MM MM MM MM -2022 05 27 23 40 220 8.0 11.0 MM MM MM MM 1012.3 MM 24.5 MM MM MM MM -2022 05 27 23 20 220 8.0 9.0 MM MM MM MM 1012.3 MM 24.4 MM MM MM MM -2022 05 27 23 10 220 8.0 10.0 MM MM MM MM 1012.4 MM 24.4 MM MM MM MM -2022 05 27 23 00 210 9.0 11.0 MM MM MM MM 1012.5 MM MM MM MM -1.1 MM -2022 05 27 22 50 210 10.0 12.0 MM MM MM MM 1012.6 MM 24.4 MM MM MM MM -2022 05 27 22 40 200 9.0 12.0 MM MM MM MM 1012.6 MM 24.4 MM MM MM MM -2022 05 27 22 30 200 10.0 13.0 MM MM MM MM 1012.6 MM 24.4 MM MM MM MM -2022 05 27 22 20 210 9.0 12.0 MM MM MM MM 1012.8 MM 24.4 MM MM MM MM -2022 05 27 22 10 210 10.0 12.0 MM MM MM MM 1012.7 MM 24.5 MM MM MM MM -2022 05 27 22 00 200 10.0 13.0 MM MM MM MM 1012.7 MM MM MM MM -2.5 MM -2022 05 27 21 50 210 10.0 12.0 MM MM MM MM 1012.8 MM 24.5 MM MM MM MM -2022 05 27 21 40 200 10.0 12.0 MM MM MM MM 1012.9 MM 24.5 MM MM MM MM -2022 05 27 21 30 200 10.0 12.0 MM MM MM MM 1013.0 MM 24.5 MM MM MM MM -2022 05 27 21 20 190 9.0 12.0 MM MM MM MM 1012.8 MM 24.5 MM MM MM MM -2022 05 27 21 10 180 10.0 12.0 MM MM MM MM 1012.8 MM 24.6 MM MM MM MM -2022 05 27 21 00 180 10.0 13.0 MM MM MM MM 1012.8 MM 24.5 MM MM MM MM -2022 05 27 20 50 180 10.0 12.0 MM MM MM MM 1012.8 MM 24.5 MM MM MM MM -2022 05 27 20 40 180 10.0 13.0 MM MM MM MM 1013.0 MM 24.5 MM MM MM MM -2022 05 27 20 30 180 10.0 12.0 MM MM MM MM 1013.2 MM 24.5 MM MM MM MM -2022 05 27 20 20 180 10.0 13.0 MM MM MM MM 1013.2 MM 24.5 MM MM MM MM -2022 05 27 20 10 180 10.0 13.0 MM MM MM MM 1013.5 MM 24.5 MM MM MM MM -2022 05 27 20 00 180 10.0 12.0 MM MM MM MM 1013.6 MM MM MM MM MM MM -2022 05 27 19 50 180 9.0 12.0 MM MM MM MM 1013.8 MM 24.5 MM MM MM MM -2022 05 27 19 40 180 8.0 10.0 MM MM MM MM 1014.2 MM 24.5 MM MM MM MM -2022 05 27 19 30 190 8.0 10.0 MM MM MM MM 1014.4 MM 24.5 MM MM MM MM -2022 05 27 19 20 190 8.0 10.0 MM MM MM MM 1014.5 MM 24.5 MM MM MM MM -2022 05 27 19 10 190 8.0 10.0 MM MM MM MM 1014.9 MM 24.5 MM MM MM MM -2022 05 27 19 00 190 10.0 12.0 MM MM MM MM 1015.2 MM 24.4 MM MM MM MM -2022 05 27 18 50 200 10.0 13.0 MM MM MM MM 1015.3 MM 24.4 MM MM MM MM -2022 05 27 18 40 200 12.0 17.0 MM MM MM MM 1015.6 MM 24.4 MM MM MM MM -2022 05 27 18 30 200 11.0 20.0 MM MM MM MM 1015.3 MM 24.4 MM MM MM MM -2022 05 27 18 20 200 8.0 10.0 MM MM MM MM 1014.8 MM 24.4 MM MM MM MM -2022 05 27 18 10 200 11.0 21.0 MM MM MM MM 1015.0 MM 24.4 MM MM MM MM -2022 05 27 18 00 190 10.0 14.0 MM MM MM MM 1015.3 MM 24.4 MM MM MM MM -2022 05 27 17 50 190 9.0 12.0 MM MM MM MM 1015.3 MM 24.4 MM MM MM MM -2022 05 27 17 40 210 9.0 14.0 MM MM MM MM 1015.5 MM 24.4 MM MM MM MM -2022 05 27 17 30 220 8.0 10.0 MM MM MM MM 1015.9 MM 24.4 MM MM MM MM -2022 05 27 17 20 200 10.0 12.0 MM MM MM MM 1016.1 MM 24.4 MM MM MM MM -2022 05 27 17 10 200 10.0 13.0 MM MM MM MM 1016.0 MM 24.4 MM MM MM MM -2022 05 27 17 00 190 10.0 13.0 MM MM MM MM 1015.9 MM 24.3 MM MM -0.6 MM -2022 05 27 16 50 190 9.0 12.0 MM MM MM MM 1015.9 MM 24.3 MM MM MM MM -2022 05 27 16 40 190 10.0 12.0 MM MM MM MM 1016.1 MM 24.3 MM MM MM MM -2022 05 27 16 30 190 10.0 13.0 MM MM MM MM 1016.1 MM 24.3 MM MM MM MM -2022 05 27 16 20 190 10.0 12.0 MM MM MM MM 1016.2 MM 24.3 MM MM MM MM -2022 05 27 16 10 190 10.0 13.0 MM MM MM MM 1016.3 MM 24.3 MM MM MM MM -2022 05 27 16 00 200 9.0 12.0 MM MM MM MM 1016.6 MM MM MM MM -0.4 MM -2022 05 27 15 50 190 10.0 12.0 MM MM MM MM 1016.6 MM 24.1 MM MM MM MM -2022 05 27 15 40 200 9.0 12.0 MM MM MM MM 1016.5 MM 24.0 MM MM MM MM -2022 05 27 15 30 200 9.0 12.0 MM MM MM MM 1016.5 MM 24.0 MM MM MM MM -2022 05 27 15 20 200 9.0 11.0 MM MM MM MM 1016.6 MM 23.9 MM MM MM MM -2022 05 27 15 10 190 9.0 11.0 MM MM MM MM 1016.6 MM 23.9 MM MM MM MM -2022 05 27 15 00 190 9.0 11.0 MM MM MM MM 1016.7 MM 23.8 MM MM -0.3 MM -2022 05 27 14 50 200 9.0 11.0 MM MM MM MM 1016.7 MM 23.7 MM MM MM MM -2022 05 27 14 40 190 9.0 12.0 MM MM MM MM 1016.7 MM 23.8 MM MM MM MM -2022 05 27 14 30 190 9.0 12.0 MM MM MM MM 1016.7 MM 23.8 MM MM MM MM -2022 05 27 14 20 190 9.0 11.0 MM MM MM MM 1016.7 MM 23.8 MM MM MM MM -2022 05 27 14 10 190 8.0 10.0 MM MM MM MM 1016.6 MM 23.9 MM MM MM MM -2022 05 27 14 00 190 9.0 11.0 MM MM MM MM 1016.5 MM 23.9 MM MM MM MM -2022 05 27 13 50 190 9.0 11.0 MM MM MM MM 1016.6 MM 24.0 MM MM MM MM -2022 05 27 13 40 180 8.0 10.0 MM MM MM MM 1016.5 MM 24.1 MM MM MM MM -2022 05 27 13 30 180 9.0 11.0 MM MM MM MM 1016.6 MM 24.0 MM MM MM MM -2022 05 27 13 20 180 8.0 10.0 MM MM MM MM 1016.7 MM 23.9 MM MM MM MM -2022 05 27 13 10 190 7.0 9.0 MM MM MM MM 1016.8 MM 23.9 MM MM MM MM -2022 05 27 13 00 190 7.0 8.0 MM MM MM MM 1017.0 MM 23.9 MM MM MM MM -2022 05 27 12 50 180 7.0 9.0 MM MM MM MM 1016.8 MM 23.9 MM MM MM MM -2022 05 27 12 40 180 7.0 9.0 MM MM MM MM 1016.8 MM 23.9 MM MM MM MM -2022 05 27 12 30 190 7.0 8.0 MM MM MM MM 1016.9 MM 23.8 MM MM MM MM -2022 05 27 12 20 190 7.0 8.0 MM MM MM MM 1016.7 MM 23.7 MM MM MM MM -2022 05 27 12 10 190 7.0 8.0 MM MM MM MM 1016.8 MM 24.2 MM MM MM MM -2022 05 27 12 00 190 7.0 9.0 MM MM MM MM 1017.0 MM 24.3 MM MM MM MM -2022 05 27 11 50 190 8.0 9.0 MM MM MM MM 1017.0 MM 24.2 MM MM MM MM -2022 05 27 11 40 190 7.0 9.0 MM MM MM MM 1016.9 MM 24.3 MM MM MM MM -2022 05 27 11 30 180 7.0 9.0 MM MM MM MM 1016.8 MM 24.4 MM MM MM MM -2022 05 27 11 20 180 7.0 9.0 MM MM MM MM 1016.9 MM 24.5 MM MM MM MM -2022 05 27 11 10 190 7.0 8.0 MM MM MM MM 1017.0 MM 24.4 MM MM MM MM -2022 05 27 11 00 190 7.0 9.0 MM MM MM MM 1017.1 MM 24.4 MM MM MM MM -2022 05 27 10 50 190 7.0 9.0 MM MM MM MM 1017.2 MM 24.5 MM MM MM MM -2022 05 27 10 40 190 7.0 9.0 MM MM MM MM 1017.1 MM 24.7 MM MM MM MM -2022 05 27 10 30 190 7.0 9.0 MM MM MM MM 1017.0 MM 24.7 MM MM MM MM -2022 05 27 10 20 190 5.0 7.0 MM MM MM MM 1017.1 MM 24.8 MM MM MM MM -2022 05 27 10 10 190 6.0 7.0 MM MM MM MM 1017.0 MM 24.8 MM MM MM MM -2022 05 27 10 00 190 6.0 7.0 MM MM MM MM 1017.0 MM 24.8 MM MM MM MM -2022 05 27 09 50 190 6.0 8.0 MM MM MM MM 1017.1 MM 24.7 MM MM MM MM -2022 05 27 09 40 190 6.0 8.0 MM MM MM MM 1017.0 MM 24.8 MM MM MM MM -2022 05 27 09 30 190 6.0 8.0 MM MM MM MM 1017.0 MM 24.8 MM MM MM MM -2022 05 27 09 20 200 6.0 8.0 MM MM MM MM 1017.1 MM 24.8 MM MM MM MM -2022 05 27 09 10 200 6.0 7.0 MM MM MM MM 1017.2 MM 24.8 MM MM MM MM -2022 05 27 09 00 200 6.0 8.0 MM MM MM MM 1017.2 MM 24.8 MM MM -1.2 MM -2022 05 27 08 50 200 6.0 8.0 MM MM MM MM 1017.2 MM 24.7 MM MM MM MM -2022 05 27 08 40 200 6.0 8.0 MM MM MM MM 1017.2 MM 24.6 MM MM MM MM -2022 05 27 08 30 190 6.0 7.0 MM MM MM MM 1017.2 MM 24.5 MM MM MM MM -2022 05 27 08 20 190 5.0 6.0 MM MM MM MM 1017.2 MM 24.5 MM MM MM MM -2022 05 27 08 10 200 5.0 6.0 MM MM MM MM 1017.3 MM 24.5 MM MM MM MM -2022 05 27 08 00 200 5.0 6.0 MM MM MM MM 1017.3 MM 24.5 MM MM MM MM -2022 05 27 07 50 200 5.0 6.0 MM MM MM MM 1017.5 MM 24.2 MM MM MM MM -2022 05 27 07 40 190 5.0 6.0 MM MM MM MM 1017.5 MM 23.5 MM MM MM MM -2022 05 27 07 30 190 5.0 6.0 MM MM MM MM 1017.6 MM MM MM MM MM MM -2022 05 27 07 20 190 5.0 6.0 MM MM MM MM 1017.8 MM 23.4 MM MM MM MM -2022 05 27 07 10 190 5.0 6.0 MM MM MM MM 1017.7 MM 23.3 MM MM MM MM -2022 05 27 07 00 190 5.0 6.0 MM MM MM MM 1017.8 MM 23.4 MM MM MM MM -2022 05 27 06 50 170 5.0 6.0 MM MM MM MM 1017.8 MM 23.4 MM MM MM MM -2022 05 27 06 40 170 5.0 6.0 MM MM MM MM 1017.9 MM 23.4 MM MM MM MM -2022 05 27 06 30 160 4.0 5.0 MM MM MM MM 1018.1 MM 23.2 MM MM MM MM -2022 05 27 06 20 160 3.0 4.0 MM MM MM MM 1018.1 MM 23.1 MM MM MM MM -2022 05 27 06 10 160 4.0 5.0 MM MM MM MM 1018.3 MM 23.0 MM MM MM MM -2022 05 27 06 00 160 4.0 5.0 MM MM MM MM 1018.4 MM 23.0 MM MM MM MM -2022 05 27 05 50 160 4.0 5.0 MM MM MM MM 1018.4 MM 23.0 MM MM MM MM -2022 05 27 05 40 170 5.0 6.0 MM MM MM MM 1018.5 MM 23.0 MM MM MM MM -2022 05 27 05 30 170 5.0 6.0 MM MM MM MM 1018.7 MM 23.1 MM MM MM MM -2022 05 27 05 20 170 5.0 6.0 MM MM MM MM 1018.7 MM 23.0 MM MM MM MM -2022 05 27 05 10 170 5.0 6.0 MM MM MM MM 1018.9 MM 23.0 MM MM MM MM -2022 05 27 05 00 170 5.0 5.0 MM MM MM MM 1019.1 MM 23.2 MM MM MM MM -2022 05 27 04 50 180 5.0 6.0 MM MM MM MM 1019.2 MM 23.2 MM MM MM MM -2022 05 27 04 40 180 4.0 5.0 MM MM MM MM 1019.3 MM 23.1 MM MM MM MM -2022 05 27 04 30 180 4.0 5.0 MM MM MM MM 1019.5 MM 23.1 MM MM MM MM -2022 05 27 04 20 180 4.0 5.0 MM MM MM MM 1019.5 MM 23.2 MM MM MM MM -2022 05 27 04 10 180 4.0 5.0 MM MM MM MM 1019.7 MM 23.2 MM MM MM MM -2022 05 27 04 00 180 4.0 5.0 MM MM MM MM 1019.7 MM 23.3 MM MM MM MM -2022 05 27 03 50 180 4.0 5.0 MM MM MM MM 1019.8 MM 23.3 MM MM MM MM -2022 05 27 03 40 190 4.0 5.0 MM MM MM MM 1020.0 MM 23.4 MM MM MM MM -2022 05 27 03 30 180 4.0 5.0 MM MM MM MM 1020.1 MM 23.4 MM MM MM MM -2022 05 27 03 20 190 4.0 5.0 MM MM MM MM 1020.1 MM 23.5 MM MM MM MM -2022 05 27 03 10 190 4.0 5.0 MM MM MM MM 1020.2 MM 23.3 MM MM MM MM -2022 05 27 03 00 190 4.0 5.0 MM MM MM MM 1020.2 MM 23.4 MM MM +0.0 MM -2022 05 27 02 50 190 4.0 5.0 MM MM MM MM 1020.3 MM 23.3 MM MM MM MM -2022 05 27 02 40 200 4.0 5.0 MM MM MM MM 1020.4 MM 23.4 MM MM MM MM -2022 05 27 02 30 200 4.0 5.0 MM MM MM MM 1020.4 MM 23.5 MM MM MM MM -2022 05 27 02 20 200 4.0 5.0 MM MM MM MM 1020.4 MM 23.5 MM MM MM MM -2022 05 27 02 10 190 4.0 5.0 MM MM MM MM 1020.3 MM 23.5 MM MM MM MM -2022 05 27 02 00 190 4.0 5.0 MM MM MM MM 1020.2 MM 23.4 MM MM MM MM -2022 05 27 01 50 180 4.0 5.0 MM MM MM MM 1020.2 MM 23.3 MM MM MM MM -2022 05 27 01 40 180 4.0 6.0 MM MM MM MM 1020.1 MM 23.3 MM MM MM MM -2022 05 27 01 30 180 4.0 5.0 MM MM MM MM 1020.1 MM 23.4 MM MM MM MM -2022 05 27 01 20 180 4.0 6.0 MM MM MM MM 1020.0 MM 23.2 MM MM MM MM -2022 05 27 01 10 180 4.0 5.0 MM MM MM MM 1020.0 MM 23.3 MM MM MM MM -2022 05 27 01 00 180 4.0 5.0 MM MM MM MM 1020.0 MM 23.2 MM MM MM MM -2022 05 27 00 50 190 4.0 5.0 MM MM MM MM 1020.1 MM 22.9 MM MM MM MM -2022 05 27 00 40 200 3.0 5.0 MM MM MM MM 1020.0 MM 22.8 MM MM MM MM -2022 05 27 00 30 200 3.0 4.0 MM MM MM MM 1020.0 MM 22.6 MM MM MM MM -2022 05 27 00 20 210 3.0 5.0 MM MM MM MM 1020.0 MM 22.8 MM MM MM MM -2022 05 27 00 10 220 4.0 5.0 MM MM MM MM 1020.1 MM 23.1 MM MM MM MM -2022 05 27 00 00 220 3.0 5.0 MM MM MM MM 1020.2 MM 22.9 MM MM -0.4 MM -2022 05 26 23 50 220 3.0 5.0 MM MM MM MM 1020.2 MM 23.0 MM MM MM MM -2022 05 26 23 40 220 3.0 4.0 MM MM MM MM 1020.3 MM 23.0 MM MM MM MM -2022 05 26 23 20 220 3.0 4.0 MM MM MM MM 1020.2 MM 22.9 MM MM MM MM -2022 05 26 23 10 230 3.0 5.0 MM MM MM MM 1020.2 MM 22.9 MM MM MM MM -2022 05 26 23 00 220 3.0 4.0 MM MM MM MM 1020.1 MM 22.9 MM MM MM MM -2022 05 26 22 50 220 3.0 4.0 MM MM MM MM 1020.1 MM 22.9 MM MM MM MM -2022 05 26 22 40 220 3.0 5.0 MM MM MM MM 1020.2 MM MM MM MM MM MM -2022 05 26 22 30 230 4.0 5.0 MM MM MM MM 1020.2 MM 23.0 MM MM MM MM -2022 05 26 22 20 240 4.0 6.0 MM MM MM MM 1020.2 MM 23.0 MM MM MM MM -2022 05 26 22 10 230 3.0 5.0 MM MM MM MM 1020.5 MM 23.1 MM MM MM MM -2022 05 26 22 00 220 3.0 5.0 MM MM MM MM 1020.4 MM 23.1 MM MM MM MM -2022 05 26 21 50 230 3.0 5.0 MM MM MM MM 1020.2 MM 22.9 MM MM MM MM -2022 05 26 21 40 230 3.0 5.0 MM MM MM MM 1020.3 MM 23.1 MM MM MM MM -2022 05 26 21 30 230 3.0 5.0 MM MM MM MM 1020.4 MM 23.1 MM MM MM MM -2022 05 26 21 20 240 3.0 4.0 MM MM MM MM 1020.4 MM 23.0 MM MM MM MM -2022 05 26 21 10 240 3.0 5.0 MM MM MM MM 1020.5 MM 22.9 MM MM MM MM -2022 05 26 21 00 230 3.0 4.0 MM MM MM MM 1020.6 MM 22.9 MM MM MM MM -2022 05 26 20 50 240 3.0 6.0 MM MM MM MM 1020.7 MM 22.9 MM MM MM MM -2022 05 26 20 40 250 3.0 4.0 MM MM MM MM 1020.6 MM 22.9 MM MM MM MM -2022 05 26 20 30 240 3.0 4.0 MM MM MM MM 1020.6 MM 22.9 MM MM MM MM -2022 05 26 20 20 260 3.0 4.0 MM MM MM MM 1020.5 MM 22.9 MM MM MM MM -2022 05 26 20 10 270 3.0 5.0 MM MM MM MM 1020.7 MM 22.9 MM MM MM MM -2022 05 26 20 00 270 3.0 4.0 MM MM MM MM 1020.8 MM 22.8 MM MM -1.6 MM -2022 05 26 19 50 270 4.0 5.0 MM MM MM MM 1021.0 MM 22.8 MM MM MM MM -2022 05 26 19 40 270 4.0 5.0 MM MM MM MM 1021.0 MM 22.7 MM MM MM MM -2022 05 26 19 30 270 4.0 5.0 MM MM MM MM 1021.0 MM 22.8 MM MM MM MM -2022 05 26 19 20 270 4.0 5.0 MM MM MM MM 1021.3 MM 22.8 MM MM MM MM -2022 05 26 19 10 270 3.0 5.0 MM MM MM MM 1021.3 MM 22.6 MM MM MM MM -2022 05 26 19 00 270 3.0 5.0 MM MM MM MM 1021.4 MM 22.7 MM MM MM MM -2022 05 26 18 50 270 3.0 4.0 MM MM MM MM 1021.5 MM 22.7 MM MM MM MM -2022 05 26 18 40 270 3.0 4.0 MM MM MM MM 1021.5 MM 22.7 MM MM MM MM -2022 05 26 18 30 280 3.0 4.0 MM MM MM MM 1021.6 MM 22.7 MM MM MM MM -2022 05 26 18 20 270 4.0 5.0 MM MM MM MM 1021.7 MM 22.6 MM MM MM MM -2022 05 26 18 10 280 3.0 4.0 MM MM MM MM 1021.8 MM 22.6 MM MM MM MM -2022 05 26 18 00 280 3.0 4.0 MM MM MM MM 1021.8 MM 22.6 MM MM -1.1 MM -2022 05 26 17 50 280 4.0 5.0 MM MM MM MM 1022.0 MM 22.6 MM MM MM MM -2022 05 26 17 40 290 4.0 5.0 MM MM MM MM 1022.1 MM 22.5 MM MM MM MM -2022 05 26 17 30 290 4.0 5.0 MM MM MM MM 1022.3 MM 22.5 MM MM MM MM -2022 05 26 17 20 290 3.0 4.0 MM MM MM MM 1022.2 MM 22.5 MM MM MM MM -2022 05 26 17 10 290 3.0 4.0 MM MM MM MM 1022.3 MM 22.4 MM MM MM MM -2022 05 26 17 00 290 3.0 4.0 MM MM MM MM 1022.4 MM 22.3 MM MM MM MM -2022 05 26 16 50 290 3.0 4.0 MM MM MM MM 1022.4 MM 22.3 MM MM MM MM -2022 05 26 16 40 290 3.0 5.0 MM MM MM MM 1022.5 MM 22.4 MM MM MM MM -2022 05 26 16 30 280 3.0 4.0 MM MM MM MM 1022.7 MM 22.2 MM MM MM MM -2022 05 26 16 20 290 3.0 4.0 MM MM MM MM 1022.7 MM 22.3 MM MM MM MM -2022 05 26 16 10 290 4.0 5.0 MM MM MM MM 1022.7 MM 22.3 MM MM MM MM -2022 05 26 16 00 300 3.0 5.0 MM MM MM MM 1022.7 MM 22.2 MM MM +0.0 MM -2022 05 26 15 50 290 3.0 4.0 MM MM MM MM 1022.7 MM 22.1 MM MM MM MM -2022 05 26 15 40 290 3.0 4.0 MM MM MM MM 1022.8 MM 22.6 MM MM MM MM -2022 05 26 15 30 290 3.0 4.0 MM MM MM MM 1022.8 MM 22.7 MM MM MM MM -2022 05 26 15 20 280 3.0 4.0 MM MM MM MM 1022.9 MM 22.5 MM MM MM MM -2022 05 26 15 10 280 4.0 5.0 MM MM MM MM 1022.9 MM 22.4 MM MM MM MM -2022 05 26 15 00 290 4.0 5.0 MM MM MM MM 1022.9 MM 22.5 MM MM MM MM -2022 05 26 14 50 270 4.0 6.0 MM MM MM MM 1022.9 MM 22.5 MM MM MM MM -2022 05 26 14 40 270 4.0 5.0 MM MM MM MM 1022.9 MM 23.0 MM MM MM MM -2022 05 26 14 30 270 4.0 6.0 MM MM MM MM 1022.9 MM 22.8 MM MM MM MM -2022 05 26 14 20 270 5.0 7.0 MM MM MM MM 1023.0 MM 22.8 MM MM MM MM -2022 05 26 14 10 260 4.0 6.0 MM MM MM MM 1023.0 MM 23.0 MM MM MM MM -2022 05 26 14 00 270 2.0 3.0 MM MM MM MM 1023.0 MM 23.0 MM MM MM MM -2022 05 26 13 50 MM 0.0 1.0 MM MM MM MM 1022.8 MM 23.4 MM MM MM MM -2022 05 26 13 40 340 1.0 2.0 MM MM MM MM 1022.8 MM 23.8 MM MM MM MM -2022 05 26 13 30 340 2.0 2.0 MM MM MM MM 1022.9 MM 23.9 MM MM MM MM -2022 05 26 13 20 360 2.0 3.0 MM MM MM MM 1022.9 MM 23.9 MM MM MM MM -2022 05 26 13 10 360 2.0 3.0 MM MM MM MM 1022.7 MM 23.9 MM MM MM MM -2022 05 26 13 00 330 2.0 3.0 MM MM MM MM 1022.7 MM 23.9 MM MM MM MM -2022 05 26 12 50 330 2.0 3.0 MM MM MM MM 1022.7 MM 23.9 MM MM MM MM -2022 05 26 12 40 320 2.0 4.0 MM MM MM MM 1022.6 MM MM MM MM MM MM -2022 05 26 12 30 300 3.0 4.0 MM MM MM MM 1022.6 MM 24.0 MM MM MM MM -2022 05 26 12 20 300 2.0 4.0 MM MM MM MM 1022.5 MM 24.0 MM MM MM MM -2022 05 26 12 10 290 3.0 4.0 MM MM MM MM 1022.4 MM 24.0 MM MM MM MM -2022 05 26 12 00 280 3.0 4.0 MM MM MM MM 1022.5 MM 24.1 MM MM MM MM -2022 05 26 11 50 280 3.0 4.0 MM MM MM MM 1022.4 MM 24.1 MM MM MM MM -2022 05 26 11 40 280 3.0 4.0 MM MM MM MM 1022.3 MM 24.2 MM MM MM MM -2022 05 26 11 30 270 4.0 5.0 MM MM MM MM 1022.3 MM 24.2 MM MM MM MM -2022 05 26 11 20 280 3.0 5.0 MM MM MM MM 1022.1 MM 24.3 MM MM MM MM -2022 05 26 11 10 290 3.0 4.0 MM MM MM MM 1022.1 MM 24.3 MM MM MM MM -2022 05 26 11 00 270 3.0 5.0 MM MM MM MM 1021.9 MM 24.3 MM MM MM MM -2022 05 26 10 50 290 2.0 3.0 MM MM MM MM 1021.9 MM 24.3 MM MM MM MM -2022 05 26 10 40 330 2.0 3.0 MM MM MM MM 1021.8 MM 24.3 MM MM MM MM -2022 05 26 10 30 320 2.0 3.0 MM MM MM MM 1021.8 MM 24.3 MM MM MM MM -2022 05 26 10 20 320 2.0 3.0 MM MM MM MM 1021.8 MM 24.3 MM MM MM MM -2022 05 26 10 10 310 2.0 4.0 MM MM MM MM 1021.7 MM 24.3 MM MM MM MM -2022 05 26 10 00 300 2.0 3.0 MM MM MM MM 1021.7 MM MM MM MM MM MM -2022 05 26 09 50 270 2.0 4.0 MM MM MM MM 1021.6 MM 24.3 MM MM MM MM -2022 05 26 09 40 260 2.0 3.0 MM MM MM MM 1021.6 MM 24.3 MM MM MM MM -2022 05 26 09 30 240 3.0 4.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 09 20 270 2.0 3.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 09 10 240 2.0 4.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 09 00 240 1.0 2.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 08 50 230 1.0 3.0 MM MM MM MM 1021.5 MM MM MM MM MM MM -2022 05 26 08 40 230 3.0 4.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 08 30 260 3.0 5.0 MM MM MM MM 1021.4 MM 24.3 MM MM MM MM -2022 05 26 08 20 250 3.0 5.0 MM MM MM MM 1021.4 MM 24.3 MM MM MM MM -2022 05 26 08 10 240 3.0 5.0 MM MM MM MM 1021.6 MM 24.3 MM MM MM MM -2022 05 26 08 00 250 3.0 5.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 07 50 230 3.0 4.0 MM MM MM MM 1021.4 MM 24.4 MM MM MM MM -2022 05 26 07 40 220 3.0 5.0 MM MM MM MM 1021.2 MM 24.3 MM MM MM MM -2022 05 26 07 30 220 3.0 4.0 MM MM MM MM 1021.3 MM 24.3 MM MM MM MM -2022 05 26 07 20 220 3.0 4.0 MM MM MM MM 1021.2 MM 24.3 MM MM MM MM -2022 05 26 07 10 230 2.0 4.0 MM MM MM MM 1021.1 MM 24.3 MM MM MM MM -2022 05 26 07 00 240 3.0 4.0 MM MM MM MM 1021.3 MM 24.3 MM MM MM MM -2022 05 26 06 50 260 3.0 5.0 MM MM MM MM 1021.4 MM 24.3 MM MM MM MM -2022 05 26 06 40 250 3.0 5.0 MM MM MM MM 1021.4 MM 24.3 MM MM MM MM -2022 05 26 06 30 260 3.0 5.0 MM MM MM MM 1021.5 MM 24.3 MM MM MM MM -2022 05 26 06 20 250 3.0 4.0 MM MM MM MM 1021.6 MM 24.3 MM MM MM MM -2022 05 26 06 10 230 2.0 4.0 MM MM MM MM 1021.6 MM 24.3 MM MM MM MM -2022 05 26 06 00 220 3.0 5.0 MM MM MM MM 1021.8 MM 24.1 MM MM MM MM -2022 05 26 05 50 210 3.0 5.0 MM MM MM MM 1021.7 MM 24.1 MM MM MM MM -2022 05 26 05 40 210 3.0 4.0 MM MM MM MM 1021.8 MM 24.1 MM MM MM MM -2022 05 26 05 30 240 3.0 5.0 MM MM MM MM 1021.8 MM 24.0 MM MM MM MM -2022 05 26 05 20 250 3.0 5.0 MM MM MM MM 1021.9 MM 23.9 MM MM MM MM -2022 05 26 05 10 240 2.0 4.0 MM MM MM MM 1021.8 MM 23.8 MM MM MM MM -2022 05 26 05 00 240 3.0 5.0 MM MM MM MM 1022.0 MM 23.8 MM MM MM MM -2022 05 26 04 50 250 2.0 4.0 MM MM MM MM 1022.1 MM 23.8 MM MM MM MM -2022 05 26 04 40 260 2.0 3.0 MM MM MM MM 1022.2 MM 23.8 MM MM MM MM -2022 05 26 04 30 250 3.0 5.0 MM MM MM MM 1022.2 MM 23.7 MM MM MM MM -2022 05 26 04 20 270 3.0 4.0 MM MM MM MM 1022.3 MM 23.7 MM MM MM MM -2022 05 26 04 10 270 2.0 3.0 MM MM MM MM 1022.3 MM 23.6 MM MM MM MM -2022 05 26 04 00 280 3.0 5.0 MM MM MM MM 1022.3 MM 23.6 MM MM MM MM -2022 05 26 03 50 280 3.0 6.0 MM MM MM MM 1022.3 MM 23.6 MM MM MM MM -2022 05 26 03 40 290 3.0 4.0 MM MM MM MM 1022.4 MM 23.6 MM MM MM MM -2022 05 26 03 30 260 2.0 4.0 MM MM MM MM 1022.5 MM 23.5 MM MM MM MM -2022 05 26 03 20 260 3.0 4.0 MM MM MM MM 1022.5 MM 23.5 MM MM MM MM -2022 05 26 03 10 280 3.0 4.0 MM MM MM MM 1022.5 MM 23.5 MM MM MM MM -2022 05 26 03 00 280 3.0 5.0 MM MM MM MM 1022.5 MM 23.5 MM MM MM MM -2022 05 26 02 50 280 3.0 5.0 MM MM MM MM 1022.4 MM 23.5 MM MM MM MM -2022 05 26 02 40 280 4.0 5.0 MM MM MM MM 1022.5 MM 23.5 MM MM MM MM -2022 05 26 02 30 290 4.0 5.0 MM MM MM MM 1022.5 MM 23.6 MM MM MM MM -2022 05 26 02 20 300 3.0 6.0 MM MM MM MM 1022.4 MM 23.5 MM MM MM MM -2022 05 26 02 10 290 3.0 5.0 MM MM MM MM 1022.4 MM 23.5 MM MM MM MM -2022 05 26 02 00 330 3.0 4.0 MM MM MM MM 1022.4 MM 23.7 MM MM MM MM -2022 05 26 01 50 320 3.0 5.0 MM MM MM MM 1022.4 MM 23.8 MM MM MM MM -2022 05 26 01 40 330 3.0 4.0 MM MM MM MM 1022.2 MM 23.8 MM MM MM MM -2022 05 26 01 30 320 2.0 4.0 MM MM MM MM 1022.3 MM 23.9 MM MM MM MM -2022 05 26 01 20 310 3.0 5.0 MM MM MM MM 1022.3 MM 24.1 MM MM MM MM -2022 05 26 01 10 320 3.0 5.0 MM MM MM MM 1022.2 MM 24.2 MM MM MM MM +2023 07 19 12 10 220 6.0 7.0 MM MM MM MM 1019.3 28.3 28.6 25.9 MM MM MM +2023 07 19 12 00 220 6.0 7.0 MM MM MM MM 1019.1 28.3 28.6 25.9 MM +1.0 MM +2023 07 19 11 50 220 6.0 7.0 0.9 5 4.4 207 1019.0 28.2 28.6 25.9 MM MM MM +2023 07 19 11 40 220 6.0 7.0 MM MM MM MM 1018.9 28.2 28.6 25.9 MM MM MM +2023 07 19 11 30 220 6.0 7.0 MM MM MM MM 1018.9 28.1 28.6 25.9 MM MM MM +2023 07 19 11 20 220 6.0 7.0 1.1 5 4.4 208 1018.8 28.1 28.6 25.9 MM MM MM +2023 07 19 11 10 220 6.0 7.0 1.1 MM 4.4 208 1018.6 28.1 28.6 25.8 MM MM MM +2023 07 19 11 00 220 6.0 7.0 MM MM MM MM 1018.5 28.1 28.6 25.8 MM +0.4 MM +2023 07 19 10 50 220 6.0 8.0 1.0 5 4.5 201 1018.3 28.0 28.5 25.7 MM MM MM +2023 07 19 10 40 220 6.0 7.0 MM MM MM MM 1018.3 28.0 28.6 25.7 MM MM MM +2023 07 19 10 30 230 6.0 7.0 MM MM MM MM 1018.4 28.0 28.5 25.9 MM MM MM +2023 07 19 10 20 230 6.0 7.0 1.1 MM 4.4 212 1018.2 27.9 28.5 25.8 MM MM MM +2023 07 19 10 10 230 6.0 8.0 MM MM MM MM 1018.4 27.9 28.5 25.8 MM MM MM +2023 07 19 10 00 230 7.0 8.0 MM MM MM MM 1018.5 27.9 28.5 25.8 MM -0.0 MM +2023 07 19 09 50 230 6.0 8.0 1.2 5 4.4 215 1018.4 28.0 28.5 25.9 MM MM MM +2023 07 19 09 40 230 6.0 8.0 MM MM MM MM 1018.3 28.0 MM 25.8 MM MM MM +2023 07 19 09 30 230 6.0 8.0 MM MM MM MM 1018.2 27.9 28.5 25.7 MM MM MM +2023 07 19 09 20 240 6.0 8.0 1.1 5 4.4 199 1018.3 27.9 28.5 25.8 MM MM MM +2023 07 19 09 10 230 6.0 8.0 MM MM MM MM 1018.2 27.9 28.5 25.8 MM MM MM +2023 07 19 09 00 230 6.0 8.0 MM MM MM MM 1018.1 27.9 28.5 25.8 MM -0.4 MM +2023 07 19 08 50 230 6.0 8.0 1.2 5 4.4 205 1018.0 28.0 28.5 25.9 MM MM MM +2023 07 19 08 40 230 7.0 8.0 MM MM MM MM 1018.0 28.0 28.5 25.8 MM MM MM +2023 07 19 08 30 230 7.0 8.0 MM MM MM MM 1018.1 28.0 28.4 25.9 MM MM MM +2023 07 19 08 20 230 7.0 9.0 1.1 5 4.2 210 1018.1 28.0 28.4 25.9 MM MM MM +2023 07 19 08 10 230 7.0 9.0 MM MM MM MM 1018.2 28.0 28.4 25.9 MM MM MM +2023 07 19 08 00 230 7.0 9.0 MM MM MM MM 1018.2 28.0 28.5 25.8 MM -0.3 MM +2023 07 19 07 50 230 8.0 9.0 1.3 MM 4.5 215 1018.1 28.0 28.4 25.6 MM MM MM +2023 07 19 07 40 230 8.0 10.0 1.3 MM 4.5 215 1018.2 28.0 28.4 25.7 MM MM MM +2023 07 19 07 30 230 8.0 9.0 MM MM MM MM 1018.2 28.0 28.4 25.8 MM MM MM +2023 07 19 07 20 230 8.0 10.0 1.4 MM 4.4 207 1018.2 28.0 28.4 25.9 MM MM MM +2023 07 19 07 10 MM MM MM 1.4 5 4.4 207 MM MM MM MM MM MM MM +2023 07 19 07 00 240 8.0 10.0 MM MM MM MM 1018.3 28.0 28.4 26.0 MM -0.5 MM +2023 07 19 06 50 240 8.0 9.0 1.5 MM 4.5 211 1018.3 28.0 28.5 25.9 MM MM MM +2023 07 19 06 40 230 8.0 9.0 MM MM MM MM 1018.5 28.0 28.5 25.8 MM MM MM +2023 07 19 06 30 230 8.0 9.0 MM MM MM MM 1018.5 28.1 28.5 25.8 MM MM MM +2023 07 19 06 20 240 8.0 10.0 1.3 MM 4.3 222 1018.5 28.1 28.5 25.8 MM MM MM +2023 07 19 06 10 MM MM MM 1.3 5 4.3 222 MM MM MM MM MM MM MM +2023 07 19 06 00 240 8.0 10.0 MM MM MM MM 1018.6 28.1 MM 25.9 MM +0.0 MM +2023 07 19 05 50 240 8.0 10.0 1.4 5 4.4 206 1018.5 28.1 28.5 25.8 MM MM MM +2023 07 19 05 40 230 8.0 10.0 MM MM MM MM 1018.5 28.2 28.5 25.8 MM MM MM +2023 07 19 05 30 240 9.0 11.0 MM MM MM MM 1018.6 28.2 28.5 25.8 MM MM MM +2023 07 19 05 20 230 9.0 10.0 1.4 MM 4.4 211 1018.6 28.2 28.5 25.8 MM MM MM +2023 07 19 05 10 MM MM MM 1.4 5 4.4 211 MM MM MM MM MM MM MM +2023 07 19 05 00 230 9.0 10.0 MM MM MM MM 1018.5 28.2 28.5 25.6 MM +0.6 MM +2023 07 19 04 50 230 9.0 11.0 1.4 5 4.4 214 1018.7 28.2 28.5 25.7 MM MM MM +2023 07 19 04 40 230 9.0 11.0 MM MM MM MM 1018.7 28.3 28.5 25.9 MM MM MM +2023 07 19 04 30 230 9.0 11.0 MM MM MM MM 1018.8 28.3 28.5 25.9 MM MM MM +2023 07 19 04 20 230 9.0 12.0 1.4 4 4.2 211 1018.7 28.3 MM 26.0 MM MM MM +2023 07 19 04 10 230 10.0 11.0 MM MM MM MM 1018.7 28.4 28.5 25.9 MM MM MM +2023 07 19 04 00 230 10.0 12.0 MM MM MM MM 1018.9 28.4 MM 25.8 MM +1.6 MM +2023 07 19 03 50 230 10.0 12.0 1.3 5 4.2 210 1018.9 28.4 28.5 25.9 MM MM MM +2023 07 19 03 40 230 10.0 12.0 MM MM MM MM 1018.8 28.4 28.5 26.1 MM MM MM +2023 07 19 03 30 230 9.0 12.0 MM MM MM MM 1018.7 28.4 28.5 26.0 MM MM MM +2023 07 19 03 20 230 9.0 11.0 1.3 MM 4.3 207 1018.4 28.4 28.5 26.1 MM MM MM +2023 07 19 03 10 230 9.0 11.0 1.3 MM 4.3 207 1018.5 28.5 28.5 26.2 MM MM MM +2023 07 19 03 00 220 10.0 11.0 MM MM MM MM 1018.5 28.5 28.5 26.1 MM +2.1 MM +2023 07 19 02 50 220 10.0 12.0 1.2 4 4.0 211 1018.2 28.5 28.5 26.2 MM MM MM +2023 07 19 02 40 220 9.0 11.0 1.2 MM 4.0 211 1018.2 28.5 28.4 26.2 MM MM MM +2023 07 19 02 30 220 9.0 11.0 MM MM MM MM 1018.4 28.5 28.4 26.3 MM MM MM +2023 07 19 02 20 220 9.0 11.0 1.2 4 4.1 205 1018.3 28.5 28.5 26.3 MM MM MM +2023 07 19 02 10 220 9.0 11.0 MM MM MM MM 1018.1 28.4 28.5 26.3 MM MM MM +2023 07 19 02 00 220 9.0 11.0 MM MM MM MM 1017.9 28.4 28.4 26.4 MM +1.8 MM +2023 07 19 01 50 220 10.0 11.0 1.2 MM 4.0 197 1017.7 28.4 MM 26.3 MM MM MM +2023 07 19 01 40 220 10.0 12.0 1.2 MM 4.0 197 1017.9 28.4 28.5 26.2 MM MM MM +2023 07 19 01 30 220 9.0 11.0 MM MM MM MM 1017.9 28.4 28.5 26.2 MM MM MM +2023 07 19 01 20 220 9.0 11.0 1.1 10 3.9 80 1017.7 28.4 28.5 26.2 MM MM MM +2023 07 19 01 10 220 9.0 11.0 1.1 MM 3.9 80 1017.5 28.4 MM 26.3 MM MM MM +2023 07 19 01 00 220 10.0 11.0 MM MM MM MM 1017.3 28.4 28.5 26.2 MM +1.7 MM +2023 07 19 00 50 220 9.0 11.0 1.0 11 4.0 73 1017.0 28.4 28.5 26.3 MM MM MM +2023 07 19 00 40 220 10.0 11.0 MM MM MM MM 1016.9 28.4 28.5 26.3 MM MM MM +2023 07 19 00 30 220 9.0 11.0 MM MM MM MM 1016.7 28.4 MM 26.2 MM MM MM +2023 07 19 00 20 220 9.0 11.0 0.9 MM 4.0 149 1016.4 28.4 28.5 26.1 MM MM MM +2023 07 19 00 10 220 9.0 11.0 0.9 MM 4.0 149 1016.4 28.4 28.5 26.1 MM MM MM +2023 07 19 00 00 220 9.0 12.0 MM MM MM MM 1016.3 28.5 28.6 26.2 MM +0.3 MM +2023 07 18 23 50 220 9.0 11.0 0.9 7 3.9 138 1016.3 28.5 28.6 26.1 MM MM MM +2023 07 18 23 40 220 9.0 11.0 0.9 MM 3.9 138 1016.2 28.6 28.6 26.3 MM MM MM +2023 07 18 23 30 220 9.0 11.0 MM MM MM MM 1016.1 28.7 28.6 26.4 MM MM MM +2023 07 18 23 20 230 9.0 10.0 0.9 7 4.3 158 1016.1 28.9 28.6 25.9 MM MM MM +2023 07 18 23 10 230 8.0 10.0 MM MM MM MM 1016.2 29.1 28.7 25.6 MM MM MM +2023 07 18 23 00 220 8.0 10.0 0.9 MM 4.3 158 1016.0 29.2 MM 25.3 MM -0.5 MM +2023 07 18 22 50 230 8.0 10.0 0.8 11 4.4 92 1016.0 29.2 MM 25.0 MM MM MM +2023 07 18 22 40 230 8.0 9.0 MM MM MM MM 1016.0 29.3 28.6 24.8 MM MM MM +2023 07 18 22 30 230 7.0 8.0 MM MM MM MM 1015.9 29.4 28.6 24.7 MM MM MM +2023 07 18 22 20 220 7.0 9.0 0.9 10 4.5 60 1015.8 29.4 28.5 23.9 MM MM MM +2023 07 18 22 10 220 7.0 9.0 0.9 MM 4.5 60 1015.8 29.3 28.5 23.9 MM MM MM +2023 07 18 22 00 220 7.0 8.0 MM MM MM MM 1015.6 29.3 28.5 24.1 MM -1.0 MM +2023 07 18 21 50 220 7.0 8.0 0.9 11 4.7 110 1015.7 29.1 28.4 24.2 MM MM MM +2023 07 18 21 40 230 6.0 7.0 MM MM MM MM 1015.8 28.9 28.4 24.5 MM MM MM +2023 07 18 21 30 230 6.0 7.0 MM MM MM MM 1015.8 28.8 28.4 25.0 MM MM MM +2023 07 18 21 20 230 6.0 7.0 0.9 10 4.7 73 1015.7 28.9 28.4 24.7 MM MM MM +2023 07 18 21 10 230 5.0 7.0 0.9 MM 4.7 73 1015.8 29.0 28.4 25.0 MM MM MM +2023 07 18 21 00 240 5.0 6.0 MM MM MM MM 1015.9 28.9 28.3 24.7 MM -1.1 MM +2023 07 18 20 50 230 5.0 6.0 0.9 10 5.1 77 1016.0 28.9 28.4 24.4 MM MM MM +2023 07 18 20 40 240 4.0 6.0 MM MM MM MM 1016.0 28.8 28.4 24.7 MM MM MM +2023 07 18 20 30 250 5.0 6.0 MM MM MM MM 1016.4 28.8 28.4 25.0 MM MM MM +2023 07 18 20 20 250 5.0 6.0 0.8 MM 4.5 89 1016.5 28.8 28.4 25.1 MM MM MM +2023 07 18 20 10 MM MM MM 0.8 9 4.5 89 MM MM MM MM MM MM MM +2023 07 18 20 00 250 4.0 5.0 MM MM MM MM 1016.6 28.7 28.5 25.9 MM -0.5 MM +2023 07 18 19 50 240 4.0 6.0 0.9 11 4.9 92 1016.4 28.7 28.4 25.9 MM MM MM +2023 07 18 19 40 240 4.0 5.0 MM MM MM MM 1016.3 28.7 28.5 26.1 MM MM MM +2023 07 18 19 30 220 5.0 9.0 MM MM MM MM 1016.2 28.5 28.4 26.4 MM MM MM +2023 07 18 19 20 210 7.0 9.0 0.9 MM 4.9 69 1016.3 28.5 28.4 26.5 MM MM MM +2023 07 18 19 10 MM MM MM 0.9 11 4.9 69 MM MM MM MM MM MM MM +2023 07 18 19 00 200 7.0 9.0 MM MM MM MM 1016.5 28.4 28.4 26.1 MM -0.3 MM +2023 07 18 18 50 200 8.0 9.0 0.8 MM 4.9 80 1016.5 28.4 28.4 26.1 MM MM MM +2023 07 18 18 40 MM MM MM 0.8 10 4.9 80 MM MM MM MM MM MM MM +2023 07 18 18 30 200 7.0 9.0 MM MM MM MM 1016.4 28.5 28.5 26.5 MM MM MM +2023 07 18 18 20 200 6.0 8.0 0.8 10 5.0 69 1016.6 28.4 28.5 26.4 MM MM MM +2023 07 18 18 10 200 6.0 7.0 MM MM MM MM 1016.9 28.3 28.5 26.3 MM MM MM +2023 07 18 18 00 210 6.0 7.0 MM MM MM MM 1017.0 28.2 28.5 26.3 MM -0.0 MM +2023 07 18 17 50 200 6.0 7.0 0.8 11 4.9 94 1017.1 28.1 28.5 26.2 MM MM MM +2023 07 18 17 40 200 6.0 7.0 MM MM MM MM 1017.1 28.1 28.5 26.1 MM MM MM +2023 07 18 17 30 200 6.0 7.0 MM MM MM MM 1017.1 28.1 28.5 26.1 MM MM MM +2023 07 18 17 20 200 6.0 7.0 0.8 10 5.3 82 1017.2 28.1 28.5 26.1 MM MM MM +2023 07 18 17 10 190 7.0 8.0 0.8 MM 5.3 82 1017.1 28.1 28.5 26.1 MM MM MM +2023 07 18 17 00 190 7.0 8.0 MM MM MM MM 1017.0 28.2 MM 26.3 MM +0.3 MM +2023 07 18 16 50 190 6.0 8.0 0.8 MM 5.6 81 1017.0 28.3 28.6 26.3 MM MM MM +2023 07 18 16 40 MM MM MM 0.8 10 5.6 81 MM MM MM MM MM MM MM +2023 07 18 16 30 190 6.0 8.0 MM MM MM MM 1016.9 28.4 28.5 26.4 MM MM MM +2023 07 18 16 20 190 5.0 6.0 0.8 9 5.9 90 1016.8 28.4 28.5 26.3 MM MM MM +2023 07 18 16 10 190 5.0 6.0 0.8 MM 5.9 90 1016.8 28.5 28.5 26.6 MM MM MM +2023 07 18 16 00 200 3.0 4.0 MM MM MM MM 1016.9 28.6 28.5 26.7 MM +0.0 MM +2023 07 18 15 50 220 3.0 3.0 0.7 11 5.7 73 1016.9 28.4 28.5 26.7 MM MM MM +2023 07 18 15 40 220 2.0 3.0 0.7 MM 5.7 73 1017.1 28.3 28.4 26.8 MM MM MM +2023 07 18 15 30 230 2.0 3.0 MM MM MM MM 1017.1 28.2 28.4 26.8 MM MM MM +2023 07 18 15 20 230 2.0 3.0 0.7 MM 5.4 80 1017.1 28.1 28.4 26.9 MM MM MM +2023 07 18 15 10 240 3.0 4.0 0.7 MM 5.4 80 1017.1 28.0 28.5 26.9 MM MM MM +2023 07 18 15 00 260 3.0 4.0 MM MM MM MM 1017.1 28.0 28.4 27.0 MM +1.0 MM +2023 07 18 14 50 260 3.0 4.0 0.8 10 6.1 76 1017.2 28.1 28.5 27.1 MM MM MM +2023 07 18 14 40 270 3.0 4.0 0.8 MM 6.1 76 1017.1 28.1 28.5 27.0 MM MM MM +2023 07 18 14 30 270 3.0 4.0 MM MM MM MM 1016.9 28.2 28.4 26.9 MM MM MM +2023 07 18 14 20 250 2.0 3.0 0.8 MM 5.7 77 1017.0 28.2 28.4 26.9 MM MM MM +2023 07 18 14 10 250 1.0 2.0 0.8 MM 5.7 77 1016.8 28.3 MM 27.0 MM MM MM +2023 07 18 14 00 250 1.0 2.0 MM MM MM MM 1016.7 28.3 28.4 27.0 MM +1.3 MM +2023 07 18 13 50 270 2.0 3.0 0.8 MM 5.7 170 1016.6 28.3 28.5 27.0 MM MM MM +2023 07 18 13 40 MM MM MM 0.8 15 5.7 170 MM MM MM MM MM MM MM +2023 07 18 13 30 260 2.0 3.0 MM MM MM MM 1016.7 28.3 MM 27.1 MM MM MM +2023 07 18 13 20 250 2.0 3.0 0.8 11 5.7 88 1016.8 28.5 28.5 27.2 MM MM MM +2023 07 18 13 10 240 2.0 3.0 0.8 MM 5.7 88 1016.9 28.4 28.5 27.1 MM MM MM +2023 07 18 13 00 260 3.0 4.0 MM MM MM MM 1016.7 28.3 28.5 27.1 MM +1.6 MM +2023 07 18 12 50 270 3.0 4.0 0.8 MM 5.3 94 1016.6 28.2 28.4 27.1 MM MM MM +2023 07 18 12 40 MM MM MM 0.8 10 5.3 94 MM MM MM MM MM MM MM +2023 07 18 12 30 260 3.0 5.0 MM MM MM MM 1016.4 28.3 28.4 27.1 MM MM MM +2023 07 18 12 20 260 4.0 4.0 0.8 10 5.6 74 1016.5 28.3 28.4 27.1 MM MM MM +2023 07 18 12 10 260 3.0 4.0 MM MM MM MM 1016.3 28.3 28.4 27.2 MM MM MM +2023 07 18 12 00 260 3.0 4.0 MM MM MM MM 1016.2 28.3 28.2 27.2 MM +1.5 MM +2023 07 18 11 50 260 3.0 4.0 0.8 MM 5.1 71 1015.9 28.3 28.3 27.2 MM MM MM +2023 07 18 11 40 260 3.0 4.0 0.8 MM 5.1 71 1015.8 28.3 28.3 27.2 MM MM MM +2023 07 18 11 30 250 3.0 3.0 MM MM MM MM 1015.7 28.2 28.2 27.2 MM MM MM +2023 07 18 11 20 250 3.0 3.0 0.8 9 5.3 86 1015.7 28.2 28.2 27.2 MM MM MM +2023 07 18 11 10 250 3.0 4.0 MM MM MM MM 1015.7 28.2 MM 27.2 MM MM MM +2023 07 18 11 00 250 3.0 4.0 MM MM MM MM 1015.5 28.2 28.2 27.2 MM +0.9 MM +2023 07 18 10 50 250 3.0 4.0 0.8 MM 5.2 99 1015.3 28.1 28.2 27.1 MM MM MM +2023 07 18 10 40 MM MM MM 0.8 10 5.2 99 MM MM MM MM MM MM MM +2023 07 18 10 30 240 3.0 3.0 MM MM MM MM 1015.2 28.0 28.2 27.1 MM MM MM +2023 07 18 10 20 240 3.0 3.0 0.8 6 5.1 164 1015.2 28.0 28.1 27.1 MM MM MM +2023 07 18 10 10 250 3.0 3.0 MM MM MM MM 1015.3 28.0 28.1 27.1 MM MM MM +2023 07 18 10 00 260 3.0 4.0 MM MM MM MM 1015.2 28.0 28.1 27.1 MM -0.0 MM +2023 07 18 09 50 270 3.0 4.0 0.8 10 5.0 75 1015.1 28.1 28.1 27.1 MM MM MM +2023 07 18 09 40 270 3.0 4.0 0.8 MM 5.0 75 1015.0 28.2 28.1 27.1 MM MM MM +2023 07 18 09 30 260 4.0 5.0 MM MM MM MM 1015.0 28.3 28.1 27.1 MM MM MM +2023 07 18 09 20 240 4.0 5.0 0.8 10 5.0 77 1014.9 28.3 28.1 26.9 MM MM MM +2023 07 18 09 10 240 3.0 4.0 MM MM MM MM 1014.9 28.3 28.1 26.9 MM MM MM +2023 07 18 09 00 230 4.0 4.0 MM MM MM MM 1014.7 28.3 MM 26.8 MM -0.6 MM +2023 07 18 08 50 230 4.0 5.0 0.8 MM 4.8 170 1014.8 28.3 28.1 26.8 MM MM MM +2023 07 18 08 40 220 4.0 5.0 0.8 MM 4.8 170 1014.7 28.3 28.1 26.8 MM MM MM +2023 07 18 08 30 210 5.0 6.0 MM MM MM MM 1014.7 28.3 28.1 26.7 MM MM MM +2023 07 18 08 20 220 5.0 5.0 0.9 MM 5.0 164 1014.4 28.3 28.2 26.6 MM MM MM +2023 07 18 08 10 MM MM MM 0.9 6 5.0 164 MM MM MM MM MM MM MM +2023 07 18 08 00 220 5.0 6.0 MM MM MM MM 1014.6 28.3 28.2 26.6 MM -0.9 MM +2023 07 18 07 50 220 5.0 6.0 0.9 7 4.8 159 1014.7 28.2 28.3 26.5 MM MM MM +2023 07 18 07 40 210 5.0 5.0 MM MM MM MM 1014.7 28.2 28.3 26.5 MM MM MM +2023 07 18 07 30 210 5.0 6.0 MM MM MM MM 1014.7 28.2 28.3 26.5 MM MM MM +2023 07 18 07 20 210 5.0 6.0 0.9 MM 4.7 89 1014.7 28.2 28.3 26.5 MM MM MM +2023 07 18 07 10 MM MM MM 0.9 10 4.7 89 MM MM MM MM MM MM MM +2023 07 18 07 00 220 4.0 5.0 MM MM MM MM 1015.0 28.2 28.3 26.5 MM -0.6 MM +2023 07 18 06 50 220 4.0 5.0 0.9 MM 4.9 86 1014.9 28.2 28.3 26.5 MM MM MM +2023 07 18 06 40 MM MM MM 0.9 10 4.9 86 MM MM MM MM MM MM MM +2023 07 18 06 30 230 5.0 6.0 MM MM MM MM 1015.2 28.2 28.3 26.7 MM MM MM +2023 07 18 06 20 240 5.0 6.0 0.9 6 4.7 166 1015.2 28.3 28.4 26.7 MM MM MM +2023 07 18 06 10 240 5.0 6.0 0.9 MM 4.7 166 1015.4 28.3 28.4 26.7 MM MM MM +2023 07 18 06 00 240 5.0 6.0 MM MM MM MM 1015.3 28.3 28.4 26.7 MM -0.4 MM +2023 07 18 05 50 220 5.0 6.0 1.0 6 4.7 163 1015.5 28.2 28.5 26.4 MM MM MM +2023 07 18 05 40 210 5.0 7.0 1.0 MM 4.7 163 1015.4 28.1 28.5 26.1 MM MM MM +2023 07 18 05 30 210 6.0 7.0 MM MM MM MM 1015.5 28.2 28.5 25.9 MM MM MM +2023 07 18 05 20 210 5.0 6.0 1.0 MM 4.8 79 1015.3 28.4 28.6 25.7 MM MM MM +2023 07 18 05 10 220 6.0 7.0 1.0 MM 4.8 79 1015.4 28.2 28.6 24.9 MM MM MM +2023 07 18 05 00 210 7.0 8.0 MM MM MM MM 1015.5 28.2 28.6 26.0 MM +0.0 MM +2023 07 18 04 50 210 7.0 8.0 1.0 6 4.7 173 1015.5 28.4 MM 25.9 MM MM MM +2023 07 18 04 40 210 6.0 8.0 MM MM MM MM 1015.5 28.4 28.6 25.0 MM MM MM +2023 07 18 04 30 210 6.0 8.0 MM MM MM MM 1015.6 28.3 28.6 24.6 MM MM MM +2023 07 18 04 20 200 7.0 8.0 0.9 6 4.7 172 1015.6 28.4 28.5 25.6 MM MM MM +2023 07 18 04 10 210 7.0 8.0 0.9 MM 4.7 172 1015.5 28.5 28.6 25.7 MM MM MM +2023 07 18 04 00 200 7.0 9.0 MM MM MM MM 1015.6 28.4 MM 25.8 MM +0.7 MM +2023 07 18 03 50 200 8.0 9.0 1.0 6 4.9 153 1015.5 28.3 28.8 25.8 MM MM MM +2023 07 18 03 40 200 8.0 10.0 MM MM MM MM 1015.6 28.2 28.9 26.0 MM MM MM +2023 07 18 03 30 190 8.0 10.0 MM MM MM MM 1015.7 28.4 28.9 25.9 MM MM MM +2023 07 18 03 20 200 7.0 10.0 1.0 MM 5.4 179 1015.4 28.5 29.0 26.1 MM MM MM +2023 07 18 03 10 MM MM MM 1.0 6 5.4 179 MM MM MM MM MM MM MM +2023 07 18 03 00 210 4.0 5.0 MM MM MM MM 1015.7 28.8 28.9 27.1 MM +1.4 MM +2023 07 18 02 50 210 3.0 4.0 1.0 6 5.5 184 1015.7 28.8 28.9 27.0 MM MM MM +2023 07 18 02 40 200 3.0 4.0 1.0 MM 5.5 184 1015.6 28.8 28.9 26.9 MM MM MM +2023 07 18 02 30 210 4.0 4.0 MM MM MM MM 1015.6 28.8 29.1 26.9 MM MM MM +2023 07 18 02 20 210 4.0 5.0 1.0 6 5.5 158 1015.6 28.8 29.1 26.8 MM MM MM +2023 07 18 02 10 220 4.0 5.0 MM MM MM MM 1015.5 28.9 29.0 26.7 MM MM MM +2023 07 18 02 00 220 4.0 5.0 MM MM MM MM 1015.4 28.9 29.1 26.5 MM +1.1 MM +2023 07 18 01 50 210 4.0 5.0 1.0 6 5.5 169 1015.2 29.0 29.2 26.3 MM MM MM +2023 07 18 01 40 200 4.0 5.0 1.0 MM 5.5 169 1015.3 29.1 MM 26.1 MM MM MM +2023 07 18 01 30 200 4.0 5.0 MM MM MM MM 1015.3 29.1 29.2 25.9 MM MM MM +2023 07 18 01 20 200 4.0 5.0 0.9 MM 5.6 93 1015.2 29.1 29.2 26.1 MM MM MM +2023 07 18 01 10 MM MM MM 0.9 11 5.6 93 MM MM MM MM MM MM MM +2023 07 18 01 00 190 3.0 4.0 MM MM MM MM 1014.9 29.2 29.0 25.8 MM +0.4 MM +2023 07 18 00 50 200 2.0 3.0 0.9 8 5.5 93 1014.9 29.2 29.0 24.7 MM MM MM +2023 07 18 00 40 200 2.0 2.0 MM MM MM MM 1014.8 29.1 29.1 24.5 MM MM MM +2023 07 18 00 30 210 2.0 3.0 0.9 MM 5.5 93 1014.6 29.1 MM 24.5 MM MM MM +2023 07 18 00 20 220 2.0 3.0 1.0 6 5.5 181 1014.4 29.0 29.0 24.4 MM MM MM +2023 07 18 00 10 220 3.0 4.0 MM MM MM MM 1014.4 28.9 29.0 24.6 MM MM MM +2023 07 18 00 00 220 3.0 4.0 MM MM MM MM 1014.4 28.7 28.9 24.9 MM +0.4 MM +2023 07 17 23 50 210 3.0 4.0 1.0 11 5.5 100 1014.3 28.8 28.8 25.2 MM MM MM +2023 07 17 23 40 230 3.0 4.0 1.0 MM 5.5 100 1014.3 28.9 28.8 25.4 MM MM MM +2023 07 17 23 30 230 3.0 4.0 MM MM MM MM 1014.2 28.9 29.0 25.1 MM MM MM +2023 07 17 23 20 210 4.0 5.0 0.9 16 5.5 115 1014.3 28.9 29.1 25.0 MM MM MM +2023 07 17 23 10 210 3.0 4.0 MM MM MM MM 1014.2 29.0 29.1 25.1 MM MM MM +2023 07 17 23 00 200 3.0 4.0 MM MM MM MM 1014.1 29.0 29.2 24.9 MM -0.4 MM +2023 07 17 22 50 170 4.0 4.0 0.9 6 5.6 175 1014.1 28.9 29.2 24.5 MM MM MM +2023 07 17 22 40 170 3.0 4.0 MM MM MM MM 1014.2 28.9 29.3 24.6 MM MM MM +2023 07 17 22 30 160 2.0 3.0 MM MM MM MM 1014.4 28.8 29.4 23.6 MM MM MM +2023 07 17 22 20 140 1.0 2.0 0.9 16 5.2 98 1014.4 28.6 MM 23.1 MM MM MM +2023 07 17 22 10 90 2.0 4.0 MM MM MM MM 1014.4 28.4 29.0 23.1 MM MM MM +2023 07 17 22 00 100 3.0 5.0 MM MM MM MM 1014.4 28.5 29.2 23.6 MM -0.0 MM +2023 07 17 21 50 140 4.0 5.0 1.0 MM 4.8 166 1014.1 28.3 29.0 23.6 MM MM MM +2023 07 17 21 40 130 4.0 7.0 MM MM MM MM 1014.2 28.2 28.8 23.6 MM MM MM +2023 07 17 21 30 150 6.0 7.0 MM MM MM MM 1014.3 28.3 28.9 23.5 MM MM MM +2023 07 17 21 20 150 7.0 8.0 0.8 MM 5.1 170 1014.0 28.0 28.7 23.9 MM MM MM +2023 07 17 21 10 MM MM MM 0.8 6 5.1 170 MM MM MM MM MM MM MM +2023 07 17 21 00 200 5.0 9.0 MM MM MM MM 1013.9 29.4 28.3 26.4 MM -1.0 MM +2023 07 17 20 50 200 3.0 6.0 0.9 MM 5.6 180 1014.0 29.9 30.1 27.1 MM MM MM +2023 07 17 20 40 220 2.0 3.0 0.9 MM 5.6 180 1014.1 29.9 29.6 27.4 MM MM MM +2023 07 17 20 30 200 2.0 3.0 0.9 MM 5.6 180 1014.3 29.8 29.2 27.3 MM MM MM +2023 07 17 20 20 220 2.0 3.0 0.9 MM 5.7 165 1014.4 29.8 29.4 27.3 MM MM MM +2023 07 17 20 10 MM MM MM 0.9 6 5.7 165 MM MM MM MM MM MM MM +2023 07 17 20 00 200 2.0 3.0 MM MM MM MM 1014.6 29.9 28.3 27.2 MM +0.0 MM +2023 07 17 19 50 210 2.0 3.0 0.9 MM 5.5 179 1014.6 29.9 28.6 27.1 MM MM MM +2023 07 17 19 40 MM MM MM 0.9 6 5.5 179 MM MM MM MM MM MM MM +2023 07 17 19 30 200 2.0 3.0 MM MM MM MM 1014.2 30.0 28.2 27.1 MM MM MM +2023 07 17 19 20 190 2.0 3.0 0.9 6 5.6 170 1014.3 30.1 MM 27.1 MM MM MM +2023 07 17 19 10 210 2.0 3.0 MM MM MM MM 1014.4 30.1 28.2 27.0 MM MM MM +2023 07 17 19 00 210 2.0 3.0 MM MM MM MM 1014.5 30.1 28.2 27.0 MM -0.5 MM +2023 07 17 18 50 210 2.0 3.0 0.9 6 5.6 182 1014.4 30.0 MM 26.8 MM MM MM +2023 07 17 18 40 210 2.0 3.0 MM MM MM MM 1014.4 30.0 28.9 26.8 MM MM MM +2023 07 17 18 30 200 2.0 3.0 MM MM MM MM 1014.5 29.8 28.5 26.6 MM MM MM +2023 07 17 18 20 210 2.0 3.0 0.9 6 5.4 188 1014.6 29.7 28.7 26.6 MM MM MM +2023 07 17 18 10 210 3.0 3.0 MM MM MM MM 1014.7 29.7 28.4 26.7 MM MM MM +2023 07 17 18 00 210 3.0 3.0 MM MM MM MM 1014.9 29.7 MM 26.8 MM +0.0 MM +2023 07 17 17 50 200 3.0 3.0 0.9 MM 5.5 183 1014.8 29.6 28.3 26.8 MM MM MM +2023 07 17 17 40 MM MM MM 0.9 6 5.5 183 MM MM MM MM MM MM MM +2023 07 17 17 30 200 3.0 5.0 MM MM MM MM 1014.8 29.5 28.3 26.9 MM MM MM +2023 07 17 17 20 210 4.0 4.0 0.8 MM 5.5 175 1014.7 29.5 28.2 27.1 MM MM MM +2023 07 17 17 10 200 4.0 5.0 0.8 MM 5.5 175 1014.8 29.5 28.2 27.1 MM MM MM +2023 07 17 17 00 200 3.0 5.0 0.8 MM 5.5 175 1014.8 29.5 MM 27.3 MM +0.0 MM +2023 07 17 16 50 210 3.0 4.0 0.8 MM 5.4 183 1014.8 29.6 28.1 27.5 MM MM MM +2023 07 17 16 40 200 2.0 3.0 0.8 MM 5.4 183 1014.9 29.6 28.1 27.4 MM MM MM +2023 07 17 16 30 200 2.0 3.0 MM MM MM MM 1015.0 29.6 28.0 27.4 MM MM MM +2023 07 17 16 20 200 2.0 3.0 0.8 MM 5.3 182 1015.0 29.6 28.1 27.4 MM MM MM +2023 07 17 16 10 200 2.0 3.0 MM MM MM MM 1015.1 29.6 28.2 27.4 MM MM MM +2023 07 17 16 00 210 2.0 3.0 0.8 MM 5.3 182 1015.0 29.4 MM 27.2 MM +0.3 MM +2023 07 17 15 50 210 2.0 3.0 0.8 MM 5.6 148 1014.8 29.3 28.1 27.2 MM MM MM +2023 07 17 15 40 200 2.0 3.0 MM MM MM MM 1014.9 29.3 28.1 27.2 MM MM MM +2023 07 17 15 30 200 2.0 4.0 MM MM MM MM 1014.9 29.3 28.1 27.3 MM MM MM +2023 07 17 15 20 210 3.0 3.0 0.8 6 5.2 181 1014.9 29.3 28.1 27.3 MM MM MM +2023 07 17 15 10 200 2.0 3.0 MM MM MM MM 1015.1 29.4 28.1 27.4 MM MM MM +2023 07 17 15 00 190 2.0 3.0 0.8 MM 5.2 181 1015.1 29.4 MM 27.3 MM +0.6 MM +2023 07 17 14 50 190 2.0 3.0 0.8 MM 5.2 134 1015.0 29.3 28.0 27.4 MM MM MM +2023 07 17 14 40 200 2.0 3.0 MM MM MM MM 1015.1 29.3 28.1 27.5 MM MM MM +2023 07 17 14 30 180 2.0 3.0 MM MM MM MM 1015.2 29.6 28.0 27.7 MM MM MM +2023 07 17 14 20 180 1.0 2.0 0.9 MM 5.2 116 1015.2 29.5 28.0 27.7 MM MM MM +2023 07 17 14 10 MM MM MM 0.9 16 5.2 116 MM MM MM MM MM MM MM +2023 07 17 14 00 200 1.0 2.0 MM MM MM MM 1015.0 29.4 28.0 27.6 MM +1.3 MM +2023 07 17 13 50 200 1.0 2.0 0.9 6 5.3 182 1015.0 29.3 28.1 27.6 MM MM MM +2023 07 17 13 40 220 1.0 2.0 MM MM MM MM 1014.9 29.3 28.0 27.6 MM MM MM +2023 07 17 13 30 210 1.0 2.0 0.9 MM 5.3 182 1014.8 29.0 28.0 27.5 MM MM MM +2023 07 17 13 20 200 2.0 2.0 0.9 MM 5.2 175 1014.7 28.9 28.1 27.5 MM MM MM +2023 07 17 13 10 MM MM MM 0.9 6 5.2 175 MM MM MM MM MM MM MM +2023 07 17 13 00 190 2.0 3.0 MM MM MM MM 1014.6 28.7 MM 27.4 MM +1.5 MM +2023 07 17 12 50 180 2.0 3.0 0.9 6 5.2 185 1014.6 28.6 28.0 27.4 MM MM MM +2023 07 17 12 40 180 3.0 3.0 0.9 MM 5.2 185 1014.7 28.6 28.0 27.4 MM MM MM +2023 07 17 12 30 180 3.0 3.0 MM MM MM MM 1014.7 28.5 28.0 27.4 MM MM MM +2023 07 17 12 20 160 3.0 3.0 0.9 6 5.0 181 1014.7 28.5 28.0 27.4 MM MM MM +2023 07 17 12 10 170 2.0 3.0 MM MM MM MM 1014.7 28.5 MM 27.4 MM MM MM +2023 07 17 12 00 190 2.0 2.0 MM MM MM MM 1014.5 28.5 28.0 27.4 MM +1.7 MM +2023 07 17 11 50 190 2.0 2.0 1.0 6 4.9 179 1014.4 28.5 28.0 27.4 MM MM MM +2023 07 17 11 40 210 1.0 2.0 1.0 MM 4.9 179 1014.2 28.3 MM 27.3 MM MM MM +2023 07 17 11 30 200 1.0 2.0 MM MM MM MM 1014.1 28.2 28.0 27.3 MM MM MM +2023 07 17 11 20 200 1.0 2.0 1.0 MM 5.0 191 1013.9 28.1 28.0 27.2 MM MM MM +2023 07 17 11 10 MM MM MM 1.0 7 5.0 191 MM MM MM MM MM MM MM +2023 07 17 11 00 180 2.0 3.0 MM MM MM MM 1013.8 28.0 28.0 27.2 MM +0.9 MM +2023 07 17 10 50 180 2.0 2.0 0.9 6 4.8 183 1013.7 28.0 28.0 27.2 MM MM MM +2023 07 17 10 40 200 1.0 2.0 MM MM MM MM 1013.6 27.9 28.0 27.1 MM MM MM +2023 07 17 10 30 220 2.0 2.0 MM MM MM MM 1013.5 27.9 28.0 27.1 MM MM MM +2023 07 17 10 20 230 2.0 2.0 0.9 7 5.0 184 1013.4 27.9 28.1 27.1 MM MM MM +2023 07 17 10 10 230 2.0 2.0 MM MM MM MM 1013.3 27.9 28.1 27.1 MM MM MM +2023 07 17 10 00 240 2.0 3.0 MM MM MM MM 1013.2 27.9 28.2 27.1 MM +0.3 MM +2023 07 17 09 50 240 3.0 4.0 1.0 7 5.0 182 1013.1 27.9 MM 27.1 MM MM MM +2023 07 17 09 40 250 3.0 4.0 MM MM MM MM 1013.1 28.0 28.2 27.3 MM MM MM +2023 07 17 09 30 250 3.0 4.0 MM MM MM MM 1013.2 28.0 28.3 27.2 MM MM MM +2023 07 17 09 20 250 4.0 5.0 1.0 MM 4.7 184 1012.9 28.0 28.3 27.2 MM MM MM +2023 07 17 09 10 250 4.0 5.0 MM MM MM MM 1013.0 28.0 28.3 27.2 MM MM MM +2023 07 17 09 00 240 4.0 5.0 MM MM MM MM 1012.9 28.0 28.3 27.3 MM -0.4 MM +2023 07 17 08 50 240 4.0 5.0 1.1 7 4.8 182 1012.7 28.0 28.3 27.2 MM MM MM +2023 07 17 08 40 240 4.0 5.0 MM MM MM MM 1012.7 28.1 28.3 27.3 MM MM MM +2023 07 17 08 30 230 4.0 5.0 MM MM MM MM 1012.8 28.1 28.3 27.3 MM MM MM +2023 07 17 08 20 230 4.0 5.0 1.1 MM 4.8 192 1012.6 28.1 28.3 27.3 MM MM MM +2023 07 17 08 10 230 4.0 5.0 1.1 MM 4.8 192 1012.7 28.1 28.3 27.3 MM MM MM +2023 07 17 08 00 230 4.0 6.0 MM MM MM MM 1012.9 28.1 28.3 27.3 MM -0.5 MM +2023 07 17 07 50 230 4.0 6.0 1.1 MM 4.9 199 1012.8 28.1 28.3 27.3 MM MM MM +2023 07 17 07 40 220 5.0 6.0 MM MM MM MM 1013.0 28.1 28.3 27.3 MM MM MM +2023 07 17 07 30 220 5.0 7.0 MM MM MM MM 1013.0 28.1 28.3 27.3 MM MM MM +2023 07 17 07 20 220 5.0 6.0 1.2 7 4.8 192 1013.0 28.1 28.2 27.3 MM MM MM +2023 07 17 07 10 220 5.0 6.0 MM MM MM MM 1013.0 28.1 28.2 27.2 MM MM MM +2023 07 17 07 00 230 5.0 6.0 MM MM MM MM 1012.9 28.1 28.2 27.2 MM -0.5 MM +2023 07 17 06 50 230 5.0 7.0 1.3 MM 4.9 184 1012.7 28.1 28.3 27.2 MM MM MM +2023 07 17 06 40 MM MM MM 1.3 7 4.9 184 MM MM MM MM MM MM MM +2023 07 17 06 30 230 6.0 7.0 MM MM MM MM 1013.1 28.2 28.4 27.3 MM MM MM +2023 07 17 06 20 230 6.0 7.0 1.4 MM 4.9 197 1013.0 28.2 28.4 27.2 MM MM MM +2023 07 17 06 10 MM MM MM 1.4 7 4.9 197 MM MM MM MM MM MM MM +2023 07 17 06 00 230 6.0 8.0 MM MM MM MM 1013.3 28.2 28.4 27.2 MM +0.0 MM +2023 07 17 05 50 230 6.0 8.0 1.4 MM 4.8 197 1013.1 28.3 28.4 27.3 MM MM MM +2023 07 17 05 40 230 6.0 8.0 MM MM MM MM 1013.3 28.3 28.4 27.2 MM MM MM +2023 07 17 05 30 220 6.0 7.0 MM MM MM MM 1013.3 28.3 28.4 27.2 MM MM MM +2023 07 17 05 20 230 7.0 8.0 1.4 MM 4.8 193 1013.3 28.3 MM 27.1 MM MM MM +2023 07 17 05 10 220 6.0 8.0 1.4 MM 4.8 193 1013.4 28.3 28.4 27.2 MM MM MM +2023 07 17 05 00 220 6.0 8.0 MM MM MM MM 1013.4 28.4 28.4 27.2 MM +0.0 MM +2023 07 17 04 50 220 6.0 8.0 1.3 7 4.9 197 1013.3 28.4 28.4 27.2 MM MM MM +2023 07 17 04 40 220 6.0 8.0 MM MM MM MM 1013.4 28.4 28.4 27.2 MM MM MM +2023 07 17 04 30 220 6.0 8.0 MM MM MM MM 1013.5 28.4 28.4 27.2 MM MM MM +2023 07 17 04 20 220 7.0 8.0 1.4 MM 4.8 203 1013.5 28.4 28.4 27.2 MM MM MM +2023 07 17 04 10 MM MM MM 1.4 6 4.8 203 MM MM MM MM MM MM MM +2023 07 17 04 00 220 7.0 8.0 MM MM MM MM 1013.5 28.5 28.4 27.3 MM +1.1 MM +2023 07 17 03 50 220 7.0 8.0 1.4 MM 4.9 187 1013.3 28.5 28.4 27.3 MM MM MM +2023 07 17 03 40 220 8.0 9.0 MM MM MM MM 1013.6 28.5 28.4 27.3 MM MM MM +2023 07 17 03 30 220 7.0 9.0 MM MM MM MM 1013.6 28.5 28.4 27.4 MM MM MM +2023 07 17 03 20 220 7.0 9.0 1.4 MM 4.9 200 1013.6 28.5 28.4 27.4 MM MM MM +2023 07 17 03 10 MM MM MM 1.4 7 4.9 200 MM MM MM MM MM MM MM +2023 07 17 03 00 220 7.0 9.0 MM MM MM MM 1013.5 28.5 28.3 27.4 MM +1.4 MM +2023 07 17 02 50 220 7.0 8.0 1.5 7 5.0 198 1013.4 28.5 28.3 27.4 MM MM MM +2023 07 17 02 40 220 7.0 9.0 1.5 MM 5.0 198 1013.4 28.5 28.3 27.4 MM MM MM +2023 07 17 02 30 220 7.0 9.0 MM MM MM MM 1013.3 28.5 28.3 27.4 MM MM MM +2023 07 17 02 20 220 7.0 9.0 1.6 7 4.9 197 1013.3 28.5 28.3 27.4 MM MM MM +2023 07 17 02 10 220 7.0 9.0 MM MM MM MM 1013.3 28.5 28.3 27.3 MM MM MM +2023 07 17 02 00 220 7.0 9.0 MM MM MM MM 1013.1 28.6 28.3 27.4 MM +1.6 MM +2023 07 17 01 50 220 8.0 9.0 1.7 MM 4.9 207 1013.0 28.5 28.3 27.3 MM MM MM +2023 07 17 01 40 220 8.0 10.0 1.7 MM 4.9 207 1012.8 28.6 28.3 27.4 MM MM MM +2023 07 17 01 30 220 8.0 11.0 MM MM MM MM 1012.9 28.6 28.3 27.4 MM MM MM +2023 07 17 01 20 220 8.0 10.0 1.8 7 5.0 203 1012.8 28.6 28.3 27.4 MM MM MM +2023 07 17 01 10 220 8.0 10.0 MM MM MM MM 1012.5 28.6 28.3 27.3 MM MM MM +2023 07 17 01 00 220 9.0 11.0 MM MM MM MM 1012.4 28.6 28.3 27.3 MM +1.3 MM +2023 07 17 00 50 220 9.0 11.0 1.8 MM 5.0 205 1012.1 28.6 28.3 27.3 MM MM MM +2023 07 17 00 40 220 9.0 12.0 MM MM MM MM 1012.2 28.6 28.3 27.3 MM MM MM +2023 07 17 00 30 220 9.0 11.0 MM MM MM MM 1012.2 28.6 28.3 27.3 MM MM MM +2023 07 17 00 20 220 9.0 10.0 2.0 MM 5.2 212 1011.9 28.7 MM 27.4 MM MM MM +2023 07 17 00 10 220 8.0 10.0 MM MM MM MM 1012.0 28.7 28.3 27.4 MM MM MM +2023 07 17 00 00 220 8.0 11.0 2.0 MM 5.2 212 1012.0 28.7 MM 27.3 MM +1.4 MM +2023 07 16 23 50 220 8.0 11.0 2.0 MM 5.1 209 1011.9 28.8 28.3 27.3 MM MM MM +2023 07 16 23 40 MM MM MM 2.0 7 5.1 209 MM MM MM MM MM MM MM +2023 07 16 23 30 220 10.0 12.0 MM MM MM MM 1011.7 28.9 28.4 27.2 MM MM MM +2023 07 16 23 20 220 10.0 12.0 1.8 MM 5.0 207 1011.7 29.0 28.4 27.3 MM MM MM +2023 07 16 23 10 MM MM MM 1.8 7 5.0 207 MM MM MM MM MM MM MM +2023 07 16 23 00 220 9.0 11.0 MM MM MM MM 1011.5 29.1 28.3 27.4 MM +1.0 MM +2023 07 16 22 50 220 10.0 12.0 1.9 7 4.9 208 1011.4 29.1 28.3 27.3 MM MM MM +2023 07 16 22 40 220 10.0 12.0 MM MM MM MM 1011.4 29.1 28.3 27.3 MM MM MM +2023 07 16 22 30 220 9.0 11.0 MM MM MM MM 1011.4 29.1 28.3 27.4 MM MM MM +2023 07 16 22 20 210 9.0 12.0 2.2 MM 5.2 208 1011.3 29.0 28.2 27.2 MM MM MM +2023 07 16 22 10 MM MM MM 2.2 7 5.2 208 MM MM MM MM MM MM MM +2023 07 16 22 00 210 10.0 12.0 MM MM MM MM 1011.1 28.9 28.1 26.9 MM +0.3 MM +2023 07 16 21 50 210 10.0 12.0 1.9 7 4.8 204 1011.0 28.9 MM 27.0 MM MM MM +2023 07 16 21 40 210 10.0 13.0 MM MM MM MM 1011.0 28.9 28.1 27.1 MM MM MM +2023 07 16 21 30 210 10.0 13.0 MM MM MM MM 1010.9 28.9 28.1 27.0 MM MM MM +2023 07 16 21 20 210 11.0 13.0 2.2 7 5.1 211 1010.9 28.9 28.1 26.9 MM MM MM +2023 07 16 21 10 210 11.0 14.0 2.2 MM 5.1 211 1010.8 28.9 28.1 27.0 MM MM MM +2023 07 16 21 00 210 12.0 15.0 MM MM MM MM 1010.7 28.8 28.1 26.8 MM -0.4 MM +2023 07 16 20 50 210 12.0 15.0 2.1 6 4.9 207 1010.6 28.8 28.0 26.9 MM MM MM +2023 07 16 20 40 210 12.0 14.0 MM MM MM MM 1010.6 28.7 28.0 26.8 MM MM MM +2023 07 16 20 30 210 12.0 14.0 MM MM MM MM 1010.6 28.7 28.0 26.8 MM MM MM +2023 07 16 20 20 210 12.0 15.0 2.2 7 5.0 213 1010.6 28.7 28.0 26.8 MM MM MM +2023 07 16 20 10 210 13.0 15.0 MM MM MM MM 1010.6 28.7 MM 26.8 MM MM MM +2023 07 16 20 00 200 12.0 15.0 MM MM MM MM 1010.6 28.7 28.0 26.7 MM -1.6 MM +2023 07 16 19 50 200 12.0 16.0 2.1 MM 4.9 206 1010.7 28.7 27.9 26.4 MM MM MM +2023 07 16 19 40 MM MM MM 2.1 6 4.9 206 MM MM MM MM MM MM MM +2023 07 16 19 30 200 12.0 15.0 MM MM MM MM 1010.9 28.7 27.9 26.6 MM MM MM +2023 07 16 19 20 200 13.0 16.0 2.1 6 5.0 206 1010.9 28.7 MM 26.5 MM MM MM +2023 07 16 19 10 200 13.0 16.0 MM MM MM MM 1010.9 28.7 27.9 26.6 MM MM MM +2023 07 16 19 00 200 13.0 16.0 MM MM MM MM 1010.9 28.7 27.9 26.6 MM -1.8 MM +2023 07 16 18 50 200 12.0 15.0 2.0 MM 4.9 205 1010.7 28.6 27.9 26.6 MM MM MM +2023 07 16 18 40 MM MM MM 2.0 7 4.9 205 MM MM MM MM MM MM MM +2023 07 16 18 30 200 12.0 16.0 MM MM MM MM 1011.0 28.6 28.0 26.2 MM MM MM +2023 07 16 18 20 200 12.0 16.0 2.3 MM 5.1 202 1011.2 28.6 28.0 26.2 MM MM MM +2023 07 16 18 10 MM MM MM 2.3 6 5.1 202 MM MM MM MM MM MM MM +2023 07 16 18 00 200 13.0 16.0 MM MM MM MM 1011.2 28.4 28.0 26.0 MM -2.1 MM +2023 07 16 17 50 200 13.0 16.0 2.1 7 4.9 204 1011.4 28.3 28.0 25.9 MM MM MM +2023 07 16 17 40 200 13.0 17.0 MM MM MM MM 1011.5 28.3 28.0 26.1 MM MM MM +2023 07 16 17 30 200 13.0 16.0 MM MM MM MM 1011.6 28.5 28.0 25.8 MM MM MM +2023 07 16 17 20 200 13.0 18.0 2.1 7 4.9 203 1011.8 28.7 28.1 26.6 MM MM MM +2023 07 16 17 10 190 13.0 16.0 2.1 MM 4.9 203 1012.2 28.6 MM 26.7 MM MM MM +2023 07 16 17 00 190 11.0 14.0 MM MM MM MM 1012.3 28.5 28.1 26.7 MM -0.7 MM +2023 07 16 16 50 190 12.0 14.0 2.1 5 5.0 198 1012.4 28.3 28.1 26.5 MM MM MM +2023 07 16 16 40 190 12.0 15.0 MM MM MM MM 1012.5 28.2 28.1 26.4 MM MM MM +2023 07 16 16 30 190 12.0 14.0 MM MM MM MM 1012.7 28.0 28.1 26.2 MM MM MM +2023 07 16 16 20 190 12.0 15.0 1.8 6 4.8 205 1012.8 27.7 MM 25.8 MM MM MM +2023 07 16 16 10 190 12.0 15.0 MM MM MM MM 1012.7 27.4 28.1 25.6 MM MM MM +2023 07 16 16 00 190 12.0 15.0 MM MM MM MM 1012.8 27.2 28.1 25.5 MM +0.0 MM +2023 07 16 15 50 190 12.0 14.0 1.8 6 4.8 199 1012.7 27.4 28.1 25.8 MM MM MM +2023 07 16 15 40 190 10.0 14.0 MM MM MM MM 1012.8 27.4 28.2 26.0 MM MM MM +2023 07 16 15 30 190 11.0 13.0 MM MM MM MM 1012.8 27.5 28.2 25.8 MM MM MM +2023 07 16 15 20 190 11.0 14.0 1.9 6 4.7 199 1012.9 27.4 28.2 25.6 MM MM MM +2023 07 16 15 10 200 11.0 13.0 1.9 MM 4.7 199 1013.1 27.5 MM 26.3 MM MM MM +2023 07 16 15 00 200 11.0 14.0 MM MM MM MM 1013.3 27.4 28.1 26.0 MM +1.1 MM +2023 07 16 14 50 200 12.0 15.0 1.9 7 4.8 209 1012.8 27.2 MM 25.6 MM MM MM +2023 07 16 14 40 200 12.0 16.0 MM MM MM MM 1012.9 26.8 28.1 25.2 MM MM MM +2023 07 16 14 30 190 14.0 19.0 MM MM MM MM 1013.0 27.8 28.1 25.9 MM MM MM +2023 07 16 14 20 190 13.0 16.0 1.9 6 4.8 210 1013.2 27.8 28.1 26.2 MM MM MM +2023 07 16 14 10 190 13.0 16.0 1.9 MM 4.8 210 1013.2 28.0 MM 25.9 MM MM MM +2023 07 16 14 00 190 12.0 15.0 MM MM MM MM 1013.1 28.1 28.1 25.7 MM +0.5 MM +2023 07 16 13 50 180 11.0 13.0 1.9 6 4.9 191 1013.1 27.9 28.1 25.6 MM MM MM +2023 07 16 13 40 180 10.0 12.0 MM MM MM MM 1013.0 28.0 28.1 25.6 MM MM MM +2023 07 16 13 30 190 11.0 14.0 MM MM MM MM 1013.1 27.9 28.1 25.1 MM MM MM +2023 07 16 13 20 190 11.0 15.0 1.8 6 4.9 207 1013.1 27.7 MM 25.3 MM MM MM +2023 07 16 13 10 190 10.0 13.0 MM MM MM MM 1013.1 27.8 28.0 25.7 MM MM MM +2023 07 16 13 00 180 12.0 15.0 MM MM MM MM 1013.0 27.6 28.0 25.6 MM -0.0 MM +2023 07 16 12 50 180 13.0 16.0 1.8 6 4.9 200 1012.7 28.1 28.0 26.2 MM MM MM +2023 07 16 12 40 180 11.0 15.0 1.8 MM 4.9 200 1012.9 28.4 28.0 26.4 MM MM MM +2023 07 16 12 30 180 11.0 13.0 MM MM MM MM 1012.7 28.5 28.0 26.2 MM MM MM +2023 07 16 12 20 180 9.0 12.0 1.8 7 5.0 203 1012.5 28.4 28.0 26.4 MM MM MM +2023 07 16 12 10 180 9.0 11.0 1.8 MM 5.0 203 1012.3 28.4 28.0 26.2 MM MM MM +2023 07 16 12 00 190 9.0 11.0 MM MM MM MM 1012.2 28.4 MM 26.0 MM -0.5 MM +2023 07 16 11 50 190 9.0 12.0 1.9 6 5.3 198 1012.3 28.4 28.0 25.9 MM MM MM +2023 07 16 11 40 190 8.0 10.0 MM MM MM MM 1012.5 28.3 28.0 25.8 MM MM MM +2023 07 16 11 30 190 8.0 10.0 MM MM MM MM 1012.5 28.3 28.0 26.4 MM MM MM +2023 07 16 11 20 190 8.0 10.0 1.8 7 5.0 202 1012.5 28.4 28.0 26.5 MM MM MM +2023 07 16 11 10 190 8.0 10.0 MM MM MM MM 1012.4 28.4 28.0 26.6 MM MM MM +2023 07 16 11 00 190 9.0 11.0 MM MM MM MM 1012.4 28.3 28.0 26.1 MM +0.0 MM +2023 07 16 10 50 190 10.0 12.0 1.9 MM 4.9 192 1012.1 28.1 28.0 25.7 MM MM MM +2023 07 16 10 40 200 10.0 13.0 1.9 MM 4.9 192 1012.7 28.1 28.0 25.7 MM MM MM +2023 07 16 10 30 190 9.0 12.0 MM MM MM MM 1012.7 27.9 MM 25.5 MM MM MM +2023 07 16 10 20 190 11.0 13.0 1.9 6 5.0 199 1012.8 28.2 MM 25.6 MM MM MM +2023 07 16 10 10 190 11.0 14.0 1.9 MM 5.0 199 1012.7 28.7 28.0 26.2 MM MM MM +2023 07 16 10 00 190 11.0 13.0 MM MM MM MM 1012.8 28.8 28.0 26.9 MM -0.4 MM +2023 07 16 09 50 190 10.0 13.0 1.8 6 5.0 199 1013.0 28.8 MM 26.9 MM MM MM +2023 07 16 09 40 190 10.0 13.0 MM MM MM MM 1012.8 28.8 28.0 26.9 MM MM MM +2023 07 16 09 30 190 10.0 12.0 MM MM MM MM 1012.7 28.8 28.0 26.9 MM MM MM +2023 07 16 09 20 190 9.0 11.0 1.9 7 5.0 206 1012.5 28.8 28.0 27.0 MM MM MM +2023 07 16 09 10 190 9.0 11.0 MM MM MM MM 1012.5 28.9 28.0 27.0 MM MM MM +2023 07 16 09 00 200 9.0 12.0 MM MM MM MM 1012.7 28.9 MM 27.0 MM -1.0 MM +2023 07 16 08 50 200 9.0 11.0 1.7 6 4.8 205 1012.7 28.9 28.0 27.0 MM MM MM +2023 07 16 08 40 200 9.0 11.0 MM MM MM MM 1012.6 28.9 28.0 26.9 MM MM MM +2023 07 16 08 30 200 9.0 11.0 MM MM MM MM 1012.6 28.9 28.1 26.9 MM MM MM +2023 07 16 08 20 200 9.0 11.0 1.8 6 4.8 206 1012.6 28.8 28.1 26.7 MM MM MM +2023 07 16 08 10 200 9.0 13.0 MM MM MM MM 1012.5 28.9 28.1 26.8 MM MM MM +2023 07 16 08 00 200 9.0 12.0 MM MM MM MM 1012.5 28.8 28.1 26.7 MM -1.5 MM +2023 07 16 07 50 210 9.0 12.0 1.8 6 5.1 204 1012.5 28.8 28.1 26.8 MM MM MM +2023 07 16 07 40 210 9.0 11.0 MM MM MM MM 1012.6 28.9 28.1 26.8 MM MM MM +2023 07 16 07 30 210 9.0 12.0 MM MM MM MM 1012.7 28.9 28.1 26.8 MM MM MM +2023 07 16 07 20 210 8.0 11.0 1.9 MM 5.1 202 1012.7 28.9 28.2 26.9 MM MM MM +2023 07 16 07 10 200 9.0 11.0 1.9 MM 5.1 202 1013.0 28.9 28.2 26.8 MM MM MM +2023 07 16 07 00 200 9.0 11.0 MM MM MM MM 1013.2 28.9 28.2 26.8 MM -1.0 MM +2023 07 16 06 50 210 9.0 11.0 1.9 MM 5.0 203 1013.1 28.9 28.2 26.8 MM MM MM +2023 07 16 06 40 MM MM MM 1.9 6 5.0 203 MM MM MM MM MM MM MM +2023 07 16 06 30 210 9.0 12.0 MM MM MM MM 1013.7 28.9 28.3 26.9 MM MM MM +2023 07 16 06 20 200 10.0 12.0 1.8 MM 5.0 202 1013.4 28.9 MM 26.8 MM MM MM +2023 07 16 06 10 200 10.0 13.0 1.8 MM 5.0 202 1013.7 28.9 28.3 26.9 MM MM MM +2023 07 16 06 00 200 9.0 11.0 MM MM MM MM 1013.4 28.9 28.3 26.9 MM -0.7 MM +2023 07 16 05 50 200 9.0 12.0 1.7 6 4.9 203 1013.9 28.9 MM 26.8 MM MM MM +2023 07 16 05 40 200 9.0 12.0 MM MM MM MM 1013.9 28.9 28.3 26.8 MM MM MM +2023 07 16 05 30 200 10.0 12.0 MM MM MM MM 1014.0 28.9 28.3 26.8 MM MM MM +2023 07 16 05 20 200 9.0 12.0 1.8 6 4.9 198 1014.0 28.9 28.3 26.9 MM MM MM +2023 07 16 05 10 200 9.0 11.0 1.8 MM 4.9 198 1013.9 28.9 28.3 27.0 MM MM MM +2023 07 16 05 00 200 9.0 12.0 MM MM MM MM 1014.1 28.9 28.3 27.1 MM +0.4 MM +2023 07 16 04 50 200 10.0 12.0 1.8 6 4.8 199 1014.0 28.9 28.4 26.9 MM MM MM +2023 07 16 04 40 200 10.0 12.0 MM MM MM MM 1014.0 28.9 28.4 26.9 MM MM MM +2023 07 16 04 30 200 10.0 12.0 MM MM MM MM 1014.1 28.9 28.4 26.8 MM MM MM +2023 07 16 04 20 200 10.0 12.0 2.0 6 5.0 200 1014.2 28.9 28.4 26.9 MM MM MM +2023 07 16 04 10 200 11.0 13.0 2.0 MM 5.0 200 1014.2 29.0 28.4 26.9 MM MM MM +2023 07 16 04 00 200 10.0 13.0 MM MM MM MM 1014.2 28.9 28.4 26.9 MM +0.8 MM +2023 07 16 03 50 200 10.0 12.0 1.9 6 4.8 200 1014.3 28.9 28.4 26.9 MM MM MM +2023 07 16 03 40 200 10.0 13.0 MM MM MM MM 1014.3 28.9 28.5 26.8 MM MM MM +2023 07 16 03 30 200 11.0 13.0 MM MM MM MM 1014.4 28.9 28.5 26.6 MM MM MM +2023 07 16 03 20 200 11.0 13.0 1.9 6 4.9 208 1014.5 29.0 MM 26.7 MM MM MM +2023 07 16 03 10 200 11.0 13.0 1.9 MM 4.9 208 1014.5 29.0 28.5 26.8 MM MM MM +2023 07 16 03 00 200 11.0 14.0 MM MM MM MM 1014.6 29.0 28.6 26.7 MM +0.7 MM +2023 07 16 02 50 200 11.0 14.0 1.9 6 4.8 205 1014.4 29.0 28.6 26.9 MM MM MM +2023 07 16 02 40 200 11.0 14.0 1.9 MM 4.8 205 1014.3 29.0 28.6 26.9 MM MM MM +2023 07 16 02 30 200 11.0 14.0 MM MM MM MM 1014.3 28.9 28.6 26.9 MM MM MM +2023 07 16 02 20 200 11.0 14.0 1.7 MM 4.6 197 1014.1 28.9 28.6 26.9 MM MM MM +2023 07 16 02 10 MM MM MM 1.7 5 4.6 197 MM MM MM MM MM MM MM +2023 07 16 02 00 200 11.0 14.0 MM MM MM MM 1013.9 28.8 28.6 26.8 MM -0.3 MM +2023 07 16 01 50 200 11.0 14.0 1.5 MM 4.5 204 1013.4 28.8 MM 26.7 MM MM MM +2023 07 16 01 40 190 12.0 14.0 MM MM MM MM 1013.6 28.8 28.7 26.6 MM MM MM +2023 07 16 01 30 190 11.0 15.0 MM MM MM MM 1013.5 28.8 28.7 26.5 MM MM MM +2023 07 16 01 20 190 11.0 13.0 1.5 5 4.6 196 1013.5 28.8 MM 26.6 MM MM MM +2023 07 16 01 10 190 10.0 13.0 1.5 MM 4.6 196 1013.4 28.9 MM 26.6 MM MM MM +2023 07 16 01 00 200 11.0 14.0 MM MM MM MM 1013.4 28.9 28.8 26.3 MM -0.6 MM +2023 07 16 00 50 200 11.0 14.0 1.3 5 4.4 192 1013.5 28.9 MM 26.2 MM MM MM +2023 07 16 00 40 200 11.0 14.0 MM MM MM MM 1013.5 29.0 28.8 26.0 MM MM MM +2023 07 16 00 30 200 10.0 12.0 MM MM MM MM 1013.6 29.0 MM 25.9 MM MM MM +2023 07 16 00 20 200 9.0 12.0 1.4 5 4.4 198 1013.7 28.9 28.9 26.2 MM MM MM +2023 07 16 00 10 200 10.0 12.0 1.4 MM 4.4 198 1013.7 28.9 28.9 26.2 MM MM MM +2023 07 16 00 00 200 10.0 12.0 MM MM MM MM 1013.6 28.9 28.9 25.9 MM -0.5 MM +2023 07 15 23 50 200 11.0 13.0 1.3 6 4.3 187 1013.9 28.9 28.9 25.9 MM MM MM +2023 07 15 23 40 200 10.0 13.0 MM MM MM MM 1013.8 28.8 28.9 26.2 MM MM MM +2023 07 15 23 30 200 10.0 13.0 MM MM MM MM 1013.7 28.8 28.9 26.4 MM MM MM +2023 07 15 23 20 190 10.0 12.0 1.2 5 4.5 190 1013.6 28.9 28.9 26.5 MM MM MM +2023 07 15 23 10 200 10.0 12.0 1.2 MM 4.5 190 1013.8 28.9 28.9 26.6 MM MM MM +2023 07 15 23 00 200 9.0 11.0 MM MM MM MM 1013.9 28.8 28.9 26.4 MM -0.7 MM +2023 07 15 22 50 190 9.0 11.0 1.2 5 4.5 189 1013.8 28.9 28.9 26.4 MM MM MM +2023 07 15 22 40 190 8.0 10.0 MM MM MM MM 1013.9 28.9 MM 26.3 MM MM MM +2023 07 15 22 30 190 8.0 10.0 MM MM MM MM 1013.7 28.8 28.9 26.4 MM MM MM +2023 07 15 22 20 190 8.0 10.0 1.2 MM 4.5 121 1013.5 28.8 28.9 26.4 MM MM MM +2023 07 15 22 10 190 8.0 9.0 1.2 MM 4.5 121 1013.7 28.9 28.9 26.5 MM MM MM +2023 07 15 22 00 190 7.0 9.0 MM MM MM MM 1013.9 28.9 28.9 26.3 MM -1.3 MM +2023 07 15 21 50 190 8.0 9.0 1.2 5 4.6 189 1013.8 28.9 28.9 26.4 MM MM MM +2023 07 15 21 40 190 7.0 9.0 MM MM MM MM 1014.0 29.0 28.9 26.4 MM MM MM +2023 07 15 21 30 190 7.0 9.0 MM MM MM MM 1014.1 29.0 28.9 26.1 MM MM MM +2023 07 15 21 20 190 7.0 8.0 1.1 MM 4.5 129 1014.0 29.0 28.9 26.0 MM MM MM +2023 07 15 21 10 200 6.0 8.0 1.1 MM 4.5 129 1014.1 28.9 28.9 26.4 MM MM MM +2023 07 15 21 00 190 6.0 8.0 1.1 MM 4.5 129 1014.1 28.9 MM 26.6 MM -1.6 MM +2023 07 15 20 50 200 6.0 8.0 1.1 MM 4.4 191 1014.0 28.9 29.0 26.5 MM MM MM +2023 07 15 20 40 200 6.0 8.0 1.1 MM 4.4 191 1014.1 28.8 29.0 26.6 MM MM MM +2023 07 15 20 30 200 6.0 7.0 MM MM MM MM 1014.2 29.0 29.0 26.8 MM MM MM +2023 07 15 20 20 200 7.0 8.0 1.1 MM 4.6 153 1014.3 29.0 29.0 26.5 MM MM MM +2023 07 15 20 10 MM MM MM 1.1 9 4.6 153 MM MM MM MM MM MM MM +2023 07 15 20 00 200 7.0 8.0 MM MM MM MM 1014.5 29.0 29.0 26.8 MM -1.9 MM +2023 07 15 19 50 200 7.0 8.0 1.1 5 4.4 205 1014.7 28.9 29.0 26.8 MM MM MM +2023 07 15 19 40 200 7.0 8.0 MM MM MM MM 1014.6 28.9 29.0 26.8 MM MM MM +2023 07 15 19 30 210 7.0 9.0 MM MM MM MM 1015.0 28.9 29.0 26.8 MM MM MM +2023 07 15 19 20 210 7.0 9.0 1.1 MM 4.4 187 1015.1 28.9 29.0 26.7 MM MM MM +2023 07 15 19 10 MM MM MM 1.1 5 4.4 187 MM MM MM MM MM MM MM +2023 07 15 19 00 200 7.0 8.0 MM MM MM MM 1015.2 29.0 MM 26.7 MM -1.2 MM +2023 07 15 18 50 200 7.0 9.0 1.1 MM 4.6 127 1015.2 29.0 29.0 26.6 MM MM MM +2023 07 15 18 40 MM MM MM 1.1 10 4.6 127 MM MM MM MM MM MM MM +2023 07 15 18 30 210 7.0 9.0 MM MM MM MM 1015.5 29.0 29.0 26.9 MM MM MM +2023 07 15 18 20 200 7.0 8.0 1.1 5 4.4 185 1015.6 29.0 29.0 26.8 MM MM MM +2023 07 15 18 10 200 7.0 8.0 MM MM MM MM 1015.7 29.0 29.0 26.7 MM MM MM +2023 07 15 18 00 200 6.0 8.0 1.1 MM 4.4 185 1015.7 28.8 29.0 26.5 MM -0.7 MM +2023 07 15 17 50 200 6.0 7.0 1.1 MM 4.5 197 1015.4 28.6 29.0 26.3 MM MM MM +2023 07 15 17 40 190 6.0 7.0 1.1 MM 4.5 197 1015.7 28.4 29.0 26.0 MM MM MM +2023 07 15 17 30 190 6.0 7.0 MM MM MM MM 1015.7 28.3 29.0 25.9 MM MM MM +2023 07 15 17 20 180 5.0 7.0 1.1 5 4.6 206 1016.0 28.0 29.0 25.8 MM MM MM +2023 07 15 17 10 160 5.0 6.0 1.1 MM 4.6 206 1016.1 27.7 28.9 25.6 MM MM MM +2023 07 15 17 00 150 5.0 7.0 MM MM MM MM 1016.4 27.5 MM 25.5 MM +0.3 MM +2023 07 15 16 50 140 6.0 7.0 1.1 MM 4.6 211 1016.3 26.9 28.9 25.2 MM MM MM +2023 07 15 16 40 140 5.0 7.0 MM MM MM MM 1016.9 26.3 28.9 25.1 MM MM MM +2023 07 15 16 30 150 5.0 7.0 MM MM MM MM 1016.9 26.0 28.9 24.9 MM MM MM +2023 07 15 16 20 MM MM MM 1.0 MM 4.4 109 1016.4 MM 28.9 MM MM MM MM +2023 07 15 16 10 170 7.0 9.0 1.0 MM 4.4 109 1016.3 27.7 28.9 25.4 MM MM MM +2023 07 15 16 00 190 8.0 11.0 MM MM MM MM 1016.3 28.5 28.9 25.8 MM +0.7 MM +2023 07 15 15 50 200 6.0 7.0 1.0 10 4.8 115 1016.0 29.4 29.0 26.8 MM MM MM +2023 07 15 15 40 200 6.0 7.0 MM MM MM MM 1016.1 29.4 29.0 26.6 MM MM MM +2023 07 15 15 30 190 6.0 7.0 MM MM MM MM 1016.2 29.4 29.0 26.6 MM MM MM +2023 07 15 15 20 190 6.0 7.0 1.1 MM 4.9 210 1016.0 29.4 28.9 26.8 MM MM MM +2023 07 15 15 10 MM MM MM 1.1 5 4.9 210 MM MM MM MM MM MM MM +2023 07 15 15 00 190 5.0 6.0 MM MM MM MM 1016.3 29.3 28.9 27.0 MM +1.1 MM +2023 07 15 14 50 190 5.0 6.0 1.0 5 4.6 198 1016.2 29.3 28.9 27.0 MM MM MM +2023 07 15 14 40 190 5.0 7.0 MM MM MM MM 1016.0 29.2 28.8 26.8 MM MM MM +2023 07 15 14 30 190 6.0 7.0 MM MM MM MM 1016.1 29.3 28.9 27.0 MM MM MM +2023 07 15 14 20 190 5.0 7.0 1.1 MM 5.0 195 1016.0 29.3 28.8 27.1 MM MM MM +2023 07 15 14 10 MM MM MM 1.1 5 5.0 195 MM MM MM MM MM MM MM +2023 07 15 14 00 190 5.0 6.0 MM MM MM MM 1016.1 29.3 28.8 26.8 MM +1.3 MM +2023 07 15 13 50 200 5.0 6.0 1.0 10 4.8 135 1016.0 29.3 28.8 26.7 MM MM MM +2023 07 15 13 40 200 5.0 6.0 MM MM MM MM 1015.9 29.3 28.8 26.7 MM MM MM +2023 07 15 13 30 200 5.0 6.0 MM MM MM MM 1015.8 29.2 28.8 26.5 MM MM MM +2023 07 15 13 20 200 5.0 6.0 1.1 MM 4.7 209 1015.6 29.2 28.8 26.6 MM MM MM +2023 07 15 13 10 190 5.0 6.0 MM MM MM MM 1015.7 29.2 28.8 26.8 MM MM MM +2023 07 15 13 00 190 4.0 6.0 MM MM MM MM 1015.7 29.2 28.7 26.7 MM +1.2 MM +2023 07 15 12 50 200 4.0 6.0 1.1 MM 4.8 113 1015.3 29.2 28.7 26.5 MM MM MM +2023 07 15 12 40 190 5.0 6.0 1.1 MM 4.8 113 1015.3 29.1 28.7 26.6 MM MM MM +2023 07 15 12 30 200 5.0 6.0 MM MM MM MM 1015.4 29.0 MM 26.9 MM MM MM +2023 07 15 12 20 200 5.0 6.0 1.1 5 4.6 212 1015.4 29.0 28.7 26.6 MM MM MM +2023 07 15 12 10 190 5.0 6.0 MM MM MM MM 1015.3 29.2 28.7 26.7 MM MM MM +2023 07 15 12 00 200 5.0 6.0 MM MM MM MM 1015.2 29.2 28.7 26.9 MM +1.0 MM +2023 07 15 11 50 190 5.0 7.0 1.1 5 4.6 215 1015.0 29.2 28.7 26.9 MM MM MM +2023 07 15 11 40 200 6.0 7.0 MM MM MM MM 1015.0 29.1 28.7 26.8 MM MM MM +2023 07 15 11 30 200 6.0 7.0 MM MM MM MM 1015.1 29.0 28.7 26.7 MM MM MM +2023 07 15 11 20 200 6.0 7.0 1.0 9 4.6 121 1015.0 28.9 28.7 26.7 MM MM MM +2023 07 15 11 10 200 6.0 8.0 1.0 MM 4.6 121 1014.9 28.9 28.7 26.7 MM MM MM +2023 07 15 11 00 190 6.0 8.0 MM MM MM MM 1014.9 29.0 28.7 26.7 MM +0.4 MM +2023 07 15 10 50 200 6.0 8.0 1.2 9 4.8 126 1014.8 29.0 28.7 26.5 MM MM MM +2023 07 15 10 40 190 6.0 8.0 MM MM MM MM 1014.7 29.0 28.7 26.5 MM MM MM +2023 07 15 10 30 190 7.0 8.0 MM MM MM MM 1014.7 29.0 28.7 26.5 MM MM MM +2023 07 15 10 20 190 7.0 9.0 1.0 9 4.6 119 1014.7 29.0 28.7 26.5 MM MM MM +2023 07 15 10 10 190 7.0 8.0 1.0 MM 4.6 119 1014.6 29.0 28.8 26.5 MM MM MM +2023 07 15 10 00 190 7.0 9.0 MM MM MM MM 1014.5 28.9 28.8 26.4 MM -0.5 MM +2023 07 15 09 50 190 7.0 9.0 1.1 5 4.6 199 1014.4 28.8 28.8 26.4 MM MM MM +2023 07 15 09 40 180 7.0 9.0 MM MM MM MM 1014.4 28.6 28.8 26.4 MM MM MM +2023 07 15 09 30 170 7.0 9.0 MM MM MM MM 1014.3 28.5 28.8 26.3 MM MM MM +2023 07 15 09 20 170 7.0 9.0 1.1 5 4.7 215 1014.4 28.5 28.8 26.4 MM MM MM +2023 07 15 09 10 180 7.0 8.0 MM MM MM MM 1014.3 28.6 28.8 26.4 MM MM MM +2023 07 15 09 00 180 7.0 9.0 MM MM MM MM 1014.3 28.6 MM 26.4 MM -1.4 MM +2023 07 15 08 50 180 6.0 8.0 1.1 5 4.7 215 1014.1 28.5 28.8 26.3 MM MM MM +2023 07 15 08 40 180 6.0 8.0 MM MM MM MM 1014.4 28.3 28.7 26.1 MM MM MM +2023 07 15 08 30 190 6.0 7.0 MM MM MM MM 1014.2 28.4 28.8 26.0 MM MM MM +2023 07 15 08 20 190 6.0 8.0 1.1 MM 4.5 208 1014.4 28.2 28.8 25.0 MM MM MM +2023 07 15 08 10 MM MM MM 1.1 5 4.5 208 MM MM MM MM MM MM MM +2023 07 15 08 00 180 7.0 10.0 MM MM MM MM 1014.5 28.8 28.7 26.2 MM -1.5 MM +2023 07 15 07 50 190 7.0 9.0 1.2 MM 4.7 210 1014.3 28.8 28.7 26.0 MM MM MM +2023 07 15 07 40 180 7.0 8.0 MM MM MM MM 1014.5 28.9 28.7 25.8 MM MM MM +2023 07 15 07 30 190 6.0 8.0 MM MM MM MM 1014.6 28.9 28.7 25.8 MM MM MM +2023 07 15 07 20 180 6.0 8.0 1.2 MM 4.7 205 1014.7 28.8 28.7 25.8 MM MM MM +2023 07 15 07 10 MM MM MM 1.2 5 4.7 205 MM MM MM MM MM MM MM +2023 07 15 07 00 190 6.0 8.0 MM MM MM MM 1015.0 28.8 28.8 25.9 MM -1.1 MM +2023 07 15 06 50 180 7.0 9.0 1.1 MM 4.6 128 1015.0 28.8 28.8 25.8 MM MM MM +2023 07 15 06 40 MM MM MM 1.1 8 4.6 128 MM MM MM MM MM MM MM +2023 07 15 06 30 190 6.0 8.0 MM MM MM MM 1015.4 28.9 28.8 25.5 MM MM MM +2023 07 15 06 20 180 7.0 9.0 1.2 MM 4.4 217 1015.2 28.9 28.8 25.8 MM MM MM +2023 07 15 06 10 190 7.0 9.0 MM MM MM MM 1015.4 28.8 28.8 25.8 MM MM MM +2023 07 15 06 00 190 7.0 9.0 MM MM MM MM 1015.7 28.9 28.8 25.7 MM -0.4 MM +2023 07 15 05 50 190 8.0 10.0 1.2 MM 4.6 204 1015.8 28.9 28.8 25.7 MM MM MM +2023 07 15 05 40 190 8.0 10.0 1.2 MM 4.6 204 1015.8 28.9 28.8 25.7 MM MM MM +2023 07 15 05 30 190 8.0 9.0 MM MM MM MM 1016.0 28.9 28.8 25.6 MM MM MM +2023 07 15 05 20 190 8.0 9.0 1.2 MM 4.4 210 1016.0 28.9 28.8 25.4 MM MM MM +2023 07 15 05 10 MM MM MM 1.2 5 4.4 210 MM MM MM MM MM MM MM +2023 07 15 05 00 180 8.0 10.0 MM MM MM MM 1016.1 28.9 28.8 25.2 MM +0.4 MM +2023 07 15 04 50 190 8.0 10.0 1.1 5 4.4 203 1016.3 29.0 28.8 25.3 MM MM MM +2023 07 15 04 40 190 8.0 10.0 MM MM MM MM 1016.4 28.9 28.8 25.1 MM MM MM +2023 07 15 04 30 180 9.0 11.0 MM MM MM MM 1016.1 28.8 28.9 25.5 MM MM MM +2023 07 15 04 20 180 9.0 10.0 1.2 5 4.3 212 1016.0 28.9 MM 25.7 MM MM MM +2023 07 15 04 10 180 9.0 10.0 1.2 MM 4.3 212 1016.1 28.9 28.9 25.3 MM MM MM +2023 07 15 04 00 180 9.0 11.0 MM MM MM MM 1016.1 28.9 28.9 25.5 MM +0.5 MM +2023 07 15 03 50 180 9.0 10.0 1.1 MM 4.4 109 1015.8 28.9 28.9 25.4 MM MM MM +2023 07 15 03 40 180 9.0 10.0 MM MM MM MM 1016.1 29.0 28.9 25.6 MM MM MM +2023 07 15 03 30 190 9.0 11.0 MM MM MM MM 1016.2 29.0 28.9 25.1 MM MM MM +2023 07 15 03 20 190 8.0 10.0 1.1 MM 4.4 219 1016.2 29.0 28.9 25.4 MM MM MM +2023 07 15 03 10 MM MM MM 1.1 5 4.4 219 MM MM MM MM MM MM MM +2023 07 15 03 00 180 8.0 11.0 MM MM MM MM 1016.1 29.0 28.9 25.4 MM +1.2 MM +2023 07 15 02 50 180 9.0 10.0 1.1 MM 4.2 218 1015.9 29.0 28.9 25.4 MM MM MM +2023 07 15 02 40 190 8.0 10.0 1.1 MM 4.2 218 1016.1 29.0 28.9 25.2 MM MM MM +2023 07 15 02 30 180 8.0 10.0 MM MM MM MM 1016.1 29.0 28.9 25.0 MM MM MM +2023 07 15 02 20 190 8.0 9.0 1.1 MM 4.4 218 1015.7 29.0 28.9 25.3 MM MM MM +2023 07 15 02 10 180 8.0 10.0 1.1 MM 4.4 218 1015.8 29.0 28.9 25.3 MM MM MM +2023 07 15 02 00 180 8.0 10.0 1.1 MM 4.4 218 1015.6 29.0 MM 25.4 MM +0.7 MM +2023 07 15 01 50 180 8.0 10.0 1.1 MM 4.6 214 1015.4 29.0 28.9 25.3 MM MM MM +2023 07 15 01 40 180 7.0 10.0 MM MM MM MM 1015.5 29.0 28.9 25.3 MM MM MM +2023 07 15 01 30 180 7.0 9.0 MM MM MM MM 1015.5 29.0 28.9 25.0 MM MM MM +2023 07 15 01 20 180 7.0 9.0 1.1 5 4.4 211 1015.5 29.0 28.9 25.1 MM MM MM +2023 07 15 01 10 180 7.0 9.0 1.1 MM 4.4 211 1015.6 29.0 28.9 25.0 MM MM MM +2023 07 15 01 00 190 7.0 8.0 MM MM MM MM 1015.5 29.0 28.9 25.1 MM +0.9 MM +2023 07 15 00 50 190 7.0 9.0 1.1 5 4.3 204 1015.5 28.9 28.9 24.9 MM MM MM +2023 07 15 00 40 190 7.0 9.0 1.1 MM 4.3 204 1015.2 28.9 28.9 24.9 MM MM MM +2023 07 15 00 30 180 7.0 9.0 MM MM MM MM 1015.1 28.9 MM 24.8 MM MM MM +2023 07 15 00 20 180 7.0 9.0 1.2 5 4.4 228 1015.0 28.9 29.0 24.8 MM MM MM +2023 07 15 00 10 180 7.0 9.0 1.2 MM 4.4 228 1015.0 29.0 29.0 25.1 MM MM MM +2023 07 15 00 00 190 8.0 10.0 MM MM MM MM 1014.9 29.0 28.9 24.7 MM +0.0 MM +2023 07 14 23 50 190 8.0 10.0 1.1 10 4.5 126 1014.7 29.0 29.0 24.8 MM MM MM +2023 07 14 23 40 190 8.0 9.0 1.1 MM 4.5 126 1014.7 29.0 28.9 24.8 MM MM MM +2023 07 14 23 30 200 8.0 10.0 MM MM MM MM 1014.7 29.0 28.9 24.6 MM MM MM +2023 07 14 23 20 190 8.0 9.0 MM MM MM MM 1014.7 28.9 28.9 24.5 MM MM MM +2023 07 14 23 10 MM MM MM MM MM MM MM 1014.8 MM 28.9 MM MM MM MM +2023 07 14 23 00 200 7.0 9.0 MM MM MM MM 1014.7 29.0 28.9 24.7 MM -0.4 MM +2023 07 14 22 50 200 7.0 9.0 1.1 9 4.4 139 1015.0 29.0 MM 25.3 MM MM MM +2023 07 14 22 40 190 7.0 9.0 MM MM MM MM 1014.9 29.0 28.9 25.2 MM MM MM +2023 07 14 22 30 190 8.0 9.0 MM MM MM MM 1014.8 29.0 28.9 25.1 MM MM MM +2023 07 14 22 20 190 8.0 9.0 1.1 MM 4.3 216 1014.7 29.0 29.0 25.4 MM MM MM +2023 07 14 22 10 MM MM MM 1.1 5 4.3 216 MM MM MM MM MM MM MM +2023 07 14 22 00 200 8.0 9.0 MM MM MM MM 1014.6 29.0 29.0 25.1 MM -0.8 MM +2023 07 14 21 50 190 7.0 9.0 1.1 MM 4.3 220 1014.6 29.0 29.0 24.8 MM MM MM +2023 07 14 21 40 MM MM MM 1.1 5 4.3 220 MM MM MM MM MM MM MM +2023 07 14 21 30 190 8.0 10.0 MM MM MM MM 1014.6 29.0 29.0 24.8 MM MM MM +2023 07 14 21 20 190 8.0 9.0 1.2 5 4.3 213 1014.6 29.0 29.0 24.7 MM MM MM +2023 07 14 21 10 190 8.0 9.0 1.2 MM 4.3 213 1014.5 29.0 29.0 24.8 MM MM MM +2023 07 14 21 00 190 8.0 10.0 MM MM MM MM 1014.6 29.0 29.0 24.8 MM -0.7 MM +2023 07 14 20 50 MM MM MM 1.2 MM 4.3 206 1014.8 MM 29.0 MM MM MM MM +2023 07 14 20 40 200 8.0 10.0 1.2 MM 4.3 206 1014.8 29.0 29.0 25.0 MM MM MM +2023 07 14 20 30 200 8.0 9.0 MM MM MM MM 1015.0 29.0 29.0 24.6 MM MM MM +2023 07 14 20 20 200 8.0 9.0 1.1 MM 4.1 214 1015.0 29.0 29.0 24.8 MM MM MM +2023 07 14 20 10 200 8.0 10.0 1.1 MM 4.1 214 1015.1 29.0 28.9 24.4 MM MM MM +2023 07 14 20 00 200 8.0 10.0 1.1 MM 4.1 214 1015.2 29.0 29.0 24.7 MM -0.5 MM +2023 07 14 19 50 210 8.0 10.0 1.2 MM 4.3 218 1015.4 29.0 MM 24.8 MM MM MM +2023 07 14 19 40 MM MM MM 1.2 5 4.3 218 MM MM MM MM MM MM MM +2023 07 14 19 30 200 9.0 10.0 MM MM MM MM 1015.5 29.0 29.0 24.8 MM MM MM +2023 07 14 19 20 MM MM MM 1.2 MM 4.2 214 1015.5 MM MM MM MM MM MM +2023 07 14 19 10 MM MM MM 1.2 5 4.2 214 MM MM MM MM MM MM MM +2023 07 14 19 00 200 9.0 11.0 MM MM MM MM 1015.5 29.0 29.0 24.3 MM -0.6 MM +2023 07 14 18 50 MM MM MM 1.1 MM 4.2 214 1015.5 MM 29.0 MM MM MM MM +2023 07 14 18 40 200 9.0 11.0 MM MM MM MM 1015.4 28.9 29.0 24.5 MM MM MM +2023 07 14 18 30 200 9.0 11.0 MM MM MM MM 1015.5 28.9 MM 25.0 MM MM MM +2023 07 14 18 20 200 9.0 11.0 1.1 6 4.1 212 1015.4 28.9 28.9 24.9 MM MM MM +2023 07 14 18 10 190 9.0 11.0 1.1 MM 4.1 212 1015.4 28.9 28.9 24.9 MM MM MM +2023 07 14 18 00 200 9.0 11.0 MM MM MM MM 1015.4 28.9 28.9 24.8 MM -0.6 MM +2023 07 14 17 50 190 9.0 10.0 1.1 MM 4.3 236 1015.5 28.9 28.9 24.7 MM MM MM +2023 07 14 17 40 200 8.0 10.0 1.1 MM 4.3 236 1015.6 29.0 28.9 24.5 MM MM MM +2023 07 14 17 30 200 9.0 10.0 MM MM MM MM 1015.7 29.0 28.9 24.2 MM MM MM +2023 07 14 17 20 200 8.0 10.0 1.1 MM 4.4 216 1015.6 28.9 28.9 24.2 MM MM MM +2023 07 14 17 10 MM MM MM 1.1 5 4.4 216 MM MM MM MM MM MM MM +2023 07 14 17 00 200 8.0 10.0 MM MM MM MM 1015.7 28.9 28.9 24.4 MM -0.4 MM +2023 07 14 16 50 200 8.0 10.0 1.1 MM 4.3 212 1016.0 28.9 28.9 24.4 MM MM MM +2023 07 14 16 40 MM MM MM 1.1 6 4.3 212 MM MM MM MM MM MM MM +2023 07 14 16 30 200 8.0 10.0 MM MM MM MM 1016.1 28.9 28.9 24.3 MM MM MM +2023 07 14 16 20 200 8.0 10.0 1.0 6 4.4 225 1016.0 29.0 28.9 24.3 MM MM MM +2023 07 14 16 10 200 8.0 10.0 1.0 MM 4.4 225 1016.2 28.9 MM 24.3 MM MM MM +2023 07 14 16 00 200 8.0 10.0 MM MM MM MM 1016.1 28.9 28.9 24.3 MM +0.3 MM +2023 07 14 15 50 200 8.0 10.0 1.1 10 4.3 140 1016.1 28.9 28.9 24.1 MM MM MM +2023 07 14 15 40 200 8.0 9.0 MM MM MM MM 1016.0 28.8 28.9 24.4 MM MM MM +2023 07 14 15 30 200 8.0 9.0 MM MM MM MM 1016.0 28.8 28.8 24.6 MM MM MM +2023 07 14 15 20 200 8.0 9.0 1.1 6 4.6 226 1016.0 28.9 28.8 24.3 MM MM MM +2023 07 14 15 10 200 7.0 9.0 MM MM MM MM 1016.0 28.9 28.8 24.6 MM MM MM +2023 07 14 15 00 200 7.0 9.0 MM MM MM MM 1015.9 28.8 28.8 24.7 MM +0.7 MM +2023 07 14 14 50 200 7.0 9.0 1.1 6 4.5 223 1016.0 28.9 28.8 24.7 MM MM MM +2023 07 14 14 40 200 7.0 9.0 1.1 MM 4.5 223 1016.0 28.8 28.8 24.5 MM MM MM +2023 07 14 14 30 210 7.0 9.0 MM MM MM MM 1016.0 28.8 28.8 24.6 MM MM MM +2023 07 14 14 20 210 8.0 9.0 1.1 MM 4.5 216 1016.0 28.8 28.8 24.5 MM MM MM +2023 07 14 14 10 MM MM MM 1.1 6 4.5 216 MM MM MM MM MM MM MM +2023 07 14 14 00 210 7.0 9.0 MM MM MM MM 1016.1 28.8 28.8 24.6 MM +1.2 MM +2023 07 14 13 50 210 7.0 8.0 1.2 6 4.5 211 1016.0 28.7 28.7 25.0 MM MM MM +2023 07 14 13 40 210 7.0 8.0 MM MM MM MM 1015.8 28.7 28.7 25.0 MM MM MM +2023 07 14 13 30 210 7.0 8.0 MM MM MM MM 1015.8 28.7 28.7 24.7 MM MM MM +2023 07 14 13 20 210 7.0 8.0 1.1 MM 4.3 215 1015.8 28.7 28.7 24.7 MM MM MM +2023 07 14 13 10 MM MM MM 1.1 5 4.3 215 MM MM MM MM MM MM MM +2023 07 14 13 00 210 7.0 8.0 MM MM MM MM 1015.7 28.7 28.7 24.6 MM +0.6 MM +2023 07 14 12 50 210 7.0 8.0 1.2 6 4.4 223 1015.7 28.8 28.7 24.6 MM MM MM +2023 07 14 12 40 210 7.0 9.0 MM MM MM MM 1015.7 28.8 28.7 24.1 MM MM MM +2023 07 14 12 30 210 7.0 9.0 MM MM MM MM 1015.6 28.8 28.7 24.1 MM MM MM diff --git a/Rudy2014_Compare.m b/Rudy2014_Compare.m new file mode 100644 index 0000000..121b319 --- /dev/null +++ b/Rudy2014_Compare.m @@ -0,0 +1,208 @@ +%% Compare 2014 Delft3D run with Rudy data +% AJMR, July 20, 2022 + +addpath(genpath('matlab/applications/delft3d_matlab'),'-begin') + +%% Read in observation points +clear obsPtsLon obsPtsLat + +obsFiles = dir("\\COASTLINES.appsci.queensu.ca\Rudy2014\Google earth objects"); +obsCount = 1; + +% Read in in order 1-13, L2, PE to match spreadsheets +for i = [7 13:20 8:10 12 6 4] + [obsPtsLon(obsCount), obsPtsLat(obsCount)] = read_kml(['\\COASTLINES.appsci.queensu.ca\Rudy2014\Google earth objects\' obsFiles(i).name]); + [obsPtsUTMx(obsCount), obsPtsUTMy(obsCount)] = wgs2utm(obsPtsLat(obsCount),obsPtsLon(obsCount),18,'N'); + + obsCount = obsCount + 1; +end + +%% Read in data at observation points +clear obsDat + +datFiles = dir ("D:\Alexander\Rudy2014\Point Sorted Data"); + +% Read in in order 1-13, L2, PE to match spreadsheets +obsCount = 1; +for i = 4:length(datFiles) + % Read data as table + obsDat{2, obsCount} = readtable(['\\COASTLINES.appsci.queensu.ca\Rudy2014\Point Sorted Data\' ... + datFiles(i).name],'DataRange','X3:AQ17','VariableNamesRange',... + 'X1:AQ1', 'VariableUnitsRange', 'X2:AQ2'); + + % Drop empty columns + obsDat{2, obsCount} = removevars(obsDat{2, obsCount},{ ... + 'Var3', 'Var7', 'Var9', 'Var11', 'Var13', 'Var15', 'Var17', 'Var19'}); + + % Add Date + dateIN = readcell(['D:\Alexander\Rudy2014\Point Sorted Data\' ... + datFiles(i).name], 'Range','C3:D3'); + try + obsDat{1, obsCount} = datetime(dateIN{1},'InputFormat', 'MM/dd/uuuu') + ... + days(dateIN{2}); + catch + obsDat{1, obsCount} = datetime(dateIN{1},'InputFormat', 'MM/dd/uuuu') + ... + hours(hour(dateIN{2})) + minutes(minute(dateIN{2})); + end + + obsCount = obsCount + 1; + +end + +%% Read in Model results at observation points + +%% Read in grids +Grid{1} = wlgrid('read','\\batchelor.appsci.queensu.ca\G\Fateme\Oct_7_RudyRun\G9_1.grd'); +Grid{2} = wlgrid('read','\\batchelor.appsci.queensu.ca\G\Fateme\Oct_7_RudyRun\G9_2.grd'); +Grid{3} = wlgrid('read','\\batchelor.appsci.queensu.ca\G\Fateme\Oct_7_RudyRun\G9_3.grd'); + +modelTimes = datetime(datevec(qpread(qpfopen('\\batchelor.appsci.queensu.ca\G\Fateme\Oct_7_RudyRun\trim-G9_1.dat'),... + 1,'water level','times'))); + + +%% Match grid points +for i = 1:length(obsPtsUTMx) + [GridMatch{1},GridDist{1}] = NearestValue([obsPtsUTMx(i), obsPtsUTMy(i)], Grid{1}.X, Grid{1}.Y); + [GridMatch{2},GridDist{2}] = NearestValue([obsPtsUTMx(i), obsPtsUTMy(i)], Grid{2}.X, Grid{2}.Y); + [GridMatch{3},GridDist{3}] = NearestValue([obsPtsUTMx(i), obsPtsUTMy(i)], Grid{3}.X, Grid{3}.Y); + + if sqrt(GridDist{1}(1)^2 + GridDist{1}(2)^2) < sqrt(GridDist{2}(1)^2 + GridDist{2}(2)^2) && ... + sqrt(GridDist{1}(1)^2 + GridDist{1}(2)^2) < sqrt(GridDist{3}(1)^2 + GridDist{3}(2)^2) + + gridMatch(:, i) = GridMatch{1}; + gridMatchID(i) = 1; + + elseif sqrt(GridDist{2}(1)^2 + GridDist{2}(2)^2) <= sqrt(GridDist{1}(1)^2 + GridDist{1}(2)^2) && ... + sqrt(GridDist{2}(1)^2 + GridDist{2}(2)^2) <= sqrt(GridDist{3}(1)^2 + GridDist{3}(2)^2) + + gridMatch(:, i) = GridMatch{2}; + gridMatchID(i) = 2; + + elseif sqrt(GridDist{3}(1)^2 + GridDist{3}(2)^2) <= sqrt(GridDist{1}(1)^2 + GridDist{1}(2)^2) && ... + sqrt(GridDist{3}(1)^2 + GridDist{3}(2)^2) <= sqrt(GridDist{2}(1)^2 + GridDist{2}(2)^2) + + gridMatch(:, i) = GridMatch{3}; + gridMatchID(i) = 3; + + end +end + + + +%% Extract time series surface temperatures for each point +clear modelTemp + +for d = 1:size(obsDat,2) + modelTStep(d) = NearestValue(obsDat{1, d}, modelTimes); +end + +for i = 1:length(gridMatch) + modelIN = qpread(qpfopen(['\\batchelor.appsci.queensu.ca\G\Fateme\Oct_7_RudyRun\trim-G9_' ... + num2str(gridMatchID(i)) '.dat']),1,'temperature','griddata', ... + 0,gridMatch(1, i),gridMatch(2, i),0); + + + modelTemp(:,:,i) = modelIN.Val; + + + disp(i) +end + +%% Read in other spreadsheet +boundDat = readtable("\\COASTLINES.appsci.queensu.ca\Rudy2014\Boundary condition data.xlsx", 'Sheet', ... + 'Boundary conditions'); + +%% Read in WaterTrax +traxDat = readtable("\\COASTLINES.appsci.queensu.ca\Rudy2014\Copy of Alexander SheetModelling.xlsx", 'Sheet', ... + '2014_Rudy'); + +%% Plotting + +figure +hold on +plot(modelTimes,mean(modelTemp(:,:,13),2),'k') +plot(modelTimes,modelTemp(:,1,13),'m') +plot(modelTimes,modelTemp(:,8,13),'b') + +% plot(boundDat.Date,boundDat.Temp_1) +% scatter(traxDat.Date+hours(14),traxDat.WaterTEffluent__C_,'r') +scatter(traxDat.Date(1:end-7)+hours(14),traxDat.WaterTEffluent__C_(1:end-7),'r') +for d = [1:15 17:size(obsDat,2)] + scatter(obsDat{1, d}, obsDat{2, d}{13,"Temp"},'b') +end +legend('Model', 'Observations', 'Rudy Observations') +ylabel('Water Temperature °C') + +%% Save Model Data +writematrix(squeeze(mean(modelTemp(:,:,1:13),2)),... + 'D:\Alexander\Rudy2014\modelData.xlsx') + +writematrix(modelTimes,... + 'D:\Alexander\Rudy2014\modelTimes.xlsx') + +%% Stats + +statCount = 1; +for d = 1:length(traxDat.Date) + traxIDXs(statCount) = NearestValue(traxDat.Date(d)+hours(14),modelTimes); + statCount = statCount + 1; +end + +% [traxR2, traxRMSE] = rsquare(traxDat.WaterTEffluent__C_, mean(modelTemp(traxIDXs,:,13),2), false) +% [traxR2, traxRMSE] = rsquare(traxDat.WaterTEffluent__C_(1:end-7), modelTemp(traxIDXs(1:end-7),8,13), false) +[traxR2, traxRMSE] = rsquare(mean(modelTemp(traxIDXs(1:end-7),:,13),2),... + traxDat.WaterTEffluent__C_(1:end-7)) + +writematrix([mean(modelTemp(traxIDXs(1:end),:,13),2) traxDat.WaterTEffluent__C_(1:end)],... + 'D:\Alexander\Rudy2014\matchedWaterTrax.xlsx') + + +statCount = 1; +for d = [1:15 17:size(obsDat,2)] + rudIDXs(statCount) = NearestValue(obsDat{1, d},modelTimes); + rudDat(statCount) = obsDat{2, d}{13,"Temp"}; + statCount = statCount + 1; +end + +% [traxR2, traxRMSE] = rsquare(mean(modelTemp(traxIDXs,:,13),2), traxDat.WaterTEffluent__C_) +[rudR2, rudRMSE] = rsquare(rudDat', squeeze(modelTemp(rudIDXs,4,13))) +% [traxR2, traxRMSE] = rsquare(mean(modelTemp(traxIDXs(1:end-7),:,13),2),... +% traxDat.WaterTEffluent__C_(1:end-7)) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dio-wave-errors.txt b/dio-wave-errors.txt new file mode 100644 index 0000000..8d3a0ba --- /dev/null +++ b/dio-wave-errors.txt @@ -0,0 +1,49 @@ +DioError 902: Could not open FLOW2WAVE_DATA.txt_.stream for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_.stream +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 902: Could not open FLOW2WAVE_DATA.txt_.stream for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_.stream +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 902: Could not open FLOW2WAVE_DATA.txt_.stream for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_.stream +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 902: Could not open FLOW2WAVE_DATA.txt_.stream for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_.stream +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 203: Could not open FLOW2WAVE_DATA for reading +DioError 902: Could not open FLOW2WAVE_DATA.txt_.stream for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_.stream +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 902: Could not open FLOW2WAVE_DATA.txt_.stream for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 902: Could not open FLOW2WAVE_DATA.txt_FLOW2WAVE_DATA.data for deletion +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_.stream +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 901: Could not set available: WAVE2FLOW_DATA.txt_WAVE2FLOW_DATA.data +DioError 203: Could not open FLOW2WAVE_DATA for reading diff --git a/google_tokens.mat b/google_tokens.mat index f356b54..cf38cf3 100644 Binary files a/google_tokens.mat and b/google_tokens.mat differ diff --git a/py_addpath.m b/py_addpath.m new file mode 100644 index 0000000..e086c51 --- /dev/null +++ b/py_addpath.m @@ -0,0 +1,63 @@ +%Add directory to import search path for the instance of +%the Python interpreter currently controlled by MATLAB +% +%EXAMPLE USAGE +% >> py_addpath('C:\Documents\ERPResults') +% +%REQUIRED INPUTS +% directory - Directory to add the Python import search path +% MATLAB_too - If true (or 1), directory will also be added to the +% MATLAB path. {default: false} +% +%OPTIONAL OUTPUT +% new_py_path - a cell array of the directories on the updated +% Python path; to get this output without updating the +% Python path, use an empty string as the input: +% py_path = py_addpath('') +% +%VERSION DATE: 3 Novemeber 2017 +%AUTHOR: Eric Fields +% +%NOTE: This function is provided "as is" and any express or implied warranties +%are disclaimed. + +%Copyright (c) 2017, Eric Fields +%All rights reserved. +%This code is free and open source software made available under the 3-clause BSD license. + +function new_py_path = py_addpath(directory, MATLAB_too) + + %check input + if ~ischar(directory) + error('Input must be a string') + elseif ~exist(directory, 'dir') && ~isempty(directory) + error('%s is not a valid directory', directory) + end + + %Convert relative path to absolute path + if ~isempty(directory) + directory = char(py.os.path.abspath(directory)); + end + + %add directory to Python path if not already present + if ~any(strcmp(get_py_path(), directory)) + py_path = py.sys.path; + py_path.insert(int64(1), directory); + end + + %add directory to MATLAB path if requested + if nargin>1 && MATLAB_too + addpath(directory); + end + + %optionally return ammended path.sys as cell array + if nargout + new_py_path = get_py_path(); + end + +end + +function current_py_path = get_py_path() +%Function to return the current python search path as a cell array of strings + current_py_path = cellfun(@char, cell(py.sys.path), 'UniformOutput', 0)'; +end diff --git a/read_kml.m b/read_kml.m new file mode 100644 index 0000000..a50d435 --- /dev/null +++ b/read_kml.m @@ -0,0 +1,186 @@ +function [x,y,z] = read_kml(fileName) +% READ_KML Reads in (x,y,z) from a GoogleEarth kml file. +% +% I have tried to make this code as robust as possible, but it may crash +% or give unexpected resutls if the file is not formatted exactly as +% expected. +% +% Example: +% [x,y,z] = read_kml('test.kml'); +% +% where test.kml looks like: +% +% +% +% test_length +% junk +% +% 1 +% +% -73.65138440596144,40.45517368645169,0 -73.39056199144957,40.52146569128411,0 -73.05890757388369,40.59561213913959,0 -72.80519929505505,40.66961872411046,0 -72.61180114704385,40.72997510603909,0 -72.43718187249095,40.77509309196679,0 +% +% +% +% +% afarris@usgs.gov 2016March09, now can read mulitple sets of coordinates +% afarris@usgs.gov 2006November + +%% open the data file and find the beginning of the data +fid=fopen(fileName); +if fid < 0 + error('could not find file') +end + +% This loop reads the data file one line at a time. If if finds the word +% , it knows there is data until it reads the word +% . After loading this data, it keeps reading the file, +% looking for another instance of until it finds the word +% which signals that the end of the file has been reached. +% Some files have all the data on one line, others have newline charecters +% in various points in the file. I hope this code that works in all cases. + +done=0; +endoffile = 0; +ar = 1; + +while endoffile == 0 + while done == 0 + junk = fgetl(fid); + f = strfind(junk,''); + ff = strfind(junk,''); + if ~isempty(f) + done = 1; + elseif ~isempty(ff) + endoffile = 1; + done = 1; + end + end + if endoffile + break + end + % 'junk' either ends with the word '' OR + % some data follows the word '' + if (f + 13) >= length(junk) + % no data on this line + % done2 is set to zero so the next loop will read the data + done2 = 0; + else + % there is some data in this line following '' + clear f2 + f2 = strfind(junk,''); + if ~isempty(f2) + %all data is on this line + % there may be multiple sets of data on this one line + % I read them all + for i = 1 : size(f2,2) + alldata{ar} = junk(f(i)+13:f2(i)-1); + % I add in whitespace b/c sometimes it is missing + alldata{ar+1} = ' '; + ar = ar+2; + end + % done2 is set to one because the next loop does not need to run + done2 = 1; + else + % only some data is on this line + alldata{ar} = junk(f+13:end); + % I add in whitespace b/c sometimes it is missing + alldata{ar+1} = ' '; + ar = ar+2; + % done2 is set to zero so the next loop will read the rest of the data + done2 = 0; + end + % check to see if at end of the file + ff = strfind(junk,''); + if ~isempty(ff) + % no more data + endoffile = 1; + break + else + % need to keep looking for more data + done = 0; + end + end + + % If not all the data was on the line with the word , + % read in the data + while done2 == 0 + % read in line from data file + junk = fgetl(fid); + f = strfind(junk,''); + if isempty(f) == 1 + % no ending signal, just add this data to the rest + alldata{ar} = junk; + ar = ar + 1; + else + % ending signal is present + done = 0; + if f < 20 + % is in the begining of the line, ergo no data + % on this line; just end the loop + done2 = 1; + else + % the ending signal () is present: remove it, + % add data to the rest and signal the end of the loop + f2 = strfind(junk,''); + alldata{ar} = junk(1:f2-1); + ar = ar + 1; + done2 = 1; + disp('done with line') + end + end + % check to see if at end of the file + ff = strfind(junk,''); + if ~isempty(ff) + % no more data + endoffile = 1; + break + else + % need to keep looking for more data + done = 0; + end + end +end +fclose(fid); + +%% get the data into neat vectors +% I have to divide the string into X, Y and Z values. +% +% This is hard b/c there is no comma between points +% (just commans between x and y, and between +% y and z) ie; -70.0000,42.0000,0 -70.1000,40.10000,0 -70.2,.... +% +% I used to do this by finding commas and spaces, now I use +% 'strsplit'! Thank you Matlab! + +% 'alldata' is one huge cell +% turn alldata into regular vector so it is easier to work with +data = cell2mat(alldata); +% data is one huge string, split it so there is seperate element for each number +C = strsplit(data,{',',' '}); +% sometimes first and/or last element in C is empty, this causes problems +len = size(C,2); +if isempty(C{1}) && isempty(C{end}) + D = C(2:len-1); +elseif isempty(C{1}) && ~isempty(C{end}) + D = C(2:end); +elseif isempty(C{end}) && ~isempty(C{1}) + D = C(1:len-1); +end + +% There has GOT to be a better way to split C into 3 variables! +a = 1; +for i = 1 : 3: length(D)-2 + x(a,1) = str2double(D{i}); + a=a+1; +end +a=1; +for i = 2 : 3: length(D)-1 + y(a,1) = str2double(D{i}); + a=a+1; +end +a=1; +for i = 3 : 3: length(D) + z(a,1) = str2double(D{i}); + a=a+1; +end + diff --git a/rsquare.m b/rsquare.m new file mode 100644 index 0000000..7a82f29 --- /dev/null +++ b/rsquare.m @@ -0,0 +1,74 @@ +function [r2 rmse] = rsquare(y,f,varargin) +% Compute coefficient of determination of data fit model and RMSE +% +% [r2 rmse] = rsquare(y,f) +% [r2 rmse] = rsquare(y,f,c) +% +% RSQUARE computes the coefficient of determination (R-square) value from +% actual data Y and model data F. The code uses a general version of +% R-square, based on comparing the variability of the estimation errors +% with the variability of the original values. RSQUARE also outputs the +% root mean squared error (RMSE) for the user's convenience. +% +% Note: RSQUARE ignores comparisons involving NaN values. +% +% INPUTS +% Y : Actual data +% F : Model fit +% +% OPTION +% C : Constant term in model +% R-square may be a questionable measure of fit when no +% constant term is included in the model. +% [DEFAULT] TRUE : Use traditional R-square computation +% FALSE : Uses alternate R-square computation for model +% without constant term [R2 = 1 - NORM(Y-F)/NORM(Y)] +% +% OUTPUT +% R2 : Coefficient of determination +% RMSE : Root mean squared error +% +% EXAMPLE +% x = 0:0.1:10; +% y = 2.*x + 1 + randn(size(x)); +% p = polyfit(x,y,1); +% f = polyval(p,x); +% [r2 rmse] = rsquare(y,f); +% figure; plot(x,y,'b-'); +% hold on; plot(x,f,'r-'); +% title(strcat(['R2 = ' num2str(r2) '; RMSE = ' num2str(rmse)])) +% +% Jered R Wells +% 11/17/11 +% jered [dot] wells [at] duke [dot] edu +% +% v1.2 (02/14/2012) +% +% Thanks to John D'Errico for useful comments and insight which has helped +% to improve this code. His code POLYFITN was consulted in the inclusion of +% the C-option (REF. File ID: #34765). + +if isempty(varargin); c = true; +elseif length(varargin)>1; error 'Too many input arguments'; +elseif ~islogical(varargin{1}); error 'C must be logical (TRUE||FALSE)' +else c = varargin{1}; +end + +% Compare inputs +if ~all(size(y)==size(f)); error 'Y and F must be the same size'; end + +% Check for NaN +tmp = ~or(isnan(y),isnan(f)); +y = y(tmp); +f = f(tmp); + +if c; r2 = max(0,1 - sum((y(:)-f(:)).^2)/sum((y(:)-mean(y(:))).^2)); +else r2 = 1 - sum((y(:)-f(:)).^2)/sum((y(:)).^2); + if r2<0 + % http://web.maths.unsw.edu.au/~adelle/Garvan/Assays/GoodnessOfFit.html + warning('Consider adding a constant term to your model') %#ok + r2 = 0; + end +end + +rmse = sqrt(mean((y(:) - f(:)).^2)); \ No newline at end of file diff --git a/rt_base.mdf b/rt_base.mdf index 0d204af..c597de9 100644 --- a/rt_base.mdf +++ b/rt_base.mdf @@ -106,4 +106,5 @@ Fwndgpr = #hrrr.ampr# AirOut = #Y# Fileva = #TemperatureRT.eva# Maseva = #Y# +PavBnd = 101300.0 Commnt = diff --git a/rt_run.mdf b/rt_run.mdf index e0bcbb1..afb4b4b 100644 --- a/rt_run.mdf +++ b/rt_run.mdf @@ -13,10 +13,10 @@ Commnt = no. dry points: 1068 Fildry = #NCShoreALLSquare2_100.dry# Commnt = no. thin dams: 0 Commnt = -Itdate = #2022-05-31# +Itdate = #2023-07-19# Tunit = #M# -Tstart = 0.0000000e+00 -Tstop = 2.8800000e+03 +Tstart = 7.2000000e+02 +Tstop = 3.6000000e+03 Dt = 0.25 Tzone = 0 Commnt = @@ -93,9 +93,9 @@ PHhydr = #YYYYYY# PHderv = #YYY# PHproc = #YYYYYYYYYY# PHflux = #YYYY# -Flmap = 0.0000000e+00 60 2.8800000e+03 -Flhis = 0.0000000e+00 10 2.8800000e+03 -Flpp = 0.0000000e+00 60 2.8800000e+03 +Flmap = 7.2000000e+02 60 3.6000000e+03 +Flhis = 7.2000000e+02 10 3.6000000e+03 +Flpp = 7.2000000e+02 60 3.6000000e+03 Flrst = 60 Commnt = Online = #N# @@ -107,4 +107,4 @@ Fwndgpr = #hrrr.ampr# AirOut = #Y# Fileva = #TemperatureRT.eva# Maseva = #Y# -Commnt = +PavBnd = 101300.0 diff --git a/setup_nctoolbox.m b/setup_nctoolbox.m index 0b1f957..29c049f 100644 --- a/setup_nctoolbox.m +++ b/setup_nctoolbox.m @@ -10,7 +10,7 @@ addpath(genpath(fullfile(home, 'cdm', 'utilities'))); warning off try - setup_nctoolbox_java; +% setup_nctoolbox_java; catch me ex = MException('MBARI:NCTOOLBOX', 'Failed to setup the Java classpath'); ex.throw