/[MITgcm]/MITgcm_contrib/gael/profilesMatlabProcessing/profiles_misc/sw_adtg.m
ViewVC logotype

Contents of /MITgcm_contrib/gael/profilesMatlabProcessing/profiles_misc/sw_adtg.m

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


Revision 1.1 - (show annotations) (download)
Thu Oct 21 19:43:57 2010 UTC (14 years, 8 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
*** empty log message ***

1 function ADTG = sw_adtg(S,T,P)
2
3 % SW_ADTG Adiabatic temperature gradient
4 %===========================================================================
5 % SW_ADTG $Revision: 1.4 $ $Date: 1994/10/10 04:16:37 $
6 % Copyright (C) CSIRO, Phil Morgan 1992.
7 %
8 % adtg = sw_adtg(S,T,P)
9 %
10 % DESCRIPTION:
11 % Calculates adiabatic temperature gradient as per UNESCO 1983 routines.
12 %
13 % INPUT: (all must have same dimensions)
14 % S = salinity [psu (PSS-78) ]
15 % T = temperature [degree C (IPTS-68)]
16 % P = pressure [db]
17 % (P may have dims 1x1, mx1, 1xn or mxn for S(mxn) )
18 %
19 % OUTPUT:
20 % ADTG = adiabatic temperature gradient [degree_C/db]
21 %
22 % AUTHOR: Phil Morgan 92-04-03 (morgan@ml.csiro.au)
23 %
24 % DISCLAIMER:
25 % This software is provided "as is" without warranty of any kind.
26 % See the file sw_copy.m for conditions of use and licence.
27 %
28 % REFERENCES:
29 % Fofonoff, P. and Millard, R.C. Jr
30 % Unesco 1983. Algorithms for computation of fundamental properties of
31 % seawater. Unesco Tech. Pap. in Mar. Sci., No. 44, 53 pp. Eqn.(31) p.39
32 %
33 % Bryden, H. 1973.
34 % "New Polynomials for thermal expansion, adiabatic temperature gradient
35 % and potential temperature of sea water."
36 % DEEP-SEA RES., 1973, Vol20,401-408.
37 %=========================================================================
38
39 %-------------
40 % CHECK INPUTS
41 %-------------
42 if nargin ~= 3
43 error('sw_adtg.m: Must pass 3 parameters ')
44 end %if
45
46 % CHECK S,T,P dimensions and verify consistent
47 [ms,ns] = size(S);
48 [mt,nt] = size(T);
49 [mp,np] = size(P);
50
51
52 % CHECK THAT S & T HAVE SAME SHAPE
53 if (ms~=mt) | (ns~=nt)
54 error('check_stp: S & T must have same dimensions')
55 end %if
56
57 % CHECK OPTIONAL SHAPES FOR P
58 if mp==1 & np==1 % P is a scalar. Fill to size of S
59 P = P(1)*ones(ms,ns);
60 elseif np==ns & mp==1 % P is row vector with same cols as S
61 P = P( ones(1,ms), : ); % Copy down each column.
62 elseif mp==ms & np==1 % P is column vector
63 P = P( :, ones(1,ns) ); % Copy across each row
64 elseif mp==ms & np==ns % PR is a matrix size(S)
65 % shape ok
66 else
67 error('check_stp: P has wrong dimensions')
68 end %if
69 [mp,np] = size(P);
70
71
72
73 % IF ALL ROW VECTORS ARE PASSED THEN LET US PRESERVE SHAPE ON RETURN.
74 Transpose = 0;
75 if mp == 1 % row vector
76 P = P(:);
77 T = T(:);
78 S = S(:);
79
80 Transpose = 1;
81 end %if
82 %***check_stp
83
84 %-------------
85 % BEGIN
86 %-------------
87 a0 = 3.5803E-5;
88 a1 = +8.5258E-6;
89 a2 = -6.836E-8;
90 a3 = 6.6228E-10;
91
92 b0 = +1.8932E-6;
93 b1 = -4.2393E-8;
94
95 c0 = +1.8741E-8;
96 c1 = -6.7795E-10;
97 c2 = +8.733E-12;
98 c3 = -5.4481E-14;
99
100 d0 = -1.1351E-10;
101 d1 = 2.7759E-12;
102
103 e0 = -4.6206E-13;
104 e1 = +1.8676E-14;
105 e2 = -2.1687E-16;
106
107 ADTG = a0 + (a1 + (a2 + a3.*T).*T).*T ...
108 + (b0 + b1.*T).*(S-35) ...
109 + ( (c0 + (c1 + (c2 + c3.*T).*T).*T) + (d0 + d1.*T).*(S-35) ).*P ...
110 + ( e0 + (e1 + e2.*T).*T ).*P.*P;
111
112 if Transpose
113 ADTG = ADTG';
114 end %if
115
116 return
117 %==========================================================================

  ViewVC Help
Powered by ViewVC 1.1.22