502 |
myCurrentTime = startTime |
myCurrentTime = startTime |
503 |
myCurrentIter = nIter0 |
myCurrentIter = nIter0 |
504 |
|
|
505 |
#if ( defined (ALLOW_ADJOINT_RUN) || \ |
#if ( defined (ALLOW_ADMTLM_RUN) ) |
506 |
|
c |
507 |
|
CALL TIMER_START('ADMTLM_DRIVER [THE_MODEL_MAIN]',mythid) |
508 |
|
CALL ADMTLM_DRIVER ( myThid ) |
509 |
|
CALL TIMER_STOP ('ADMTLM_DRIVER [THE_MODEL_MAIN]',mythid) |
510 |
|
c |
511 |
|
#elif ( defined (ALLOW_ADJOINT_RUN) || \ |
512 |
defined (ALLOW_TANGENTLINEAR_RUN) || \ |
defined (ALLOW_TANGENTLINEAR_RUN) || \ |
513 |
defined (ALLOW_GRADIENT_CHECK) || \ |
defined (ALLOW_GRADIENT_CHECK) || \ |
514 |
defined (ALLOW_ECCO_OPTIMIZATION) ) |
defined (ALLOW_ECCO_OPTIMIZATION) ) |
528 |
CALL COST_DEPENDENT_INIT ( mythid ) |
CALL COST_DEPENDENT_INIT ( mythid ) |
529 |
_BARRIER |
_BARRIER |
530 |
|
|
531 |
#ifndef ALLOW_TANGENTLINEAR_RUN |
# if ( defined (ALLOW_TANGENTLINEAR_RUN) ) |
532 |
|
c |
533 |
|
CALL TIMER_START('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
534 |
|
CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid ) |
535 |
|
CALL TIMER_STOP ('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
536 |
|
c |
537 |
|
# elif ( defined (ALLOW_ADJOINT_RUN) || \ |
538 |
|
defined (ALLOW_ECCO_OPTIMIZATION) ) |
539 |
c |
c |
|
# if ( defined (ALLOW_ADJOINT_RUN) || \ |
|
|
defined (ALLOW_ECCO_OPTIMIZATION) ) |
|
540 |
# ifdef ALLOW_DIVIDED_ADJOINT |
# ifdef ALLOW_DIVIDED_ADJOINT |
541 |
c-- The following assumes the TAF option '-pure' |
c-- The following assumes the TAF option '-pure' |
542 |
inquire( file='costfinal', exist=exst ) |
inquire( file='costfinal', exist=exst ) |
557 |
CALL ADTHE_MAIN_LOOP ( mythid ) |
CALL ADTHE_MAIN_LOOP ( mythid ) |
558 |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
559 |
# endif /* ALLOW_DIVIDED_ADJOINT */ |
# endif /* ALLOW_DIVIDED_ADJOINT */ |
560 |
|
c |
561 |
# endif |
# endif |
|
c-- |
|
|
#else /* ALLOW_TANGENTLINEAR_RUN defined */ |
|
|
CALL TIMER_START('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
|
|
CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid ) |
|
|
CALL TIMER_STOP ('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
|
|
#endif /* ALLOW_TANGENTLINEAR_RUN */ |
|
|
_BARRIER |
|
562 |
|
|
563 |
_BEGIN_MASTER( mythid ) |
_BEGIN_MASTER( mythid ) |
564 |
IF ( myProcId .eq. 0 .AND. lastdiva ) THEN |
IF ( myProcId .eq. 0 .AND. lastdiva ) THEN |
568 |
ENDIF |
ENDIF |
569 |
_END_MASTER( mythid ) |
_END_MASTER( mythid ) |
570 |
_BARRIER |
_BARRIER |
571 |
|
c |
572 |
|
|
573 |
#ifdef ALLOW_GRADIENT_CHECK |
# ifdef ALLOW_GRADIENT_CHECK |
574 |
IF ( useGrdchk .AND. lastdiva ) THEN |
IF ( useGrdchk .AND. lastdiva ) THEN |
575 |
CALL TIMER_START('GRDCHK_MAIN [THE_MODEL_MAIN]',mythid) |
CALL TIMER_START('GRDCHK_MAIN [THE_MODEL_MAIN]',mythid) |
576 |
CALL GRDCHK_MAIN( mythid ) |
CALL GRDCHK_MAIN( mythid ) |
577 |
CALL TIMER_STOP ('GRDCHK_MAIN [THE_MODEL_MAIN]',mythid) |
CALL TIMER_STOP ('GRDCHK_MAIN [THE_MODEL_MAIN]',mythid) |
578 |
_BARRIER |
_BARRIER |
579 |
ENDIF |
ENDIF |
580 |
#endif |
# endif |
581 |
|
|
582 |
#else /* ALLOW_ADJOINT_RUN undef */ |
#else /* ALL AD-related undef */ |
583 |
|
|
584 |
#ifndef DISABLE_DEBUGMODE |
#ifndef DISABLE_DEBUGMODE |
585 |
IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid) |
IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid) |
590 |
CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid ) |
CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid ) |
591 |
CALL TIMER_STOP ('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid) |
592 |
|
|
593 |
#endif /* ALLOW_ADJOINT_RUN */ |
#endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */ |
594 |
|
|
595 |
C-- Sea-ice checkpoint (in case the in-loop checkpoint was missed) |
C-- Sea-ice checkpoint (in case the in-loop checkpoint was missed) |
596 |
#ifdef ALLOW_SEAICE |
#ifdef ALLOW_SEAICE |