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

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

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


Revision 1.3 - (hide annotations) (download)
Fri Aug 15 19:18:12 2014 UTC (9 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65c, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.2: +1 -2 lines
remove gPtr from common block

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_reset.F,v 1.2 2013/03/21 18:07:59 jahn Exp $
2 jmc 1.1 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 jahn 1.2 CHARACTER*(MAX_LEN_FNAM) tmpInitialFile
46 jmc 1.1
47     #ifdef PTRACERS_ALLOW_DYN_STATE
48     INTEGER n
49     #endif
50     CEOP
51    
52     C Loop over tracers
53     DO iTracer = 1, PTRACERS_num
54    
55     C Check if it is time to reset this tracer
56     IF ( PTRACERS_resetFreq(iTracer).GT.0. .AND. myIter.GT.0 .AND.
57     & DIFFERENT_MULTIPLE( PTRACERS_resetFreq(iTracer),
58     & myTime + PTRACERS_resetPhase(iTracer), deltaTClock ) ) THEN
59    
60     C message
61     _BEGIN_MASTER( myThid )
62     WRITE(msgBuf,'(A,I2,I10)')
63     & '// PTRACER Resetting, (iTracer,t-step) = ',
64     & iTracer, myIter
65     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
66     & SQUEEZE_RIGHT, myThid )
67     _END_MASTER( myThid )
68    
69     C Initialise again this tracer arrays
70     DO bj = myByLo(myThid), myByHi(myThid)
71     DO bi = myBxLo(myThid), myBxHi(myThid)
72     DO k=1,Nr
73     DO j=1-OLy,sNy+OLy
74     DO i=1-OLx,sNx+OLx
75     pTracer(i,j,k,bi,bj,iTracer) = PTRACERS_ref(k,iTracer)
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 jahn 1.2 tmpInitialFile = ' '
85     tmpInitialFile = PTRACERS_initialFile(iTracer)
86     IF ( tmpInitialFile .NE. ' ' ) THEN
87     CALL READ_FLD_XYZ_RL(tmpInitialFile,' ',
88 jmc 1.1 & pTracer(1-OLx,1-OLy,1,1,1,iTracer),0,myThid)
89     _EXCH_XYZ_RL(pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
90     ENDIF
91    
92     C Apply mask and reset tendencies
93     DO bj = myByLo(myThid), myByHi(myThid)
94     DO bi = myBxLo(myThid), myBxHi(myThid)
95     DO k=1,Nr
96     DO j=1-OLy,sNy+OLy
97     DO i=1-OLx,sNx+OLx
98     IF (maskC(i,j,k,bi,bj).EQ.0.)
99     & pTracer(i,j,k,bi,bj,iTracer)=0. _d 0
100     ENDDO
101     ENDDO
102     ENDDO
103     ENDDO
104     ENDDO
105    
106     #ifdef PTRACERS_ALLOW_DYN_STATE
107     C Initialize SOM array :
108     IF ( PTRACERS_SOM_Advection(iTracer) ) THEN
109     _BEGIN_MASTER( myThid )
110     WRITE(msgBuf,'(A,I3,A)')'PTRACERS_RESET: iTracer = ',
111     & iTracer, ' : resetting 2nd-order moments '
112     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
113     & SQUEEZE_RIGHT, myThid )
114     _END_MASTER( myThid )
115     DO bj = myByLo(myThid), myByHi(myThid)
116     DO bi = myBxLo(myThid), myBxHi(myThid)
117     DO n = 1,nSOM
118     DO k=1,Nr
119     DO j=1-OLy,sNy+OLy
120     DO i=1-OLx,sNx+OLx
121     _Ptracers_som(i,j,k,bi,bj,n,iTracer) = 0. _d 0
122     ENDDO
123     ENDDO
124     ENDDO
125     ENDDO
126     ENDDO
127     ENDDO
128     c CALL GAD_EXCH_SOM( _Ptracers_som(:,:,:,:,:,:,iTracer),
129     c & Nr, myThid )
130     ENDIF
131     #endif /* PTRACERS_ALLOW_DYN_STATE */
132    
133     _BEGIN_MASTER( myThid )
134     WRITE(msgBuf,'(A)') ' '
135     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
136     & SQUEEZE_RIGHT, myThid )
137     _END_MASTER( myThid )
138    
139     C end of reset if block
140     ENDIF
141     C end of Tracer loop
142     ENDDO
143    
144     #endif /* ALLOW_PTRACERS */
145    
146     RETURN
147     END

  ViewVC Help
Powered by ViewVC 1.1.22