/[MITgcm]/MITgcm/model/src/the_model_main.F
ViewVC logotype

Diff of /MITgcm/model/src/the_model_main.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.59 by stephd, Mon Oct 6 20:37:30 2003 UTC revision 1.70 by jmc, Mon Dec 15 18:40:10 2003 UTC
# Line 226  C/\  | | | |                    :: for f Line 226  C/\  | | | |                    :: for f
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.
# Line 303  C/\  | | | | |-FREESURF_RESCALE_G :: Re- Line 304  C/\  | | | | |-FREESURF_RESCALE_G :: Re-
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 ).
# Line 402  C Line 402  C
402  CEOI  CEOI
403    
404    
405    #include "AD_CONFIG.h"
406    #include "PACKAGES_CONFIG.h"
407  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
408    
409  CBOP  CBOP
# Line 467  C     == Global variables === Line 469  C     == Global variables ===
469  #include "PARAMS.h"  #include "PARAMS.h"
470  #include "DYNVARS.h"  #include "DYNVARS.h"
471  #ifdef ALLOW_NONHYDROSTATIC  #ifdef ALLOW_NONHYDROSTATIC
472  #include "CG3D.h"  # include "CG3D.h"
473  #endif  #endif
474    
475    #ifdef ALLOW_ECCO_OPTIMIZATION
476    # include "optim.h"
477    #endif
478  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
479  #include "tamc.h"  # include "tamc.h"
480  #endif  #endif
481    
482  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 492  C     myCurrentIter - Iteration counter Line 497  C     myCurrentIter - Iteration counter
497        _RL     myCurrentTime        _RL     myCurrentTime
498        logical  exst        logical  exst
499        logical  lastdiva        logical  lastdiva
500    #ifndef ALLOW_ECCO_OPTIMIZATION
501          integer optimcycle
502    #endif
503  CEOP  CEOP
504  c--   set default:  c--   set default:
505    #ifndef ALLOW_ECCO_OPTIMIZATION
506          optimcycle = 0
507    #endif
508        lastdiva = .TRUE.        lastdiva = .TRUE.
509    
510  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
511        IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid)        IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid)
512  #endif  #endif
513    
514  C--   This timer encompasses the whole code  C--   This timer encompasses the whole code
515        CALL TIMER_START('ALL                    [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('ALL                    [THE_MODEL_MAIN]',myThid)
516    
517  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
518        IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid)        IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid)
519  #endif  #endif
520    
# Line 515  C--   Set model configuration (fixed arr Line 526  C--   Set model configuration (fixed arr
526        myCurrentTime = startTime        myCurrentTime = startTime
527        myCurrentIter = nIter0        myCurrentIter = nIter0
528    
529  #if ( defined (ALLOW_ADMTLM_RUN) )  #if ( defined (ALLOW_ADMTLM) )
530  c  c
531        CALL TIMER_START('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)        CALL TIMER_START('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)
532        CALL ADMTLM_DRIVER ( myThid )        CALL ADMTLM_DRIVER ( myThid )
533        CALL TIMER_STOP ('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)        CALL TIMER_STOP ('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)
534  c  c
535  #elif ( defined (ALLOW_ADJOINT_RUN) || \  #elif ( defined (ALLOW_AUTODIFF))
       defined (ALLOW_TANGENTLINEAR_RUN) || \  
       defined (ALLOW_GRADIENT_CHECK) || \  
       defined (ALLOW_ECCO_OPTIMIZATION) )  
536    
537    # ifndef EXCLUDE_CTRL_PACK
538        _BEGIN_MASTER( mythid )        _BEGIN_MASTER( mythid )
539        IF (myProcId .eq. 0) THEN        IF (myProcId .eq. 0) THEN
540           inquire( file='costfinal', exist=exst )           inquire( file='costfinal', exist=exst )
541           IF ( .NOT. exst) THEN           IF ( .NOT. exst .AND. niter0 .EQ. 0 ) THEN
542              CALL TIMER_START('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)              CALL TIMER_START('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)
543              CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid )              CALL CTRL_UNPACK( .TRUE. , mythid )
544              CALL TIMER_STOP ('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)              CALL TIMER_STOP ('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)
545                IF ( optimcycle.EQ.0 .AND. mycurrentiter.EQ.niter0 ) THEN
546                   CALL TIMER_START('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
547                   CALL CTRL_PACK( .TRUE. , mythid )
548                   CALL TIMER_STOP ('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
549                ENDIF
550           ENDIF           ENDIF
551        ENDIF        ENDIF
552        _END_MASTER( mythid )        _END_MASTER( mythid )
553        _BARRIER        _BARRIER
554    # endif /* EXCLUDE_CTRL_PACK */
555    
556        CALL COST_DEPENDENT_INIT ( mythid )        CALL COST_DEPENDENT_INIT ( mythid )
557        _BARRIER        _BARRIER
# Line 573  c-- Line 588  c--
588  c  c
589  # endif  # endif
590    
591    # ifndef EXCLUDE_CTRL_PACK
592        _BEGIN_MASTER( mythid )        _BEGIN_MASTER( mythid )
593        IF ( myProcId .eq. 0 .AND. lastdiva ) THEN        IF ( myProcId .eq. 0 .AND. lastdiva ) THEN
594           CALL TIMER_START('CTRL_PACK           [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('CTRL_PACK           [THE_MODEL_MAIN]',mythid)
595           call CTRL_PACK( mycurrentiter, mycurrenttime, mythid )           call CTRL_PACK( .FALSE. , mythid )
596           CALL TIMER_STOP ('CTRL_PACK           [THE_MODEL_MAIN]',mythid)           CALL TIMER_STOP ('CTRL_PACK           [THE_MODEL_MAIN]',mythid)
597        ENDIF        ENDIF
598        _END_MASTER( mythid )        _END_MASTER( mythid )
599        _BARRIER        _BARRIER
600  c  # endif /* EXCLUDE_CTRL_PACK */
601    
602  # ifdef ALLOW_GRADIENT_CHECK  
603    # ifdef ALLOW_GRDCHK
604        IF ( useGrdchk .AND. lastdiva ) THEN        IF ( useGrdchk .AND. lastdiva ) THEN
605           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)
606           CALL GRDCHK_MAIN( mythid )           CALL GRDCHK_MAIN( mythid )
# Line 594  c Line 611  c
611    
612  #else /* ALL AD-related undef */  #else /* ALL AD-related undef */
613    
614  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
615        IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid)        IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid)
616  #endif  #endif
617    
# Line 605  C--   Call time stepping loop of full mo Line 622  C--   Call time stepping loop of full mo
622    
623  #endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */  #endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */
624    
 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  
   
625  C--   Final checkpoint (in case the in-loop checkpoint was missed)  C--   Final checkpoint (in case the in-loop checkpoint was missed)
626        CALL TIMER_START('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)
627          CALL PACKAGES_WRITE_PICKUP(
628         I        .TRUE., myCurrentTime, myCurrentIter, myThid )
629        CALL WRITE_CHECKPOINT(        CALL WRITE_CHECKPOINT(
630       &        .TRUE., myCurrentTime, myCurrentIter, myThid )       I        .TRUE., myCurrentTime, myCurrentIter, myThid )
631        CALL TIMER_STOP ('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)        CALL TIMER_STOP ('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)
632    
633        CALL TIMER_STOP ('ALL                    [THE_MODEL_MAIN]',myThid)        CALL TIMER_STOP ('ALL                    [THE_MODEL_MAIN]',myThid)
# Line 626  C--   Write timer statistics Line 638  C--   Write timer statistics
638         CALL COMM_STATS         CALL COMM_STATS
639        ENDIF        ENDIF
640    
641  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
642        IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid)        IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid)
643  #endif  #endif
644    

Legend:
Removed from v.1.59  
changed lines
  Added in v.1.70

  ViewVC Help
Powered by ViewVC 1.1.22