/[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.62 by dimitri, Thu Oct 23 07:14:49 2003 UTC revision 1.74 by dimitri, Tue Mar 2 08:45:46 2004 UTC
# Line 174  C    | | | |-FIND_RHO  :: Find adjacent Line 174  C    | | | |-FIND_RHO  :: Find adjacent
174  C    | | | |-CONVECT   :: Mix static instability.  C    | | | |-CONVECT   :: Mix static instability.
175  C    | | | |-TIMEAVE_CUMULATE :: Update convection statistics.  C    | | | |-TIMEAVE_CUMULATE :: Update convection statistics.
176  C    | | |  C    | | |
177  C    | | |-PACKAGES_INIT_VARIABLES:: Does initialisation of time evolving  C    | | |-PACKAGES_INIT_VARIABLES :: Does initialisation of time evolving
178  C    | | | |                         package data.  C    | | | |                       :: package data.
179  C    | | | |  C    | | | |
180  C    | | | |-GMREDI_INIT          :: GM package ( see pkg/gmredi ).  C    | | | |-GMREDI_INIT          :: GM package. ( see pkg/gmredi )
181  C    | | | |-KPP_INIT             :: KPP package ( see pkg/kpp ).  C    | | | |-KPP_INIT             :: KPP package. ( see pkg/kpp )
182  C    | | | |-KPP_OPEN_DIAGS      C    | | | |-KPP_OPEN_DIAGS    
183  C    | | | |-OBCS_INIT_VARIABLES  :: Open bndy. package ( see pkg/obcs ).  C    | | | |-OBCS_INIT_VARIABLES  :: Open bndy. package. ( see pkg/obcs )
184  C    | | | |-PTRACERS_INIT        :: Multi tracer package ( see pkg/ptracers ).  C    | | | |-PTRACERS_INIT        :: multi. tracer package,(see pkg/ptracers)
185  C    | | | |-GCHEM_INIT           :: Tracer interface pkg ( see pkh/gchem ).  C    | | | |-GCHEM_INIT           : : tracer interface pkg (see pkh/gchem)
186  C    | | | |-AIM_INIT             :: Interm. atmos package ( see pkg/aim ).  C    | | | |-AIM_INIT             :: Interm. atmos package. ( see pkg/aim )
187  C    | | | |-CTRL_MAP_INI         :: Control vector package( see pkg/ctrl ).  C    | | | |-CTRL_MAP_INI         :: Control vector package.( see pkg/ctrl )
188  C    | | | |-COST_INIT            :: Cost function package ( see pkg/cost ).  C    | | | |-COST_INIT            :: Cost function package. ( see pkg/cost )
189  C    | | | |-ECCO_INIT            :: ECCO support package ( see pkg/ecco ).  C    | | | |-ECCO_INIT            :: ECCO support package. ( see pkg/ecco )
190  C    | | | |-INI_FORCING          :: Set model initial forcing fields.  C    | | | |-INI_FORCING          :: Set model initial forcing fields.
191  C    | | |   |                    :: Either set in-line or from file as shown.  C    | | |   |                    :: Either set in-line or from file as shown.
192  C    | | |   |-READ_FLD_XY_RS(zonalWindFile)  C    | | |   |-READ_FLD_XY_RS(zonalWindFile)
# Line 214  C====|>| **************************** Line 214  C====|>| ****************************
214  C====|>| BEGIN MAIN TIMESTEPPING LOOP  C====|>| BEGIN MAIN TIMESTEPPING LOOP
215  C====|>| ****************************  C====|>| ****************************
216  C====|>|  C====|>|
217  C/\  | |-FORWARD_STEP             :: Step forward a time-step ( AT LAST !!! ).  C/\  | |-FORWARD_STEP     :: Step forward a time-step ( AT LAST !!! )
218  C/\  | | |  C/\  | | |
219  C/\  | | |-DUMMY_IN_STEPPING      :: Autodiff package ( pkg/autoduff ).  C/\  | | |-DUMMY_IN_STEPPING :: autodiff package ( pkg/autoduff ).
220  C/\  | | |-CALC_EXACT_ETA         :: Change SSH to flow divergence.  C/\  | | |-CALC_EXACT_ETA :: Change SSH to flow divergence.
221  C/\  | | |-CALC_SURF_DR           :: Calculate the new surface level thickness.  C/\  | | |-CALC_SURF_DR   :: Calculate the new surface level thickness.
222  C/\  | | |-EXF_GETFORCING         :: External forcing package ( pkg/exf ).  C/\  | | |-EXF_GETFORCING :: External forcing package. ( pkg/exf )
223  C/\  | | |-EXTERNAL_FIELDS_LOAD   :: Control loading time dep. external data.  C/\  | | |-EXTERNAL_FIELDS_LOAD :: Control loading time dep. external data.
224  C/\  | | | |                         Simple interpolcation between end-points  C/\  | | | |                    :: Simple interpolcation between end-points
225  C/\  | | | |                         for forcing datasets.  C/\  | | | |                    :: for forcing datasets.
226  C/\  | | | |-EXCH                 :: Sync forcing in overlap regions.  C/\  | | | |                  
227  C/\  | | |-SEAICE_MODEL           :: Compute sea-ice terms ( pkg/seaice ).  C/\  | | | |-EXCH :: Sync forcing. in overlap regions.
228  C/\  | | |-FREEZE                 :: Limit surface temperature.  C/\  | | |-SEAICE_MODEL   :: Compute sea-ice terms. ( pkg/seaice )
229  C/\  | | |-EXTERNAL_FORCING_SURF  :: Accumulates appropriately dimensioned  C/\  | | |-FREEZE         :: Limit surface temperature.
230  C/\  | | | |                         forcing terms.  C/\  | | |-GCHEM_FIELD_LOAD :: load tracer forcing fields (pkg/gchem)
231  C/\  | | | |-PTRACERS_FORCING_SURF:: Tracer package ( see pkg/ptracers ).  C/\  | | |
232  C/\  | | |-GCHEM_FIELD_LOAD       :: Load tracer forcing fields ( pkg/gchem ).  C/\  | | |-THERMODYNAMICS :: theta, salt + tracer equations driver.
233  C/\  | | |  C/\  | | | |
234  C/\  | | |-THERMODYNAMICS         :: theta, salt + tracer equations driver.  C/\  | | | |-INTEGRATE_FOR_W :: Integrate for vertical velocity.
235  C/\  | | | |  C/\  | | | |-OBCS_APPLY_W    :: Open bndy. package ( see pkg/obcs ).
236  C/\  | | | |-INTEGRATE_FOR_W      :: Integrate for vertical velocity.  C/\  | | | |-FIND_RHO        :: Calculates [rho(S,T,z)-RhoConst] of a slice
237  C/\  | | | |-OBCS_APPLY_W         :: Open bndy. package ( see pkg/obcs ).  C/\  | | | |-GRAD_SIGMA      :: Calculate isoneutral gradients
238  C/\  | | | |-FIND_RHO             :: Calculates [rho(S,T,z)-RhoConst] of a slice  C/\  | | | |-CALC_IVDC       :: Set Implicit Vertical Diffusivity for Convection
 C/\  | | | |-GRAD_SIGMA           :: Calculate isoneutral gradients  
 C/\  | | | |-CALC_IVDC            :: Set Implicit Vertical Diffusivity for Convection  
239  C/\  | | | |  C/\  | | | |
240  C/\  | | | |-OBCS_CALC            :: Open bndy. package ( see pkg/obcs ).  C/\  | | | |-OBCS_CALC            :: Open bndy. package ( see pkg/obcs ).
241    C/\  | | | |-EXTERNAL_FORCING_SURF:: Accumulates appropriately dimensioned
242    C/\  | | | | |                    :: forcing terms.
243    C/\  | | | | |-PTRACERS_FORCING_SURF :: Tracer package ( see pkg/ptracers ).
244  C/\  | | | |  C/\  | | | |
245  C/\  | | | |-GMREDI_CALC_TENSOR   :: GM package ( see pkg/gmredi ).  C/\  | | | |-GMREDI_CALC_TENSOR   :: GM package ( see pkg/gmredi ).
246  C/\  | | | |-GMREDI_CALC_TENSOR_DUMMY :: GM package ( see pkg/gmredi ).  C/\  | | | |-GMREDI_CALC_TENSOR_DUMMY :: GM package ( see pkg/gmredi ).
# Line 289  C/\  | | | | |-FREESURF_RESCALE_G :: Re- Line 290  C/\  | | | | |-FREESURF_RESCALE_G :: Re-
290  C/\  | | | |  C/\  | | | |
291  C/\  | | | |-TIMESTEP_TRACER      :: Step tracer field forward in time  C/\  | | | |-TIMESTEP_TRACER      :: Step tracer field forward in time
292  C/\  | | | |  C/\  | | | |
293  C/\  | | | |-PTRACERS_INTEGRATE   :: Integrate other tracer(s) ( pkg/ptracers ).  C/\  | | | |-PTRACERS_INTEGRATE   :: Integrate other tracer(s) ( see pkg/ptracers ).
294  C/\  | | | | |  C/\  | | | | |
295  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package
296  C/\  | | | | | |                  :: ( see pkg/gad )  C/\  | | | | | |                  :: ( see pkg/gad )
# Line 307  C/\  | | | | Line 308  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 ).
310  C/\  | | | |  C/\  | | | |
311  C/\  | | | |-AIM_AIM2DYN_EXCHANGES:: Intermediate atmosphere (see pkg/aim).  C/\  | | | |-AIM_AIM2DYN_EXCHANGES :: Inetermed. atmos (see pkg/aim).
312  C/\  | | | |-EXCH                 :: Update overlaps  C/\  | | | |-EXCH                 :: Update overlaps
313  C/\  | | |  C/\  | | |
314  C/\  | | |-DYNAMICS             :: Momentum equations driver.  C/\  | | |-DYNAMICS       :: Momentum equations driver.
315  C/\  | | | |  C/\  | | | |
316  C/\  | | | |-CALC_GRAD_PHI_SURF :: Calculate the gradient of the surface  C/\  | | | |-CALC_GRAD_PHI_SURF :: Calculate the gradient of the surface
317  C/\  | | | |                       Potential anomaly.  C/\  | | | |                       Potential anomaly.
# Line 377  C/\  | | | |-GMREDI_DIAGS        :: GM d Line 378  C/\  | | | |-GMREDI_DIAGS        :: GM d
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.
# Line 468  C     == Global variables === Line 470  C     == Global variables ===
470  #include "PARAMS.h"  #include "PARAMS.h"
471  #include "DYNVARS.h"  #include "DYNVARS.h"
472  #ifdef ALLOW_NONHYDROSTATIC  #ifdef ALLOW_NONHYDROSTATIC
473  #include "CG3D.h"  # include "CG3D.h"
474  #endif  #endif
475    
476    #ifdef ALLOW_ECCO_OPTIMIZATION
477    # include "optim.h"
478    #endif
479  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
480  #include "tamc.h"  # include "tamc.h"
481  #endif  #endif
482    
483  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 493  C     myCurrentIter - Iteration counter Line 498  C     myCurrentIter - Iteration counter
498        _RL     myCurrentTime        _RL     myCurrentTime
499        logical  exst        logical  exst
500        logical  lastdiva        logical  lastdiva
501    #ifndef ALLOW_ECCO_OPTIMIZATION
502          integer optimcycle
503    #endif
504  CEOP  CEOP
505  c--   set default:  c--   set default:
506    #ifndef ALLOW_ECCO_OPTIMIZATION
507          optimcycle = 0
508    #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    
# Line 516  C--   Set model configuration (fixed arr Line 527  C--   Set model configuration (fixed arr
527        myCurrentTime = startTime        myCurrentTime = startTime
528        myCurrentIter = nIter0        myCurrentIter = nIter0
529    
530  #if ( defined (ALLOW_ADMTLM_RUN) )  #if ( defined (ALLOW_ADMTLM) )
531  c  c
532        CALL TIMER_START('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)        CALL TIMER_START('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)
533        CALL ADMTLM_DRIVER ( myThid )        CALL ADMTLM_DRIVER ( myThid )
534        CALL TIMER_STOP ('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)        CALL TIMER_STOP ('ADMTLM_DRIVER          [THE_MODEL_MAIN]',mythid)
535  c  c
536  #elif ( defined (ALLOW_ADJOINT_RUN) || \  #elif ( defined (ALLOW_AUTODIFF))
       defined (ALLOW_TANGENTLINEAR_RUN) || \  
       defined (ALLOW_GRADIENT_CHECK) || \  
       defined (ALLOW_ECCO_OPTIMIZATION) )  
537    
538    # ifndef EXCLUDE_CTRL_PACK
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( mycurrentiter, mycurrenttime, 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)
546                IF ( optimcycle.EQ.0 .AND. mycurrentiter.EQ.niter0 ) THEN
547                   CALL TIMER_START('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
548                   CALL CTRL_PACK( .TRUE. , mythid )
549                   CALL TIMER_STOP ('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
550                ENDIF
551           ENDIF           ENDIF
552        ENDIF        ENDIF
553        _END_MASTER( mythid )        _END_MASTER( mythid )
554        _BARRIER        _BARRIER
555    # endif /* EXCLUDE_CTRL_PACK */
556    
557        CALL COST_DEPENDENT_INIT ( mythid )        CALL COST_DEPENDENT_INIT ( mythid )
558        _BARRIER        _BARRIER
# Line 561  c-- The following assumes the TAF option Line 576  c-- The following assumes the TAF option
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
591  # endif  # endif
592    
593    # ifndef EXCLUDE_CTRL_PACK
594        _BEGIN_MASTER( mythid )        _BEGIN_MASTER( mythid )
595        IF ( myProcId .eq. 0 .AND. lastdiva ) THEN        IF ( myProcId .eq. 0 .AND. lastdiva ) THEN
596           CALL TIMER_START('CTRL_PACK           [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('CTRL_PACK           [THE_MODEL_MAIN]',mythid)
597           call CTRL_PACK( mycurrentiter, mycurrenttime, mythid )           call CTRL_PACK( .FALSE. , mythid )
598           CALL TIMER_STOP ('CTRL_PACK           [THE_MODEL_MAIN]',mythid)           CALL TIMER_STOP ('CTRL_PACK           [THE_MODEL_MAIN]',mythid)
599        ENDIF        ENDIF
600        _END_MASTER( mythid )        _END_MASTER( mythid )
601        _BARRIER        _BARRIER
602  c  # endif /* EXCLUDE_CTRL_PACK */
603    
604    
605  # ifdef ALLOW_GRADIENT_CHECK  # ifdef ALLOW_GRDCHK
606        IF ( useGrdchk .AND. lastdiva ) THEN        IF ( useGrdchk .AND. lastdiva ) THEN
607           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)
608           CALL GRDCHK_MAIN( mythid )           CALL GRDCHK_MAIN( mythid )
# Line 595  c Line 613  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    
# Line 606  C--   Call time stepping loop of full mo Line 624  C--   Call time stepping loop of full mo
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    

Legend:
Removed from v.1.62  
changed lines
  Added in v.1.74

  ViewVC Help
Powered by ViewVC 1.1.22