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

Annotation 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 - (hide 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 gforget 1.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