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

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

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


Revision 1.1 - (show annotations) (download)
Tue Nov 29 12:37:52 2016 UTC (7 years, 3 months ago) by dgoldberg
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
new AD templates for streamice_invert_surf_forthick and streamice_smooth_adjoint_field. ad_template.streamice_vel_phistage.F modified to allow for R_low as control

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 :: cp_loop_variable_1,cp_loop_variable_2,
11 + cp_loop_variable_3,cp_loop_variable_4
12
13 type(modeType) :: our_orig_mode
14
15 integer iaddr
16 external iaddr
17
18
19 Real*8 H_p (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
20 Real*8 surf_p (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
21 Real*8 R_p (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
22 Real*8 H_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
23 Real*8 surf_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
24 Real*8 R_d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
25
26 C
27 C **** Statements ****
28 C
29
30
31 if (our_rev_mode%plain) then
32 #ifdef STREAMICE_ALLOW_DEPTH_CONTROL
33 #ifdef STREAMICE_SMOOTH_FLOATATION
34
35 H_p = H_streamice%v
36 surf_p = surf_el_streamice%v
37 R_p = R_low_si%v
38
39 CALL STREAMICE_INVERT_SURF_FORTHICK(
40 O H_p,
41 I surf_p,
42 I R_p,
43 I delta,
44 I myThid)
45
46 H_streamice%v = H_p
47 #endif
48 #endif
49 end if
50 if (our_rev_mode%tape) then
51 #ifdef STREAMICE_SMOOTH_FLOATATION
52 #ifdef STREAMICE_ALLOW_DEPTH_CONTROL
53 c set up for plain execution
54 our_orig_mode=our_rev_mode
55 our_rev_mode%arg_store=.FALSE.
56 our_rev_mode%arg_restore=.FALSE.
57 our_rev_mode%plain=.TRUE.
58 our_rev_mode%tape=.FALSE.
59 our_rev_mode%adjoint=.FALSE.
60
61 H_p = H_streamice%v
62 surf_p = surf_el_streamice%v
63 R_p = R_low_si%v
64
65 call oad_tape_push(surf_p)
66 call oad_tape_push(R_p)
67 call oad_tape_push(delta)
68 call oad_tape_push(myThid)
69
70 CALL STREAMICE_INVERT_SURF_FORTHICK(
71 O H_p,
72 I surf_p,
73 I R_p,
74 I delta,
75 I myThid)
76
77 call oad_tape_push(H_p)
78 H_streamice%v = H_p
79 our_rev_mode=our_orig_mode
80 #endif
81 #endif
82 end if
83 if (our_rev_mode%adjoint) then
84 c set up for plain execution
85 #ifdef STREAMICE_ALLOW_DEPTH_CONTROL
86 #ifdef STREAMICE_SMOOTH_FLOATATION
87 our_orig_mode=our_rev_mode
88 our_rev_mode%arg_store=.FALSE.
89 our_rev_mode%arg_restore=.FALSE.
90 our_rev_mode%plain=.TRUE.
91 our_rev_mode%tape=.FALSE.
92 our_rev_mode%adjoint=.FALSE.
93
94 call oad_tape_pop(H_p)
95 call oad_tape_pop(myThid)
96 call oad_tape_pop(delta)
97 call oad_tape_pop(R_p)
98 call oad_tape_pop(surf_p)
99
100 H_d = H_streamice%d
101 surf_d = surf_el_streamice%d
102 R_d = R_low_si%d
103
104 CALL ADSTRMICE_H_INV (
105 & H_p,
106 & H_d,
107 & Surf_p,
108 & R_p,
109 & R_d,
110 & delta,
111 & mythid)
112
113 R_low_si%d = R_d
114
115 our_rev_mode=our_orig_mode
116 #endif
117 #endif
118 end if
119 end subroutine template

  ViewVC Help
Powered by ViewVC 1.1.22