226 |
C/\ | | | | |
C/\ | | | | |
227 |
C/\ | | | |-EXCH :: Sync forcing. in overlap regions. |
C/\ | | | |-EXCH :: Sync forcing. in overlap regions. |
228 |
C/\ | | |-SEAICE_MODEL :: Compute sea-ice terms. ( pkg/seaice ) |
C/\ | | |-SEAICE_MODEL :: Compute sea-ice terms. ( pkg/seaice ) |
229 |
|
C/\ | | |-FREEZE :: Limit surface temperature. |
230 |
C/\ | | |-GCHEM_FIELD_LOAD :: load tracer forcing fields (pkg/gchem) |
C/\ | | |-GCHEM_FIELD_LOAD :: load tracer forcing fields (pkg/gchem) |
231 |
C/\ | | | |
C/\ | | | |
232 |
C/\ | | |-THERMODYNAMICS :: theta, salt + tracer equations driver. |
C/\ | | |-THERMODYNAMICS :: theta, salt + tracer equations driver. |
304 |
C/\ | | | | |-TIMESTEP_TRACER :: Step tracer field forward in time |
C/\ | | | | |-TIMESTEP_TRACER :: Step tracer field forward in time |
305 |
C/\ | | | | |
C/\ | | | | |
306 |
C/\ | | | |-OBCS_APPLY_TS :: Open bndy. package (see pkg/obcs ). |
C/\ | | | |-OBCS_APPLY_TS :: Open bndy. package (see pkg/obcs ). |
|
C/\ | | | |-FREEZE :: Limit range of temperature. |
|
307 |
C/\ | | | | |
C/\ | | | | |
308 |
C/\ | | | |-IMPLDIFF :: Solve vertical implicit diffusion equation. |
C/\ | | | |-IMPLDIFF :: Solve vertical implicit diffusion equation. |
309 |
C/\ | | | |-OBCS_APPLY_TS :: Open bndy. package (see pkg/obcs ). |
C/\ | | | |-OBCS_APPLY_TS :: Open bndy. package (see pkg/obcs ). |
378 |
C/\ | | | |-KPP_DO_DIAGS :: KPP diags. see pkg/kpp |
C/\ | | | |-KPP_DO_DIAGS :: KPP diags. see pkg/kpp |
379 |
C/\ | | | |-SBO_CALC :: SBO diags. see pkg/sbo |
C/\ | | | |-SBO_CALC :: SBO diags. see pkg/sbo |
380 |
C/\ | | | |-SBO_DIAGS :: SBO diags. see pkg/sbo |
C/\ | | | |-SBO_DIAGS :: SBO diags. see pkg/sbo |
381 |
|
C/\ | | | |-SEAICE_DO_DIAGS :: SEAICE diags. see pkg/seaice |
382 |
C/\ | | | |-GCHEM_DIAGS :: gchem diags. see pkg/gchem |
C/\ | | | |-GCHEM_DIAGS :: gchem diags. see pkg/gchem |
383 |
C/\ | | | |
C/\ | | | |
384 |
C/\ | | |-WRITE_CHECKPOINT :: Do I/O for restart files. |
C/\ | | |-WRITE_CHECKPOINT :: Do I/O for restart files. |
508 |
#endif |
#endif |
509 |
lastdiva = .TRUE. |
lastdiva = .TRUE. |
510 |
|
|
511 |
#ifndef DISABLE_DEBUGMODE |
#ifdef ALLOW_DEBUG |
512 |
IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid) |
IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid) |
513 |
#endif |
#endif |
514 |
|
|
515 |
C-- This timer encompasses the whole code |
C-- This timer encompasses the whole code |
516 |
CALL TIMER_START('ALL [THE_MODEL_MAIN]',myThid) |
CALL TIMER_START('ALL [THE_MODEL_MAIN]',myThid) |
517 |
|
|
518 |
#ifndef DISABLE_DEBUGMODE |
#ifdef ALLOW_DEBUG |
519 |
IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid) |
IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid) |
520 |
#endif |
#endif |
521 |
|
|
539 |
_BEGIN_MASTER( mythid ) |
_BEGIN_MASTER( mythid ) |
540 |
IF (myProcId .eq. 0) THEN |
IF (myProcId .eq. 0) THEN |
541 |
inquire( file='costfinal', exist=exst ) |
inquire( file='costfinal', exist=exst ) |
542 |
IF ( .NOT. exst ) THEN |
IF ( .NOT. exst .AND. niter0 .EQ. 0 ) THEN |
543 |
CALL TIMER_START('CTRL_UNPACK [THE_MODEL_MAIN]',mythid) |
CALL TIMER_START('CTRL_UNPACK [THE_MODEL_MAIN]',mythid) |
544 |
CALL CTRL_UNPACK( .TRUE. , mythid ) |
CALL CTRL_UNPACK( .TRUE. , mythid ) |
545 |
CALL TIMER_STOP ('CTRL_UNPACK [THE_MODEL_MAIN]',mythid) |
CALL TIMER_STOP ('CTRL_UNPACK [THE_MODEL_MAIN]',mythid) |
576 |
CALL COST_FINAL_STORE ( mythid, lastdiva ) |
CALL COST_FINAL_STORE ( mythid, lastdiva ) |
577 |
ELSE |
ELSE |
578 |
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
579 |
CALL ADTHE_MAIN_LOOP ( mythid ) |
CALL ADTHE_MAIN_LOOP ( myCurrentTime, myCurrentIter, mythid ) |
580 |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
581 |
CALL COST_FINAL_RESTORE ( mythid, lastdiva ) |
CALL COST_FINAL_RESTORE ( mythid, lastdiva ) |
582 |
ENDIF |
ENDIF |
583 |
c-- |
c-- |
584 |
# else /* ALLOW_DIVIDED_ADJOINT undef */ |
# else /* ALLOW_DIVIDED_ADJOINT undef */ |
585 |
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
586 |
CALL ADTHE_MAIN_LOOP ( mythid ) |
CALL ADTHE_MAIN_LOOP ( myCurrentTime, myCurrentIter, mythid ) |
587 |
|
cph CALL ADTHE_MAIN_LOOP ( mythid ) |
588 |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
589 |
# endif /* ALLOW_DIVIDED_ADJOINT */ |
# endif /* ALLOW_DIVIDED_ADJOINT */ |
590 |
c |
c |
613 |
|
|
614 |
#else /* ALL AD-related undef */ |
#else /* ALL AD-related undef */ |
615 |
|
|
616 |
#ifndef DISABLE_DEBUGMODE |
#ifdef ALLOW_DEBUG |
617 |
IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid) |
IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid) |
618 |
#endif |
#endif |
619 |
|
|
624 |
|
|
625 |
#endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */ |
#endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */ |
626 |
|
|
|
C-- Sea-ice checkpoint (in case the in-loop checkpoint was missed) |
|
|
#ifdef ALLOW_SEAICE |
|
|
IF ( useSEAICE ) |
|
|
& CALL SEAICE_WRITE_PICKUP( |
|
|
& .TRUE., myCurrentTime, myCurrentIter, myThid ) |
|
|
#endif |
|
|
|
|
627 |
C-- Final checkpoint (in case the in-loop checkpoint was missed) |
C-- Final checkpoint (in case the in-loop checkpoint was missed) |
628 |
CALL TIMER_START('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
CALL TIMER_START('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
629 |
|
CALL PACKAGES_WRITE_PICKUP( |
630 |
|
I .TRUE., myCurrentTime, myCurrentIter, myThid ) |
631 |
CALL WRITE_CHECKPOINT( |
CALL WRITE_CHECKPOINT( |
632 |
& .TRUE., myCurrentTime, myCurrentIter, myThid ) |
I .TRUE., myCurrentTime, myCurrentIter, myThid ) |
633 |
CALL TIMER_STOP ('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
634 |
|
|
635 |
CALL TIMER_STOP ('ALL [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('ALL [THE_MODEL_MAIN]',myThid) |
636 |
|
|
637 |
|
#ifdef ALLOW_MNC |
638 |
|
C Close all open NetCDF files |
639 |
|
_BEGIN_MASTER( mythid ) |
640 |
|
CALL MNC_FILE_CLOSE_ALL() |
641 |
|
_END_MASTER( mythid ) |
642 |
|
#endif |
643 |
|
|
644 |
C-- Write timer statistics |
C-- Write timer statistics |
645 |
IF ( myThid .EQ. 1 ) THEN |
IF ( myThid .EQ. 1 ) THEN |
646 |
CALL TIMER_PRINTALL( myThid ) |
CALL TIMER_PRINTALL( myThid ) |
647 |
CALL COMM_STATS |
CALL COMM_STATS |
648 |
ENDIF |
ENDIF |
649 |
|
|
650 |
#ifndef DISABLE_DEBUGMODE |
#ifdef ALLOW_DEBUG |
651 |
IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid) |
IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid) |
652 |
#endif |
#endif |
653 |
|
|