1 |
C $Header: /u/gcmpack/MITgcm/pkg/mnc/mnc_cw_write_grid_info.F,v 1.13 2009/11/24 14:53:50 mlosch Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "MNC_OPTIONS.h" |
5 |
|
6 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
CBOP 1 |
8 |
C !ROUTINE: MNC_CW_WRITE_GRID_INFO |
9 |
|
10 |
C !INTERFACE: |
11 |
SUBROUTINE MNC_CW_WRITE_GRID_INFO( |
12 |
I bfname, |
13 |
I myThid ) |
14 |
|
15 |
C !DESCRIPTION: |
16 |
C This subroutine writes all the grid information (\textit{eg.} |
17 |
C locations, spacings, areas, \textit{etc.}) to one grid file |
18 |
C (\texttt{grid.xxxxx.nc}) per tile. |
19 |
|
20 |
C !USES: |
21 |
implicit none |
22 |
#include "MNC_COMMON.h" |
23 |
#include "SIZE.h" |
24 |
#include "EEPARAMS.h" |
25 |
#include "PARAMS.h" |
26 |
#include "GRID.h" |
27 |
|
28 |
C !INPUT PARAMETERS: |
29 |
integer myThid |
30 |
character*(*) bfname |
31 |
CEOP |
32 |
|
33 |
C !LOCAL VARIABLES: |
34 |
integer nf,nl |
35 |
|
36 |
C Functions |
37 |
integer IFNBLNK, ILNBLNK |
38 |
|
39 |
nf = IFNBLNK(bfname) |
40 |
nl = ILNBLNK(bfname) |
41 |
|
42 |
C Create MNC definitions for GRID.h variables |
43 |
CALL MNC_CW_ADD_VNAME('rC', '-_-_--__C__-', 0,0, myThid) |
44 |
CALL MNC_CW_ADD_VNAME('rF', '-_-_--__I__-', 0,0, myThid) |
45 |
CALL MNC_CW_ADD_VNAME('drC', '-_-_--__C__-', 0,0, myThid) |
46 |
CALL MNC_CW_ADD_VNAME('drF', '-_-_--__C__-', 0,0, myThid) |
47 |
|
48 |
CALL MNC_CW_ADD_VNAME('xC', 'Cen_xy_Hn__-__-', 3,4, myThid) |
49 |
CALL MNC_CW_ADD_VNAME('yC', 'Cen_xy_Hn__-__-', 3,4, myThid) |
50 |
CALL MNC_CW_ADD_VNAME('xG', 'Cor_xy_Hn__-__-', 3,4, myThid) |
51 |
CALL MNC_CW_ADD_VNAME('yG', 'Cor_xy_Hn__-__-', 3,4, myThid) |
52 |
CALL MNC_CW_ADD_VNAME('dxC', 'Cen_xy_Hn__-__-', 3,4, myThid) |
53 |
CALL MNC_CW_ADD_VNAME('dyC', 'Cen_xy_Hn__-__-', 3,4, myThid) |
54 |
CALL MNC_CW_ADD_VNAME('dxF', 'Cen_xy_Hn__-__-', 3,4, myThid) |
55 |
CALL MNC_CW_ADD_VNAME('dyF', 'Cen_xy_Hn__-__-', 3,4, myThid) |
56 |
CALL MNC_CW_ADD_VNAME('dxG', 'Cen_xy_Hn__-__-', 3,4, myThid) |
57 |
CALL MNC_CW_ADD_VNAME('dyG', 'Cen_xy_Hn__-__-', 3,4, myThid) |
58 |
CALL MNC_CW_ADD_VNAME('dxV', 'U_xy_Hn__-__-', 3,4, myThid) |
59 |
CALL MNC_CW_ADD_VNAME('dyU', 'V_xy_Hn__-__-', 3,4, myThid) |
60 |
CALL MNC_CW_ADD_VNAME('rA', 'Cen_xy_Hn__-__-', 3,4, myThid) |
61 |
CALL MNC_CW_ADD_VNAME('rAw', 'Cen_xy_Hn__-__-', 3,4, myThid) |
62 |
CALL MNC_CW_ADD_VNAME('rAs', 'Cen_xy_Hn__-__-', 3,4, myThid) |
63 |
CALL MNC_CW_ADD_VNAME('rAz', 'Cen_xy_Hn__-__-', 3,4, myThid) |
64 |
CALL MNC_CW_ADD_VNAME('fCori', 'Cen_xy_Hn__-__-', 3,4, myThid) |
65 |
CALL MNC_CW_ADD_VNAME('fCoriG', 'Cen_xy_Hn__-__-', 3,4, myThid) |
66 |
CALL MNC_CW_ADD_VNAME('R_low', 'Cen_xy_Hn__-__-', 3,4, myThid) |
67 |
CALL MNC_CW_ADD_VNAME('Ro_surf', 'Cen_xy_Hn__-__-', 3,4, myThid) |
68 |
CALL MNC_CW_ADD_VNAME('HFacC', 'Cen_xy_Hn__C__-', 4,5, myThid) |
69 |
CALL MNC_CW_ADD_VNAME('HFacW', 'Cen_xy_Hn__C__-', 4,5, myThid) |
70 |
CALL MNC_CW_ADD_VNAME('HFacS', 'Cen_xy_Hn__C__-', 4,5, myThid) |
71 |
|
72 |
CALL MNC_CW_ADD_VATTR_TEXT('rC','description', |
73 |
& 'r of cell center',myThid) |
74 |
CALL MNC_CW_ADD_VATTR_TEXT('rF','description', |
75 |
& 'r of cell face',myThid) |
76 |
CALL MNC_CW_ADD_VATTR_TEXT('drC','description', |
77 |
& 'r cell center separation',myThid) |
78 |
CALL MNC_CW_ADD_VATTR_TEXT('drF','description', |
79 |
& 'r cell face separation',myThid) |
80 |
CALL MNC_CW_ADD_VATTR_TEXT('xC','description', |
81 |
& 'x of cell center',myThid) |
82 |
CALL MNC_CW_ADD_VATTR_TEXT('yC','description', |
83 |
& 'y of cell center',myThid) |
84 |
CALL MNC_CW_ADD_VATTR_TEXT('xG','description', |
85 |
& 'x of cell corner',myThid) |
86 |
CALL MNC_CW_ADD_VATTR_TEXT('yG','description', |
87 |
& 'y of cell corner',myThid) |
88 |
CALL MNC_CW_ADD_VATTR_TEXT('dxC','description', |
89 |
& 'x cell center separation',myThid) |
90 |
CALL MNC_CW_ADD_VATTR_TEXT('dyC','description', |
91 |
& 'y cell center separation',myThid) |
92 |
CALL MNC_CW_ADD_VATTR_TEXT('dxF','description', |
93 |
& 'x cell face separation',myThid) |
94 |
CALL MNC_CW_ADD_VATTR_TEXT('dyF','description', |
95 |
& 'y cell face separation',myThid) |
96 |
CALL MNC_CW_ADD_VATTR_TEXT('dxG','description', |
97 |
& 'x cell face separation',myThid) |
98 |
CALL MNC_CW_ADD_VATTR_TEXT('dyG','description', |
99 |
& 'y cell face separation',myThid) |
100 |
CALL MNC_CW_ADD_VATTR_TEXT('dxV','description', |
101 |
& 'x v-velocity separation',myThid) |
102 |
CALL MNC_CW_ADD_VATTR_TEXT('dyU','description', |
103 |
& 'y u-velocity separation',myThid) |
104 |
CALL MNC_CW_ADD_VATTR_TEXT('rA','description', |
105 |
& 'r-face area',myThid) |
106 |
CALL MNC_CW_ADD_VATTR_TEXT('rAw','description', |
107 |
& '',myThid) |
108 |
CALL MNC_CW_ADD_VATTR_TEXT('rAs','description', |
109 |
& '',myThid) |
110 |
CALL MNC_CW_ADD_VATTR_TEXT('rAz','description', |
111 |
& '',myThid) |
112 |
CALL MNC_CW_ADD_VATTR_TEXT('fCori','description', |
113 |
& 'Coriolis f',myThid) |
114 |
CALL MNC_CW_ADD_VATTR_TEXT('fCoriG','description', |
115 |
& 'Coriolis f',myThid) |
116 |
CALL MNC_CW_ADD_VATTR_TEXT('R_low','description', |
117 |
& 'base of fluid in r-units',myThid) |
118 |
CALL MNC_CW_ADD_VATTR_TEXT('Ro_surf','description', |
119 |
& 'surface reference (at rest,myThid) position',myThid) |
120 |
CALL MNC_CW_ADD_VATTR_TEXT('HFacC','description', |
121 |
& 'C-facing vertical fraction of open cell',myThid) |
122 |
CALL MNC_CW_ADD_VATTR_TEXT('HFacW','description', |
123 |
& 'W-facing vertical fraction of open cell',myThid) |
124 |
CALL MNC_CW_ADD_VATTR_TEXT('HFacS','description', |
125 |
& 'S-facing vertical fraction of open cell',myThid) |
126 |
|
127 |
C Write the GRID.h variables |
128 |
CALL MNC_CW_SET_UDIM(bfname(nf:nl), 0, myThid) |
129 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'rC',rC,myThid) |
130 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'rF',rF,myThid) |
131 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'drC',drC,myThid) |
132 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'drF',drF,myThid) |
133 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'xC',xC,myThid) |
134 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'yC',yC,myThid) |
135 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'xG',xG,myThid) |
136 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'yG',yG,myThid) |
137 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dxC',dxC,myThid) |
138 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dyC',dyC,myThid) |
139 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dxF',dxF,myThid) |
140 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dyF',dyF,myThid) |
141 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dxG',dxG,myThid) |
142 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dyG',dyG,myThid) |
143 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dxV',dxV,myThid) |
144 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'dyU',dyU,myThid) |
145 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'rA',rA,myThid) |
146 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'rAw',rAw,myThid) |
147 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'rAs',rAs,myThid) |
148 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'rAz',rAz,myThid) |
149 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'fCori',fCori,myThid) |
150 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'fCoriG',fCoriG,myThid) |
151 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'R_low',R_low,myThid) |
152 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'Ro_surf',Ro_surf,myThid) |
153 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'HFacC',HFacC,myThid) |
154 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'HFacW',HFacW,myThid) |
155 |
CALL MNC_CW_RS_W('D',bfname(nf:nl),0,0,'HFacS',HFacS,myThid) |
156 |
|
157 |
RETURN |
158 |
END |
159 |
|
160 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
161 |
|
162 |
CBOP |
163 |
C !ROUTINE: MNC_CW_WRITE_GRID_COORD |
164 |
|
165 |
C !INTERFACE: |
166 |
SUBROUTINE MNC_CW_WRITE_GRID_COORD( |
167 |
I fname, |
168 |
I myThid ) |
169 |
|
170 |
C !DESCRIPTION: |
171 |
C This subroutine writes coordinates to one netcdf file |
172 |
C (\texttt{fname.xxxxx.nc}) per tile. |
173 |
|
174 |
C !USES: |
175 |
implicit none |
176 |
#include "SIZE.h" |
177 |
#include "GRID.h" |
178 |
|
179 |
C !INPUT PARAMETERS: |
180 |
integer myThid |
181 |
character*(*) fname |
182 |
CEOP |
183 |
C Write coordinates to file "fname" |
184 |
_BEGIN_MASTER( myThid ) |
185 |
|
186 |
CALL MNC_CW_SET_UDIM(fname, 0, myThid) |
187 |
CALL MNC_CW_RS_W('R',fname,0,0,'XC',xC, myThid) |
188 |
CALL MNC_CW_RS_W('R',fname,0,0,'YC',yC, myThid) |
189 |
CALL MNC_CW_RS_W('R',fname,0,0,'XG',xG, myThid) |
190 |
CALL MNC_CW_RS_W('R',fname,0,0,'YG',yG, myThid) |
191 |
C-- Here we can add as much grid information as we like, but this |
192 |
C-- will increase the size of each of the affected files. It is |
193 |
C-- a matter of taste, but here are some candidates: |
194 |
C-- Probably it is enough to write the coordinates of the |
195 |
C-- center points and the corners. |
196 |
C CALL MNC_CW_RS_W('R',fname,0,0,'XU',xG, myThid) |
197 |
C CALL MNC_CW_RS_W('R',fname,0,0,'YU',yC, myThid) |
198 |
C CALL MNC_CW_RS_W('R',fname,0,0,'XV',xC, myThid) |
199 |
C CALL MNC_CW_RS_W('R',fname,0,0,'YV',yG, myThid) |
200 |
C-- Only required for diagnostics files, but unclear what the vertical |
201 |
C-- coordinate means in this case, so do not write anything for now |
202 |
C CALL MNC_CW_RS_W('R',fname,0,0,'RC',rC, myThid) |
203 |
C CALL MNC_CW_RS_W('R',fname,0,0,'RF',rF, myThid) |
204 |
C-- If required write mask information. |
205 |
C CALL MNC_CW_RS_W('R',fname,0,0,'HFacC',HFacC,myThid) |
206 |
|
207 |
_END_MASTER(myThid) |
208 |
|
209 |
RETURN |
210 |
END |
211 |
|
212 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |