/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F
ViewVC logotype

Annotation of /MITgcm/pkg/diagnostics/diagnostics_write_pickup.F

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


Revision 1.2 - (hide annotations) (download)
Sun Feb 20 05:11:30 2005 UTC (19 years, 3 months ago) by edhill
Branch: MAIN
Changes since 1.1: +67 -6 lines
 o add ability to write diagnostics pickups with MNC

1 edhill 1.2 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F,v 1.1 2005/02/20 04:31:54 edhill Exp $
2 edhill 1.1 C $Name: $
3    
4     #include "DIAG_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7     CBOP
8     C !ROUTINE: DIAGNOSTICS_WRITE_PICKUP
9     C !INTERFACE:
10     SUBROUTINE DIAGNOSTICS_WRITE_PICKUP(
11     I suff,
12     I myTime,
13     I myIter,
14     I myThid )
15    
16     C !DESCRIPTION:
17     C Writes current state of the diagnostics package.
18    
19     C !USES:
20     IMPLICIT NONE
21    
22     C == Global variables ===
23     #include "SIZE.h"
24     #include "EEPARAMS.h"
25     #include "PARAMS.h"
26     #include "DIAGNOSTICS_SIZE.h"
27     #include "DIAGNOSTICS.h"
28    
29     C !INPUT/OUTPUT PARAMETERS:
30     C suff :: suffix for pickup file (eg. ckptA or 0000000010)
31     C myTime :: current time
32     C myIter :: time-step number
33     C myThid :: Number of this instance
34     CHARACTER*(*) suff
35     _RL myTime
36     INTEGER myIter
37     INTEGER myThid
38    
39     #ifdef ALLOW_DIAGNOSTICS
40    
41     C !LOCAL VARIABLES:
42     C fn :: character buffer for creating filename
43     C prec :: precision of pickup files
44     C lgf :: flag to write "global" files
45     c INTEGER prec, iChar, lChar, k
46     INTEGER prec, lChar, k, i
47     CHARACTER*(MAX_LEN_FNAM) fn
48     LOGICAL lgf
49    
50     INTEGER ILNBLNK
51     EXTERNAL ILNBLNK
52    
53 edhill 1.2 #ifdef ALLOW_MNC
54     INTEGER ii
55     CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn
56     CHARACTER*(5) ctmp
57     INTEGER CW_DIMS, NLEN
58     PARAMETER ( CW_DIMS = 10 )
59     PARAMETER ( NLEN = 80 )
60     INTEGER dim(CW_DIMS), ib(CW_DIMS), ie(CW_DIMS)
61     CHARACTER*(NLEN) dn(CW_DIMS)
62     CHARACTER*(NLEN) d_cw_name
63     CHARACTER*(NLEN) dn_blnk
64     #endif /* ALLOW_MNC */
65    
66 edhill 1.1 CEOP
67    
68     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
69    
70     IF (diag_pickup_write) THEN
71    
72 edhill 1.2 #ifdef ALLOW_MNC
73     IF (diag_pickup_write_mnc) THEN
74     DO i = 1,NLEN
75     dn_blnk(i:i) = ' '
76     ENDDO
77     DO i = 1,MAX_LEN_FNAM
78     diag_mnc_bn(i:i) = ' '
79     ENDDO
80     WRITE(diag_mnc_bn,'(A)') 'pickup_diagnostics'
81    
82     C Update the record dimension by writing the iteration number
83     CALL MNC_CW_SET_UDIM(diag_mnc_bn, -1, myThid)
84     CALL MNC_CW_I_W_S('I',diag_mnc_bn,0,0,'T',myIter,myThid)
85     CALL MNC_CW_SET_UDIM(diag_mnc_bn, 0, myThid)
86    
87     d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
88     DO ii = 1,CW_DIMS
89     dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
90     ENDDO
91     d_cw_name(1:10) = 'diag_state'
92     dn(1)(1:3) = 'Xp1'
93     dim(1) = sNx + 2*OLx
94     ib(1) = OLx + 1
95     ie(1) = OLx + sNx + 1
96     dn(2)(1:3) = 'Yp1'
97     dim(2) = sNy + 2*OLy
98     ib(2) = OLy + 1
99     ie(2) = OLy + sNy + 1
100     dn(3)(1:2) = 'Zd'
101     dim(3) = numdiags
102     ib(3) = 1
103     ie(3) = numdiags
104     dn(4)(1:1) = 'T'
105     dim(4) = -1
106     ib(4) = 1
107     ie(4) = 1
108    
109     CALL MNC_CW_ADD_GNAME(d_cw_name, 4,
110     & dim, dn, ib, ie, myThid)
111     CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
112     & 4,5, myThid)
113     CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
114     & 'diagnostics state',myThid)
115    
116     CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,
117     & d_cw_name, qdiag, myThid)
118    
119     CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
120     CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
121    
122     ENDIF
123     #endif
124    
125 edhill 1.1 DO i = 1,MAX_LEN_FNAM
126     fn(i:i) = ' '
127     ENDDO
128     lChar = ILNBLNK(suff)
129     WRITE(fn,'(A,A)') 'pickup_diagnostics.',suff(1:lChar)
130     prec = precFloat64
131     lgf = globalFiles
132    
133     IF (diag_pickup_write_mdsio) THEN
134     CALL MDSWRITEFIELD(fn,prec,lgf,'RL',numdiags,qdiag,
135     & 1,myIter,myThid)
136     ENDIF
137    
138     ENDIF
139    
140     #endif /* ALLOW_DIAGNOSTICS */
141    
142     RETURN
143     END

  ViewVC Help
Powered by ViewVC 1.1.22