/[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.60 by edhill, Thu Oct 9 04:19:18 2003 UTC revision 1.78 by edhill, Sun Jul 25 03:00:16 2004 UTC
# Line 146  C    | | | |-INI_THETA  :: Set model ini Line 146  C    | | | |-INI_THETA  :: Set model ini
146  C    | | | |-INI_SALT   :: Set model initial salinity field.  C    | | | |-INI_SALT   :: Set model initial salinity field.
147  C    | | | |-INI_PSURF  :: Set model initial free-surface height/pressure.  C    | | | |-INI_PSURF  :: Set model initial free-surface height/pressure.
148  C    | | | |-INI_PRESSURE :: Compute model initial hydrostatic pressure  C    | | | |-INI_PRESSURE :: Compute model initial hydrostatic pressure
149    C    | | | |-READ_CHECKPOINT :: Read the checkpoint
150  C    | | |  C    | | |
151  C    | | |-INI_TR1      :: Set initial tracer 1 distribution.  C    | | |-INI_TR1      :: Set initial tracer 1 distribution.
152  C    | | |  C    | | |
# Line 226  C/\  | | | |                    :: for f Line 227  C/\  | | | |                    :: for f
227  C/\  | | | |                    C/\  | | | |                  
228  C/\  | | | |-EXCH :: Sync forcing. in overlap regions.  C/\  | | | |-EXCH :: Sync forcing. in overlap regions.
229  C/\  | | |-SEAICE_MODEL   :: Compute sea-ice terms. ( pkg/seaice )  C/\  | | |-SEAICE_MODEL   :: Compute sea-ice terms. ( pkg/seaice )
230    C/\  | | |-FREEZE         :: Limit surface temperature.
231  C/\  | | |-GCHEM_FIELD_LOAD :: load tracer forcing fields (pkg/gchem)  C/\  | | |-GCHEM_FIELD_LOAD :: load tracer forcing fields (pkg/gchem)
232  C/\  | | |  C/\  | | |
233  C/\  | | |-THERMODYNAMICS :: theta, salt + tracer equations driver.  C/\  | | |-THERMODYNAMICS :: theta, salt + tracer equations driver.
# Line 303  C/\  | | | | |-FREESURF_RESCALE_G :: Re- Line 305  C/\  | | | | |-FREESURF_RESCALE_G :: Re-
305  C/\  | | | | |-TIMESTEP_TRACER    :: Step tracer field forward in time  C/\  | | | | |-TIMESTEP_TRACER    :: Step tracer field forward in time
306  C/\  | | | |  C/\  | | | |
307  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.  
308  C/\  | | | |  C/\  | | | |
309  C/\  | | | |-IMPLDIFF             :: Solve vertical implicit diffusion equation.  C/\  | | | |-IMPLDIFF             :: Solve vertical implicit diffusion equation.
310  C/\  | | | |-OBCS_APPLY_TS        :: Open bndy. package (see pkg/obcs ).  C/\  | | | |-OBCS_APPLY_TS        :: Open bndy. package (see pkg/obcs ).
# Line 378  C/\  | | | |-GMREDI_DIAGS        :: GM d Line 379  C/\  | | | |-GMREDI_DIAGS        :: GM d
379  C/\  | | | |-KPP_DO_DIAGS        :: KPP diags. see pkg/kpp  C/\  | | | |-KPP_DO_DIAGS        :: KPP diags. see pkg/kpp
380  C/\  | | | |-SBO_CALC            :: SBO diags. see pkg/sbo  C/\  | | | |-SBO_CALC            :: SBO diags. see pkg/sbo
381  C/\  | | | |-SBO_DIAGS           :: SBO diags. see pkg/sbo  C/\  | | | |-SBO_DIAGS           :: SBO diags. see pkg/sbo
382    C/\  | | | |-SEAICE_DO_DIAGS     :: SEAICE diags. see pkg/seaice
383  C/\  | | | |-GCHEM_DIAGS         :: gchem diags. see pkg/gchem  C/\  | | | |-GCHEM_DIAGS         :: gchem diags. see pkg/gchem
384  C/\  | | |  C/\  | | |
385  C/\  | | |-WRITE_CHECKPOINT :: Do I/O for restart files.  C/\  | | |-WRITE_CHECKPOINT :: Do I/O for restart files.
# Line 402  C Line 404  C
404  CEOI  CEOI
405    
406    
407    #include "AD_CONFIG.h"
408  #include "PACKAGES_CONFIG.h"  #include "PACKAGES_CONFIG.h"
409  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
410    
# Line 468  C     == Global variables === Line 471  C     == Global variables ===
471  #include "PARAMS.h"  #include "PARAMS.h"
472  #include "DYNVARS.h"  #include "DYNVARS.h"
473  #ifdef ALLOW_NONHYDROSTATIC  #ifdef ALLOW_NONHYDROSTATIC
474  #include "CG3D.h"  # include "CG3D.h"
475  #endif  #endif
476    
477    #ifdef ALLOW_ECCO_OPTIMIZATION
478    # include "optim.h"
479    #endif
480  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
481  #include "tamc.h"  # include "tamc.h"
482  #endif  #endif
483    
484  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 493  C     myCurrentIter - Iteration counter Line 499  C     myCurrentIter - Iteration counter
499        _RL     myCurrentTime        _RL     myCurrentTime
500        logical  exst        logical  exst
501        logical  lastdiva        logical  lastdiva
502    #ifndef ALLOW_ECCO_OPTIMIZATION
503          integer optimcycle
504    #endif
505  CEOP  CEOP
506  c--   set default:  c--   set default:
507    #ifndef ALLOW_ECCO_OPTIMIZATION
508          optimcycle = 0
509    #endif
510        lastdiva = .TRUE.        lastdiva = .TRUE.
511    
512  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
513        IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid)        IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid)
514  #endif  #endif
515    
516  C--   This timer encompasses the whole code  C--   This timer encompasses the whole code
517        CALL TIMER_START('ALL                    [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('ALL                    [THE_MODEL_MAIN]',myThid)
518    
519  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
520        IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid)        IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid)
521  #endif  #endif
522    
# Line 516  C--   Set model configuration (fixed arr Line 528  C--   Set model configuration (fixed arr
528        myCurrentTime = startTime        myCurrentTime = startTime
529        myCurrentIter = nIter0        myCurrentIter = nIter0
530    
531  #if ( defined (ALLOW_ADMTLM_RUN) )  #if ( defined (ALLOW_ADMTLM) )
532  c  c
533        CALL TIMER_START('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)        CALL TIMER_START('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)
534        CALL ADMTLM_DRIVER ( myThid )        CALL ADMTLM_DRIVER ( myThid )
535        CALL TIMER_STOP ('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)        CALL TIMER_STOP ('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)
536  c  c
537  #elif ( defined (ALLOW_ADJOINT_RUN) || \  #elif ( defined (ALLOW_AUTODIFF))
       defined (ALLOW_TANGENTLINEAR_RUN) || \  
       defined (ALLOW_GRADIENT_CHECK) || \  
       defined (ALLOW_ECCO_OPTIMIZATION) )  
538    
539    # ifndef EXCLUDE_CTRL_PACK
540        _BEGIN_MASTER( mythid )        _BEGIN_MASTER( mythid )
541        IF (myProcId .eq. 0) THEN        IF (myProcId .eq. 0) THEN
542           inquire( file='costfinal', exist=exst )           inquire( file='costfinal', exist=exst )
543           IF ( .NOT. exst) THEN           IF ( .NOT. exst .AND. niter0 .EQ. 0 ) THEN
544              CALL TIMER_START('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)              IF ( optimcycle.NE.0 ) THEN
545              CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid )                 CALL TIMER_START('CTRL_UNPACK   [THE_MODEL_MAIN]',mythid)
546              CALL TIMER_STOP ('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)                 CALL CTRL_UNPACK( .TRUE. , mythid )
547                   CALL TIMER_STOP ('CTRL_UNPACK   [THE_MODEL_MAIN]',mythid)
548                ENDIF
549                IF ( optimcycle.EQ.0 .AND. mycurrentiter.EQ.niter0 ) THEN
550                   CALL TIMER_START('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
551                   CALL CTRL_PACK( .TRUE. , mythid )
552                   CALL TIMER_STOP ('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
553                ENDIF
554           ENDIF           ENDIF
555        ENDIF        ENDIF
556        _END_MASTER( mythid )        _END_MASTER( mythid )
557        _BARRIER        _BARRIER
558    # endif /* EXCLUDE_CTRL_PACK */
559    
560        CALL COST_DEPENDENT_INIT ( mythid )        CALL COST_DEPENDENT_INIT ( mythid )
561        _BARRIER        _BARRIER
# Line 561  c-- The following assumes the TAF option Line 579  c-- The following assumes the TAF option
579           CALL COST_FINAL_STORE ( mythid, lastdiva )           CALL COST_FINAL_STORE ( mythid, lastdiva )
580        ELSE        ELSE
581           CALL TIMER_START('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)           CALL TIMER_START('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)
582           CALL ADTHE_MAIN_LOOP ( mythid )           CALL ADTHE_MAIN_LOOP ( myCurrentTime, myCurrentIter, mythid )
583           CALL TIMER_STOP ('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)           CALL TIMER_STOP ('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)
584           CALL COST_FINAL_RESTORE ( mythid, lastdiva )           CALL COST_FINAL_RESTORE ( mythid, lastdiva )
585        ENDIF        ENDIF
586  c--  c--
587  #  else /* ALLOW_DIVIDED_ADJOINT undef */  #  else /* ALLOW_DIVIDED_ADJOINT undef */
588        CALL TIMER_START('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)        CALL TIMER_START('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)
589        CALL ADTHE_MAIN_LOOP ( mythid )        CALL ADTHE_MAIN_LOOP ( myCurrentTime, myCurrentIter, mythid )
590    cph      CALL ADTHE_MAIN_LOOP ( mythid )
591        CALL TIMER_STOP ('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)        CALL TIMER_STOP ('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)
592  #  endif /* ALLOW_DIVIDED_ADJOINT */  #  endif /* ALLOW_DIVIDED_ADJOINT */
593  c  c
594  # endif  # endif
595    
596    # ifndef EXCLUDE_CTRL_PACK
597        _BEGIN_MASTER( mythid )        _BEGIN_MASTER( mythid )
598        IF ( myProcId .eq. 0 .AND. lastdiva ) THEN        IF ( myProcId .eq. 0 .AND. lastdiva ) THEN
599           CALL TIMER_START('CTRL_PACK           [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('CTRL_PACK           [THE_MODEL_MAIN]',mythid)
600           call CTRL_PACK( mycurrentiter, mycurrenttime, mythid )           call CTRL_PACK( .FALSE. , mythid )
601           CALL TIMER_STOP ('CTRL_PACK           [THE_MODEL_MAIN]',mythid)           CALL TIMER_STOP ('CTRL_PACK           [THE_MODEL_MAIN]',mythid)
602        ENDIF        ENDIF
603        _END_MASTER( mythid )        _END_MASTER( mythid )
604        _BARRIER        _BARRIER
605  c  # endif /* EXCLUDE_CTRL_PACK */
606    
607    
608  # ifdef ALLOW_GRADIENT_CHECK  # ifdef ALLOW_GRDCHK
609        IF ( useGrdchk .AND. lastdiva ) THEN        IF ( useGrdchk .AND. lastdiva ) THEN
610           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)
611           CALL GRDCHK_MAIN( mythid )           CALL GRDCHK_MAIN( mythid )
# Line 595  c Line 616  c
616    
617  #else /* ALL AD-related undef */  #else /* ALL AD-related undef */
618    
619  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
620        IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid)        IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid)
621  #endif  #endif
622    
# Line 606  C--   Call time stepping loop of full mo Line 627  C--   Call time stepping loop of full mo
627    
628  #endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */  #endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM_RUN */
629    
 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  
   
630  C--   Final checkpoint (in case the in-loop checkpoint was missed)  C--   Final checkpoint (in case the in-loop checkpoint was missed)
631        CALL TIMER_START('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)
632          CALL PACKAGES_WRITE_PICKUP(
633         I        .TRUE., myCurrentTime, myCurrentIter, myThid )
634        CALL WRITE_CHECKPOINT(        CALL WRITE_CHECKPOINT(
635       &        .TRUE., myCurrentTime, myCurrentIter, myThid )       I        .TRUE., myCurrentTime, myCurrentIter, myThid )
636        CALL TIMER_STOP ('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)        CALL TIMER_STOP ('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)
637    
638        CALL TIMER_STOP ('ALL                    [THE_MODEL_MAIN]',myThid)        CALL TIMER_STOP ('ALL                    [THE_MODEL_MAIN]',myThid)
639    
640    #ifdef ALLOW_MNC
641          IF (useMNC) THEN
642    C       Close all open NetCDF files
643            _BEGIN_MASTER( mythid )
644            CALL MNC_FILE_CLOSE_ALL( myThid )
645            _END_MASTER( mythid )
646          ENDIF
647    #endif
648    
649  C--   Write timer statistics  C--   Write timer statistics
650        IF ( myThid .EQ. 1 ) THEN        IF ( myThid .EQ. 1 ) THEN
651         CALL TIMER_PRINTALL( myThid )         CALL TIMER_PRINTALL( myThid )
652         CALL COMM_STATS         CALL COMM_STATS
653        ENDIF        ENDIF
654    
655  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
656        IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid)        IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid)
657  #endif  #endif
658    

Legend:
Removed from v.1.60  
changed lines
  Added in v.1.78

  ViewVC Help
Powered by ViewVC 1.1.22