4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
22# if defined MODEL_COUPLING && defined MCT_LIB
24# endif
28
29# ifdef ANA_VMIX
31# endif
33# ifdef TIDE_GENERATING_FORCES
35# endif
36# if defined ATM_COUPLING_NOT_YET && defined MCT_LIB
38# endif
39# if defined WAV_COUPLING_NOT_YET && defined MCT_LIB
41# endif
42# ifdef FORWARD_READ
46# endif
48# ifdef BIOLOGY
50# endif
51# ifdef BBL_MODEL_NOT_YET
52
53# endif
54# if defined BULK_FLUXES_NOT_YET && !defined PRIOR_BULK_FLUXES
56# endif
57# ifdef BVF_MIXING_NOT_YET
58
59# endif
61# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
63# endif
64# ifdef GLS_MIXING_NOT_YET
65
66
67# endif
68# ifdef LMD_MIXING_NOT_YET
69
70# endif
71# ifdef MY25_MIXING
72
73
74# endif
75# ifdef ADJUST_BOUNDARY
79# endif
82# ifdef NEARSHORE_MELLOR_NOT_YET
83
84# endif
85# ifndef TS_FIXED
87# endif
89# ifdef SEDIMENT_NOT_YET
90
91# endif
94# if defined SSH_TIDES_NOT_YET || defined UV_TIDES_NOT_YET
95
96# endif
100# ifndef TS_FIXED
102# endif
104# ifdef FLOATS_NOT_YET
105
106# endif
107# ifdef WEAK_CONSTRAINT
109# endif
110# ifdef RP_AVERAGES
112# endif
113
114
115 implicit none
116
117
118
119 real(dp), intent(in) :: RunInterval
120
121
122
123 integer :: ng, tile
124 integer :: my_iif, next_indx1
125# ifdef FLOATS_NOT_YET
126 integer :: Lend, Lstr, chunk_size
127# endif
128
129 real(r8) :: MaxDT, my_StepTime
130
131 character (len=*), parameter :: MyFile = &
132 & __FILE__
133
134
135
136
137
138 my_steptime=0.0_r8
140
141 step_loop : DO WHILE (my_steptime.le.(runinterval+0.5_r8*maxdt))
142
143 my_steptime=my_steptime+maxdt
144
145
146
152
156
157 END DO
158
159
160
161
162
163
165
167
168
170 END DO
171
172
173
174
175
176
180# ifdef FORWARD_READ
182# endif
183 END DO
184
185 END DO
187
188# ifdef FORWARD_READ
189
190
191
192
193
197 END DO
198
199 END DO
200# endif
201# ifdef WEAK_CONSTRAINT
202
203
204
205
206
207
208
209
210
215 END DO
216
217 END IF
218 END DO
219# endif
220
221
222
223
224
225
226
227
231 END IF
232 END DO
233
234
235
236
237
238
239
243# ifndef TS_FIXED
245# endif
246# ifdef TIDE_GENERATING_FORCES
247 CALL equilibrium_tide (ng, tile,
itlm)
248# endif
250# ifdef FORWARD_READ
252# endif
253 END DO
254
255 END DO
257
258# if defined ATM_COUPLING_NOT_YET && defined MCT_LIB
259
260
261
262
263
264
269 CALL ocn2atm_coupling (ng, tile)
270 END DO
271
272 END IF
273 END DO
274# endif
275
276# if defined WAV_COUPLING_NOT_YET && defined MCT_LIB
277
278
279
280
281
282
287 CALL ocn2wav_coupling (ng, tile)
288 END DO
289
290 END IF
291 END DO
292# endif
293
294# ifdef NEARSHORE_MELLOR_NOT_YET
295
296
297
298
299
302 CALL rp_radiation_stress (ng, tile)
303 END DO
304
305 END DO
306# endif
307
308
309
310
311
312
315# if defined BULK_FLUXES_NOT_YET && !defined PRIOR_BULK_FLUXES
317# endif
318# ifdef BBL_MODEL_NOT_YET
319 CALL rp_bblm (ng, tile)
320# endif
322# if defined SSH_TIDES_NOT_YET || defined UV_TIDES_NOT_YET
323 CALL rp_set_tides (ng, tile)
324# endif
325 END DO
326
327 END DO
328
329# ifdef ADJUST_BOUNDARY
330
331
332
333
334
335
342 END DO
343
344 END IF
345 END DO
346# endif
347
348# if defined ADJUST_STFLUX || defined ADJUST_WSTRESS
349
350
351
352
353
354
359 END DO
360
361 END IF
362 END DO
363# endif
364
365
366
367
368
369
370
373# if defined ANA_VMIX_NOT_YET
374 CALL rp_ana_vmix (ng, tile)
375# elif defined LMD_MIXING_NOT_YET
376 CALL rp_lmd_vmix (ng, tile)
377# elif defined BVF_MIXING_NOT_YET
378 CALL rp_bvf_mix (ng, tile)
379# endif
381
382 END DO
383
384 END DO
385
386
387
388
389
390
391
395# ifdef DIAGNOSTICS
396
397# endif
398# ifdef RP_AVERAGES
400# endif
401 END DO
402
403 END DO
404
405
406
407
408
409
410
412
414
415
418 END DO
419
420
421
422
423
427# ifdef MY25_MIXING_NOT_YET
428 CALL rp_my25_prestep (ng, tile)
429# elif defined GLS_MIXING_NOT_YET
430 CALL rp_gls_prestep (ng, tile)
431# endif
432 END DO
433
434 END DO
435
436
437
438
439
440
441 loop_2d :
DO my_iif=1,maxval(
nfast)+1
442
443
444
445
447 next_indx1=3-
indx1(ng)
449 & my_iif.le.(
nfast(ng)+1))
THEN
452 IF (first_2d_step) THEN
454 ELSE
456 END IF
459 END IF
460
461
462
463
464
465
466
467 IF (my_iif.le.(
nfast(ng)+1))
THEN
470 END DO
471
472 END IF
473 END DO
474
475
476
484 END IF
485
486
487
488
489
493 END DO
494
495 END IF
496 END DO
497
498 END DO loop_2d
499
500
501
502
503
504
508 END DO
509
510 END DO
511
512
513
514
515
516
517
518
522 END DO
523
524 END DO
525
526
527
528
529
530
534# ifdef MY25_MIXING_NOT_YET
535 CALL rp_my25_corstep (ng, tile)
536# elif defined GLS_MIXING_NOT_YET
537 CALL rp_gls_corstep (ng, tile)
538# endif
539# ifdef BIOLOGY
541# endif
542# ifdef SEDIMENT_NOT_YET
543 CALL rp_sediment (ng, tile)
544# endif
545 END DO
546
547 END DO
548
549# ifndef TS_FIXED
550
551
552
553
554
558 END DO
559 END DO
560
561# endif
562
563# ifdef FLOATS_NOT_YET
564
565
566
567
568
569
570
571
572
575# ifdef _OPENMP
577 lstr=1+my_thread*chunk_size
578 lend=min(
nfloats(ng),lstr+chunk_size-1)
579# else
580 lstr=1
582# endif
583 CALL rp_step_floats (ng, lstr, lend)
584
585
586
587
593 END IF
594 END DO
595# endif
596 END DO step_loop
597
598 RETURN
subroutine ana_vmix(ng, tile, model)
subroutine, public time_string(mytime, date_string)
integer, dimension(:,:), allocatable couplesteps
integer, dimension(:), allocatable first_tile
integer, dimension(:), allocatable last_tile
integer, dimension(:), allocatable nfloats
logical, dimension(:), allocatable lfloats
integer, dimension(:), allocatable iic
real(dp), dimension(:), allocatable dt
logical, dimension(:), allocatable predictor_2d_step
real(dp), dimension(:), allocatable tdays
logical, dimension(:), allocatable frequentimpulse
integer, dimension(:), allocatable nfast
real(dp), parameter sec2day
integer, dimension(:), allocatable ntend
character(len=22), dimension(:), allocatable time_code
integer, dimension(:), allocatable indx1
real(dp), dimension(:), allocatable time
integer, dimension(:), allocatable ntstart
integer, dimension(:), allocatable iif
integer, dimension(:), allocatable nfm2
integer, dimension(:), allocatable kstp
integer, dimension(:), allocatable knew
integer, dimension(:), allocatable nfm1
integer, dimension(:), allocatable nrhs
integer, dimension(:), allocatable lfinp
integer, dimension(:), allocatable lbinp
integer, dimension(:), allocatable nf
integer, dimension(:), allocatable nfm3
integer, dimension(:), allocatable nnew
integer, dimension(:), allocatable nfp1
integer, dimension(:), allocatable krhs
integer, dimension(:), allocatable nstp
subroutine, public omega(ng, tile, model)
subroutine, public rp_biology(ng, tile)
subroutine, public rp_bulk_flux(ng, tile)
subroutine, public rp_diag(ng, tile)
subroutine, public rp_frc_adjust(ng, tile, linp)
subroutine, public rp_obc2d_adjust(ng, tile, linp)
subroutine, public rp_obc_adjust(ng, tile, linp)
subroutine, public rp_omega(ng, tile, model)
subroutine, public rp_post_initial(ng, model)
subroutine, public rp_rho_eos(ng, tile, model)
subroutine, public rp_rhs3d(ng, tile)
subroutine, public rp_set_depth_bry(ng, tile, model)
subroutine, public rp_set_depth(ng, tile, model)
subroutine, public rp_set_massflux(ng, tile, model)
subroutine, public rp_set_vbc(ng, tile)
subroutine, public rp_set_zeta(ng, tile)
subroutine, public rp_step2d(ng, tile)
subroutine, public rp_step3d_t(ng, tile)
subroutine, public rp_step3d_uv(ng, tile)
subroutine, public set_depth(ng, tile, model)
subroutine, public set_massflux(ng, tile, model)
logical function, public founderror(flag, noerr, line, routine)
subroutine, public tl_forcing(ng, tile, kfrc, nfrc)
subroutine, public tl_set_avg(ng, tile)
subroutine rp_get_data(ng)
subroutine rp_set_data(ng, tile)