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

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

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


Revision 1.4 - (hide annotations) (download)
Fri Oct 19 03:22:25 2007 UTC (16 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59i
Changes since 1.3: +6 -2 lines
use pickupSuff (if defined) instead of nIter0

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

  ViewVC Help
Powered by ViewVC 1.1.22