/[MITgcm]/MITgcm/tools/OAD_support/ad_template.streamice_vel_phistage.F
ViewVC logotype

Contents of /MITgcm/tools/OAD_support/ad_template.streamice_vel_phistage.F

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


Revision 1.1 - (show annotations) (download)
Sat Feb 21 19:07:27 2015 UTC (9 years, 3 months ago) by dgoldberg
Branch: MAIN
CVS Tags: checkpoint65j
template for christianson fixed-point treatment of streamice vel solve

1 #include "STREAMICE_OPTIONS.h"
2
3 subroutine template()
4 use OAD_cp
5 use OAD_tape
6 use OAD_rev
7
8 !$TEMPLATE_PRAGMA_DECLARATIONS
9
10 integer myi
11 ! Temporaries to hold the stack pointers
12 integer temp_double_tape_pointer, temp_integer_tape_pointer, temp_logical_tape_pointer, temp_character_tape_pointer, temp_string_tape_pointer
13 type(modeType) :: our_orig_mode
14
15 integer iaddr
16 external iaddr
17 !<------------------Begin user declarations ---------------------->!
18 ! Insert declarations of dummy variables for calling adjoint computation
19 ! without side effects, and storing adjoint variable iterates
20
21 #if (defined (ALLOW_OPENAD) && defined (ALLOW_STREAMICE_OAD_FP))
22
23 #ifdef STREAMICE_ALLOW_FRIC_CONTROL
24 Real*8 C_basal_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
25 #endif
26 #ifdef STREAMICE_ALLOW_BGLEN_CONTROL
27 Real*8 B_glen_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
28 #endif
29 Real*8 H_streamice_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
30 Real*8 taudx_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
31 Real*8 taudy_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
32 Real*8 u_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
33 Real*8 v_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
34 Real*8 u_new_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
35 Real*8 v_new_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
36 #ifdef STREAMICE_HYBRID_STRESS
37 Real*8 taubx_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
38 Real*8 tauby_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
39 Real*8 visc_full_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
40 Real*8 taubx_new_dummy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
41 Real*8 tauby_new_dummy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
42 Real*8 visc_new_dummy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
43 #endif
44
45 !<------------------End user declarations ------------------------>!
46 if (our_rev_mode%plain) then
47 our_orig_mode=our_rev_mode
48 IF(ISINLOOP .eq. 0) THEN
49 CONVERGED = .FALSE.
50 ADJ_CONVERGED = .FALSE.
51 ERR_LAST_CHANGE = 10.
52 end if
53 IF(ISINLOOP .ne. 0) THEN
54 IF(.NOT. CONVERGED) THEN
55 NL_ITER = (NL_ITER + 1)
56 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL
57 +,CG_ITERS)
58
59 WRITE(MSGBUF,'(A,I5,A,I4,A)') 'streamice linear solve number',
60 +NL_ITER,' ',CG_ITERS,' iterations '
61
62 CALL print_message(MSGBUF,STANDARDMESSAGEUNIT,'R',1)
63
64 !!!!!!!!!!!! conv check
65
66 if (STREAMICE_chkfixedptconvergence) then
67
68 CALL openad_STREAMICE_GET_FP_ERR_OAD ( err_max_fp, myThid )
69
70 WRITE(msgBuf,'(A,1PE22.14)') 'STREAMICE_FP_ERROR =',
71 & err_max_fp
72 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
73 & SQUEEZE_RIGHT , 1)
74
75 IF (err_max_fp .LE. streamice_nonlin_tol_fp) THEN
76 CONVERGED = .true.
77 ENDIF
78
79 IF (err_max_fp<err_last_change*1.e-2 .and.
80 & STREAMICE_lower_cg_tol) THEN
81 cgtol = cgtol * 5.e-2
82 err_last_change = err_max_fp
83 WRITE(msgBuf,'(A,E15.7)') 'new cg tol: ',
84 & cgtol
85 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
86 & SQUEEZE_RIGHT , 1)
87 ENDIF
88
89 endif
90
91 !!!!!!!!!!!! end conv check
92
93 DO bj = myByLo(myThid), myByHi(myThid)
94 DO bi = myBxLo(myThid), myBxHi(myThid)
95 DO j=1-OLy,sNy+OLy
96 DO i=1-OLx,sNx+OLx
97 U_streamice (i,j,bi,bj)=u_new_SI (i,j,bi,bj)
98 V_streamice (i,j,bi,bj)=v_new_SI (i,j,bi,bj)
99 #ifdef STREAMICE_HYBRID_STRESS
100 streamice_taubx(i,j,bi,bj)=taubx_new_si(i,j,bi,bj)
101 streamice_tauby(i,j,bi,bj)=tauby_new_si(i,j,bi,bj)
102 DO m=Nr,1,-1
103 visc_streamice_full(i,j,m,bi,bj)=
104 & visc_full_new_si(i,j,m,bi,bj)
105 ENDDO
106 #endif
107 ENDDO
108 ENDDO
109 ENDDO
110 ENDDO
111
112 end if
113 end if
114
115 our_rev_mode=our_orig_mode
116 end if
117
118
119 !!!!!!!!!!!! TAPE MODE !!!!!!!!!!!!!!
120
121
122
123
124
125 if (our_rev_mode%tape) then
126 our_orig_mode=our_rev_mode
127 if(isinloop.eq.0) then
128 CONVERGED = .false.
129 nl_iter = 0
130 end if
131
132 if(isinloop.eq.1) then
133 IF (.not. (CONVERGED).AND. nl_iter.lt.MAXNLITER) THEN
134 NL_ITER = (NL_ITER+1)
135 !Run in plain mode while not converged
136 our_rev_mode%plain=.true.
137 our_rev_mode%tape=.false.
138 our_rev_mode%adjoint=.false.
139 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL
140 +,CG_ITERS)
141
142 !---- write out number of cg iters
143
144 WRITE(MSGBUF,'(A,I5,A,I4,A)') 'streamice linear solve number',
145 +NL_ITER,' ',CG_ITERS,' iterations '
146 OAD_CTMP0 = 1
147 CALL print_message(MSGBUF,STANDARDMESSAGEUNIT,'R',OAD_CTMP0)
148
149 !---- conv check
150
151 if (STREAMICE_chkfixedptconvergence) then
152
153 CALL openad_STREAMICE_GET_FP_ERR_OAD ( err_max_fp, myThid )
154
155 WRITE(msgBuf,'(A,1PE22.14)') 'STREAMICE_FP_ERROR =',
156 & err_max_fp
157 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
158 & SQUEEZE_RIGHT , 1)
159
160 IF (err_max_fp .LE. streamice_nonlin_tol_fp) THEN
161 CONVERGED = .true.
162 ENDIF
163
164 IF (err_max_fp<err_last_change*1.e-2 .and.
165 & STREAMICE_lower_cg_tol) THEN
166 cgtol = cgtol * 5.e-2
167 err_last_change = err_max_fp
168 WRITE(msgBuf,'(A,E15.7)') 'new cg tol: ',
169 & cgtol
170 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
171 & SQUEEZE_RIGHT , 1)
172 ENDIF
173
174 endif
175
176 !--------conv check done
177
178 DO bj = myByLo(myThid), myByHi(myThid)
179 DO bi = myBxLo(myThid), myBxHi(myThid)
180 DO j=1-OLy,sNy+OLy
181 DO i=1-OLx,sNx+OLx
182 U_streamice (i,j,bi,bj)%v=u_new_SI (i,j,bi,bj)%v
183 V_streamice (i,j,bi,bj)%v=v_new_SI (i,j,bi,bj)%v
184 #ifdef STREAMICE_HYBRID_STRESS
185 streamice_taubx(i,j,bi,bj)%v=
186 & taubx_new_si(i,j,bi,bj)%v
187 streamice_tauby(i,j,bi,bj)%v=
188 & tauby_new_si(i,j,bi,bj)%v
189 DO m=Nr,1,-1
190 visc_streamice_full(i,j,m,bi,bj)%v=
191 & visc_full_new_si(i,j,m,bi,bj)%v
192 ENDDO
193 #endif
194 ENDDO
195 ENDDO
196 ENDDO
197 ENDDO
198 if (converged .OR. nl_iter.eq.MAXNLITER) then
199 !Run once in tape mode if this is the last time
200 our_rev_mode%plain=.false.
201 our_rev_mode%tape=.true.
202 our_rev_mode%adjoint=.false.
203 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL
204 +,CG_ITERS)
205 end if
206 end if
207 end if
208 if(isinloop.eq.2 ) then
209
210 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL
211 +,CG_ITERS)
212
213 DO bj = myByLo(myThid), myByHi(myThid)
214 DO bi = myBxLo(myThid), myBxHi(myThid)
215 DO j=1-OLy,sNy+OLy
216 DO i=1-OLx,sNx+OLx
217 U_streamice (i,j,bi,bj)%v=u_new_SI (i,j,bi,bj)%v
218 V_streamice (i,j,bi,bj)%v=v_new_SI (i,j,bi,bj)%v
219 #ifdef STREAMICE_HYBRID_STRESS
220 streamice_taubx(i,j,bi,bj)%v=
221 & taubx_new_si(i,j,bi,bj)%v
222 streamice_tauby(i,j,bi,bj)%v=
223 & tauby_new_si(i,j,bi,bj)%v
224 DO m=Nr,1,-1
225 visc_streamice_full(i,j,m,bi,bj)%v=
226 & visc_full_new_si(i,j,m,bi,bj)%v
227 ENDDO
228 #endif
229 ENDDO
230 ENDDO
231 ENDDO
232 ENDDO
233 end if
234 our_rev_mode=our_orig_mode
235 end if
236
237
238 !!!!!!!!!!!! ADJOINT MODE !!!!!!!!!!!!!!
239
240
241
242 if (our_rev_mode%adjoint) then
243 our_orig_mode=our_rev_mode
244
245 if(isinloop.eq.2) then
246
247 ADJ_CONVERGED = .false.
248 adj_iter = 0
249
250 DO bj = myByLo(myThid), myByHi(myThid)
251 DO bi = myBxLo(myThid), myBxHi(myThid)
252 DO j=1-OLy,sNy+OLy
253 DO i=1-OLx,sNx+OLx
254 v_new_SI (i,j,bi,bj)%d= V_streamice(i,j,bi,bj)%d
255 V_streamice (i,j,bi,bj)%d = 0.0
256 u_new_SI (i,j,bi,bj)%d= U_streamice(i,j,bi,bj)%d
257 U_streamice (i,j,bi,bj)%d = 0.0
258 #ifdef STREAMICE_HYBRID_STRESS
259 taubx_new_si(i,j,bi,bj)%d=
260 & streamice_taubx(i,j,bi,bj)%d
261 streamice_taubx(i,j,bi,bj)%d = 0.0
262 tauby_new_si(i,j,bi,bj)%d=
263 & streamice_tauby(i,j,bi,bj)%d
264 streamice_tauby(i,j,bi,bj)%d = 0.0
265 DO m=Nr,1,-1
266 visc_full_new_si(i,j,m,bi,bj)%d=
267 & visc_streamice_full(i,j,m,bi,bj)%d
268 visc_streamice_full(i,j,m,bi,bj)%d = 0.0
269 ENDDO
270 #endif
271 ENDDO
272 ENDDO
273 ENDDO
274 ENDDO
275
276 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL
277 +,CG_ITERS)
278
279 DO BJ = MYBYLO(MYTHID), MYBYHI(MYTHID), 1
280 DO BI = MYBXLO(MYTHID), MYBXHI(MYTHID), 1
281 DO J = 1-OLy,sNy+OLy
282 DO I = 1-OLx,sNx+OLx
283
284 U_streamice_dvals(I,J,BI,BJ) =
285 +U_STREAMICE(INT(I),INT(J),INT(BI),INT(BJ))%d
286 V_streamice_dvals(I,J,BI,BJ) =
287 +V_STREAMICE(INT(I),INT(J),INT(BI),INT(BJ))%d
288 #ifdef STREAMICE_HYBRID_STRESS
289 taubx_dvals(I,J,BI,BJ) =
290 +streamice_taubx(INT(I),INT(J),INT(BI),INT(BJ))%d
291 tauby_dvals(I,J,BI,BJ) =
292 +streamice_tauby(INT(I),INT(J),INT(BI),INT(BJ))%d
293 DO m=Nr,1,-1
294 visc_full_dvals(I,J,m,BI,BJ) =
295 +VISC_STREAMICE_FULL(INT(I),INT(J),m,INT(BI),INT(BJ))%d
296 ENDDO
297 #endif
298
299 U_new_si(I,J,BI,BJ)%d =
300 +U_STREAMICE(INT(I),INT(J),INT(BI),INT(BJ))%d
301 V_new_si(I,J,BI,BJ)%d =
302 +V_STREAMICE(INT(I),INT(J),INT(BI),INT(BJ))%d
303 #ifdef STREAMICE_HYBRID_STRESS
304 taubx_new_si(I,J,BI,BJ)%d =
305 +streamice_taubx(INT(I),INT(J),INT(BI),INT(BJ))%d
306 tauby_new_si(I,J,BI,BJ)%d =
307 +streamice_tauby(INT(I),INT(J),INT(BI),INT(BJ))%d
308 DO m=Nr,1,-1
309 visc_full_new_si(I,J,m,BI,BJ)%d =
310 +VISC_STREAMICE_FULL(INT(I),INT(J),m,INT(BI),INT(BJ))%d
311 ENDDO
312 #endif
313
314 END DO
315 END DO
316 END DO
317 END DO
318
319 end if
320
321
322
323 if(isinloop.eq.1) then
324 if((.NOT.ADJ_CONVERGED).AND.(adj_iter.lt.MAXNLITER)) then
325
326 adj_iter = adj_iter + 1
327
328 DO BJ = MYBYLO(MYTHID), MYBYHI(MYTHID), 1
329 DO BI = MYBXLO(MYTHID), MYBXHI(MYTHID), 1
330 DO J = 1-OLy,sNy+OLy
331 DO I = 1-OLx,sNx+OLx
332
333 ! Real*8 1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
334 ! Real*8 tauby_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
335 ! Real*8 visc_full_dummy_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
336 ! Real*8 taubx_new_dummy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
337 ! Real*8 tauby_new_dummy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
338 ! Real*8 visc_new_dummy (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
339
340
341 U_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ)) =
342 +U_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d
343 V_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ)) =
344 +V_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d
345 #ifdef STREAMICE_HYBRID_STRESS
346 TAUBX_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ)) =
347 +streamice_taubx(INT(I),INT(J),INT(BI),INT(BJ))%d
348 TAUBY_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ)) =
349 +streamice_tauby(INT(I),INT(J),INT(BI),INT(BJ))%d
350 DO m=Nr,1,-1
351 VISC_FULL_DUMMY_D(INT(I),INT(J),m,INT(BI),INT(BJ))=
352 +VISC_STREAMICE_FULL(INT(I),INT(J),m,INT(BI),INT(BJ))%d
353 ENDDO
354 #endif
355
356
357 U_NEW_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ)) =
358 +U_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d
359 V_NEW_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ)) =
360 +V_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d
361 #ifdef STREAMICE_HYBRID_STRESS
362 TAUBX_new_DUMMY(INT(I),INT(J),INT(BI),INT(BJ)) =
363 +TAUBX_new_si(INT(I),INT(J),INT(BI),INT(BJ))%d
364 TAUBY_new_DUMMY(INT(I),INT(J),INT(BI),INT(BJ)) =
365 +TAUBY_new_si(INT(I),INT(J),INT(BI),INT(BJ))%d
366 DO m=Nr,1,-1
367 VISC_new_DUMMY(INT(I),INT(J),m,INT(BI),INT(BJ))=
368 +visc_full_new_si(INT(I),INT(J),m,INT(BI),INT(BJ))%d
369 ENDDO
370 #endif
371
372
373
374 U_STREAMICE(INT(I),INT(J),INT(BI),INT(BJ))%d =
375 +U_streamice_dvals(I,J,BI,BJ)
376 V_STREAMICE(INT(I),INT(J),INT(BI),INT(BJ))%d =
377 +V_STREAMICE_dvals(I,J,BI,BJ)
378 #ifdef STREAMICE_HYBRID_STRESS
379 streamice_taubx(INT(I),INT(J),INT(BI),INT(BJ))%d =
380 +taubx_dvals(I,J,BI,BJ)
381 streamice_tauby(INT(I),INT(J),INT(BI),INT(BJ))%d =
382 +tauby_dvals(I,J,BI,BJ)
383 DO m=Nr,1,-1
384 VISC_STREAMICE_FULL(INT(I),INT(J),m,INT(BI),INT(BJ))%d
385 +=visc_full_dvals(I,J,m,BI,BJ)
386 ENDDO
387 #endif
388
389
390
391 #ifdef STREAMICE_ALLOW_FRIC_CONTROL
392 C_basal_dummy_d(INT(I),INT(J),INT(BI),INT(BJ)) =
393 +C_basal_friction(INT(I),INT(J),INT(BI),INT(BJ))%d
394 #endif
395 #ifdef STREAMICE_ALLOW_BGLEN_CONTROL
396 b_glen_dummy_d(INT(I),INT(J),INT(BI),INT(BJ)) =
397 +B_glen(INT(I),INT(J),INT(BI),INT(BJ))%d
398 #endif
399 H_streamice_dummy_d(INT(I),INT(J),INT(BI),INT(BJ)) =
400 +H_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d
401 taudx_dummy_d(INT(I),INT(J),INT(BI),INT(BJ)) =
402 +taudx_si(INT(I),INT(J),INT(BI),INT(BJ))%d
403 taudy_dummy_d(INT(I),INT(J),INT(BI),INT(BJ)) =
404 +taudy_si(INT(I),INT(J),INT(BI),INT(BJ))%d
405
406 END DO
407 END DO
408 END DO
409 END DO
410
411 !Store the stack pointers
412 temp_double_tape_pointer = oad_dt_ptr
413 temp_integer_tape_pointer = oad_it_ptr
414 temp_logical_tape_pointer = oad_lt_ptr
415 temp_string_tape_pointer = oad_st_ptr
416
417
418
419 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL
420 +,CG_ITERS)
421
422 DO BJ = MYBYLO(MYTHID), MYBYHI(MYTHID), 1
423 DO BI = MYBXLO(MYTHID), MYBXHI(MYTHID), 1
424 DO J = 1-OLy,sNy+OLy
425 DO I = 1-OLx,sNx+OLx
426
427 U_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d =
428 +U_NEW_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ))
429 V_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d =
430 +V_NEW_DUMMY_D(INT(I),INT(J),INT(BI),INT(BJ))
431 #ifdef STREAMICE_HYBRID_STRESS
432 TAUBX_new_si(INT(I),INT(J),INT(BI),INT(BJ))%d =
433 +TAUBX_new_DUMMY(INT(I),INT(J),INT(BI),INT(BJ))
434 TAUBY_new_si(INT(I),INT(J),INT(BI),INT(BJ))%d =
435 +TAUBY_new_DUMMY(INT(I),INT(J),INT(BI),INT(BJ))
436 DO m=Nr,1,-1
437 visc_full_new_si(INT(I),INT(J),m,INT(BI),INT(BJ))%d=
438 +VISC_new_DUMMY(INT(I),INT(J),m,INT(BI),INT(BJ))
439 ENDDO
440 #endif
441
442 END DO
443 END DO
444 END DO
445 END DO
446
447 !---- write out number of cg iters
448
449 WRITE(MSGBUF,'(A,I5)') 'streamice adjoint solve number'
450 +,ADJ_ITER
451 OAD_CTMP0 = 1
452 CALL print_message(MSGBUF,STANDARDMESSAGEUNIT,'R',OAD_CTMP0)
453
454 !---- end write out number of cg iters
455
456 !---- conv check
457
458 if (STREAMICE_chkfixedptconvergence) then
459
460 CALL openad_STREAMICE_GET_FP_ERR_OAD ( err_max_fp, myThid )
461
462 WRITE(msgBuf,'(A,1PE22.14)') 'STREAMICE_FP_ADJ_ERROR =',
463 & err_max_fp
464 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
465 & SQUEEZE_RIGHT , 1)
466
467 IF (err_max_fp .LE. streamice_nonlin_tol_adjoint) THEN
468 ADJ_CONVERGED = .true.
469 ENDIF
470
471 endif
472
473 !--------conv check done
474
475 DO BJ = MYBYLO(MYTHID), MYBYHI(MYTHID), 1
476 DO BI = MYBXLO(MYTHID), MYBXHI(MYTHID), 1
477 DO J = 1-OLy,sNy+OLy
478 DO I = 1-OLx,sNx+OLx
479
480 U_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d = U_STREAMICE(
481 +I,J,BI,BJ)%d
482 V_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d = V_STREAMICE(
483 +I,J,BI,BJ)%d
484 #ifdef STREAMICE_HYBRID_STRESS
485 TAUBX_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d = STREAMIC
486 +E_TAUBX(I,J,BI,BJ)%d
487 TAUBY_NEW_SI(INT(I),INT(J),INT(BI),INT(BJ))%d = STREAMIC
488 +E_TAUBY(I,J,BI,BJ)%d
489 DO m=Nr,1,-1
490 VISC_FULL_NEW_SI(INT(I),INT(J),m,INT(BI),INT(BJ))%d =
491 +VISC_STREAMICE_FULL(I,J,m,BI,BJ)%d
492 ENDDO
493 #endif
494
495 U_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d =
496 +U_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
497 V_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d =
498 +V_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
499 #ifdef STREAMICE_HYBRID_STRESS
500 streamice_taubx(INT(I),INT(J),INT(BI),INT(BJ))%d =
501 +taubx_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
502 streamice_tauby(INT(I),INT(J),INT(BI),INT(BJ))%d =
503 +tauby_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
504 DO m=Nr,1,-1
505 visc_streamice_full(I,J,m,BI,BJ)%d =
506 +visc_full_dummy_d(I,J,m,BI,BJ)
507 ENDDO
508 #endif
509
510 #ifdef STREAMICE_ALLOW_FRIC_CONTROL
511 C_basal_friction(INT(I),INT(J),INT(BI),INT(BJ))%d =
512 +C_basal_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
513 #endif
514 #ifdef STREAMICE_ALLOW_BGLEN_CONTROL
515 b_glen(INT(I),INT(J),INT(BI),INT(BJ))%d =
516 +B_glen_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
517 #endif
518 H_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d =
519 +H_streamice_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
520 taudx_si(INT(I),INT(J),INT(BI),INT(BJ))%d =
521 +taudx_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
522 taudy_si(INT(I),INT(J),INT(BI),INT(BJ))%d =
523 +taudy_dummy_d(INT(I),INT(J),INT(BI),INT(BJ))
524
525 END DO
526 END DO
527 END DO
528 END DO
529
530 oad_dt_ptr = temp_double_tape_pointer
531 oad_it_ptr = temp_integer_tape_pointer
532 oad_lt_ptr = temp_logical_tape_pointer
533 oad_st_ptr = temp_string_tape_pointer
534
535 end if
536 end if
537
538 if(isinloop.eq.0) then
539
540 CALL OpenAD_streamice_vel_phi(MYTHID,MAXNLITER,MAXCGITER,CGTOL,CG_ITERS)
541
542 DO BJ = MYBYLO(MYTHID), MYBYHI(MYTHID), 1
543 DO BI = MYBXLO(MYTHID), MYBXHI(MYTHID), 1
544 DO J = 1-OLy,sNy+OLy
545 DO I = 1-OLx,sNx+OLx
546
547 U_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d = 0. _d 0
548 V_streamice(INT(I),INT(J),INT(BI),INT(BJ))%d = 0. _d 0
549 #ifdef STREAMICE_HYBRID_STRESS
550 streamice_taubx(INT(I),INT(J),INT(BI),INT(BJ))%d = 0. _d 0
551 streamice_tauby(INT(I),INT(J),INT(BI),INT(BJ))%d = 0. _d 0
552 DO m=Nr,1,-1
553 visc_streamice_full(INT(I),INT(J),m,INT(BI),INT(BJ))%d = 0. _d 0
554 ENDDO
555 #endif
556
557 END DO
558 END DO
559 END DO
560 END DO
561
562 end if
563
564
565 our_rev_mode=our_orig_mode
566 end if
567
568 #endif
569
570 end subroutine template
571

  ViewVC Help
Powered by ViewVC 1.1.22