/[MITgcm]/MITgcm/pkg/ctrl/ctrl_pack.F
ViewVC logotype

Annotation of /MITgcm/pkg/ctrl/ctrl_pack.F

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


Revision 1.36 - (hide annotations) (download)
Sun Sep 26 02:51:38 2010 UTC (13 years, 7 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint62t, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l
Changes since 1.35: +3 -3 lines
o pkg/ctrl: option ALLOW_PACKUNPACK_METHOD2

  provides an alternative way to handle pack/unpack in adjoint runs.
  Here we rely on commonly used, up-to-date, I/O mdsio routines
  (WRITE_REC_3D_RL.F and REC_REC_3D_RL.F) rather than on mdsio_gl.F.
  Indeed mdsio_gl.F, which is used only in pack/unpack, has not been
  thorougly maintained, which leads pack/unpack to fail in several situations.
  METHOD2 is expected to prove more robust and require less maintenance.
  It could eventually become the default. The basic testing was done
  with a a cube sphere, using exch2, multiple processors + mpi, multiple
  tiles per processor, and with discarded blank tiles. Unlike the current
  default, METHOD2 seemed to work just fine using singlecpuio or not,
  using processor sub-directories or not.

1 gforget 1.36 C $Header: /u/gcmpack/MITgcm/pkg/ctrl/ctrl_pack.F,v 1.35 2010/09/25 18:24:16 gforget Exp $
2 heimbach 1.16 C $Name: $
3 heimbach 1.1
4 heimbach 1.12 #include "PACKAGES_CONFIG.h"
5 heimbach 1.1 #include "CTRL_CPPOPTIONS.h"
6    
7 heimbach 1.11 subroutine ctrl_pack( first, mythid )
8 heimbach 1.8
9     c ==================================================================
10     c SUBROUTINE ctrl_pack
11     c ==================================================================
12     c
13     c o Compress the control vector such that only ocean points are
14     c written to file.
15     c
16     c started: Christian Eckert eckert@mit.edu 10-Mar=2000
17     c
18     c changed: Patrick Heimbach heimbach@mit.edu 06-Jun-2000
19     c - Transferred some filename declarations
20     c from here to namelist in ctrl_init
21     c
22     c Patrick Heimbach heimbach@mit.edu 16-Jun-2000
23     c - single file name convention with or without
24     c ALLOW_ECCO_OPTIMIZATION
25     c
26     c G. Gebbie, added open boundary control packing,
27     c gebbie@mit.edu 18 -Mar- 2003
28     c
29 heimbach 1.12 c heimbach@mit.edu totally restructured 28-Oct-2003
30 heimbach 1.11 c
31 heimbach 1.8 c ==================================================================
32     c SUBROUTINE ctrl_pack
33     c ==================================================================
34    
35 heimbach 1.1 implicit none
36    
37     c == global variables ==
38 heimbach 1.5
39 heimbach 1.1 #include "EEPARAMS.h"
40     #include "SIZE.h"
41     #include "PARAMS.h"
42     #include "GRID.h"
43 heimbach 1.5
44 heimbach 1.1 #include "ctrl.h"
45 heimbach 1.14 #include "optim.h"
46 heimbach 1.5
47 heimbach 1.16 #ifdef ALLOW_COST
48     # include "cost.h"
49     #endif
50 heimbach 1.12 #ifdef ALLOW_ECCO
51     # include "ecco_cost.h"
52     #else
53     # include "ctrl_weights.h"
54     #endif
55    
56 heimbach 1.1 c == routine arguments ==
57 heimbach 1.5
58 heimbach 1.11 logical first
59 heimbach 1.1 integer mythid
60    
61 heimbach 1.11 #ifndef EXCLUDE_CTRL_PACK
62 heimbach 1.1 c == local variables ==
63    
64 heimbach 1.11 _RL fcloc
65    
66 heimbach 1.5 integer i, j, k
67 heimbach 1.1 integer ii
68     integer il
69     integer irec
70 heimbach 1.5 integer ig,jg
71     integer ivartype
72     integer iobcs
73 heimbach 1.1
74     logical doglobalread
75     logical ladinit
76 heimbach 1.5 integer cbuffindex
77 heimbach 1.11 logical lxxadxx
78    
79 heimbach 1.5 integer cunit
80 heimbach 1.11 integer ictrlgrad
81 heimbach 1.1
82     character*(128) cfile
83 heimbach 1.5 character*( 80) weighttype
84    
85 heimbach 1.1 c == external ==
86 heimbach 1.5
87 heimbach 1.1 integer ilnblnk
88     external ilnblnk
89    
90     c == end of interface ==
91    
92 heimbach 1.5 #ifndef ALLOW_ECCO_OPTIMIZATION
93 heimbach 1.11 fmin = 0. _d 0
94 heimbach 1.5 #endif
95 heimbach 1.1
96     c-- Tiled files are used.
97     doglobalread = .false.
98    
99     c-- Initialise adjoint variables on active files.
100     ladinit = .false.
101    
102 heimbach 1.14 c-- Initialise global buffer index
103     nbuffglobal = 0
104    
105 heimbach 1.5 c-- Assign file names.
106    
107 heimbach 1.11 call ctrl_set_fname(xx_theta_file, fname_theta, mythid)
108     call ctrl_set_fname(xx_salt_file, fname_salt, mythid)
109     call ctrl_set_fname(xx_hflux_file, fname_hflux, mythid)
110     call ctrl_set_fname(xx_sflux_file, fname_sflux, mythid)
111     call ctrl_set_fname(xx_tauu_file, fname_tauu, mythid)
112     call ctrl_set_fname(xx_tauv_file, fname_tauv, mythid)
113     call ctrl_set_fname(xx_atemp_file, fname_atemp, mythid)
114     call ctrl_set_fname(xx_aqh_file, fname_aqh, mythid)
115 heimbach 1.21 call ctrl_set_fname(xx_precip_file, fname_precip, mythid)
116 heimbach 1.22 call ctrl_set_fname(xx_swflux_file, fname_swflux, mythid)
117 heimbach 1.23 call ctrl_set_fname(xx_swdown_file, fname_swdown, mythid)
118 heimbach 1.29 call ctrl_set_fname(xx_lwflux_file, fname_lwflux, mythid)
119     call ctrl_set_fname(xx_lwdown_file, fname_lwdown, mythid)
120     call ctrl_set_fname(xx_evap_file, fname_evap, mythid)
121     call ctrl_set_fname(xx_snowprecip_file, fname_snowprecip, mythid)
122     call ctrl_set_fname(xx_apressure_file, fname_apressure, mythid)
123     call ctrl_set_fname(xx_runoff_file, fname_runoff, mythid)
124    
125 heimbach 1.11 call ctrl_set_fname(xx_uwind_file, fname_uwind, mythid)
126     call ctrl_set_fname(xx_vwind_file, fname_vwind, mythid)
127     call ctrl_set_fname(xx_obcsn_file, fname_obcsn, mythid)
128     call ctrl_set_fname(xx_obcss_file, fname_obcss, mythid)
129     call ctrl_set_fname(xx_obcsw_file, fname_obcsw, mythid)
130     call ctrl_set_fname(xx_obcse_file, fname_obcse, mythid)
131     call ctrl_set_fname(xx_diffkr_file, fname_diffkr, mythid)
132     call ctrl_set_fname(xx_kapgm_file, fname_kapgm, mythid)
133 gforget 1.32 call ctrl_set_fname(xx_kapredi_file, fname_kapredi, mythid)
134 heimbach 1.11 call ctrl_set_fname(xx_tr1_file, fname_tr1, mythid)
135     call ctrl_set_fname(xx_sst_file, fname_sst, mythid)
136     call ctrl_set_fname(xx_sss_file, fname_sss, mythid)
137 heimbach 1.28 call ctrl_set_fname(xx_depth_file, fname_depth, mythid)
138 heimbach 1.11 call ctrl_set_fname(xx_efluxy_file, fname_efluxy, mythid)
139     call ctrl_set_fname(xx_efluxp_file, fname_efluxp, mythid)
140     call ctrl_set_fname(xx_bottomdrag_file, fname_bottomdrag, mythid)
141 heimbach 1.18 call ctrl_set_fname(xx_edtaux_file, fname_edtaux, mythid)
142     call ctrl_set_fname(xx_edtauy_file, fname_edtauy, mythid)
143 heimbach 1.19 call ctrl_set_fname(xx_uvel_file, fname_uvel, mythid)
144     call ctrl_set_fname(xx_vvel_file, fname_vvel, mythid)
145     call ctrl_set_fname(xx_etan_file, fname_etan, mythid)
146     call ctrl_set_fname(xx_relaxsst_file, fname_relaxsst, mythid)
147     call ctrl_set_fname(xx_relaxsss_file, fname_relaxsss, mythid)
148 heimbach 1.30 call ctrl_set_fname(xx_siarea_file, fname_siarea, mythid)
149     call ctrl_set_fname(xx_siheff_file, fname_siheff, mythid)
150     call ctrl_set_fname(xx_sihsnow_file, fname_sihsnow, mythid)
151 dfer 1.31 cHFLUXM_CONTROL
152     call ctrl_set_fname(xx_hfluxm_file, fname_hfluxm, mythid)
153     cHFLUXM_CONTROL
154 heimbach 1.5
155 heimbach 1.19 c-- Only the master thread will do I/O.
156 heimbach 1.1 _BEGIN_MASTER( mythid )
157    
158 heimbach 1.13 if ( first ) then
159 heimbach 1.11 c >>> Initialise control vector for optimcycle=0 <<<
160     lxxadxx = .TRUE.
161     ictrlgrad = 1
162     fcloc = fmin
163     write(cfile(1:128),'(4a,i4.4)')
164 heimbach 1.13 & ctrlname(1:9),'_',yctrlid(1:10),
165     & yctrlpospack, optimcycle
166 heimbach 1.17 print *, 'ph-pack: packing ', ctrlname(1:9)
167 heimbach 1.11 else
168 heimbach 1.1 c >>> Write gradient vector <<<
169 heimbach 1.11 lxxadxx = .FALSE.
170     ictrlgrad = 2
171     fcloc = fc
172 heimbach 1.5 write(cfile(1:128),'(4a,i4.4)')
173 heimbach 1.13 & costname(1:9),'_',yctrlid(1:10),
174     & yctrlpospack, optimcycle
175 heimbach 1.17 print *, 'ph-pack: packing ', costname(1:9)
176 heimbach 1.11 endif
177 heimbach 1.1
178 gforget 1.35 c-- Only Proc 0 will do I/O.
179     IF ( myProcId .eq. 0 ) THEN
180    
181 heimbach 1.11 call mdsfindunit( cunit, mythid )
182     open( cunit, file = cfile,
183     & status = 'unknown',
184     & form = 'unformatted',
185     & access = 'sequential' )
186 heimbach 1.1
187     c-- Header information.
188 mlosch 1.15 write(cunit) nvartype
189     write(cunit) nvarlength
190     write(cunit) yctrlid
191     write(cunit) optimCycle
192     write(cunit) fc
193     C place holder of obsolete variable iG
194     write(cunit) 1
195     C place holder of obsolete variable jG
196     write(cunit) 1
197     write(cunit) nsx
198     write(cunit) nsy
199     write(cunit) (nWetcGlobal(k), k=1,nr)
200     write(cunit) (nWetsGlobal(k), k=1,nr)
201     write(cunit) (nWetwGlobal(k), k=1,nr)
202 heimbach 1.7 #ifdef ALLOW_CTRL_WETV
203 mlosch 1.15 write(cunit) (nWetvGlobal(k), k=1,nr)
204 heimbach 1.7 #endif
205 heimbach 1.11
206 heimbach 1.5 #ifdef ALLOW_OBCSN_CONTROL
207     write(cunit) ((nWetobcsnGlo(k,iobcs), k=1,nr),iobcs= 1,nobcs)
208     #endif
209     #ifdef ALLOW_OBCSS_CONTROL
210     write(cunit) ((nWetobcssGlo(k,iobcs), k=1,nr),iobcs= 1,nobcs)
211     #endif
212     #ifdef ALLOW_OBCSW_CONTROL
213     write(cunit) ((nWetobcswGlo(k,iobcs), k=1,nr),iobcs= 1,nobcs)
214     #endif
215     #ifdef ALLOW_OBCSE_CONTROL
216     write(cunit) ((nWetobcseGlo(k,iobcs), k=1,nr),iobcs= 1,nobcs)
217     #endif
218 mlosch 1.15 write(cunit) (ncvarindex(i), i=1,maxcvars)
219     write(cunit) (ncvarrecs(i), i=1,maxcvars)
220     write(cunit) (ncvarxmax(i), i=1,maxcvars)
221     write(cunit) (ncvarymax(i), i=1,maxcvars)
222     write(cunit) (ncvarnrmax(i), i=1,maxcvars)
223     write(cunit) (ncvargrd(i), i=1,maxcvars)
224 heimbach 1.1 write(cunit)
225    
226 gforget 1.36 #ifdef ALLOW_PACKUNPACK_METHOD2
227 gforget 1.35 ENDIF
228     _END_MASTER( mythid )
229     _BARRIER
230     #endif
231    
232 heimbach 1.1 #ifdef ALLOW_THETA0_CONTROL
233 heimbach 1.5 ivartype = 1
234 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
235 heimbach 1.26 write(weighttype(1:80),'(a)') "wthetaLev"
236 heimbach 1.5 call ctrl_set_pack_xyz(
237 heimbach 1.19 & cunit, ivartype, fname_theta(ictrlgrad), "maskCtrlC",
238 heimbach 1.8 & weighttype, wtheta, lxxadxx, mythid)
239 heimbach 1.1 #endif
240    
241     #ifdef ALLOW_SALT0_CONTROL
242 heimbach 1.5 ivartype = 2
243 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
244 heimbach 1.26 write(weighttype(1:80),'(a)') "wsaltLev"
245 heimbach 1.5 call ctrl_set_pack_xyz(
246 heimbach 1.19 & cunit, ivartype, fname_salt(ictrlgrad), "maskCtrlC",
247 heimbach 1.8 & weighttype, wsalt, lxxadxx, mythid)
248 heimbach 1.5 #endif
249    
250 heimbach 1.24 #if (defined (ALLOW_HFLUX_CONTROL) || defined (ALLOW_HFLUX0_CONTROL))
251 heimbach 1.5 ivartype = 3
252     write(weighttype(1:80),'(80a)') ' '
253     write(weighttype(1:80),'(a)') "whflux"
254     call ctrl_set_pack_xy(
255 heimbach 1.19 & cunit, ivartype, fname_hflux(ictrlgrad), "maskCtrlC",
256 heimbach 1.11 & weighttype, lxxadxx, mythid)
257 heimbach 1.5 #endif
258    
259 heimbach 1.24 #if (defined (ALLOW_SFLUX_CONTROL) || defined (ALLOW_SFLUX0_CONTROL))
260 heimbach 1.5 ivartype = 4
261     write(weighttype(1:80),'(80a)') ' '
262     write(weighttype(1:80),'(a)') "wsflux"
263     call ctrl_set_pack_xy(
264 heimbach 1.19 & cunit, ivartype, fname_sflux(ictrlgrad), "maskCtrlC",
265 heimbach 1.11 & weighttype, lxxadxx, mythid)
266 heimbach 1.5 #endif
267    
268 heimbach 1.24 #if (defined (ALLOW_USTRESS_CONTROL) || defined (ALLOW_TAUU0_CONTROL))
269 heimbach 1.5 ivartype = 5
270     write(weighttype(1:80),'(80a)') ' '
271     write(weighttype(1:80),'(a)') "wtauu"
272     call ctrl_set_pack_xy(
273 gforget 1.34 #ifndef ALLOW_ROTATE_UV_CONTROLS
274 heimbach 1.19 & cunit, ivartype, fname_tauu(ictrlgrad), "maskCtrlW",
275 gforget 1.34 #else
276     & cunit, ivartype, fname_tauu(ictrlgrad), "maskCtrlC",
277     #endif
278 heimbach 1.11 & weighttype, lxxadxx, mythid)
279 heimbach 1.5 #endif
280    
281 heimbach 1.24 #if (defined (ALLOW_VSTRESS_CONTROL) || defined (ALLOW_TAUV0_CONTROL))
282 heimbach 1.5 ivartype = 6
283     write(weighttype(1:80),'(80a)') ' '
284     write(weighttype(1:80),'(a)') "wtauv"
285     call ctrl_set_pack_xy(
286 gforget 1.34 #ifndef ALLOW_ROTATE_UV_CONTROLS
287 heimbach 1.19 & cunit, ivartype, fname_tauv(ictrlgrad), "maskCtrlS",
288 gforget 1.34 #else
289     & cunit, ivartype, fname_tauv(ictrlgrad), "maskCtrlC",
290     #endif
291 heimbach 1.11 & weighttype, lxxadxx, mythid)
292 heimbach 1.5 #endif
293    
294     #ifdef ALLOW_ATEMP_CONTROL
295     ivartype = 7
296     write(weighttype(1:80),'(80a)') ' '
297     write(weighttype(1:80),'(a)') "watemp"
298     call ctrl_set_pack_xy(
299 heimbach 1.19 & cunit, ivartype, fname_atemp(ictrlgrad), "maskCtrlC",
300 heimbach 1.11 & weighttype, lxxadxx, mythid)
301 heimbach 1.5 #endif
302    
303     #ifdef ALLOW_AQH_CONTROL
304     ivartype = 8
305     write(weighttype(1:80),'(80a)') ' '
306     write(weighttype(1:80),'(a)') "waqh"
307     call ctrl_set_pack_xy(
308 heimbach 1.19 & cunit, ivartype, fname_aqh(ictrlgrad), "maskCtrlC",
309 heimbach 1.11 & weighttype, lxxadxx, mythid)
310 heimbach 1.5 #endif
311    
312     #ifdef ALLOW_UWIND_CONTROL
313     ivartype = 9
314     write(weighttype(1:80),'(80a)') ' '
315     write(weighttype(1:80),'(a)') "wuwind"
316     call ctrl_set_pack_xy(
317 heimbach 1.20 & cunit, ivartype, fname_uwind(ictrlgrad), "maskCtrlC",
318 heimbach 1.11 & weighttype, lxxadxx, mythid)
319 heimbach 1.5 #endif
320    
321     #ifdef ALLOW_VWIND_CONTROL
322     ivartype = 10
323     write(weighttype(1:80),'(80a)') ' '
324     write(weighttype(1:80),'(a)') "wvwind"
325     call ctrl_set_pack_xy(
326 heimbach 1.20 & cunit, ivartype, fname_vwind(ictrlgrad), "maskCtrlC",
327 heimbach 1.11 & weighttype, lxxadxx, mythid)
328 heimbach 1.5 #endif
329    
330     #ifdef ALLOW_OBCSN_CONTROL
331     ivartype = 11
332 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
333     write(weighttype(1:80),'(a)') "wobcsn"
334 heimbach 1.5 call ctrl_set_pack_xz(
335 heimbach 1.11 & cunit, ivartype, fname_obcsn(ictrlgrad), "maskobcsn",
336 heimbach 1.8 & weighttype, wobcsn, lxxadxx, mythid)
337 heimbach 1.5 #endif
338    
339     #ifdef ALLOW_OBCSS_CONTROL
340     ivartype = 12
341 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
342     write(weighttype(1:80),'(a)') "wobcss"
343 heimbach 1.5 call ctrl_set_pack_xz(
344 heimbach 1.11 & cunit, ivartype, fname_obcss(ictrlgrad), "maskobcss",
345 heimbach 1.8 & weighttype, wobcss, lxxadxx, mythid)
346 heimbach 1.5 #endif
347    
348     #ifdef ALLOW_OBCSW_CONTROL
349     ivartype = 13
350 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
351     write(weighttype(1:80),'(a)') "wobcsw"
352 heimbach 1.5 call ctrl_set_pack_yz(
353 heimbach 1.11 & cunit, ivartype, fname_obcsw(ictrlgrad), "maskobcsw",
354 heimbach 1.8 & weighttype, wobcsw, lxxadxx, mythid)
355 heimbach 1.5 #endif
356    
357     #ifdef ALLOW_OBCSE_CONTROL
358     ivartype = 14
359 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
360     write(weighttype(1:80),'(a)') "wobcse"
361 heimbach 1.5 call ctrl_set_pack_yz(
362 heimbach 1.11 & cunit, ivartype, fname_obcse(ictrlgrad), "maskobcse",
363 heimbach 1.8 & weighttype, wobcse, lxxadxx, mythid)
364 heimbach 1.1 #endif
365 heimbach 1.3
366     #ifdef ALLOW_DIFFKR_CONTROL
367 heimbach 1.5 ivartype = 15
368 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
369     write(weighttype(1:80),'(a)') "wdiffkr"
370 heimbach 1.5 call ctrl_set_pack_xyz(
371 heimbach 1.19 & cunit, ivartype, fname_diffkr(ictrlgrad), "maskCtrlC",
372 heimbach 1.27 & weighttype, wdiffkr, lxxadxx, mythid)
373 heimbach 1.3 #endif
374    
375     #ifdef ALLOW_KAPGM_CONTROL
376 heimbach 1.5 ivartype = 16
377 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
378     write(weighttype(1:80),'(a)') "wkapgm"
379 heimbach 1.5 call ctrl_set_pack_xyz(
380 heimbach 1.19 & cunit, ivartype, fname_kapgm(ictrlgrad), "maskCtrlC",
381 heimbach 1.27 & weighttype, wkapgm, lxxadxx, mythid)
382 heimbach 1.3 #endif
383    
384 heimbach 1.22 #ifdef ALLOW_TR10_CONTROL
385 heimbach 1.5 ivartype = 17
386 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
387 heimbach 1.22 write(weighttype(1:80),'(a)') "wtr1"
388     call ctrl_set_pack_xyz(
389     & cunit, ivartype, fname_tr1(ictrlgrad), "maskCtrlC",
390     & weighttype, wunit, lxxadxx, mythid)
391 heimbach 1.5 #endif
392    
393 heimbach 1.24 #if (defined (ALLOW_SST_CONTROL) || defined (ALLOW_SST0_CONTROL))
394 heimbach 1.6 ivartype = 18
395     write(weighttype(1:80),'(80a)') ' '
396 heimbach 1.25 write(weighttype(1:80),'(a)') "wsst"
397 heimbach 1.6 call ctrl_set_pack_xy(
398 heimbach 1.19 & cunit, ivartype, fname_sst(ictrlgrad), "maskCtrlC",
399 heimbach 1.11 & weighttype, lxxadxx, mythid)
400 heimbach 1.6 #endif
401    
402 heimbach 1.24 #if (defined (ALLOW_SSS_CONTROL) || defined (ALLOW_SSS0_CONTROL))
403 heimbach 1.6 ivartype = 19
404     write(weighttype(1:80),'(80a)') ' '
405 heimbach 1.25 write(weighttype(1:80),'(a)') "wsss"
406 heimbach 1.6 call ctrl_set_pack_xy(
407 heimbach 1.29 & cunit, ivartype, fname_sss(ictrlgrad),
408     & "maskCtrlC", weighttype, lxxadxx, mythid)
409 heimbach 1.6 #endif
410    
411 heimbach 1.28 #ifdef ALLOW_DEPTH_CONTROL
412 heimbach 1.6 ivartype = 20
413 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
414 heimbach 1.28 write(weighttype(1:80),'(a)') "wdepth"
415 heimbach 1.6 call ctrl_set_pack_xy(
416 heimbach 1.29 & cunit, ivartype, fname_depth(ictrlgrad),
417     & "maskCtrlC", weighttype, lxxadxx, mythid)
418 heimbach 1.28 #endif /* ALLOW_DEPTH_CONTROL */
419 heimbach 1.6
420 heimbach 1.5 #ifdef ALLOW_EFLUXY0_CONTROL
421     ivartype = 21
422 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
423     write(weighttype(1:80),'(a)') "wefluxy0"
424 heimbach 1.5 call ctrl_set_pack_xyz(
425 heimbach 1.19 & cunit, ivartype, fname_efluxy(ictrlgrad), "maskCtrlS",
426 heimbach 1.8 & weighttype, wunit, lxxadxx, mythid)
427 heimbach 1.5 #endif
428    
429     #ifdef ALLOW_EFLUXP0_CONTROL
430     ivartype = 22
431 heimbach 1.8 write(weighttype(1:80),'(80a)') ' '
432     write(weighttype(1:80),'(a)') "wefluxp0"
433 heimbach 1.5 call ctrl_set_pack_xyz(
434 heimbach 1.19 & cunit, ivartype, fname_efluxp(ictrlgrad), "maskhFacV",
435 heimbach 1.8 & weighttype, wunit, lxxadxx, mythid)
436 heimbach 1.6 #endif
437    
438     #ifdef ALLOW_BOTTOMDRAG_CONTROL
439     ivartype = 23
440     write(weighttype(1:80),'(80a)') ' '
441     write(weighttype(1:80),'(a)') "wbottomdrag"
442     call ctrl_set_pack_xy(
443 heimbach 1.19 & cunit, ivartype, fname_bottomdrag(ictrlgrad), "maskCtrlC",
444     & weighttype, lxxadxx, mythid)
445 heimbach 1.5 #endif
446    
447 dfer 1.31 #ifdef ALLOW_HFLUXM_CONTROL
448     ivartype = 24
449     write(weighttype(1:80),'(80a)') ' '
450     write(weighttype(1:80),'(a)') "whfluxm"
451     call ctrl_set_pack_xy(
452     & cunit, ivartype, fname_hfluxm(ictrlgrad), "maskCtrlC",
453     & weighttype, lxxadxx, mythid)
454     #endif
455    
456 gforget 1.33 #ifdef ALLOW_EDDYPSI_CONTROL
457 heimbach 1.18 ivartype = 25
458     write(weighttype(1:80),'(80a)') ' '
459     write(weighttype(1:80),'(a)') "wedtaux"
460     call ctrl_set_pack_xyz(
461 heimbach 1.19 & cunit, ivartype, fname_edtaux(ictrlgrad), "maskCtrlW",
462 heimbach 1.27 & weighttype, wedtaux, lxxadxx, mythid)
463 heimbach 1.18
464     ivartype = 26
465     write(weighttype(1:80),'(80a)') ' '
466     write(weighttype(1:80),'(a)') "wedtauy"
467     call ctrl_set_pack_xyz(
468 heimbach 1.19 & cunit, ivartype, fname_edtauy(ictrlgrad), "maskCtrlS",
469 heimbach 1.27 & weighttype, wedtauy, lxxadxx, mythid)
470 heimbach 1.19 #endif
471    
472     #ifdef ALLOW_UVEL0_CONTROL
473     ivartype = 27
474     write(weighttype(1:80),'(80a)') ' '
475     write(weighttype(1:80),'(a)') "wuvel"
476     call ctrl_set_pack_xyz(
477     & cunit, ivartype, fname_uvel(ictrlgrad), "maskCtrlW",
478 heimbach 1.18 & weighttype, wunit, lxxadxx, mythid)
479     #endif
480    
481 heimbach 1.19 #ifdef ALLOW_VVEL0_CONTROL
482     ivartype = 28
483     write(weighttype(1:80),'(80a)') ' '
484     write(weighttype(1:80),'(a)') "wvvel"
485     call ctrl_set_pack_xyz(
486     & cunit, ivartype, fname_vvel(ictrlgrad), "maskCtrlS",
487     & weighttype, wunit, lxxadxx, mythid)
488     #endif
489    
490     #ifdef ALLOW_ETAN0_CONTROL
491     ivartype = 29
492     write(weighttype(1:80),'(80a)') ' '
493     write(weighttype(1:80),'(a)') "wetan"
494     call ctrl_set_pack_xy(
495 heimbach 1.29 & cunit, ivartype, fname_etan(ictrlgrad),
496     & "maskCtrlC", weighttype, lxxadxx, mythid)
497 heimbach 1.19 #endif
498    
499     #ifdef ALLOW_RELAXSST_CONTROL
500     ivartype = 30
501     write(weighttype(1:80),'(80a)') ' '
502     write(weighttype(1:80),'(a)') "wrelaxsst"
503     call ctrl_set_pack_xy(
504 heimbach 1.29 & cunit, ivartype, fname_relaxsst(ictrlgrad),
505     & "maskCtrlC", weighttype, lxxadxx, mythid)
506 heimbach 1.19 #endif
507    
508     #ifdef ALLOW_RELAXSSS_CONTROL
509     ivartype = 31
510     write(weighttype(1:80),'(80a)') ' '
511     write(weighttype(1:80),'(a)') "wrelaxsss"
512     call ctrl_set_pack_xy(
513 heimbach 1.29 & cunit, ivartype, fname_relaxsss(ictrlgrad),
514     & "maskCtrlC", weighttype, lxxadxx, mythid)
515 heimbach 1.19 #endif
516 heimbach 1.18
517 heimbach 1.22 #ifdef ALLOW_PRECIP_CONTROL
518 heimbach 1.21 ivartype = 32
519     write(weighttype(1:80),'(80a)') ' '
520 heimbach 1.22 write(weighttype(1:80),'(a)') "wprecip"
521     call ctrl_set_pack_xy(
522 heimbach 1.29 & cunit, ivartype, fname_precip(ictrlgrad),
523     & "maskCtrlC", weighttype, lxxadxx, mythid)
524 heimbach 1.22 #endif
525    
526     #ifdef ALLOW_SWFLUX_CONTROL
527     ivartype = 33
528     write(weighttype(1:80),'(80a)') ' '
529     write(weighttype(1:80),'(a)') "wswflux"
530     call ctrl_set_pack_xy(
531 heimbach 1.29 & cunit, ivartype, fname_swflux(ictrlgrad),
532     & "maskCtrlC", weighttype, lxxadxx, mythid)
533 heimbach 1.21 #endif
534    
535 heimbach 1.23 #ifdef ALLOW_SWDOWN_CONTROL
536     ivartype = 34
537     write(weighttype(1:80),'(80a)') ' '
538     write(weighttype(1:80),'(a)') "wswdown"
539     call ctrl_set_pack_xy(
540 heimbach 1.29 & cunit, ivartype, fname_swdown(ictrlgrad),
541     & "maskCtrlC", weighttype, lxxadxx, mythid)
542     #endif
543    
544     #ifdef ALLOW_LWFLUX_CONTROL
545     ivartype = 35
546     write(weighttype(1:80),'(80a)') ' '
547     write(weighttype(1:80),'(a)') "wlwflux"
548     call ctrl_set_pack_xy(
549     & cunit, ivartype, fname_lwflux(ictrlgrad),
550     & "maskCtrlC", weighttype, lxxadxx, mythid)
551     #endif
552    
553     #ifdef ALLOW_LWDOWN_CONTROL
554     ivartype = 36
555     write(weighttype(1:80),'(80a)') ' '
556     write(weighttype(1:80),'(a)') "wlwdown"
557     call ctrl_set_pack_xy(
558     & cunit, ivartype, fname_lwdown(ictrlgrad),
559     & "maskCtrlC", weighttype, lxxadxx, mythid)
560     #endif
561    
562     #ifdef ALLOW_EVAP_CONTROL
563     ivartype = 37
564     write(weighttype(1:80),'(80a)') ' '
565     write(weighttype(1:80),'(a)') "wevap"
566     call ctrl_set_pack_xy(
567     & cunit, ivartype, fname_evap(ictrlgrad),
568     & "maskCtrlC", weighttype, lxxadxx, mythid)
569     #endif
570    
571     #ifdef ALLOW_SNOWPRECIP_CONTROL
572     ivartype = 38
573     write(weighttype(1:80),'(80a)') ' '
574     write(weighttype(1:80),'(a)') "wsnowprecip"
575     call ctrl_set_pack_xy(
576     & cunit, ivartype, fname_snowprecip(ictrlgrad),
577     & "maskCtrlC", weighttype, lxxadxx, mythid)
578     #endif
579    
580     #ifdef ALLOW_APRESSURE_CONTROL
581     ivartype = 39
582     write(weighttype(1:80),'(80a)') ' '
583     write(weighttype(1:80),'(a)') "wapressure"
584     call ctrl_set_pack_xy(
585     & cunit, ivartype, fname_apressure(ictrlgrad),
586     & "maskCtrlC", weighttype, lxxadxx, mythid)
587     #endif
588    
589     #ifdef ALLOW_RUNOFF_CONTROL
590     ivartype = 40
591     write(weighttype(1:80),'(80a)') ' '
592     write(weighttype(1:80),'(a)') "wrunoff"
593     call ctrl_set_pack_xy(
594     & cunit, ivartype, fname_runoff(ictrlgrad),
595     & "maskCtrlC", weighttype, lxxadxx, mythid)
596 heimbach 1.23 #endif
597    
598 heimbach 1.30 #ifdef ALLOW_SIAREA_CONTROL
599     ivartype = 41
600     write(weighttype(1:80),'(80a)') ' '
601     write(weighttype(1:80),'(a)') "wunit"
602     call ctrl_set_pack_xy(
603     & cunit, ivartype, fname_siarea(ictrlgrad),
604     & "maskCtrlC", weighttype, lxxadxx, mythid)
605     #endif
606    
607     #ifdef ALLOW_SIHEFF_CONTROL
608     ivartype = 42
609     write(weighttype(1:80),'(80a)') ' '
610     write(weighttype(1:80),'(a)') "wunit"
611     call ctrl_set_pack_xy(
612     & cunit, ivartype, fname_siheff(ictrlgrad),
613     & "maskCtrlC", weighttype, lxxadxx, mythid)
614     #endif
615    
616     #ifdef ALLOW_SIHSNOW_CONTROL
617     ivartype = 43
618     write(weighttype(1:80),'(80a)') ' '
619     write(weighttype(1:80),'(a)') "wunit"
620     call ctrl_set_pack_xy(
621     & cunit, ivartype, fname_sihsnow(ictrlgrad),
622     & "maskCtrlC", weighttype, lxxadxx, mythid)
623     #endif
624    
625 gforget 1.32 #ifdef ALLOW_KAPREDI_CONTROL
626     ivartype = 44
627     write(weighttype(1:80),'(80a)') ' '
628     write(weighttype(1:80),'(a)') "wkapredi"
629     call ctrl_set_pack_xyz(
630     & cunit, ivartype, fname_kapredi(ictrlgrad), "maskCtrlC",
631     & weighttype, wkapredi, lxxadxx, mythid)
632     #endif
633    
634 gforget 1.36 #ifdef ALLOW_PACKUNPACK_METHOD2
635 gforget 1.35 _BEGIN_MASTER( mythid )
636     IF ( myProcId .eq. 0 ) THEN
637     #endif
638 heimbach 1.11
639 gforget 1.35 close ( cunit )
640     ENDIF !IF ( myProcId .eq. 0 )
641     _END_MASTER( mythid )
642     _BARRIER
643 heimbach 1.11 #endif /* EXCLUDE_CTRL_PACK */
644 heimbach 1.1
645     return
646     end
647    

  ViewVC Help
Powered by ViewVC 1.1.22