4 |
#include "PACKAGES_CONFIG.h" |
#include "PACKAGES_CONFIG.h" |
5 |
#include "CPP_OPTIONS.h" |
#include "CPP_OPTIONS.h" |
6 |
|
|
|
cswdptr -- add -- |
|
7 |
#ifdef ALLOW_GCHEM |
#ifdef ALLOW_GCHEM |
8 |
# include "GCHEM_OPTIONS.h" |
# include "GCHEM_OPTIONS.h" |
9 |
#endif |
#endif |
10 |
cswdptr -- end add --- |
#ifdef ALLOW_OFFLINE |
11 |
|
# include "OFFLINE_OPTIONS.h" |
12 |
|
#endif |
13 |
|
|
14 |
|
|
15 |
CBOP |
CBOP |
16 |
C !ROUTINE: FORWARD_STEP |
C !ROUTINE: FORWARD_STEP |
218 |
# endif |
# endif |
219 |
#endif |
#endif |
220 |
|
|
221 |
|
#ifdef ALLOW_OFFLINE |
222 |
|
call OFFLINE_FIELDS_LOAD( myTime, myIter, myThid ) |
223 |
|
#endif |
224 |
|
|
225 |
#ifdef ALLOW_PTRACERS |
#ifdef ALLOW_PTRACERS |
226 |
# ifdef ALLOW_GCHEM |
# ifdef ALLOW_GCHEM |
227 |
CALL GCHEM_FIELDS_LOAD( mytime, myiter, mythid ) |
CALL GCHEM_FIELDS_LOAD( mytime, myiter, mythid ) |
261 |
CALL DO_ATMOSPHERIC_PHYS( myTime, myIter, myThid ) |
CALL DO_ATMOSPHERIC_PHYS( myTime, myIter, myThid ) |
262 |
CALL TIMER_STOP ('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',mythid) |
CALL TIMER_STOP ('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',mythid) |
263 |
|
|
264 |
|
#ifndef ALLOW_OFFLINE |
265 |
#ifdef ALLOW_DEBUG |
#ifdef ALLOW_DEBUG |
266 |
IF ( debugLevel .GE. debLevB ) |
IF ( debugLevel .GE. debLevB ) |
267 |
& CALL DEBUG_CALL('DO_OCEANIC_PHYS',myThid) |
& CALL DEBUG_CALL('DO_OCEANIC_PHYS',myThid) |
269 |
CALL TIMER_START('DO_OCEANIC_PHYS [FORWARD_STEP]',mythid) |
CALL TIMER_START('DO_OCEANIC_PHYS [FORWARD_STEP]',mythid) |
270 |
CALL DO_OCEANIC_PHYS( myTime, myIter, myThid ) |
CALL DO_OCEANIC_PHYS( myTime, myIter, myThid ) |
271 |
CALL TIMER_STOP ('DO_OCEANIC_PHYS [FORWARD_STEP]',mythid) |
CALL TIMER_STOP ('DO_OCEANIC_PHYS [FORWARD_STEP]',mythid) |
272 |
|
#endif |
273 |
|
|
274 |
IF ( .NOT.staggerTimeStep ) THEN |
IF ( .NOT.staggerTimeStep ) THEN |
275 |
#ifdef ALLOW_DEBUG |
#ifdef ALLOW_DEBUG |
300 |
#endif /* COMPONENT_MODULE */ |
#endif /* COMPONENT_MODULE */ |
301 |
|
|
302 |
C-- Step forward fields and calculate time tendency terms. |
C-- Step forward fields and calculate time tendency terms. |
303 |
|
#ifndef ALLOW_OFFLINE |
304 |
#ifndef ALLOW_AUTODIFF_TAMC |
#ifndef ALLOW_AUTODIFF_TAMC |
305 |
IF ( momStepping ) THEN |
IF ( momStepping ) THEN |
306 |
#endif |
#endif |
314 |
#ifndef ALLOW_AUTODIFF_TAMC |
#ifndef ALLOW_AUTODIFF_TAMC |
315 |
ENDIF |
ENDIF |
316 |
#endif |
#endif |
317 |
|
#endif |
318 |
|
|
319 |
#ifdef ALLOW_NONHYDROSTATIC |
#ifdef ALLOW_NONHYDROSTATIC |
320 |
C-- Step forward W field in N-H algorithm |
C-- Step forward W field in N-H algorithm |
385 |
C-- Solve elliptic equation(s). |
C-- Solve elliptic equation(s). |
386 |
C Two-dimensional only for conventional hydrostatic or |
C Two-dimensional only for conventional hydrostatic or |
387 |
C three-dimensional for non-hydrostatic and/or IGW scheme. |
C three-dimensional for non-hydrostatic and/or IGW scheme. |
388 |
|
#ifndef ALLOW_OFFLINE |
389 |
IF ( momStepping ) THEN |
IF ( momStepping ) THEN |
390 |
CALL TIMER_START('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid) |
CALL TIMER_START('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid) |
391 |
CALL SOLVE_FOR_PRESSURE(myTime, myIter, myThid) |
CALL SOLVE_FOR_PRESSURE(myTime, myIter, myThid) |
392 |
CALL TIMER_STOP ('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid) |
393 |
ENDIF |
ENDIF |
394 |
|
#endif |
395 |
|
|
396 |
C-- Correct divergence in flow field and cycle time-stepping momentum |
C-- Correct divergence in flow field and cycle time-stepping momentum |
397 |
c IF ( momStepping ) THEN |
c IF ( momStepping ) THEN |
398 |
|
#ifndef ALLOW_OFFLINE |
399 |
CALL TIMER_START('UV_CORRECTION_STEP [FORWARD_STEP]',myThid) |
CALL TIMER_START('UV_CORRECTION_STEP [FORWARD_STEP]',myThid) |
400 |
CALL MOMENTUM_CORRECTION_STEP(myTime, myIter, myThid) |
CALL MOMENTUM_CORRECTION_STEP(myTime, myIter, myThid) |
401 |
CALL TIMER_STOP ('UV_CORRECTION_STEP [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('UV_CORRECTION_STEP [FORWARD_STEP]',myThid) |
402 |
|
#endif |
403 |
c ENDIF |
c ENDIF |
404 |
|
|
405 |
#ifdef EXACT_CONSERV |
#ifdef EXACT_CONSERV |
511 |
CALL DO_STATEVARS_DIAGS( myTime, myIter, myThid ) |
CALL DO_STATEVARS_DIAGS( myTime, myIter, myThid ) |
512 |
CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid) |
513 |
|
|
514 |
|
#ifndef ALLOW_OFFLINE |
515 |
#ifdef ALLOW_MONITOR |
#ifdef ALLOW_MONITOR |
516 |
C-- Check status of solution (statistics, cfl, etc...) |
C-- Check status of solution (statistics, cfl, etc...) |
517 |
CALL TIMER_START('MONITOR [FORWARD_STEP]',myThid) |
CALL TIMER_START('MONITOR [FORWARD_STEP]',myThid) |
518 |
CALL MONITOR( myIter, myTime, myThid ) |
CALL MONITOR( myIter, myTime, myThid ) |
519 |
CALL TIMER_STOP ('MONITOR [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('MONITOR [FORWARD_STEP]',myThid) |
520 |
#endif /* ALLOW_MONITOR */ |
#endif /* ALLOW_MONITOR */ |
521 |
|
#endif |
522 |
|
|
523 |
C-- Do IO if needed. |
C-- Do IO if needed. |
524 |
|
#ifdef ALLOW_OFFLINE |
525 |
|
CALL TIMER_START('OFFLINE_MODEL_IO [FORWARD_STEP]',myThid) |
526 |
|
CALL OFFLINE_MODEL_IO( myTime, myIter, myThid ) |
527 |
|
CALL TIMER_STOP ('OFFLINE_MODEL_IO [FORWARD_STEP]',myThid) |
528 |
|
#else |
529 |
CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid) |
CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid) |
530 |
CALL DO_THE_MODEL_IO( myTime, myIter, myThid ) |
CALL DO_THE_MODEL_IO( myTime, myIter, myThid ) |
531 |
CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid) |
532 |
|
#endif |
533 |
|
|
534 |
C-- Save state for restarts |
C-- Save state for restarts |
535 |
CALL TIMER_START('WRITE_CHECKPOINT [FORWARD_STEP]',myThid) |
CALL TIMER_START('WRITE_CHECKPOINT [FORWARD_STEP]',myThid) |
536 |
CALL PACKAGES_WRITE_PICKUP( |
CALL PACKAGES_WRITE_PICKUP( |
537 |
I .FALSE., myTime, myIter, myThid ) |
I .FALSE., myTime, myIter, myThid ) |
538 |
|
#ifndef ALLOW_OFFLINE |
539 |
CALL WRITE_CHECKPOINT( |
CALL WRITE_CHECKPOINT( |
540 |
I .FALSE., myTime, myIter, myThid ) |
I .FALSE., myTime, myIter, myThid ) |
541 |
|
#endif |
542 |
CALL TIMER_STOP ('WRITE_CHECKPOINT [FORWARD_STEP]',myThid) |
CALL TIMER_STOP ('WRITE_CHECKPOINT [FORWARD_STEP]',myThid) |
543 |
|
|
544 |
#ifdef ALLOW_DEBUG |
#ifdef ALLOW_DEBUG |