/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_advect_2dtracer.F
ViewVC logotype

Annotation of /MITgcm_contrib/dgoldberg/streamice/streamice_advect_2dtracer.F

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


Revision 1.2 - (hide annotations) (download)
Wed Jun 12 20:48:08 2013 UTC (12 years, 1 month ago) by dgoldberg
Branch: MAIN
Changes since 1.1: +17 -12 lines
take care of errors found by debug

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

  ViewVC Help
Powered by ViewVC 1.1.22