/[MITgcm]/MITgcm/verification/natl_box/input/rho.m
ViewVC logotype

Contents of /MITgcm/verification/natl_box/input/rho.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Mon Jan 30 23:51:50 2006 UTC (18 years, 2 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint58l_post, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint58e_post, checkpoint58u_post, checkpoint58w_post, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint58r_post, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint58n_post, checkpoint58x_post, checkpoint58t_post, checkpoint58h_post, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint58q_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint58j_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint58f_post, checkpoint58d_post, checkpoint58c_post, checkpoint58a_post, checkpoint58i_post, checkpoint58g_post, checkpoint58o_post, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint58k_post, checkpoint58v_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint58b_post, checkpoint58m_post, HEAD
added closest.m and rho.m to verification/natl_box/input
because they are needed by lookat.m

1 function x=rho(S,T,P);
2 % RHO density of seawater (kg/m^3)
3 %
4 % x=rho(S,T,P)
5 %
6 % given the salinity S (ppt), in situ temperature T (deg C)
7 % and pressure P (dbars).
8 %
9 % Note: D. Menemenlis (MIT 18 jul 94)
10 % This routine is a leaner version of SWSTATE for large matrices,
11 % and the user can mix and match scalar, vector, and matrix inputs.
12 %
13 % See also SWSTATE
14
15 % check that input arguments are same size, etc.
16 if length(size(S))>2 | length(size(T))>2 | length(size(P))>2
17 if length(size(S)) ~= length(size(T)) | length(size(S)) ~= length(size(P))
18 error('for 3+ dimensioned arrays, S, T, and P must have same dimension')
19 end
20 if any(size(S)~=size(T)) | any(size(S)~=size(P))
21 error('for 3+ dimensioned arrays, S, T, and P must have same size')
22 end
23 else
24 [NS,MS]=size(S); [NT,MT]=size(T);
25 if ((NS==1 & MS==1) & (NT ~=1 | MT ~=1) ),
26 S=S*ones(NT,MT);
27 [NS,MS]=size(S);
28 elseif ((NT==1 & MT==1) & (NS ~=1 | MS ~=1) ),
29 T=T*ones(NS,MS);
30 [NT,MT]=size(T);
31 end
32
33 if (NT+MT) > (NS+MS)
34 if (MS==1), S=S*ones(1,MT);
35 elseif (NS==1), S=S'*ones(1,MT);
36 end
37 elseif (NT+MT) < (NS+MS)
38 if (MT==1), T=T*ones(1,MS);
39 elseif (NT==1), T=T'*ones(1,MS);
40 end
41 [NT,MT]=size(T);
42 end
43
44 [NP,MP]=size(P);
45 if max(NP,MP)>1
46 if (MP==1), P=P*ones(1,MT);
47 elseif (NP==1), P=P'*ones(1,MT);
48 end
49 end
50 end
51
52 % CONVERT PRESSURE TO BARS AND TAKE SQUARE ROOT SALINITY.
53 P=P/10.;
54 SR = sqrt(abs(S));
55
56 % INTERNATIONAL ONE-ATMOSPHERE EQUATION OF STATE OF SEAWATER
57 x = (4.8314E-4 * S + ...
58 ((-1.6546E-6*T+1.0227E-4).*T-5.72466E-3) .* SR + ...
59 (((5.3875E-9*T-8.2467E-7).*T+7.6438E-5).*T-4.0899E-3).*T+8.24493E-1) ...
60 .*S + ((((6.536332E-9*T-1.120083E-6).*T+1.001685E-4).*T ...
61 -9.095290E-3).*T+6.793952E-2).*T-28.263737;
62
63 % SPECIFIC VOLUME AT ATMOSPHERIC PRESSURE
64 V350P = 1.0/1028.1063;
65 x = -x*V350P./(1028.1063+x);
66
67 % COMPUTE COMPRESSION TERMS
68 SR = ((((9.1697E-10*T+2.0816E-8).*T-9.9348E-7) .* S + ...
69 (5.2787E-8*T-6.12293E-6).*T+3.47718E-5) .*P + ...
70 (1.91075E-4 * SR + (-1.6078E-6*T-1.0981E-5).*T+2.2838E-3) .* ...
71 S + ((-5.77905E-7*T+1.16092E-4).*T+1.43713E-3).*T-0.1194975) ...
72 .*P + (((-5.3009E-4*T+1.6483E-2).*T+7.944E-2) .* SR + ...
73 ((-6.1670E-5*T+1.09987E-2).*T-0.603459).*T+54.6746) .* S + ...
74 (((-5.155288E-5*T+1.360477E-2).*T-2.327105).*T+148.4206).*T-1930.06;
75
76 % EVALUATE PRESSURE POLYNOMIAL
77 B = (5.03217E-5*P+3.359406).*P+21582.27;
78 x = x.*(1.0 - P./B) + (V350P+x).*P.*SR./(B.*(B+SR));
79 SR = V350P.*(1.0 - P./B);
80 x= 1028.106331 + P./B./SR - x ./ (SR.*(SR+x));

  ViewVC Help
Powered by ViewVC 1.1.22