Skip to content

Commit 71e3b67

Browse files
authored
Add BGC runoff scripts for NEP and ARC domains (NOAA-GFDL#111)
* Added NEP bgc runoff scripts * Update README.md * Added ARC bgc runoff scripts
1 parent b4b1281 commit 71e3b67

20 files changed

+5585
-2
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../NEP/Data/ArcticGro/ArcticGRO_Water_Quality_Data.xlsx
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
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

Comments
 (0)