460 |
CEOP |
CEOP |
461 |
|
|
462 |
C-- This timer encompasses the whole code |
C-- This timer encompasses the whole code |
463 |
CALL TIMER_START('ALL [THE_MODEL_MAIN]',myThid) |
CALL TIMER_START('ALL [THE_MODEL_MAIN]',myThid) |
464 |
|
|
465 |
C-- Set model configuration (fixed arrays) |
C-- Set model configuration (fixed arrays) |
466 |
CALL TIMER_START('INITIALISE_FIXED [THE_MODEL_MAIN]',myThid) |
CALL TIMER_START('INITIALISE_FIXED [THE_MODEL_MAIN]',myThid) |
467 |
CALL INITIALISE_FIXED( myThid ) |
CALL INITIALISE_FIXED( myThid ) |
468 |
CALL TIMER_STOP ('INITIALISE_FIXED [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('INITIALISE_FIXED [THE_MODEL_MAIN]',myThid) |
469 |
|
|
470 |
myCurrentTime = startTime |
myCurrentTime = startTime |
471 |
myCurrentIter = nIter0 |
myCurrentIter = nIter0 |
472 |
|
|
473 |
#if ( defined (ALLOW_ADJOINT_RUN) || \ |
#if ( defined (ALLOW_ADJOINT_RUN) || \ |
474 |
|
defined (ALLOW_TANGENTLINEAR_RUN) || \ |
475 |
defined (ALLOW_GRADIENT_CHECK) || \ |
defined (ALLOW_GRADIENT_CHECK) || \ |
476 |
defined (ALLOW_ECCO_OPTIMIZATION) ) |
defined (ALLOW_ECCO_OPTIMIZATION) ) |
477 |
|
|
478 |
_BEGIN_MASTER( mythid ) |
_BEGIN_MASTER( mythid ) |
479 |
IF (myProcId .eq. 0) THEN |
IF (myProcId .eq. 0) THEN |
480 |
|
CALL TIMER_START('CTRL_UNPACK [THE_MODEL_MAIN]',mythid) |
481 |
CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid ) |
CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid ) |
482 |
|
CALL TIMER_STOP ('CTRL_UNPACK [THE_MODEL_MAIN]',mythid) |
483 |
ENDIF |
ENDIF |
484 |
_END_MASTER( mythid ) |
_END_MASTER( mythid ) |
485 |
_BARRIER |
_BARRIER |
487 |
CALL COST_DEPENDENT_INIT ( mythid ) |
CALL COST_DEPENDENT_INIT ( mythid ) |
488 |
_BARRIER |
_BARRIER |
489 |
|
|
490 |
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
#if ( defined (ALLOW_ADJOINT_RUN) || \ |
491 |
|
defined (ALLOW_ECCO_OPTIMIZATION) ) |
492 |
|
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]',mythid) |
493 |
CALL ADTHE_MAIN_LOOP ( mythid ) |
CALL ADTHE_MAIN_LOOP ( mythid ) |
494 |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]',mythid) |
|
_BARRIER |
|
|
|
|
|
_BEGIN_MASTER( mythid ) |
|
|
IF (myProcId .eq. 0) THEN |
|
|
call CTRL_PACK( mycurrentiter, mycurrenttime, mythid ) |
|
|
ENDIF |
|
|
_END_MASTER( mythid ) |
|
495 |
_BARRIER |
_BARRIER |
|
|
|
|
#ifdef ALLOW_GRADIENT_CHECK |
|
|
if (useGrdchk) then |
|
|
CALL TIMER_START('GRDCHK_MAIN [ADJOINT RUN]', mythid) |
|
|
CALL GRDCHK_MAIN( mythid ) |
|
|
CALL TIMER_STOP ('GRDCHK_MAIN [ADJOINT RUN]', mythid) |
|
|
_BARRIER |
|
|
end if |
|
|
#endif |
|
|
|
|
496 |
#elif (defined (ALLOW_TANGENTLINEAR_RUN)) |
#elif (defined (ALLOW_TANGENTLINEAR_RUN)) |
497 |
|
CALL TIMER_START('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
|
_BEGIN_MASTER( mythid ) |
|
|
IF (myProcId .eq. 0) THEN |
|
|
CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid ) |
|
|
ENDIF |
|
|
_END_MASTER( mythid ) |
|
|
_BARRIER |
|
|
|
|
|
CALL COST_DEPENDENT_INIT ( mythid ) |
|
|
_BARRIER |
|
|
|
|
|
CALL TIMER_START('G_THE_MAIN_LOOP [FTL RUN]', mythid) |
|
498 |
CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid ) |
CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid ) |
499 |
CALL TIMER_STOP ('G_THE_MAIN_LOOP [FTL RUN]', mythid) |
CALL TIMER_STOP ('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
500 |
_BARRIER |
_BARRIER |
501 |
|
#endif |
502 |
|
|
503 |
_BEGIN_MASTER( mythid ) |
_BEGIN_MASTER( mythid ) |
504 |
IF (myProcId .eq. 0) THEN |
IF (myProcId .eq. 0) THEN |
505 |
|
CALL TIMER_START('CTLR_PACK [THE_MODEL_MAIN]',mythid) |
506 |
call CTRL_PACK( mycurrentiter, mycurrenttime, mythid ) |
call CTRL_PACK( mycurrentiter, mycurrenttime, mythid ) |
507 |
|
CALL TIMER_STOP ('CTLR_PACK [THE_MODEL_MAIN]',mythid) |
508 |
ENDIF |
ENDIF |
509 |
_END_MASTER( mythid ) |
_END_MASTER( mythid ) |
510 |
_BARRIER |
_BARRIER |
512 |
#else /* ALLOW_ADJOINT_RUN undef */ |
#else /* ALLOW_ADJOINT_RUN undef */ |
513 |
|
|
514 |
C-- Call time stepping loop of full model |
C-- Call time stepping loop of full model |
515 |
CALL TIMER_START('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid) |
CALL TIMER_START('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid) |
516 |
CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid ) |
CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid ) |
517 |
CALL TIMER_STOP ('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid) |
518 |
|
|
519 |
#endif /* ALLOW_ADJOINT_RUN */ |
#endif /* ALLOW_ADJOINT_RUN */ |
520 |
|
|
521 |
|
#ifdef ALLOW_GRADIENT_CHECK |
522 |
|
if (useGrdchk) then |
523 |
|
CALL TIMER_START('GRDCHK_MAIN [THE_MODEL_MAIN]',mythid) |
524 |
|
CALL GRDCHK_MAIN( mythid ) |
525 |
|
CALL TIMER_STOP ('GRDCHK_MAIN [THE_MODEL_MAIN]',mythid) |
526 |
|
_BARRIER |
527 |
|
end if |
528 |
|
#endif |
529 |
|
|
530 |
C-- Final checkpoint (incase the in-loop checkpoint was missed) |
C-- Final checkpoint (incase the in-loop checkpoint was missed) |
531 |
CALL TIMER_START('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
CALL TIMER_START('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
532 |
CALL WRITE_CHECKPOINT( |
CALL WRITE_CHECKPOINT( |
533 |
& .TRUE., myCurrentTime, myCurrentIter, myThid ) |
& .TRUE., myCurrentTime, myCurrentIter, myThid ) |
534 |
CALL TIMER_STOP ('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('WRITE_CHECKPOINT [THE_MODEL_MAIN]',myThid) |
535 |
|
|
536 |
CALL TIMER_STOP ('ALL [THE_MODEL_MAIN]',myThid) |
CALL TIMER_STOP ('ALL [THE_MODEL_MAIN]',myThid) |
537 |
|
|
538 |
C-- Write timer statistics |
C-- Write timer statistics |
539 |
IF ( myThid .EQ. 1 ) THEN |
IF ( myThid .EQ. 1 ) THEN |