-
Notifications
You must be signed in to change notification settings - Fork 13
/
checkpoint_lev2_directives.h
195 lines (170 loc) · 5.43 KB
/
checkpoint_lev2_directives.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
c
c store directives for checkpoint level 2
c
c created: heimbach@mit.edu 10-Jan-2002
c
#ifdef AUTODIFF_USE_STORE_RESTORE
c
CADJ STORE StoreDynVars2D = tapelev2, key = ilev_2
CADJ STORE StoreDynVars3D = tapelev2, key = ilev_2
c
#else
c
CADJ STORE etan = tapelev2, key = ilev_2
#ifndef EXCLUDE_FFIELDS_LOAD
CADJ STORE taux0 = tapelev2, key = ilev_2
CADJ STORE taux1 = tapelev2, key = ilev_2
CADJ STORE tauy0 = tapelev2, key = ilev_2
CADJ STORE tauy1 = tapelev2, key = ilev_2
CADJ STORE qnet0 = tapelev2, key = ilev_2
CADJ STORE qnet1 = tapelev2, key = ilev_2
CADJ STORE empmr0 = tapelev2, key = ilev_2
CADJ STORE empmr1 = tapelev2, key = ilev_2
CADJ STORE sst0 = tapelev2, key = ilev_2
CADJ STORE sst1 = tapelev2, key = ilev_2
CADJ STORE sss0 = tapelev2, key = ilev_2
CADJ STORE sss1 = tapelev2, key = ilev_2
CADJ STORE saltflux0 = tapelev2, key = ilev_2
CADJ STORE saltflux1 = tapelev2, key = ilev_2
# ifdef SHORTWAVE_HEATING
CADJ STORE qsw0 = tapelev2, key = ilev_2
CADJ STORE qsw1 = tapelev2, key = ilev_2
# endif
# ifdef ALLOW_GEOTHERMAL_FLUX
CADJ STORE geothFlux0 = tapelev2, key = ilev_2
CADJ STORE geothFlux1 = tapelev2, key = ilev_2
# endif
# ifdef ATMOSPHERIC_LOADING
CADJ STORE pload0 = tapelev2, key = ilev_2
CADJ STORE pload1 = tapelev2, key = ilev_2
# endif
#endif /* ndef EXCLUDE_FFIELDS_LOAD */
#ifdef EXACT_CONSERV
CADJ STORE etaH = tapelev2, key = ilev_2
CADJ STORE dEtaHdt = tapelev2, key = ilev_2
CADJ STORE PmEpR = tapelev2, key = ilev_2
#endif
c
#ifdef ALLOW_ADAMSBASHFORTH_3
CADJ STORE gtnm = tapelev2, key = ilev_2
CADJ STORE gsnm = tapelev2, key = ilev_2
CADJ STORE gunm = tapelev2, key = ilev_2
CADJ STORE gvnm = tapelev2, key = ilev_2
#else
CADJ STORE gtnm1 = tapelev2, key = ilev_2
CADJ STORE gsnm1 = tapelev2, key = ilev_2
CADJ STORE gunm1 = tapelev2, key = ilev_2
CADJ STORE gvnm1 = tapelev2, key = ilev_2
#endif
CADJ STORE theta = tapelev2, key = ilev_2
CADJ STORE salt = tapelev2, key = ilev_2
CADJ STORE uvel = tapelev2, key = ilev_2
CADJ STORE vvel = tapelev2, key = ilev_2
CADJ STORE wvel = tapelev2, key = ilev_2
CADJ STORE totphihyd = tapelev2, key = ilev_2
c
#endif /* AUTODIFF_USE_STORE_RESTORE */
#ifdef EXACT_CONSERV
cphCADJ STORE hDivFlow = tapelev2, key = ilev_2
#endif /* EXACT_CONSERV */
#ifdef NONLIN_FRSURF
CADJ STORE hfac_surfc = tapelev2, key = ilev_2
CADJ STORE hfac_surfs = tapelev2, key = ilev_2
CADJ STORE hfac_surfw = tapelev2, key = ilev_2
CADJ STORE hFac_surfNm1C = tapelev2, key = ilev_2
CADJ STORE hFac_surfNm1S = tapelev2, key = ilev_2
CADJ STORE hFac_surfNm1W = tapelev2, key = ilev_2
# ifndef DISABLE_RSTAR_CODE
CADJ STORE rstarexpc,rstarexps,rstarexpw
CADJ & = tapelev2, key = ilev_2
CADJ STORE rstarfacc,rstarfacs,rstarfacw
CADJ & = tapelev2, key = ilev_2
CADJ STORE rStarFacNm1C,rStarFacNm1S,rStarFacNm1W
CADJ & = tapelev2, key = ilev_2
# if (defined ALLOW_MOM_FLUXFORM || \
defined ALLOW_CG2D_NSA || defined ALLOW_DEPTH_CONTROL)
CADJ STORE rstardhcdt,rstardhsdt,rstardhwdt
CADJ & = tapelev2, key = ilev_2
# endif
# endif
#endif /* NONLIN_FRSURF */
#if (defined ALLOW_CG2D_NSA || defined NONLIN_FRSURF || \
defined ALLOW_DEPTH_CONTROL)
CADJ STORE aW2d, aS2d, aC2d = tapelev2, key = ilev_2
CADJ STORE pc, ps, pw = tapelev2, key = ilev_2
#endif
#ifdef ALLOW_CD_CODE
# include "cd_code_ad_check_lev2_dir.h"
#endif /* ALLOW_CD_CODE */
#ifdef ALLOW_GGL90
# include "ggl90_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_EXF
# include "exf_ad_check_lev2_dir.h"
#endif /* ALLOW_EXF */
#ifdef ALLOW_CTRL
# include "ctrl_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_PTRACERS
# include "ptracers_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_OBCS
# include "obcs_ad_check_lev2_dir.h"
#endif /* ALLOW_OBCS */
#ifdef ALLOW_SALT_PLUME
# include "salt_plume_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_SEAICE
CADJ STORE phiHydLow = tapelev2, key = ilev_2
# include "seaice_ad_check_lev2_dir.h"
#endif /* ALLOW_SEAICE */
#ifdef ALLOW_THSICE
# include "thsice_ad_check_lev2_dir.h"
#endif /* ALLOW_THSICE */
#ifdef ALLOW_SHELFICE
# include "shelfice_ad_check_lev2_dir.h"
#endif /* ALLOW_SHELFICE */
#ifdef ALLOW_STREAMICE
# include "streamice_ad_check_lev2_dir.h"
#endif /* ALLOW_STREAMICE */
#ifdef ALLOW_RBCS
# include "rbcs_ad_check_lev2_dir.h"
#endif /* ALLOW_RBCS */
#ifdef ALLOW_OFFLINE
# include "offline_ad_check_lev2_dir.h"
#endif /* ALLOW_OFFLINE */
#ifdef ALLOW_CFC
# include "cfc_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_DIC
# include "dic_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_BLING
# include "bling_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_GENERIC_ADVDIFF
# include "gad_ad_check_lev2_dir.h"
#endif
#ifdef ALLOW_EBM
CADJ STORE fu = tapelev2, key = ilev_2
CADJ STORE fv = tapelev2, key = ilev_2
CADJ STORE qnet = tapelev2, key = ilev_2
CADJ STORE qsw = tapelev2, key = ilev_2
CADJ STORE sss = tapelev2, key = ilev_2
CADJ STORE empmr = tapelev2, key = ilev_2
# include "ebm_ad_check_lev2_dir.h"
#endif /* ALLOW_EBM */
#ifdef ALLOW_COST
C Whether the following store directives are necessary depends
C heavily on the details of the cost function, so we stick to the
C strategy of inserting these store directives regardless of the
C "not necessary" warnings they produce.
CADJ STORE cMeanTheta = tapelev2, key = ilev_2
CADJ STORE cMeanUVel = tapelev2, key = ilev_2
CADJ STORE cMeanVVel = tapelev2, key = ilev_2
CADJ STORE cMeanThetaUVel = tapelev2, key = ilev_2
CADJ STORE cMeanThetaVVel = tapelev2, key = ilev_2
#endif
#ifdef ALLOW_COST_TRACER
CADJ STORE objf_tracer = tapelev2, key = ilev_2
#endif