Menghitung salinitas dari data CTD

22 09 2006

Beberapa minggu yang lalu seorang kawan, teman kuliah dulu yang sekarang sudah bergelar MEng. Oseanografi bertanya: “punyakah saya program untuk menghitung harga salinitas dari hasil pengamatan CTD? (jika ada dalam vb-nya excel, itu akan lebih baik). Saya yang memang tidak pernah bersentuhan dengan data CTD dengan singkat menjawab “tidak”, tapi saya ingat bahwa di websitenya Pak Tomzcak ada fasilitas itu dalam bentuk kalkulator online. Tapi ya tidak mangkus juga kalau data CTD yang banyak itu harus dimasukkan satu persatu ke kalkulator onlinenya Pak Tomzcak itu, bisa gempor dong tangan ini…

Setelah berlalu beberapa pekan, dan kebetulan punya waktu luang, saya mencoba mencari-cari di internet tentang cara menghitung salinitas dari data CTD, dan saya menemukan 2 alamat website ini: “Exercise 5: Using EXCEL to process CTD data” dan sebuah source code dalam Fortran untuk menghitung salinitas dan beberapa parameter fisis oseanografi lainnya dari CSIRO.

Karena saya terbiasa menggunakan Matlab untuk urusan hitung-menghitung dalam bidang oseanografi, akhirnya saya mencoba untuk mengubah kedua sumber berharga itu ke dalam fungsi-fungsi Matlab, dan terbentuklah dengan sukses function sal78, sal, dan conduc. Function sal78 adalah fungsi untuk mengubah rasio konduktivitas ke salinitas (jika M=0) dan mengubah salinitas ke rasio konduktivitas (jika M=1) berdasarkan pada UNESCO Report #37, 1981, juga ada dalam Practical Salinity Scale 1978 oleh E.L. Lewis, IEEE Ocean Eng. Jan, 1980. Prosedurnya mudah dan banyak tersedia rumusnya di dunia maya ini.

Untuk mengubah harga konduktivitas, temperatur dan tekanan dari data CTD, saya mencoba membuat fungsi sal, dimana dalam fungsi tersebut dipanggil sal78. Sedangkan untuk mengubah harga salinitas ke konduktivitas, saya buat fungsi conduc, dimana di dalamnya juga dipanggil fungsi sal78. Saya sudah coba bandingkan hasilnya dengan kalkulator onlinenya Pak Tomzcak, alhamdulillah harganya sama. Berikut adalah isi dari fungsi-fungsi tersebut,semoga bermanfaat:

1.Function sal78.m

function sal=sal78(c,t,p,m)
% notes from me:
% --------------
% some parts are taken from
% http://marine.csiro.au/datacentre/process/formats/sal78.f
% and the other parts are taken from:
% http://faculty.washington.edu/blewis/ocn499/EXER05.htm
%
% i just try to combine it for my needs and purposes
%
% this function is called by sal to get the salinity value from
% conductivity --> s=sal78(g,t,p,0)
%
% this function is called by conduc to get the conductivity value from
% salinity --> c=sal78(s,t,p,1)
%
% the sal and conduc codes are taken from:
% http://marine.csiro.au/datacentre/process/formats/sal78.f
%
% ***agus setiawan, sep.2006***
%
% this header and explanation is from:
% http://faculty.washington.edu/blewis/ocn499/EXER05.htm
%
% sal78 converts conductivity to salinity
% the conductivity ratio (c)=1.0000000 for salinity=35
% PSS-78. temperature=15.0 deg. celcius, and atmospheric
% pressure.
%
% references: also located in UNESCO Report NO. 37 1981
% Practical Salinity Scale 1978: E.L. Lewis IEEE Ocean Eng.
% Jan. 1980
%
% units:
% pressure p decibars
% temperature t deg. celcius (IPTS-68)
% conductivity c ratio (m=0)
% conductivity c mmho/sec (m=1)
% salinity sal78 (PSS-78) (m=0)
% checkvalues:
% sal78=1.888091:c=40.0000,t=40degC,p=10000dcbrs:m=1
% sal78=40.00000:c=1.888091,t=40degC,p=10000dcbrs:m=0
%
% sal78 ratio: returns zero for conductivity ratio: <0.0005
% sal78: returns zero for salinity: <0.02
%
% Practical Salinity Scale 1978 definition with temperature
% correction
%
% convert conductivity to salinity
%
% this part of code is from:
% http://faculty.washington.edu/blewis/ocn499/EXER05.htm
r=c;
dt=t-15.0;
rt35=(((1.0031E-9*t-6.9698e-7)*t+1.104259e-4)*t +2.00564e-2)*t+0.6766097;
c=((3.989e-15*p-6.370e-10)*p+2.070e-5)*p;
b=(4.464e-4*t+3.426e-2)*t+1.0;
a=-3.107e-3*t+0.4215;
if m==0,
rt=r/(rt35*(1.0+c/(b+a*r)));
rt=sqrt(abs(rt));
sal=((((2.7081*rt-7.0261)*rt+14.0941)*rt+25.3851)...
 *rt -0.1692)*rt+0.0080...
  +(dt/(1.0+0.0162*dt))*(((((-0.0144*rt+0.0636)*rt-0.0375)...
 *rt-0.0066)*rt-0.0056)*rt+0.0005);
else
% this part of code is from:
% http://marine.csiro.au/datacentre/process/formats/sal78.f
rt=sqrt(r/35.0);
for n=1:10,
 si=((((2.7081*rt-7.0261)*rt+14.0941)*rt+25.3851)*rt...
   -0.1692)*rt+0.0080...
  +(dt/(1.0+0.0162*dt))*(((((-0.0144*rt...
   +0.0636)*rt-0.0375)*rt-0.0066)*rt-0.0056)*rt+0.0005);
  dsal=((((13.5405*rt-28.1044)*rt+42.2823)*rt+50.7702)*rt...
   -0.1692)+(dt/(1.0+0.0162*rt))*((((-0.0720*rt+0.2544)*rt...
   -0.1125)*rt-0.0132)*rt-0.0056);
   rt=rt+(r-si)/dsal;
end
rtt=rt35*rt*rt;
c=rtt*(c+b);
b=b-rtt*a;
rr=sqrt(abs(b*b+4.0*a*c))-b;
sal=0.5*rr/a;
end  % if m==0

2.Function sal.m

function s=sal(c,t,p)
%
% function s=sal(c,t,p)
% this function derives salinity from a value of the
% in situ conductivity (as determined, for example, by a CTD),
% temperature and pressure.
%
% units:
% conductivity (c) : mmho/cm
% temperature (t)  : degC
% pressure (p)     : dbar --> 1 bar=10 dbar=100 kPa
%
%
% c35150 is the conductivity of standard seawater at 35 PSU,
% 15 degC, and atmospheric pressure
c35150=42.914;

if(abs(c)<0.01), s=-1, return, end
g=(c*(1.-6.5E-06*(t-2.8)+1.5E-8*(p-3000.)))/c35150;
s=sal78(g,t,p,0);

3.Function conduc.m

function c=conduc(s,t,p)
%
% function c=conduc(s,t,p)
% this function derives conductivity from a value of the
% salinity, temperature and pressure.
%
% units:
% salinity (s)     : -
% temperature (t)  : degC
% pressure (p)     : dbar  --> 1 bar = 10 dbar = 100 kPa
%
%
% c35150 is the conductivity of standard seawater at 35 PSU,
% 15 degC, and atmospheric pressure
c35150=42.914;
g=sal78(s,t,p,1);
c=g*c35150/(1.0-6.5e-6*(t-2.8)+1.5e-8*(p-3000.));

Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: