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

Annotation of /MITgcm_contrib/gmaze_pv/eg_main_getPV.m

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


Revision 1.1 - (hide annotations) (download)
Tue Jan 30 22:10:10 2007 UTC (18 years, 6 months ago) by gmaze
Branch: MAIN
Add eg for bin2cdf conversion for both lat-lon cs grid

1 gmaze 1.1 %
2     % THIS IS NOT A FUNCTION !
3     %
4     % Here is the main program to compute the potential vorticity Q
5     % from the flow (UVEL,VVEL), potential temperature (THETA) and
6     % salinity (SALTanom), given snapshot fields.
7     % 3 steps to do it:
8     % 1- compute the potential density SIGMATHETA (also called ST)
9     % from THETA and SALTanom:
10     % ST = SIGMA(S,THETA,p=0)
11     % 2- compute the 3D relative vorticity field OMEGA (called O)
12     % without vertical velocity terms:
13     % O = ( -dVdz ; dUdz ; dVdx - dUdy )
14     % 3- compute the potential vorticity Q:
15     % Q = Ox.dSTdx + Oy.dSTdy + (f+Oz).dSTdz
16     % (note that we only add the planetary vorticity at this last
17     % step).
18     % It's also possible to add a real last step 4 to compute PV as:
19     % Q = -1/RHO * [Ox.dSTdx + Oy.dSTdy + (f+Oz).dSTdz]
20     % Note that in this case, program loads the PV output from the
21     % routine C_compute_potential_vorticity (step 3) and simply multiply
22     % it by: -1/RHO.
23     % RHO may be computed with the routine compute_density.m
24     %
25     %
26     % Input files are supposed to be in a subdirectory called:
27     % ./netcdf-files/<snapshot>/
28     %
29     % File names id are stored in global variables:
30     % netcdf_UVEL, netcdf_VVEL, netcdf_THETA, netcdf_SALTanom
31     % with the format:
32     % netcdf_<ID>.<netcdf_domain>.<netcdf_suff>
33     % where netcdf_domain and netcdf_suff are also in global
34     % THE DOT IS ADDED IN SUB-PROG, SO AVOID IT IN DEFINITIONS
35     %
36     % Note that Q is not initialy defined with the ratio by -RHO.
37     %
38     % A simple potential vorticity (splQ) computing is also available.
39     % It is defined as: splQ = f. dSIGMATHETA/dz
40     %
41     % 30Jan/2007
42     % gmaze@mit.edu
43     %
44     clear
45    
46     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SETUP:
47     pv_checkpath
48    
49    
50     % File's name:
51     global netcdf_UVEL netcdf_VVEL netcdf_THETA
52     global netcdf_SALTanom is_SALTanom
53     global netcdf_TAUX netcdf_TAUY netcdf_SIGMATHETA
54     global netcdf_RHO netcdf_EKL netcdf_Qnet netcdf_MLD
55     global netcdf_JFz netcdf_JBz
56     global netcdf_suff netcdf_domain sla
57     netcdf_UVEL = 'UVEL';
58     netcdf_VVEL = 'VVEL';
59     netcdf_THETA = 'THETA';
60     netcdf_SALTanom = 'SALTanom'; is_SALTanom = 1;
61     netcdf_TAUX = 'TAUX';
62     netcdf_TAUY = 'TAUY';
63     netcdf_SIGMATHETA = 'SIGMATHETA';
64     netcdf_RHO = 'RHO';
65     netcdf_EKL = 'EKL';
66     netcdf_MLD = 'KPPmld'; %netcdf_MLD = 'MLD';
67     netcdf_Qnet = 'TFLUX';
68     netcdf_JFz = 'JFz';
69     netcdf_JBz = 'JBz';
70     netcdf_suff = 'nc';
71     netcdf_domain = 'north_atlantic'; % Must not be empty !
72    
73    
74    
75     % FLAGS:
76     % Turn 0/1 the following flag to determine which PV to compute:
77     wantsplPV = 0; % (turn 1 for simple PV computing)
78     % Turn 0/1 this flag to get online computing informations:
79     global toshow
80     toshow = 0;
81    
82     % Get date list:
83     ll = dir(strcat('netcdf-files',sla));
84     nt = 0;
85     for il = 1 : size(ll,1)
86     if ll(il).isdir & findstr(ll(il).name,'00')
87     nt = nt + 1;
88     list(nt).name = ll(il).name;
89     end
90     end
91    
92    
93     %%%%%%%%%%%%%%%%%%%%%%%%%%%%% TIME LOOP
94     for it = 1 : nt
95     % Files are looked for in subdirectory defined by: ./netcdf-files/<snapshot>/
96     snapshot = list(it).name;
97     disp('********************************************************')
98     disp('********************************************************')
99     disp(snapshot)
100     disp('********************************************************')
101     disp('********************************************************')
102    
103    
104     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% COMPUTING PV:
105     % STEP 1:
106     % Output netcdf file is:
107     % ./netcdf-files/<snapshot>/SIGMATHETA.<netcdf_domain>.<netcdf_suff>
108     A_compute_potential_density(snapshot)
109     compute_density(snapshot)
110    
111    
112     % STEP 2:
113     % Output netcdf files are:
114     % ./netcdf-files/<snapshot>/OMEGAX.<netcdf_domain>.<netcdf_suff>
115     % ./netcdf-files/<snapshot>/OMEGAY.<netcdf_domain>.<netcdf_suff>
116     % ./netcdf-files/<snapshot>/ZETA.<netcdf_domain>.<netcdf_suff>
117     % No interest for the a splPV computing
118     if ~wantsplPV
119     B_compute_relative_vorticity(snapshot)
120     end %if
121    
122     % STEP 3:
123     % Output netcdf file is:
124     % ./netcdf-files/<snapshot>/PV.<netcdf_domain>.<netcdf_suff>
125     C_compute_potential_vorticity(snapshot,wantsplPV)
126    
127     % STEP 4:
128     % Output netcdf file is (replace last one):
129     % ./netcdf-files/<snapshot>/PV.<netcdf_domain>.<netcdf_suff>
130     global netcdf_PV
131     if wantsplPV == 1
132     netcdf_PV = 'splPV';
133     else
134     netcdf_PV = 'PV';
135     end %if
136     D_compute_potential_vorticity(snapshot,wantsplPV)
137    
138    
139     % OTHER computations:
140     if 0
141     compute_alpha(snapshot)
142     compute_MLD(snapshot)
143     compute_EKL(snapshot)
144     compute_JFz(snapshot);
145     compute_JBz(snapshot);
146     compute_Qek(snapshot);
147     end %if 1/0
148    
149    
150     fclose('all');
151     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% THAT'S IT !
152     end %for it
153    
154    
155     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% THAT'S IT !
156    
157     % Keep clean workspace:
158     clear wantsplPV toshow netcdf_*
159     clear global wantsplPV toshow netcdf_*

  ViewVC Help
Powered by ViewVC 1.1.22