/[MITgcm]/MITgcm/pkg/streamice/streamice_advect_2dtracer.F
ViewVC logotype

Contents of /MITgcm/pkg/streamice/streamice_advect_2dtracer.F

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


Revision 1.2 - (show annotations) (download)
Tue Jul 2 19:09:42 2013 UTC (10 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64o, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64n, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint64k, checkpoint65, checkpoint64j, checkpoint64m, checkpoint64l
Changes since 1.1: +23 -25 lines
fix type of local array BCMASKX & BCMASKY in corresponding S/R call

1 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_advect_2dtracer.F,v 1.1 2013/06/12 21:30:21 dgoldberg Exp $
2 C $Name: $
3
4 #include "STREAMICE_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7
8 CBOP
9 SUBROUTINE STREAMICE_ADVECT_2DTRACER (
10 & myThid,
11 & myIter,
12 & time_step,
13 & uTrans,
14 & vTrans,
15 & bcMaskx,
16 & bcMasky)
17
18 C *============================================================*
19 C | SUBROUTINE |
20 C | o |
21 C *============================================================*
22 C | |
23 C *============================================================*
24 IMPLICIT NONE
25
26 C === Global variables ===
27 #include "SIZE.h"
28 #include "GRID.h"
29 #include "EEPARAMS.h"
30 #include "PARAMS.h"
31 #include "STREAMICE.h"
32 #include "STREAMICE_ADV.h"
33 #ifdef ALLOW_AUTODIFF_TAMC
34 # include "tamc.h"
35 #endif
36
37 INTEGER myThid, myIter, Gi, Gj
38 _RL time_step
39 _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
40 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
41 _RS bcMaskx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
42 _RS bcMasky(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43 ! _RL trac(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44
45 #ifdef ALLOW_STREAMICE
46 #ifdef ALLOW_STREAMICE_2DTRACER
47
48 INTEGER i, j, bi, bj
49 _RL thick_bd
50 _RL sec_per_year, time_step_loc, MR, SMB, TMB
51 _RL BCVALX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
52 _RL BCVALY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
53 _RL xtracflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
54 _RL ytracflux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
55 #ifdef STREAMICE_TRACER_AB
56 _RL GAD_trac_2dNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
57 #endif
58 CHARACTER*(MAX_LEN_MBUF) msgBuf
59
60 sec_per_year = 365.*86400.
61
62 time_step_loc = time_step / sec_per_year
63
64 PRINT *, "time_step_loc ", time_step_loc
65
66
67 DO bj=myByLo(myThid),myByHi(myThid)
68 DO bi=myBxLo(myThid),myBxHi(myThid)
69 DO j=1-3,sNy+3
70 DO i=1-3,sNx+3
71
72 ! H_streamice_prev(i,j,bi,bj) =
73 ! & H_streamice(i,j,bi,bj)
74
75 ytracflux (i,j,bi,bj) = 0. _d 0
76 xtracflux (i,j,bi,bj) = 0. _d 0
77 #ifdef STREAMICE_TRACER_AB
78 GAD_trac_2dNm1(i,j,bi,bj)=GAD_trac_2d(i,j,bi,bj)
79 GAD_trac_2d (i,j,bi,bj) = 0. _d 0
80 #endif
81
82
83 IF (STREAMICE_ufacemask(i,j,bi,bj).eq.3.0) THEN
84 BCVALX(i,j,bi,bj) = trac2d_ubdry_values_SI(i,j,bi,bj)
85 ELSEIF (STREAMICE_ufacemask(i,j,bi,bj).eq.4.0) THEN
86 BCVALX(i,j,bi,bj) = trac2d_ubdry_values_SI(i,j,bi,bj)
87 ENDIF
88
89 IF (STREAMICE_vfacemask(i,j,bi,bj).eq.3.0) THEN
90 BCVALy(i,j,bi,bj) = trac2d_vbdry_values_SI(i,j,bi,bj)
91 ELSEIF (STREAMICE_vfacemask(i,j,bi,bj).eq.4.0) THEN
92 BCVALy(i,j,bi,bj) = trac2d_vbdry_values_SI(i,j,bi,bj)
93 ENDIF
94
95 ENDDO
96 ENDDO
97 ENDDO
98 ENDDO
99
100 _EXCH_XY_RL(BCVALX,myThid)
101 _EXCH_XY_RL(BCVALY,myThid)
102
103
104 #ifdef ALLOW_AUTODIFF_TAMC
105 CADJ STORE trac2d = comlev1, key=ikey_dynamics
106 #endif
107
108
109
110 CALL STREAMICE_ADV_FLUX_FL_X ( myThid ,
111 I uTrans ,
112 I trac2d ,
113 I BCMASKX,
114 I BCVALX,
115 O xtracflux,
116 I time_step_loc)
117
118
119 DO bj=myByLo(myThid),myByHi(myThid)
120 DO bi=myBxLo(myThid),myBxHi(myThid)
121 DO j=1-3,sNy+3
122 DO i=1,sNx
123 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
124 Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
125 IF (((Gj .ge. 1) .and. (Gj .le. Ny))
126 & .or.STREAMICE_NS_PERIODIC) THEN
127
128
129 IF (STREAMICE_hmask(i,j,bi,bj).eq.1.0 .or.
130 & STREAMICE_hmask(i,j,bi,bj).eq.2.0) THEN
131
132
133
134 #ifdef STREAMICE_TRACER_AB
135 GAD_trac_2d(i,j,bi,bj) = GAD_trac_2d(i,j,bi,bj) -
136 #else
137 trac2d(i,j,bi,bj) = trac2d(i,j,bi,bj) -
138 #endif
139 & ((xtracflux(i+1,j,bi,bj)*dyG(i+1,j,bi,bj) -
140 & xtracflux(i,j,bi,bj)*dyG(i,j,bi,bj)) *
141 & recip_rA (i,j,bi,bj) -
142 & trac2d(i,j,bi,bj) *
143 & (utrans(i+1,j,bi,bj)*dyG(i+1,j,bi,bj)-
144 & utrans(i,j,bi,bj)*dyG(i,j,bi,bj)) *
145 & recip_rA(i,j,bi,bj))
146 #ifndef STREAMICE_TRACER_AB
147 & * time_step_loc
148 #endif
149 ENDIF
150 ENDIF
151 ENDDO
152 ENDDO
153 ENDDO
154 ENDDO
155 _EXCH_XY_RL(utrans,myThid)
156
157 #ifdef ALLOW_AUTODIFF_TAMC
158 # ifndef STREAMICE_TRACER_AB
159 CADJ STORE trac2d = comlev1, key=ikey_dynamics
160 # endif
161 #endif
162
163
164 CALL STREAMICE_ADV_FLUX_FL_Y ( myThid ,
165 I vTrans ,
166 I trac2d ,
167 I BCMASKy,
168 I BCVALy,
169 O ytracflux,
170 I time_step_loc)
171
172
173 DO bj=myByLo(myThid),myByHi(myThid)
174 DO bi=myBxLo(myThid),myBxHi(myThid)
175 DO j=1,sNy
176 DO i=1,sNx
177 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
178 Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
179
180 IF (STREAMICE_hmask(i,j,bi,bj).eq.1.0 .or.
181 & STREAMICE_hmask(i,j,bi,bj).eq.2.0) THEN
182 ! IF (Gi.eq.34.and.Gj.eq.94) THEN
183 ! print *, "GOT HERE YFLUX", ytracflux(i,j,bi,bj),
184 ! & ytracflux(i,j+1,bi,bj),trac2d(i,j,bi,bj),
185 ! & vtrans(i,j,bi,bj), vtrans(i,j+1,bi,bj),
186 ! & bcmasky(i,j,bi,bj)
187 ! ENDIF
188
189 #ifdef STREAMICE_TRACER_AB
190 GAD_trac_2d(i,j,bi,bj) = GAD_trac_2d(i,j,bi,bj) -
191 #else
192 trac2d(i,j,bi,bj) = trac2d(i,j,bi,bj) -
193 #endif
194 & ((ytracflux(i,j+1,bi,bj)*dxG(i,j+1,bi,bj) -
195 & ytracflux(i,j,bi,bj)*dxG(i,j,bi,bj)) *
196 & recip_rA (i,j,bi,bj) -
197 & (vtrans(i,j+1,bi,bj)*dxG(i,j+1,bi,bj) -
198 & vtrans(i,j,bi,bj)*dxG(i,j,bi,bj)) *
199 & trac2d(i,j,bi,bj) *
200 & recip_rA(i,j,bi,bj))
201 #ifndef STREAMICE_TRACER_AB
202 & * time_step_loc
203 #endif
204 ENDIF
205 ENDDO
206 ENDDO
207 ENDDO
208 ENDDO
209
210 #ifdef STREAMICE_TRACER_AB
211
212 DO bj=myByLo(myThid),myByHi(myThid)
213 DO bi=myBxLo(myThid),myBxHi(myThid)
214 DO j=1,sNy
215 DO i=1,sNx
216
217 trac2d(i,j,bi,bj) = trac2d(i,j,bi,bj) + time_step_loc *
218 & GAD_trac_2d(i,j,bi,bj)
219
220 IF (myIter.eq.0) THEN
221 trac2d(i,j,bi,bj) = trac2d(i,j,bi,bj) + time_step_loc *
222 & (.5+.01) *
223 & (GAD_trac_2d(i,j,bi,bj) - GAD_trac_2dNm1(i,j,bi,bj))
224 ENDIF
225
226
227 ENDDO
228 ENDDO
229 ENDDO
230 ENDDO
231
232 #endif
233
234 _EXCH_XY_RL (trac2d, myThid)
235
236 WRITE(msgBuf,'(A)') 'END STREAMICE_ADVECT_THICKNESS'
237 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
238 & SQUEEZE_RIGHT , 1)
239
240 #endif
241 #endif
242 END

  ViewVC Help
Powered by ViewVC 1.1.22