/[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.5 - (hide 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 jmc 1.5 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_read_pickup.F,v 1.4 2007/10/19 03:22:25 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 jmc 1.5 #include "PTRACERS_PARAMS.h"
23     #include "PTRACERS_FIELDS.h"
24 jmc 1.1
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 jmc 1.2 _BARRIER
43    
44 jmc 1.1 #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 jmc 1.5 & 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 jmc 1.1 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 jmc 1.2
65 jmc 1.1 IF ( PTRACERS_pickup_read_mdsio ) THEN
66    
67 jmc 1.4 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 jmc 1.1 prec = precFloat64
73 jmc 1.2
74 jmc 1.1 IF ( usePickupBeforeC54 ) THEN
75     C Read fields as consecutive records
76     DO iTracer=1,PTRACERS_num
77     iRec = iTracer
78 jmc 1.2 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 jmc 1.1 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
82     ENDDO
83    
84 jmc 1.3 C Read historical tendencies as consecutive records
85 jmc 1.1 DO iTracer=1,PTRACERS_num
86     iRec = iTracer + PTRACERS_num
87 jmc 1.2 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 jmc 1.1 _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 jmc 1.2 CALL READ_REC_3D_RL( fn, prec, Nr,
95 jmc 1.5 O gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),
96 jmc 1.2 I iRec, myIter, myThid )
97 jmc 1.5 _EXCH_XYZ_R8(gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
98 jmc 1.1 ENDDO
99    
100     ELSE
101 jmc 1.3 C Read fields & tendencies (needed for AB) as consecutive records,
102 jmc 1.1 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 jmc 1.2 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 jmc 1.1 iRec = 2*iTracer
111 jmc 1.2 CALL READ_REC_3D_RL( fn, prec, Nr,
112 jmc 1.5 O gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),
113 jmc 1.2 I iRec, myIter, myThid )
114 jmc 1.1 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
115 jmc 1.5 _EXCH_XYZ_R8(gpTrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
116 jmc 1.1 ENDDO
117 jmc 1.2
118 jmc 1.1 ENDIF
119    
120     ENDIF
121    
122     #endif /* ALLOW_PTRACERS */
123    
124     RETURN
125     END

  ViewVC Help
Powered by ViewVC 1.1.22