/[MITgcm]/MITgcm_contrib/gmaze_pv/surfbet2outcrops.m
ViewVC logotype

Annotation of /MITgcm_contrib/gmaze_pv/surfbet2outcrops.m

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


Revision 1.4 - (hide annotations) (download)
Wed Sep 19 14:58:25 2007 UTC (17 years, 10 months ago) by gmaze
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +0 -0 lines
FILE REMOVED
Update

1 gmaze 1.1 %
2     % S = surfbet2outcrops(TRACER,LIMITS,LAT,LONG)
3     %
4 gmaze 1.2 % This function computes the horizontal surface between two outcrops,
5 gmaze 1.1 % given fixed limits eastward, westward and southward.
6     %
7     % TRACER = TRACER(LAT,LONG) : surface tracer variable in 2D
8     % LIMITS = [OUTCROP1 OUTCROP2 MAX_LAT1 MAX_LAT2 MAX_LONG1 MAX_LONG2]
9     % : limit's values (MAX_LAT2 is used only if
10     % the outcrop's surfaces reach them).
11     % LAT : latitude axis (1D), degrees northward
12     % LONG : longitude axis (1D), degrees east
13     % S : single surface value (m^2)
14     %
15     % 06/14/2006
16     % gmaze@mit.edu
17     %
18    
19    
20     function varargout = surfbet2outcrops(TRACER,LIMITS,LAT,LONG)
21    
22    
23     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
24     % PRE-PROCESS and ERROR CHECK %
25     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 gmaze 1.3 pv_checkpath
27 gmaze 1.1
28     % Check number of input:
29     if nargin ~= 4
30     help surfbet2outcrops.m
31     error('surfbet2outcrops.m : Wrong number of parameters')
32     return
33     end %if
34    
35     % Check dimensions:
36     n = size(TRACER);
37     if length(n)==2
38     [ny nx] = size(TRACER);
39     if ny~=length(LAT) | nx~=length(LONG)
40     help surfbet2outcrops.m
41     error('surfbet2outcrops.m : Axis must have same dimensions than TRACER field');
42     return
43     end %if
44     else
45     help surfbet2outcrops.m
46     error('surfbet2outcrops.m : TRACER must be a 2D field')
47     return
48     end %if
49    
50     % Ensure that axis are of dim: (1,N) and well sorted (increasing values):
51     a=size(LAT);
52     if a(1) ~= 1, LAT=LAT'; end
53     S = sort(LAT);
54     if S ~= LAT
55     help surfbet2outcrops.m
56     error('surfbet2outcrops.m : LAT must be increasing values')
57     return
58     end %if
59     a=size(LONG);
60     if a(1) ~= 1, LONG=LONG'; end
61     S = sort(LONG);
62     if S ~= LONG
63     help surfbet2outcrops.m
64     error('surfbet2outcrops.m : LONG must be increasing values')
65     return
66     end %if
67    
68     % LIMITS definition:
69     if length(LIMITS) ~= 6
70     help surfbet2outcrops.m
71     error('surfbet2outcrops.m : LIMITS must contains 6 values')
72     return
73     end %if
74     OUTCROPS = sort( LIMITS(1:2) );
75     LAT_MAX = sort( LIMITS(3:4) );
76     LONG_MAX = sort( LIMITS(5:6) );
77    
78    
79    
80     %%%%%%%%%%%%%%%%%%%
81     % COMPUTE SURFACE %
82     %%%%%%%%%%%%%%%%%%%
83     % It's computed as the difference between the northern outcrop surface
84     % and the southern outcrop one.
85     [S1 S1mat dS1] = subfct_getsurf(TRACER,LAT,LONG,[OUTCROPS(1) LAT_MAX LONG_MAX]);
86     [S2 S2mat dS2] = subfct_getsurf(TRACER,LAT,LONG,[OUTCROPS(2) LAT_MAX LONG_MAX]);
87    
88    
89     % Then:
90     S = max(S1,S2)-min(S1,S2);
91    
92    
93 gmaze 1.3 % Last we determine the outcrop surface limits:
94     S1mat = abs(S1mat - 1);
95     Smat = (S1mat + S2mat)./2;
96     Smat(find(Smat<1)) = 0;
97     Smat = logical(Smat);
98    
99    
100    
101 gmaze 1.1
102     %%%%%%%%%%%
103     % OUTPUTS %
104     %%%%%%%%%%%
105     switch nargout
106 gmaze 1.3 case {0 , 1}
107 gmaze 1.1 varargout(1) = {S};
108     case 2
109     varargout(1) = {S};
110 gmaze 1.3 varargout(2) = {Smat};
111 gmaze 1.1 case 3
112     varargout(1) = {S};
113 gmaze 1.3 varargout(2) = {Smat};
114 gmaze 1.1 varargout(3) = {dS1};
115     end %switch nargout
116    
117    
118    

  ViewVC Help
Powered by ViewVC 1.1.22