/[MITgcm]/MITgcm/pkg/admtlm/admtlm_model2dsvd.F
ViewVC logotype

Contents of /MITgcm/pkg/admtlm/admtlm_model2dsvd.F

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


Revision 1.3 - (show annotations) (download)
Thu Apr 27 12:49:02 2006 UTC (18 years, 2 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58l_post, checkpoint58e_post, checkpoint58u_post, checkpoint58r_post, checkpoint58n_post, checkpoint58t_post, checkpoint58h_post, checkpoint58q_post, checkpoint58j_post, checkpoint58f_post, checkpoint58i_post, checkpoint58g_post, checkpoint58o_post, checkpoint58k_post, checkpoint58s_post, checkpoint58p_post, checkpoint58m_post
Changes since 1.2: +24 -11 lines
o crucial fix to properly initialise ARPACK using field RESID
  (Laure Zanna)
o added code to output NCONV eigenvectors to evxx_...
  (suppress vector I/O for now)

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

  ViewVC Help
Powered by ViewVC 1.1.22