/[MITgcm]/MITgcm/pkg/dic/dic_write_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/dic/dic_write_pickup.F

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


Revision 1.13 - (show annotations) (download)
Sat Jan 2 15:01:33 2016 UTC (8 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.12: +5 -6 lines
reverse previous modif (back to CVS version 1.11) since fixing bugs in
 dic_atmos.F makes total_atmos_carbon & atpco2 active again.

1 C $Header: /u/gcmpack/MITgcm/pkg/dic/dic_write_pickup.F,v 1.11 2014/04/04 19:33:48 jmc Exp $
2 C $Name: $
3
4 #include "DIC_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: DIC_WRITE_PICKUP
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE DIC_WRITE_PICKUP( permPickup,
11 I suff, myTime, myIter, myThid )
12
13 C !DESCRIPTION:
14 C Writes DIC arrays (needed for a restart) to a pickup file
15
16 C !USES: ===============================================================
17 IMPLICIT NONE
18 C === Global variables ===
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "DIC_VARS.h"
23 #include "DIC_ATMOS.h"
24
25 C !INPUT PARAMETERS: ===================================================
26 C permPickup :: write a permanent pickup
27 C suff :: suffix for pickup file (eg. ckptA or 0000000010)
28 C myTime :: Current time in simulation
29 C myIter :: Current iteration number in simulation
30 C myThid :: My Thread Id number
31 LOGICAL permPickup
32 CHARACTER*(*) suff
33 _RL myTime
34 INTEGER myIter
35 INTEGER myThid
36 CEOP
37
38 #ifdef ALLOW_DIC
39
40 C !LOCAL VARIABLES:
41 C == Local variables ==
42 CHARACTER*(MAX_LEN_FNAM) fn
43 INTEGER prec
44 #ifndef USE_ATMOSCO2
45 INTEGER ioUnit
46 _RL tmpFld(2)
47 _RS dummyRS(1)
48 #endif
49 #ifdef DIC_BIOTIC
50 LOGICAL glf
51 _RL timList(1)
52 INTEGER j, nj
53 INTEGER listDim, nWrFlds
54 PARAMETER( listDim = 2 )
55 CHARACTER*(8) wrFldList(listDim)
56 CHARACTER*(MAX_LEN_MBUF) msgBuf
57 #endif
58
59 c IF ( DIC_pickup_write_mdsio ) THEN
60 prec = precFloat64
61
62 #ifndef USE_ATMOSCO2
63 IF ( dic_int1.EQ.3 ) THEN
64 WRITE(fn,'(A,A)') 'pickup_dic_co2atm.',suff
65 ioUnit = 0
66 #ifdef ALLOW_OPENAD
67 tmpFld(1) = total_atmos_carbon%v
68 tmpFld(2) = atpco2%v
69 #else /* ALLOW_OPENAD */
70 tmpFld(1) = total_atmos_carbon
71 tmpFld(2) = atpco2
72 #endif /* ALLOW_OPENAD */
73 #ifdef ALLOW_MDSIO
74 CALL MDS_WRITEVEC_LOC(
75 I fn, prec, ioUnit,
76 I 'RL', 2, tmpFld, dummyRS,
77 I 0, 0, 1, myIter, myThid )
78 #endif
79 ENDIF
80 #endif /* ndef USE_ATMOSCO2 */
81
82 #ifdef DIC_BIOTIC
83 WRITE(fn,'(A,A)') 'pickup_dic.',suff
84 j = 0
85
86 C Firstly, write 3-D fields as consecutive records,
87
88 C- switch to 2-D fields:
89 nj = -j*Nr
90
91 C record number < 0 : a hack not to write meta files now:
92 j = j + 1
93 nj = nj-1
94 CALL WRITE_REC_3D_RL( fn, prec, 1, pH, nj, myIter, myThid )
95 IF (j.LE.listDim) wrFldList(j) = 'DIC_pH2d'
96
97 C--------------------------
98 nWrFlds = j
99 IF ( nWrFlds.GT.listDim ) THEN
100 WRITE(msgBuf,'(2A,I5,A)') 'DIC_WRITE_PICKUP: ',
101 & 'trying to write ',nWrFlds,' fields'
102 CALL PRINT_ERROR( msgBuf, myThid )
103 WRITE(msgBuf,'(2A,I5,A)') 'DIC_WRITE_PICKUP: ',
104 & 'field-list dimension (listDim=',listDim,') too small'
105 CALL PRINT_ERROR( msgBuf, myThid )
106 STOP 'ABNORMAL END: S/R DIC_WRITE_PICKUP (list-size Pb)'
107 ENDIF
108
109 #ifdef ALLOW_MDSIO
110 C uses this specific S/R to write (with more informations) only meta
111 C files
112 j = 1
113 nj = ABS(nj)
114 IF ( nWrFlds*Nr .EQ. nj ) THEN
115 j = Nr
116 nj = nWrFlds
117 ENDIF
118 glf = globalFiles
119 timList(1) = myTime
120 CALL MDS_WR_METAFILES( fn, prec, glf, .FALSE.,
121 & 0, 0, j, ' ',
122 & nWrFlds, wrFldList,
123 & 1, timList, oneRL,
124 & nj, myIter, myThid )
125 #endif /* ALLOW_MDSIO */
126 C--------------------------
127
128 #endif /* DIC_BIOTIC */
129
130 c ENDIF /* DIC_pickup_write_mdsio */
131
132 #endif /* ALLOW_DIC */
133
134 RETURN
135 END

  ViewVC Help
Powered by ViewVC 1.1.22