|
| 1 | +% Program to process the ArcticGro data |
| 2 | + |
| 3 | +clear all |
| 4 | + |
| 5 | +filename = 'ArcticGRO_Water_Quality_Data.xlsx' |
| 6 | +% co2 system solver to derive DIC from alkalinity, pH and temperature |
| 7 | +addpath /home/cas/matlab/co2sys |
| 8 | + |
| 9 | +% Longitude and Latitude from GlobalNEWS |
| 10 | +river_name{1} = 'Ob'; |
| 11 | +lon(1) = 68.5; lat(1) = 68.75; |
| 12 | +river_name{2} = 'Yenisey'; |
| 13 | +lon(2) = 82.25; lat(2) = 71.25; |
| 14 | +river_name{3} = 'Lena'; |
| 15 | +lon(3) = 128; lat(3) = 73; |
| 16 | +river_name{4} = 'Kolyma'; |
| 17 | +lon(4) = 161.25; lat(4) = 69.25; |
| 18 | +river_name{5} = 'Yukon'; |
| 19 | +lon(5) = -164.75; lat(5) = 62.75; |
| 20 | +river_name{6} = 'Mackenzie'; |
| 21 | +lon(6) = -134.75; lat(6) = 69.25; |
| 22 | + |
| 23 | + |
| 24 | +for n = 1:6 |
| 25 | + Data = readtable(filename,'Sheet',n); |
| 26 | + discharge(n) = nanmean(Data{:,5}); |
| 27 | + temp(n) = nanmean(Data{:,6}); |
| 28 | + % alk in mg CaCO3/L ~ g CaCO3/m3 |
| 29 | + alk(n) = nanmean(Data{:,9}); |
| 30 | + alk(n) = alk(n)/(40+12+16*3)*2*1e3; % to milliequivalents per m-3 |
| 31 | + % pH |
| 32 | + pH(n) = nanmean(Data{:,7}); |
| 33 | + % tdn in mg N L-1 ~ g N/m3 |
| 34 | + tdn(n) = nanmean(Data{:,21}); |
| 35 | + tdn(n) = tdn(n)*1e3/14; % mmoles m-3 |
| 36 | + % no3 in micrograms N per L ~ mg N m-3 |
| 37 | + no3(n) = nanmean(Data{:,22}); |
| 38 | + no3(n) = no3(n)/14; % mmoles m-3 |
| 39 | + % nh4 in micrograms N per L ~ mg N m-3 |
| 40 | + nh4(n) = nanmean(Data{:,23}); |
| 41 | + nh4(n) = nh4(n)/14; % mmoles m-3 |
| 42 | + % tdp in micrograms P per L ~ mg P m-3 |
| 43 | + tdp(n) = nanmean(Data{:,24}); |
| 44 | + tdp(n) = tdp(n)/31; % mmoles m-3 |
| 45 | + % po4 in micrograms P per L ~ mg P m-3 |
| 46 | + po4(n) = nanmean(Data{:,25}); |
| 47 | + po4(n) = po4(n)/31; % mmoles m-3 |
| 48 | + % sio2 in mg SiO2 per L ~ g P m-3 |
| 49 | + sio2(n) = nanmean(Data{:,26}); |
| 50 | + sio2(n) = sio2(n)*1e3/(28.06+16*2); |
| 51 | + % pon in micrograms N per L ~ mg N m-3 |
| 52 | + pon(n) = nanmean(Data{:,47}); |
| 53 | + pon(n) = pon(n)/14; %mmoles m-3 |
| 54 | + |
| 55 | + % calculate DIC from alk, pH and DIC |
| 56 | + out = CO2SYS(alk(n),pH(n),1,3,0,temp(n),temp(n), ... |
| 57 | + 100,100,0,0,0,0,4,15,1,2,2); |
| 58 | + dic(n) = mean(out(:,2)); |
| 59 | + |
| 60 | + % calculate don from tdn, no3 and nh4 |
| 61 | + aa = find(isfinite(Data{:,21}) & isfinite(Data{:,22}) & isfinite(Data{:,23})); |
| 62 | + don(n) = nanmean(Data{aa,21}*1e3/14 - Data{aa,22}/14 - Data{aa,23}/14); |
| 63 | + |
| 64 | + % calculate dop from tdp and po4 |
| 65 | + bb = find(isfinite(Data{:,24}/31) & isfinite(Data{:,25}/31)); |
| 66 | + dop(n) = nanmean(Data{aa,24}/31 - Data{aa,25}/31); |
| 67 | +end |
| 68 | + |
| 69 | +% Fill in particulate phosphorus from GLOBAL NEWS |
| 70 | +pp(1) = 1.29; % Ob |
| 71 | +pp(2) = 0.82; % Yenisey |
| 72 | +pp(3) = 1.48; % Lena |
| 73 | +pp(4) = 1.21; % Kolyma |
| 74 | +pp(5) = 1.94; % Yukon |
| 75 | +pp(6) = 1.44; % Mackenzie |
| 76 | + |
| 77 | +% For reference (DIN, DON, PN, DIP, DOP, PP) |
| 78 | +% Yukon: 7.30 17.25 29.10 0.07 0.42 1.94 |
| 79 | +% Mackenzie: 7.42 19.86 24.34 0.14 0.48 1.44 |
| 80 | +% St. Lawrence: 52.80 24.86 3.81 0.98 0.55 0.21 |
| 81 | +% Ob: 21.80 24.16 22.35 1.16 0.56 1.29 |
| 82 | +% Lena: 7.74 21.34 25.48 0.24 0.52 1.48 |
| 83 | +% Yenisey: 8.54 21.65 14.21 0.088 0.52 0.82 |
| 84 | +% Kolyma: 10.17 21.92 21.27 0.18 0.53 1.21 |
| 85 | + |
| 86 | +lon_stations_arcticgro = lon; |
| 87 | +lat_stations_arcticgro = lat; |
| 88 | +station_names_arcticgro = river_name; |
| 89 | + |
| 90 | +Q_ann_arcticgro = discharge; |
| 91 | +dic_ann_arcticgro = dic; |
| 92 | +alk_ann_arcticgro = alk; |
| 93 | +no3_ann_arcticgro = no3; |
| 94 | +nh4_ann_arcticgro = nh4; |
| 95 | +din_ann_arcticgro = no3_ann_arcticgro + nh4_ann_arcticgro; |
| 96 | +pn_ann_arcticgro = pon; |
| 97 | +don_ann_arcticgro = don; |
| 98 | +dip_ann_arcticgro = po4; |
| 99 | +dop_ann_arcticgro = dop; |
| 100 | +pp_ann_arcticgro = pp; |
| 101 | +si_ann_arcticgro = sio2; |
| 102 | +o2_ann_arcticgro = ones(size(Q_ann_arcticgro))*NaN; |
| 103 | +dfe_ann_arcticgro = ones(size(Q_ann_arcticgro))*NaN; |
| 104 | +pfe_ann_arcticgro = ones(size(Q_ann_arcticgro))*NaN; |
| 105 | + |
| 106 | +% did not try and extract monthly data from arcticgro, so leave as NaNs |
| 107 | +dic_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 108 | +alk_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 109 | +no3_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 110 | +nh4_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 111 | +din_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 112 | +don_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 113 | +pn_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 114 | +dip_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 115 | +dop_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 116 | +pp_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 117 | +dfe_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 118 | +pfe_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 119 | +si_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 120 | +o2_monthly_arcticgro = ones(12,size(lon_stations_arcticgro,2))*NaN; |
| 121 | + |
| 122 | +save arcticgro_data lon_stations_arcticgro lat_stations_arcticgro station_names_arcticgro ... |
| 123 | + Q_ann_arcticgro dic_ann_arcticgro alk_ann_arcticgro no3_ann_arcticgro nh4_ann_arcticgro ... |
| 124 | + din_ann_arcticgro pn_ann_arcticgro don_ann_arcticgro dip_ann_arcticgro dop_ann_arcticgro ... |
| 125 | + pp_ann_arcticgro si_ann_arcticgro o2_ann_arcticgro dfe_ann_arcticgro pfe_ann_arcticgro ... |
| 126 | + dic_monthly_arcticgro alk_monthly_arcticgro no3_monthly_arcticgro nh4_monthly_arcticgro ... |
| 127 | + din_monthly_arcticgro don_monthly_arcticgro pn_monthly_arcticgro dip_monthly_arcticgro ... |
| 128 | + dop_monthly_arcticgro pp_monthly_arcticgro dfe_monthly_arcticgro pfe_monthly_arcticgro ... |
| 129 | + si_monthly_arcticgro o2_monthly_arcticgro |
0 commit comments