/[MITgcm]/MITgcm/pkg/ptracers/ptracers_read_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/ptracers/ptracers_read_pickup.F

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


Revision 1.5 - (show annotations) (download)
Mon Nov 5 18:48:04 2007 UTC (16 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59k, checkpoint59j
Changes since 1.4: +9 -8 lines
split PTRACERS.h in 2 header files: PTRACERS_FIELDS.h & PTRACERS_PARAMS.h

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_read_pickup.F,v 1.4 2007/10/19 03:22:25 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: PTRACERS_READ_PICKUP
9
10 C !INTERFACE:
11 SUBROUTINE PTRACERS_READ_PICKUP( myIter, myThid )
12
13 C !DESCRIPTION:
14 C Reads current state of passive tracers from a pickup file
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "PTRACERS_SIZE.h"
22 #include "PTRACERS_PARAMS.h"
23 #include "PTRACERS_FIELDS.h"
24
25 C !INPUT PARAMETERS:
26 C myIter :: time-step number
27 C myThid :: thread number
28 INTEGER myIter
29 INTEGER myThid
30
31 #ifdef ALLOW_PTRACERS
32
33 C !LOCAL VARIABLES:
34 C iTracer :: loop indices
35 C iRec :: record number
36 C fn :: character buffer for creating filename
37 C prec :: precision of pickup files
38 INTEGER iTracer,prec,iRec
39 CHARACTER*(MAX_LEN_MBUF) fn
40 CEOP
41
42 _BARRIER
43
44 #ifdef ALLOW_MNC
45 IF ( PTRACERS_pickup_read_mnc ) THEN
46 C Read variables from the pickup file
47 WRITE(fn,'(a)') 'pickup_ptracers'
48 CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
49 CALL MNC_CW_SET_UDIM(fn, 1, myThid)
50 CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
51 DO iTracer = 1,PTRACERS_numInUse
52 CALL MNC_CW_RL_R('D',fn,0,0, PTRACERS_names(iTracer),
53 & gpTrNm1(1-OLx,1-OLy,1,1,1,iTracer),myThid)
54 _EXCH_XYZ_R8(gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
55 ENDDO
56 CALL MNC_CW_SET_UDIM(fn, 2, myThid)
57 DO iTracer = 1,PTRACERS_numInUse
58 CALL MNC_CW_RL_R('D',fn,0,0, PTRACERS_names(iTracer),
59 & pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
60 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
61 ENDDO
62 ENDIF
63 #endif /* ALLOW_MNC */
64
65 IF ( PTRACERS_pickup_read_mdsio ) THEN
66
67 IF ( pickupSuff.EQ.' ' ) THEN
68 WRITE(fn,'(A,I10.10)') 'pickup_ptracers.',myIter
69 ELSE
70 WRITE(fn,'(A,A10)') 'pickup_ptracers.',pickupSuff
71 ENDIF
72 prec = precFloat64
73
74 IF ( usePickupBeforeC54 ) THEN
75 C Read fields as consecutive records
76 DO iTracer=1,PTRACERS_num
77 iRec = iTracer
78 CALL READ_REC_3D_RL( fn, prec, Nr,
79 O pTracer(1-Olx,1-Oly,1,1,1,iTracer),
80 I iRec, myIter, myThid )
81 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
82 ENDDO
83
84 C Read historical tendencies as consecutive records
85 DO iTracer=1,PTRACERS_num
86 iRec = iTracer + PTRACERS_num
87 CALL READ_REC_3D_RL( fn, prec, Nr,
88 O gPtr(1-Olx,1-Oly,1,1,1,iTracer),
89 I iRec, myIter, myThid )
90 _EXCH_XYZ_R8(gPtr(1-Olx,1-Oly,1,1,1,iTracer),myThid)
91 ENDDO
92 DO iTracer=1,PTRACERS_num
93 iRec = iTracer + PTRACERS_num*2
94 CALL READ_REC_3D_RL( fn, prec, Nr,
95 O gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),
96 I iRec, myIter, myThid )
97 _EXCH_XYZ_R8(gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
98 ENDDO
99
100 ELSE
101 C Read fields & tendencies (needed for AB) as consecutive records,
102 C one tracer after the other, only for tracers "InUse". Note:
103 C this allow to restart from a pickup with a different number of
104 C tracers, with write_pickup dumping all of them (PTRACERS_num).
105 DO iTracer=1,PTRACERS_numInUse
106 iRec = 2*iTracer -1
107 CALL READ_REC_3D_RL( fn, prec, Nr,
108 O pTracer(1-Olx,1-Oly,1,1,1,iTracer),
109 I iRec, myIter, myThid )
110 iRec = 2*iTracer
111 CALL READ_REC_3D_RL( fn, prec, Nr,
112 O gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),
113 I iRec, myIter, myThid )
114 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
115 _EXCH_XYZ_R8(gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
116 ENDDO
117
118 ENDIF
119
120 ENDIF
121
122 #endif /* ALLOW_PTRACERS */
123
124 RETURN
125 END

  ViewVC Help
Powered by ViewVC 1.1.22