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

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

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


Revision 1.1 - (show annotations) (download)
Tue Jan 22 23:39:30 2013 UTC (11 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64e, checkpoint64d
from Ryan A.: code to allow to restart a tracer at regular time interval
  specifying a reset frequency and a reset-phase (for each tracers).

1 C $Header: $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5 #include "GAD_OPTIONS.h"
6
7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 CBOP
9 C !ROUTINE: PTRACERS_RESET
10
11 C !INTERFACE:
12 SUBROUTINE PTRACERS_RESET( myTime, myIter, myThid )
13
14 C !DESCRIPTION:
15 C Re-initialize PTRACERS if it is the correct time to do so
16
17 C !USES:
18 #include "PTRACERS_MOD.h"
19 IMPLICIT NONE
20 #include "SIZE.h"
21 #include "EEPARAMS.h"
22 #include "PARAMS.h"
23 #include "GRID.h"
24 #include "PTRACERS_SIZE.h"
25 #include "PTRACERS_PARAMS.h"
26 #include "PTRACERS_FIELDS.h"
27 #include "GAD.h"
28
29 C !INPUT PARAMETERS:
30 C myThid :: thread number
31 INTEGER myIter
32 _RL myTime
33 INTEGER myThid
34
35 #ifdef ALLOW_PTRACERS
36
37 LOGICAL DIFFERENT_MULTIPLE
38 EXTERNAL DIFFERENT_MULTIPLE
39
40 C !LOCAL VARIABLES:
41 C i,j,k,bi,bj,iTracer :: loop indices
42 C msgBuf :: Informational/error message buffer
43 INTEGER i,j,k,bi,bj,iTracer
44 CHARACTER*(MAX_LEN_MBUF) msgBuf
45
46 #ifdef PTRACERS_ALLOW_DYN_STATE
47 INTEGER n
48 #endif
49 CEOP
50
51 C Loop over tracers
52 DO iTracer = 1, PTRACERS_num
53
54 C Check if it is time to reset this tracer
55 IF ( PTRACERS_resetFreq(iTracer).GT.0. .AND. myIter.GT.0 .AND.
56 & DIFFERENT_MULTIPLE( PTRACERS_resetFreq(iTracer),
57 & myTime + PTRACERS_resetPhase(iTracer), deltaTClock ) ) THEN
58
59 C message
60 _BEGIN_MASTER( myThid )
61 WRITE(msgBuf,'(A,I2,I10)')
62 & '// PTRACER Resetting, (iTracer,t-step) = ',
63 & iTracer, myIter
64 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
65 & SQUEEZE_RIGHT, myThid )
66 _END_MASTER( myThid )
67
68 C Initialise again this tracer arrays
69 DO bj = myByLo(myThid), myByHi(myThid)
70 DO bi = myBxLo(myThid), myBxHi(myThid)
71 DO k=1,Nr
72 DO j=1-OLy,sNy+OLy
73 DO i=1-OLx,sNx+OLx
74 pTracer(i,j,k,bi,bj,iTracer) = PTRACERS_ref(k,iTracer)
75 gPtr(i,j,k,bi,bj,iTracer) = 0. _d 0
76 gpTrNm1(i,j,k,bi,bj,iTracer) = 0. _d 0
77 ENDDO
78 ENDDO
79 ENDDO
80 ENDDO
81 ENDDO
82
83 C Read initial conditions and exchange
84 IF ( PTRACERS_initialFile(iTracer) .NE. ' ' ) THEN
85 CALL READ_FLD_XYZ_RL(PTRACERS_initialFile(iTracer),' ',
86 & pTracer(1-OLx,1-OLy,1,1,1,iTracer),0,myThid)
87 _EXCH_XYZ_RL(pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
88 ENDIF
89
90 C Apply mask and reset tendencies
91 DO bj = myByLo(myThid), myByHi(myThid)
92 DO bi = myBxLo(myThid), myBxHi(myThid)
93 DO k=1,Nr
94 DO j=1-OLy,sNy+OLy
95 DO i=1-OLx,sNx+OLx
96 IF (maskC(i,j,k,bi,bj).EQ.0.)
97 & pTracer(i,j,k,bi,bj,iTracer)=0. _d 0
98 ENDDO
99 ENDDO
100 ENDDO
101 ENDDO
102 ENDDO
103
104 #ifdef PTRACERS_ALLOW_DYN_STATE
105 C Initialize SOM array :
106 IF ( PTRACERS_SOM_Advection(iTracer) ) THEN
107 _BEGIN_MASTER( myThid )
108 WRITE(msgBuf,'(A,I3,A)')'PTRACERS_RESET: iTracer = ',
109 & iTracer, ' : resetting 2nd-order moments '
110 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
111 & SQUEEZE_RIGHT, myThid )
112 _END_MASTER( myThid )
113 DO bj = myByLo(myThid), myByHi(myThid)
114 DO bi = myBxLo(myThid), myBxHi(myThid)
115 DO n = 1,nSOM
116 DO k=1,Nr
117 DO j=1-OLy,sNy+OLy
118 DO i=1-OLx,sNx+OLx
119 _Ptracers_som(i,j,k,bi,bj,n,iTracer) = 0. _d 0
120 ENDDO
121 ENDDO
122 ENDDO
123 ENDDO
124 ENDDO
125 ENDDO
126 c CALL GAD_EXCH_SOM( _Ptracers_som(:,:,:,:,:,:,iTracer),
127 c & Nr, myThid )
128 ENDIF
129 #endif /* PTRACERS_ALLOW_DYN_STATE */
130
131 _BEGIN_MASTER( myThid )
132 WRITE(msgBuf,'(A)') ' '
133 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
134 & SQUEEZE_RIGHT, myThid )
135 _END_MASTER( myThid )
136
137 C end of reset if block
138 ENDIF
139 C end of Tracer loop
140 ENDDO
141
142 #endif /* ALLOW_PTRACERS */
143
144 RETURN
145 END

  ViewVC Help
Powered by ViewVC 1.1.22