@@ -146,6 +146,20 @@ def run(n, backend, datatype, benchmark_mode):
146
146
u2 = create_full (U_shape , 0.0 , dtype )
147
147
v2 = create_full (V_shape , 0.0 , dtype )
148
148
149
+ # compute time step
150
+ alpha = 0.5
151
+ c = (g * h ) ** 0.5
152
+ dt = alpha * dx / c
153
+ dt = t_export / int (math .ceil (t_export / dt ))
154
+ nt = int (math .ceil (t_end / dt ))
155
+ if benchmark_mode :
156
+ dt = 1e-5
157
+ nt = 100
158
+ t_export = dt * 25
159
+
160
+ info (f"Time step: { dt } s" )
161
+ info (f"Total run time: { t_end } s, { nt } time steps" )
162
+
149
163
sync ()
150
164
151
165
def exact_elev (t , x_t_2d , y_t_2d , lx , ly ):
@@ -166,26 +180,6 @@ def exact_elev(t, x_t_2d, y_t_2d, lx, ly):
166
180
sol_t = numpy .cos (2 * omega * t )
167
181
return amp * sol_x * sol_y * sol_t
168
182
169
- # initial elevation
170
- e [:, :] = exact_elev (0.0 , x_t_2d , y_t_2d , lx , ly )
171
- sync ()
172
-
173
- # compute time step
174
- alpha = 0.5
175
- c = (g * h ) ** 0.5
176
- dt = alpha * dx / c
177
- dt = t_export / int (math .ceil (t_export / dt ))
178
- nt = int (math .ceil (t_end / dt ))
179
- if benchmark_mode :
180
- dt = 1e-5
181
- nt = 100
182
- t_export = dt * 25
183
-
184
- info (f"Time step: { dt } s" )
185
- info (f"Total run time: { t_end } s, { nt } time steps" )
186
-
187
- sync ()
188
-
189
183
def rhs (u , v , e ):
190
184
"""
191
185
Evaluate right hand side of the equations
@@ -220,6 +214,14 @@ def step(u, v, e, u1, v1, e1, u2, v2, e2):
220
214
v [:, 1 :- 1 ] = v [:, 1 :- 1 ] / 3.0 + 2.0 / 3.0 * (v2 [:, 1 :- 1 ] + dt * dvdt )
221
215
e [:, :] = e [:, :] / 3.0 + 2.0 / 3.0 * (e2 [:, :] + dt * dedt )
222
216
217
+ # warm git cache
218
+ step (u , v , e , u1 , v1 , e1 , u2 , v2 , e2 )
219
+ sync ()
220
+
221
+ # initial solution
222
+ e [:, :] = exact_elev (0.0 , x_t_2d , y_t_2d , lx , ly ).to_device (device )
223
+ u [:, :] = create_full (U_shape , 0.0 , dtype )
224
+ v [:, :] = create_full (V_shape , 0.0 , dtype )
223
225
sync ()
224
226
225
227
t = 0
0 commit comments