/[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.1 - (show annotations) (download)
Wed Oct 25 20:41:21 2006 UTC (17 years, 8 months ago) by jmc
Branch: MAIN
rename read,write_checkpoint to read,write_pickup

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_read_checkpoint.F,v 1.12 2006/03/24 11:34:41 mlosch 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.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 C fn :: suffix for pickup file (eg. 0000000010)
38 INTEGER iTracer,prec,iRec
39 CHARACTER*(MAX_LEN_MBUF) fn
40 CEOP
41
42 #ifdef ALLOW_MNC
43 IF ( PTRACERS_pickup_read_mnc ) THEN
44 C Read variables from the pickup file
45 WRITE(fn,'(a)') 'pickup_ptracers'
46 CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
47 CALL MNC_CW_SET_UDIM(fn, 1, myThid)
48 CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
49 DO iTracer = 1,PTRACERS_numInUse
50 CALL MNC_CW_RL_R('D',fn,0,0, PTRACERS_names(iTracer),
51 & gPtrNm1(1-OLx,1-OLy,1,1,1,iTracer),myThid)
52 _EXCH_XYZ_R8(gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
53 ENDDO
54 CALL MNC_CW_SET_UDIM(fn, 2, myThid)
55 DO iTracer = 1,PTRACERS_numInUse
56 CALL MNC_CW_RL_R('D',fn,0,0, PTRACERS_names(iTracer),
57 & pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
58 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
59 ENDDO
60 ENDIF
61 #endif /* ALLOW_MNC */
62
63 IF ( PTRACERS_pickup_read_mdsio ) THEN
64
65 WRITE(fn,'(A,I10.10)') 'pickup_ptracers.',myIter
66 prec = precFloat64
67
68 IF ( usePickupBeforeC54 ) THEN
69 C Read fields as consecutive records
70 DO iTracer=1,PTRACERS_num
71 iRec = iTracer
72 CALL MDSREADFIELD(fn,prec,'RL',Nr,
73 & pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myThid)
74 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
75 ENDDO
76
77 C Read historical tendancies as consecutive records
78 DO iTracer=1,PTRACERS_num
79 iRec = iTracer + PTRACERS_num
80 CALL MDSREADFIELD(fn,prec,'RL',Nr,
81 & gPtr(1-Olx,1-Oly,1,1,1,iTracer),iRec,myThid)
82 _EXCH_XYZ_R8(gPtr(1-Olx,1-Oly,1,1,1,iTracer),myThid)
83 ENDDO
84 DO iTracer=1,PTRACERS_num
85 iRec = iTracer + PTRACERS_num*2
86 CALL MDSREADFIELD(fn,prec,'RL',Nr,
87 & gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer),iRec,myThid)
88 _EXCH_XYZ_R8(gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
89 ENDDO
90
91 ELSE
92 C Read fields & tendancies (needed for AB) as consecutive records,
93 C one tracer after the other, only for tracers "InUse". Note:
94 C this allow to restart from a pickup with a different number of
95 C tracers, with write_pickup dumping all of them (PTRACERS_num).
96 DO iTracer=1,PTRACERS_numInUse
97 iRec = 2*iTracer -1
98 CALL MDSREADFIELD(fn,prec,'RL',Nr,
99 & pTracer(1-Olx,1-Oly,1,1,1,iTracer),iRec,myThid)
100 iRec = 2*iTracer
101 CALL MDSREADFIELD(fn,prec,'RL',Nr,
102 & gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer),iRec,myThid)
103 _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid)
104 _EXCH_XYZ_R8(gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer),myThid)
105 ENDDO
106
107 ENDIF
108
109 ENDIF
110
111 #endif /* ALLOW_PTRACERS */
112
113 RETURN
114 END

  ViewVC Help
Powered by ViewVC 1.1.22