/[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.53 by heimbach, Fri Mar 7 05:51:52 2003 UTC revision 1.103 by jmc, Tue Dec 4 23:43:36 2007 UTC
# Line 34  C  : Line 34  C  :
34  C  |  C  |
35  C  |-THE_MODEL_MAIN :: Primary driver for the MITgcm algorithm  C  |-THE_MODEL_MAIN :: Primary driver for the MITgcm algorithm
36  C    |              :: Called from WRAPPER level numerical  C    |              :: Called from WRAPPER level numerical
37  C    |              :: code innvocation routine. On entry  C    |              :: code invocation routine. On entry
38  C    |              :: to THE_MODEL_MAIN separate thread and  C    |              :: to THE_MODEL_MAIN separate thread and
39  C    |              :: separate processes will have been established.  C    |              :: separate processes will have been established.
40  C    |              :: Each thread and process will have a unique ID  C    |              :: Each thread and process will have a unique ID
# Line 43  C    |              :: specific region i Line 43  C    |              :: specific region i
43  C    |  C    |
44  C    |-INITIALISE_FIXED :: Set fixed model arrays such as topography,  C    |-INITIALISE_FIXED :: Set fixed model arrays such as topography,
45  C    | |                :: grid, solver matrices etc..  C    | |                :: grid, solver matrices etc..
46  C    | |                C    | |
47  C    | |-INI_PARMS :: Routine to set kernel model parameters.  C    | |-INI_PARMS :: Routine to set kernel model parameters.
48  C    | |           :: By default kernel parameters are read from file  C    | |           :: By default kernel parameters are read from file
49  C    | |           :: "data" in directory in which code executes.  C    | |           :: "data" in directory in which code executes.
50  C    | |  C    | |
51  C    | |-MON_INIT :: Initialises monitor pacakge ( see pkg/monitor )  C    | |-MON_INIT :: Initializes monitor package ( see pkg/monitor )
52  C    | |  C    | |
53  C    | |-INI_GRID :: Control grid array (vert. and hori.) initialisation.  C    | |-INI_GRID :: Control grid array (vert. and hori.) initialization.
54  C    | | |        :: Grid arrays are held and described in GRID.h.  C    | | |        :: Grid arrays are held and described in GRID.h.
55  C    | | |  C    | | |
56  C    | | |-INI_VERTICAL_GRID        :: Initialise vertical grid arrays.  C    | | |-INI_VERTICAL_GRID        :: Initialize vertical grid arrays.
57  C    | | |  C    | | |
58  C    | | |-INI_CARTESIAN_GRID       :: Cartesian horiz. grid initialisation  C    | | |-INI_CARTESIAN_GRID       :: Cartesian horiz. grid initialization
59  C    | | |                          :: (calculate grid from kernel parameters).  C    | | |                          :: (calculate grid from kernel parameters).
60  C    | | |  C    | | |
61  C    | | |-INI_SPHERICAL_POLAR_GRID :: Spherical polar horiz. grid  C    | | |-INI_SPHERICAL_POLAR_GRID :: Spherical polar horiz. grid
62  C    | | |                          :: initialisation (calculate grid from  C    | | |                          :: initialization (calculate grid from
63  C    | | |                          :: kernel parameters).  C    | | |                          :: kernel parameters).
64  C    | | |  C    | | |
65  C    | | |-INI_CURVILINEAR_GRID     :: General orthogonal, structured horiz.  C    | | |-INI_CURVILINEAR_GRID     :: General orthogonal, structured horiz.
66  C    | |                            :: grid initialisations. ( input from raw  C    | |                            :: grid initializations. ( input from raw
67  C    | |                            :: grid files, LONC.bin, DXF.bin etc... )  C    | |                            :: grid files, LONC.bin, DXF.bin etc... )
68  C    | |  C    | |
69  C    | |-INI_DEPTHS    :: Read (from "bathyFile") or set bathymetry/orgography.  C    | |-INI_DEPTHS    :: Read (from "bathyFile") or set bathymetry/orgography.
# Line 74  C    | | Line 74  C    | |
74  C    | |-INI_LINEAR_PHSURF :: Set ref. surface Bo_surf  C    | |-INI_LINEAR_PHSURF :: Set ref. surface Bo_surf
75  C    | |  C    | |
76  C    | |-INI_CORI          :: Set coriolis term. zero, f-plane, beta-plane,  C    | |-INI_CORI          :: Set coriolis term. zero, f-plane, beta-plane,
77  C    | |                   :: sphere optins are coded.  C    | |                   :: sphere options are coded.
78  C    | |  C    | |
79  C    | |-PACAKGES_BOOT      :: Start up the optional package environment.  C    | |-PACAKGES_BOOT      :: Start up the optional package environment.
80  C    | |                    :: Runtime selection of active packages.  C    | |                    :: Runtime selection of active packages.
# Line 91  C    | | |-CTRL_INIT           :: Contro Line 91  C    | | |-CTRL_INIT           :: Contro
91  C    | | |-OPTIM_READPARMS     :: Optimisation support package. see pkg/ctrl  C    | | |-OPTIM_READPARMS     :: Optimisation support package. see pkg/ctrl
92  C    | | |-GRDCHK_READPARMS    :: Gradient check package. see pkg/grdchk  C    | | |-GRDCHK_READPARMS    :: Gradient check package. see pkg/grdchk
93  C    | | |-ECCO_READPARMS      :: ECCO Support Package. see pkg/ecco  C    | | |-ECCO_READPARMS      :: ECCO Support Package. see pkg/ecco
94    C    | | |-PTRACERS_READPARMS  :: multiple tracer package, see pkg/ptracers
95    C    | | |-GCHEM_READPARMS     :: tracer interface package, see pkg/gchem
96  C    | |  C    | |
97  C    | |-PACKAGES_CHECK  C    | |-PACKAGES_CHECK
98  C    | | |  C    | | |
# Line 101  C    | | Line 103  C    | |
103  C    | |-PACKAGES_INIT_FIXED  C    | |-PACKAGES_INIT_FIXED
104  C    | | |-OBCS_INIT_FIXED     :: Open bndy Package. see pkg/obcs  C    | | |-OBCS_INIT_FIXED     :: Open bndy Package. see pkg/obcs
105  C    | | |-FLT_INIT            :: Floats Package. see pkg/flt  C    | | |-FLT_INIT            :: Floats Package. see pkg/flt
106    C    | | |-GCHEM_INIT_FIXED    :: tracer interface pachage, see pkg/gchem
107  C    | |  C    | |
108  C    | |-ZONAL_FILT_INIT       :: FFT filter Package. see pkg/zonal_filt  C    | |-ZONAL_FILT_INIT       :: FFT filter Package. see pkg/zonal_filt
109  C    | |  C    | |
110  C    | |-INI_CG2D              :: 2d con. grad solver initialisation.  C    | |-INI_CG2D              :: 2d con. grad solver initialization.
111  C    | |  C    | |
112  C    | |-INI_CG3D              :: 3d con. grad solver initialisation.  C    | |-INI_CG3D              :: 3d con. grad solver initialization.
113  C    | |  C    | |
114  C    | |-CONFIG_SUMMARY        :: Provide synopsis of kernel setup.  C    | |-CONFIG_SUMMARY        :: Provide synopsis of kernel setup.
115  C    |                         :: Includes annotated table of kernel  C    |                         :: Includes annotated table of kernel
# Line 115  C    | Line 118  C    |
118  C    |-CTRL_UNPACK :: Control vector support package. see pkg/ctrl  C    |-CTRL_UNPACK :: Control vector support package. see pkg/ctrl
119  C    |  C    |
120  C    |-ADTHE_MAIN_LOOP :: Derivative evaluating form of main time stepping loop  C    |-ADTHE_MAIN_LOOP :: Derivative evaluating form of main time stepping loop
121  C    !                 :: Auotmatically gerenrated by TAMC/TAF.  C    !                 :: Auotmatically generated by TAMC/TAF.
122  C    |  C    |
123  C    |-CTRL_PACK   :: Control vector support package. see pkg/ctrl  C    |-CTRL_PACK   :: Control vector support package. see pkg/ctrl
124  C    |  C    |
# Line 129  C    | | | Line 132  C    | | |
132  C    | | |-INI_LINEAR_PHISURF :: Set ref. surface Bo_surf  C    | | |-INI_LINEAR_PHISURF :: Set ref. surface Bo_surf
133  C    | | |  C    | | |
134  C    | | |-INI_CORI     :: Set coriolis term. zero, f-plane, beta-plane,  C    | | |-INI_CORI     :: Set coriolis term. zero, f-plane, beta-plane,
135  C    | | |              :: sphere optins are coded.  C    | | |              :: sphere options are coded.
136  C    | | |  C    | | |
137  C    | | |-INI_CG2D     :: 2d con. grad solver initialisation.  C    | | |-INI_CG2D     :: 2d con. grad solver initialization.
138  C    | | |-INI_CG3D     :: 3d con. grad solver initialisation.  C    | | |-INI_CG3D     :: 3d con. grad solver initialization.
139  C    | | |-INI_MIXING   :: Initialise diapycnal diffusivity.  C    | | |-INI_MIXING   :: Initialize diapycnal diffusivity.
140  C    | | |-INI_DYNVARS  :: Initialise to zero all DYNVARS.h arrays (dynamical  C    | | |-INI_DYNVARS  :: Initialize to zero all DYNVARS.h arrays (dynamical
141  C    | | |              :: fields).  C    | | |              :: fields).
142  C    | | |  C    | | |
143  C    | | |-INI_FIELDS   :: Control initialising model fields to non-zero  C    | | |-INI_FIELDS   :: Control initializing model fields to non-zero
144  C    | | | |-INI_VEL    :: Initialize 3D flow field.  C    | | | |-INI_VEL    :: Initialize 3D flow field.
145  C    | | | |-INI_THETA  :: Set model initial temperature field.  C    | | | |-INI_THETA  :: Set model initial temperature field.
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    | | |  C    | | | |-READ_CHECKPOINT :: Read the checkpoint
 C    | | |-INI_TR1      :: Set initial tracer 1 distribution.  
150  C    | | |  C    | | |
151  C    | | |-THE_CORRECTION_STEP :: Step forward to next time step.  C    | | |-THE_CORRECTION_STEP :: Step forward to next time step.
152  C    | | | |                   :: Here applied to move restart conditions  C    | | | |                   :: Here applied to move restart conditions
# Line 161  C    | | | |-CONVECTIVE_ADJUSTMENT :: Co Line 163  C    | | | |-CONVECTIVE_ADJUSTMENT :: Co
163  C    | | | | |-FIND_RHO  :: Find adjacent densities.  C    | | | | |-FIND_RHO  :: Find adjacent densities.
164  C    | | | | |-CONVECT   :: Mix static instability.  C    | | | | |-CONVECT   :: Mix static instability.
165  C    | | | | |-TIMEAVE_CUMULATE :: Update convection statistics.  C    | | | | |-TIMEAVE_CUMULATE :: Update convection statistics.
166  C    | | | |  C    | | | |
167  C    | | | |-CALC_EXACT_ETA        :: Change SSH to flow divergence.      C    | | | |-CALC_EXACT_ETA        :: Change SSH to flow divergence.
168  C    | | |  C    | | |
169  C    | | |-CONVECTIVE_ADJUSTMENT_INI :: Control static instability mixing  C    | | |-CONVECTIVE_ADJUSTMENT_INI :: Control static instability mixing
170  C    | | | |                         :: Extra time history interactions.  C    | | | |                         :: Extra time history interactions.
171  C    | | | |                        C    | | | |
172  C    | | | |-FIND_RHO  :: Find adjacent densities.  C    | | | |-FIND_RHO  :: Find adjacent densities.
173  C    | | | |-CONVECT   :: Mix static instability.  C    | | | |-CONVECT   :: Mix static instability.
174  C    | | | |-TIMEAVE_CUMULATE :: Update convection statistics.  C    | | | |-TIMEAVE_CUMULATE :: Update convection statistics.
175  C    | | |  C    | | |
176  C    | | |-PACKAGES_INIT_VARIABLES :: Does initialisation of time evolving  C    | | |-PACKAGES_INIT_VARIABLES :: Does initialization of time evolving
177  C    | | | |                       :: package data.  C    | | | |                       :: package data.
178  C    | | | |  C    | | | |
179  C    | | | |-GMREDI_INIT          :: GM package. ( see pkg/gmredi )  C    | | | |-GMREDI_INIT          :: GM package. ( see pkg/gmredi )
180  C    | | | |-KPP_INIT             :: KPP package. ( see pkg/kpp )  C    | | | |-KPP_INIT             :: KPP package. ( see pkg/kpp )
181  C    | | | |-KPP_OPEN_DIAGS      C    | | | |-KPP_OPEN_DIAGS
182  C    | | | |-OBCS_INIT_VARIABLES  :: Open bndy. package. ( see pkg/obcs )  C    | | | |-OBCS_INIT_VARIABLES  :: Open bndy. package. ( see pkg/obcs )
183    C    | | | |-PTRACERS_INIT        :: multi. tracer package,(see pkg/ptracers)
184    C    | | | |-GCHEM_INIT           :: tracer interface pkg (see pkh/gchem)
185  C    | | | |-AIM_INIT             :: Interm. atmos package. ( see pkg/aim )  C    | | | |-AIM_INIT             :: Interm. atmos package. ( see pkg/aim )
186  C    | | | |-CTRL_MAP_INI         :: Control vector package.( see pkg/ctrl )  C    | | | |-CTRL_MAP_INI         :: Control vector package.( see pkg/ctrl )
187  C    | | | |-COST_INIT            :: Cost function package. ( see pkg/cost )  C    | | | |-COST_INIT            :: Cost function package. ( see pkg/cost )
# Line 216  C/\  | | |-CALC_EXACT_ETA :: Change SSH Line 220  C/\  | | |-CALC_EXACT_ETA :: Change SSH
220  C/\  | | |-CALC_SURF_DR   :: Calculate the new surface level thickness.  C/\  | | |-CALC_SURF_DR   :: Calculate the new surface level thickness.
221  C/\  | | |-EXF_GETFORCING :: External forcing package. ( pkg/exf )  C/\  | | |-EXF_GETFORCING :: External forcing package. ( pkg/exf )
222  C/\  | | |-EXTERNAL_FIELDS_LOAD :: Control loading time dep. external data.  C/\  | | |-EXTERNAL_FIELDS_LOAD :: Control loading time dep. external data.
223  C/\  | | | |                    :: Simple interpolcation between end-points  C/\  | | | |                    :: Simple interpolation between end-points
224  C/\  | | | |                    :: for forcing datasets.  C/\  | | | |                    :: for forcing datasets.
225  C/\  | | | |                    C/\  | | | |
226  C/\  | | | |-EXCH :: Sync forcing. in overlap regions.  C/\  | | | |-EXCH :: Sync forcing. in overlap regions.
227  C/\  | | |-SEAICE_MODEL   :: Compute sea-ice terms. ( pkg/seaice )  C/\  | | |-SEAICE_MODEL   :: Compute sea-ice terms. ( pkg/seaice )
228    C/\  | | |-FREEZE         :: Limit surface temperature.
229    C/\  | | |-GCHEM_FIELD_LOAD :: load tracer forcing fields (pkg/gchem)
230  C/\  | | |  C/\  | | |
231  C/\  | | |-THERMODYNAMICS :: theta, salt + tracer equations driver.  C/\  | | |-THERMODYNAMICS :: theta, salt + tracer equations driver.
232  C/\  | | | |  C/\  | | | |
# Line 232  C/\  | | | |-CALC_IVDC       :: Set Impl Line 238  C/\  | | | |-CALC_IVDC       :: Set Impl
238  C/\  | | | |  C/\  | | | |
239  C/\  | | | |-OBCS_CALC            :: Open bndy. package ( see pkg/obcs ).  C/\  | | | |-OBCS_CALC            :: Open bndy. package ( see pkg/obcs ).
240  C/\  | | | |-EXTERNAL_FORCING_SURF:: Accumulates appropriately dimensioned  C/\  | | | |-EXTERNAL_FORCING_SURF:: Accumulates appropriately dimensioned
241  C/\  | | | |                      :: forcing terms.  C/\  | | | | |                    :: forcing terms.
242    C/\  | | | | |-PTRACERS_FORCING_SURF :: Tracer package ( see pkg/ptracers ).
243  C/\  | | | |  C/\  | | | |
244  C/\  | | | |-GMREDI_CALC_TENSOR   :: GM package ( see pkg/gmredi ).  C/\  | | | |-GMREDI_CALC_TENSOR   :: GM package ( see pkg/gmredi ).
245  C/\  | | | |-GMREDI_CALC_TENSOR_DUMMY :: GM package ( see pkg/gmredi ).  C/\  | | | |-GMREDI_CALC_TENSOR_DUMMY :: GM package ( see pkg/gmredi ).
# Line 250  C/\  | | | | Line 257  C/\  | | | |
257  C/\  | | | |-CALC_GT              :: Calculate the temperature tendency terms  C/\  | | | |-CALC_GT              :: Calculate the temperature tendency terms
258  C/\  | | | | |  C/\  | | | | |
259  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package
260  C/\  | | | | |                    :: ( see pkg/gad )  C/\  | | | | | |                  :: ( see pkg/gad )
261    C/\  | | | | | |-KPP_TRANSPORT_T  :: KPP non-local transport ( see pkg/kpp ).
262    C/\  | | | | |
263  C/\  | | | | |-EXTERNAL_FORCING_T :: Problem specific forcing for temperature.  C/\  | | | | |-EXTERNAL_FORCING_T :: Problem specific forcing for temperature.
264  C/\  | | | | |-ADAMS_BASHFORTH2   :: Extrapolate tendencies forward in time.  C/\  | | | | |-ADAMS_BASHFORTH2   :: Extrapolate tendencies forward in time.
265  C/\  | | | | |-FREESURF_RESCALE_G :: Re-scale Gt for free-surface height.  C/\  | | | | |-FREESURF_RESCALE_G :: Re-scale Gt for free-surface height.
# Line 260  C/\  | | | | Line 269  C/\  | | | |
269  C/\  | | | |-CALC_GS              :: Calculate the salinity tendency terms  C/\  | | | |-CALC_GS              :: Calculate the salinity tendency terms
270  C/\  | | | | |  C/\  | | | | |
271  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package
272  C/\  | | | | |                    :: ( see pkg/gad )  C/\  | | | | | |                  :: ( see pkg/gad )
273    C/\  | | | | | |-KPP_TRANSPORT_S  :: KPP non-local transport ( see pkg/kpp ).
274    C/\  | | | | |
275  C/\  | | | | |-EXTERNAL_FORCING_S :: Problem specific forcing for salt.  C/\  | | | | |-EXTERNAL_FORCING_S :: Problem specific forcing for salt.
276  C/\  | | | | |-ADAMS_BASHFORTH2   :: Extrapolate tendencies forward in time.  C/\  | | | | |-ADAMS_BASHFORTH2   :: Extrapolate tendencies forward in time.
277  C/\  | | | | |-FREESURF_RESCALE_G :: Re-scale Gs for free-surface height.  C/\  | | | | |-FREESURF_RESCALE_G :: Re-scale Gs for free-surface height.
278  C/\  | | | |  C/\  | | | |
279  C/\  | | | |-TIMESTEP_TRACER      :: Step tracer field forward in time  C/\  | | | |-TIMESTEP_TRACER      :: Step tracer field forward in time
280  C/\  | | | |  C/\  | | | |
281  C/\  | | | |-CALC_GTR1            :: Calculate other tracer(s) tendency terms  C/\  | | | |-TIMESTEP_TRACER      :: Step tracer field forward in time
282    C/\  | | | |
283    C/\  | | | |-PTRACERS_INTEGRATE   :: Integrate other tracer(s) (see pkg/ptracers).
284  C/\  | | | | |  C/\  | | | | |
285  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package  C/\  | | | | |-GAD_CALC_RHS       :: Generalised advection package
286  C/\  | | | | |                    :: ( see pkg/gad )  C/\  | | | | | |                  :: ( see pkg/gad )
287  C/\  | | | | |-EXTERNAL_FORCING_TR:: Problem specific forcing for tracer.  C/\  | | | | | |-KPP_TRANSPORT_PTR:: KPP non-local transport ( see pkg/kpp ).
288    C/\  | | | | |
289    C/\  | | | | |-PTRACERS_FORCING   :: Problem specific forcing for tracer.
290    C/\  | | | | |-GCHEM_FORCING_INT  :: tracer forcing for gchem pkg (if all
291    C/\  | | | | |                       tendency terms calcualted together)
292  C/\  | | | | |-ADAMS_BASHFORTH2   :: Extrapolate tendencies forward in time.  C/\  | | | | |-ADAMS_BASHFORTH2   :: Extrapolate tendencies forward in time.
293  C/\  | | | | |-FREESURF_RESCALE_G :: Re-scale Gs for free-surface height.  C/\  | | | | |-FREESURF_RESCALE_G :: Re-scale Gs for free-surface height.
294    C/\  | | | | |-TIMESTEP_TRACER    :: Step tracer field forward in time
295  C/\  | | | |  C/\  | | | |
 C/\  | | | |-TIMESTEP_TRACER      :: Step tracer field forward in time  
296  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.  
297  C/\  | | | |  C/\  | | | |
298  C/\  | | | |-IMPLDIFF             :: Solve vertical implicit diffusion equation.  C/\  | | | |-IMPLDIFF             :: Solve vertical implicit diffusion equation.
299  C/\  | | | |-OBCS_APPLY_TS        :: Open bndy. package (see pkg/obcs ).  C/\  | | | |-OBCS_APPLY_TS        :: Open bndy. package (see pkg/obcs ).
# Line 291  C/\  | | | |-CALC_GRAD_PHI_SURF :: Calcu Line 307  C/\  | | | |-CALC_GRAD_PHI_SURF :: Calcu
307  C/\  | | | |                       Potential anomaly.  C/\  | | | |                       Potential anomaly.
308  C/\  | | | |-CALC_VISCOSITY     :: Calculate net vertical viscosity  C/\  | | | |-CALC_VISCOSITY     :: Calculate net vertical viscosity
309  C/\  | | | | |-KPP_CALC_VISC    :: KPP package ( see pkg/kpp ).  C/\  | | | | |-KPP_CALC_VISC    :: KPP package ( see pkg/kpp ).
310  C/\  | | | |                                                        C/\  | | | |
311  C/\  | | | |-CALC_PHI_HYD       :: Integrate the hydrostatic relation.  C/\  | | | |-CALC_PHI_HYD       :: Integrate the hydrostatic relation.
312  C/\  | | | |-MOM_FLUXFORM       :: Flux form mom eqn. package ( see  C/\  | | | |-MOM_FLUXFORM       :: Flux form mom eqn. package ( see
313  C/\  | | | |                       pkg/mom_fluxform ).  C/\  | | | |                       pkg/mom_fluxform ).
314    C/\  | | | | |-MOM_CALC_VISC    :: Calculate Horizontal Viscosities
315  C/\  | | | |-MOM_VECINV         :: Vector invariant form mom eqn. package ( see  C/\  | | | |-MOM_VECINV         :: Vector invariant form mom eqn. package ( see
316  C/\  | | | |                       pkg/mom_vecinv   ).  C/\  | | | |                       pkg/mom_vecinv   ).
317    C/\  | | | | |-MOM_CALC_VISC    :: Calculate Horizontal Viscosities
318  C/\  | | | |-TIMESTEP           :: Step momentum fields forward in time  C/\  | | | |-TIMESTEP           :: Step momentum fields forward in time
319  C/\  | | | |-OBCS_APPLY_UV      :: Open bndy. package (see pkg/obcs ).  C/\  | | | |-OBCS_APPLY_UV      :: Open bndy. package (see pkg/obcs ).
320  C/\  | | | |  C/\  | | | |
# Line 331  C/\  | | | | |-FIND_RHO  :: Find adjacen Line 349  C/\  | | | | |-FIND_RHO  :: Find adjacen
349  C/\  | | | | |-CONVECT   :: Mix static instability.  C/\  | | | | |-CONVECT   :: Mix static instability.
350  C/\  | | | | |-TIMEAVE_CUMULATE :: Update convection statistics.  C/\  | | | | |-TIMEAVE_CUMULATE :: Update convection statistics.
351  C/\  | | | |  C/\  | | | |
352  C/\  | | | |-CALC_EXACT_ETA        :: Change SSH to flow divergence.      C/\  | | | |-CALC_EXACT_ETA        :: Change SSH to flow divergence.
353  C/\  | | |  C/\  | | |
354  C/\  | | |-DO_FIELDS_BLOCKING_EXCHANGES :: Sync up overlap regions.  C/\  | | |-DO_FIELDS_BLOCKING_EXCHANGES :: Sync up overlap regions.
355  C/\  | | | |-EXCH                                                    C/\  | | | |-EXCH
356    C/\  | | |
357    C/\  | | |-GCHEM_FORCING_SEP :: tracer forcing for gchem pkg (if
358    C/\  | | |                      tracer dependent tendencies calculated
359    C/\  | | |                      separatly)
360  C/\  | | |  C/\  | | |
361  C/\  | | |-FLT_MAIN         :: Float package ( pkg/flt ).  C/\  | | |-FLT_MAIN         :: Float package ( pkg/flt ).
362  C/\  | | |  C/\  | | |
# Line 348  C/\  | | | |-GMREDI_DIAGS        :: GM d Line 370  C/\  | | | |-GMREDI_DIAGS        :: GM d
370  C/\  | | | |-KPP_DO_DIAGS        :: KPP diags. see pkg/kpp  C/\  | | | |-KPP_DO_DIAGS        :: KPP diags. see pkg/kpp
371  C/\  | | | |-SBO_CALC            :: SBO diags. see pkg/sbo  C/\  | | | |-SBO_CALC            :: SBO diags. see pkg/sbo
372  C/\  | | | |-SBO_DIAGS           :: SBO diags. see pkg/sbo  C/\  | | | |-SBO_DIAGS           :: SBO diags. see pkg/sbo
373    C/\  | | | |-SEAICE_DO_DIAGS     :: SEAICE diags. see pkg/seaice
374    C/\  | | | |-GCHEM_DIAGS         :: gchem diags. see pkg/gchem
375  C/\  | | |  C/\  | | |
376  C/\  | | |-WRITE_CHECKPOINT :: Do I/O for restart files.  C/\  | | |-WRITE_CHECKPOINT :: Do I/O for restart files.
377  C/\  | |  C/\  | |
# Line 365  C    |-TIMER_PRINTALL :: Computational t Line 389  C    |-TIMER_PRINTALL :: Computational t
389  C    |  C    |
390  C    |-COMM_STATS     :: Summarise inter-proc and inter-thread communication  C    |-COMM_STATS     :: Summarise inter-proc and inter-thread communication
391  C                     :: events.  C                     :: events.
392    C
393  C \ev  C \ev
394  C  C
395  C  C
396  CEOI  CEOI
397    
398    
399    #include "AD_CONFIG.h"
400    #include "PACKAGES_CONFIG.h"
401  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
402    
403  CBOP  CBOP
# Line 383  C     !INTERFACE: Line 410  C     !INTERFACE:
410    
411  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
412  C     *==========================================================*  C     *==========================================================*
413  C     | SUBROUTINE THE_MODEL_MAIN                                  C     | SUBROUTINE THE_MODEL_MAIN
414  C     | o Master controlling routine for model using the MITgcm    C     | o Master controlling routine for model using the MITgcm
415  C     |   UV parallel wrapper.                                      C     |   UV parallel wrapper.
416  C     *==========================================================*  C     *==========================================================*
417  C     | THE_MODEL_MAIN is invoked by the MITgcm UV parallel        C     | THE_MODEL_MAIN is invoked by the MITgcm UV parallel
418  C     | wrapper with a single integer argument "myThid". This      C     | wrapper with a single integer argument "myThid". This
419  C     | variable identifies the thread number of an instance of    C     | variable identifies the thread number of an instance of
420  C     | THE_MODEL_MAIN. Each instance of THE_MODEL_MAIN works      C     | THE_MODEL_MAIN. Each instance of THE_MODEL_MAIN works
421  C     | on a particular region of the models domain and            C     | on a particular region of the models domain and
422  C     | synchronises with other instances as necessary. The        C     | synchronises with other instances as necessary. The
423  C     | routine has to "understand" the MITgcm parallel            C     | routine has to "understand" the MITgcm parallel
424  C     | environment and the numerical algorithm. Editing this      C     | environment and the numerical algorithm. Editing this
425  C     | routine is best done with some knowledge of both aspects.  C     | routine is best done with some knowledge of both aspects.
426  C     | Notes                                                      C     | Notes
427  C     | =====                                                      C     | =====
428  C     | C*P* comments indicating place holders for which code is    C     | C*P* comments indicating place holders for which code is
429  C     |      presently being developed.                            C     |      presently being developed.
430  C     *==========================================================*  C     *==========================================================*
431  C     \ev  C     \ev
432    
# Line 435  C     == Global variables === Line 462  C     == Global variables ===
462  #include "EEPARAMS.h"  #include "EEPARAMS.h"
463  #include "PARAMS.h"  #include "PARAMS.h"
464  #include "DYNVARS.h"  #include "DYNVARS.h"
 #ifdef ALLOW_NONHYDROSTATIC  
 #include "CG3D.h"  
 #endif  
465    
466  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
467  #include "tamc.h"  # include "tamc.h"
468    #endif
469    #ifdef ALLOW_CTRL
470    # include "ctrl.h"
471    # include "optim.h"
472  #endif  #endif
473    
474  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
475  C     == Routine arguments ==  C     == Routine arguments ==
476  C     myThid - Thread number for this instance of the routine.  C     myThid - Thread number for this instance of the routine.
477        INTEGER myThid          INTEGER myThid
478    
479  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
480  C     == Local variables ==  C     == Local variables ==
# Line 465  CEOP Line 493  CEOP
493  c--   set default:  c--   set default:
494        lastdiva = .TRUE.        lastdiva = .TRUE.
495    
496    #ifdef ALLOW_DEBUG
497          IF (debugMode) CALL DEBUG_ENTER('THE_MODEL_MAIN',myThid)
498    #endif
499    
500    #if defined(USE_PAPI) || defined(USE_PCL_FLOPS_SFP) || defined(USE_PCL_FLOPS) || defined(USE_PCL)
501          CALL TIMER_CONTROL('','INIT','THE_MODEL_MAIN',myThid)
502    #endif
503  C--   This timer encompasses the whole code  C--   This timer encompasses the whole code
504        CALL TIMER_START('ALL                    [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('ALL                    [THE_MODEL_MAIN]',myThid)
505    
506    #ifdef ALLOW_DEBUG
507          IF (debugMode) CALL DEBUG_CALL('INITIALISE_FIXED',myThid)
508    #endif
509    
510  C--   Set model configuration (fixed arrays)  C--   Set model configuration (fixed arrays)
511        CALL TIMER_START('INITIALISE_FIXED       [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('INITIALISE_FIXED       [THE_MODEL_MAIN]',myThid)
512        CALL INITIALISE_FIXED( myThid )        CALL INITIALISE_FIXED( myThid )
# Line 476  C--   Set model configuration (fixed arr Line 515  C--   Set model configuration (fixed arr
515        myCurrentTime = startTime        myCurrentTime = startTime
516        myCurrentIter = nIter0        myCurrentIter = nIter0
517    
518  #if ( defined (ALLOW_ADJOINT_RUN) || \  #if ( defined (ALLOW_ADMTLM) )
519        defined (ALLOW_TANGENTLINEAR_RUN) || \  c
520        defined (ALLOW_GRADIENT_CHECK) || \        STOP 'should never get here; ADMTLM_DSVD calls ADMTLM_DRIVER'
521        defined (ALLOW_ECCO_OPTIMIZATION) )  c
522    #elif ( defined (ALLOW_AUTODIFF))
523    
524    # ifndef EXCLUDE_CTRL_PACK
525        _BEGIN_MASTER( mythid )        _BEGIN_MASTER( mythid )
526        IF (myProcId .eq. 0) THEN        IF (myProcId .eq. 0) THEN
527           inquire( file='costfinal', exist=exst )           inquire( file='costfinal', exist=exst )
528           IF ( .NOT. exst) THEN           IF ( .NOT. exst ) THEN
529              CALL TIMER_START('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)              IF ( optimcycle.NE.0 .AND. doMainUnpack ) THEN
530              CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid )                 CALL TIMER_START('CTRL_UNPACK   [THE_MODEL_MAIN]',mythid)
531              CALL TIMER_STOP ('CTRL_UNPACK      [THE_MODEL_MAIN]',mythid)                 CALL CTRL_UNPACK( .TRUE. , mythid )
532                   CALL TIMER_STOP ('CTRL_UNPACK   [THE_MODEL_MAIN]',mythid)
533                ENDIF
534           ENDIF           ENDIF
535        ENDIF        ENDIF
536        _END_MASTER( mythid )        _END_MASTER( mythid )
537        _BARRIER        _BARRIER
538    # endif /* EXCLUDE_CTRL_PACK */
539    
540    # ifdef ALLOW_COST
541        CALL COST_DEPENDENT_INIT ( mythid )        CALL COST_DEPENDENT_INIT ( mythid )
542        _BARRIER        _BARRIER
543    # endif
544    
545  #if ( defined (ALLOW_ADJOINT_RUN) || \  # if ( defined (ALLOW_TANGENTLINEAR_RUN) )
546        defined (ALLOW_ECCO_OPTIMIZATION) )  c
547  # ifdef ALLOW_DIVIDED_ADJOINT        CALL TIMER_START('G_THE_MAIN_LOOP           [TANGENT RUN]',mythid)
548          CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid )
549          CALL TIMER_STOP ('G_THE_MAIN_LOOP           [TANGENT RUN]',mythid)
550    c
551    # elif ( defined (ALLOW_ADJOINT_RUN) || \
552             defined (ALLOW_ECCO_OPTIMIZATION) )
553    c
554    #  ifdef ALLOW_DIVIDED_ADJOINT
555  c-- The following assumes the TAF option '-pure'  c-- The following assumes the TAF option '-pure'
556        inquire( file='costfinal', exist=exst )        inquire( file='costfinal', exist=exst )
557        IF ( .NOT. exst) THEN        IF ( .NOT. exst) THEN
# Line 508  c-- The following assumes the TAF option Line 561  c-- The following assumes the TAF option
561           CALL COST_FINAL_STORE ( mythid, lastdiva )           CALL COST_FINAL_STORE ( mythid, lastdiva )
562        ELSE        ELSE
563           CALL TIMER_START('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)           CALL TIMER_START('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)
564           CALL ADTHE_MAIN_LOOP ( mythid )           CALL ADTHE_MAIN_LOOP (  mythid )
565           CALL TIMER_STOP ('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)           CALL TIMER_STOP ('ADTHE_MAIN_LOOP       [ADJOINT RUN]', mythid)
566           CALL COST_FINAL_RESTORE ( mythid, lastdiva )           CALL COST_FINAL_RESTORE ( mythid, lastdiva )
567        ENDIF        ENDIF
568  c--  c--
569  # else  #  else /* ALLOW_DIVIDED_ADJOINT undef */
570        CALL TIMER_START('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)        CALL TIMER_START('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)
571    #ifdef ALLOW_ECCO
572          CALL ADTHE_MAIN_LOOP ( myCurrentTime, mythid )
573    #else
574        CALL ADTHE_MAIN_LOOP ( mythid )        CALL ADTHE_MAIN_LOOP ( mythid )
575    #endif
576        CALL TIMER_STOP ('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)        CALL TIMER_STOP ('ADTHE_MAIN_LOOP          [ADJOINT RUN]', mythid)
577  # endif  #  endif /* ALLOW_DIVIDED_ADJOINT */
578  c--  c
579  #elif (defined (ALLOW_TANGENTLINEAR_RUN))  # else /* forward run only within AD setting */
580        CALL TIMER_START('G_THE_MAIN_LOOP           [TANGENT RUN]',mythid)  
581        CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid )  #ifdef ALLOW_DEBUG
582        CALL TIMER_STOP ('G_THE_MAIN_LOOP           [TANGENT RUN]',mythid)        IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid)
583  #endif  #endif
584        _BARRIER  C--   Call time stepping loop of full model
585          CALL TIMER_START('THE_MAIN_LOOP          [THE_MODEL_MAIN]',myThid)
586          CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid )
587          CALL TIMER_STOP ('THE_MAIN_LOOP          [THE_MODEL_MAIN]',myThid)
588    
589    # 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 .AND. doMainPack ) 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             IF ( ( optimcycle.EQ.0 .OR. (.NOT. doMainUnpack) )
598         &        .AND. mycurrentiter.EQ.niter0 ) THEN
599                CALL TIMER_START('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
600                CALL CTRL_PACK( .TRUE. , mythid )
601                CALL TIMER_STOP ('CTRL_PACK     [THE_MODEL_MAIN]',mythid)
602             ENDIF
603        ENDIF        ENDIF
604        _END_MASTER( mythid )        _END_MASTER( mythid )
605        _BARRIER        _BARRIER
606    # endif /* EXCLUDE_CTRL_PACK */
607    
608  #ifdef ALLOW_GRADIENT_CHECK  
609    # ifdef ALLOW_GRDCHK
610        IF ( useGrdchk .AND. lastdiva ) THEN        IF ( useGrdchk .AND. lastdiva ) THEN
611           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)           CALL TIMER_START('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)
612           CALL GRDCHK_MAIN( mythid )           CALL GRDCHK_MAIN( mythid )
613           CALL TIMER_STOP ('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)           CALL TIMER_STOP ('GRDCHK_MAIN         [THE_MODEL_MAIN]',mythid)
614           _BARRIER           _BARRIER
615        ENDIF        ENDIF
616  #endif  # endif
617    
618  #else /* ALLOW_ADJOINT_RUN undef */  #else /* ALL AD-related undef */
619    
620    #ifdef ALLOW_DEBUG
621          IF (debugMode) CALL DEBUG_CALL('THE_MAIN_LOOP',myThid)
622    #endif
623  C--   Call time stepping loop of full model  C--   Call time stepping loop of full model
624        CALL TIMER_START('THE_MAIN_LOOP          [THE_MODEL_MAIN]',myThid)        CALL TIMER_START('THE_MAIN_LOOP          [THE_MODEL_MAIN]',myThid)
625        CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid )        CALL THE_MAIN_LOOP( myCurrentTime, myCurrentIter, myThid )
626        CALL TIMER_STOP ('THE_MAIN_LOOP          [THE_MODEL_MAIN]',myThid)        CALL TIMER_STOP ('THE_MAIN_LOOP          [THE_MODEL_MAIN]',myThid)
627    
628  #endif /* ALLOW_ADJOINT_RUN */  #endif /* ALLOW_TANGENTLINEAR_RUN ALLOW_ADJOINT_RUN ALLOW_ADMTLM */
629    
630  C--   Sea-ice checkpoint (in case the in-loop checkpoint was missed)  #ifdef ALLOW_DIAGNOSTICS
631  #ifdef ALLOW_SEAICE        IF (useDiagnostics) THEN
632        IF ( useSEAICE )  C       Close all diagnostics output files
633       &     CALL SEAICE_WRITE_PICKUP(          CALL DIAGSTATS_CLOSE_IO( myThid )
634       &     .TRUE., myCurrentTime, myCurrentIter, myThid )        ENDIF
635  #endif  #endif
636    
637  C--   Final checkpoint (in case the in-loop checkpoint was missed)  #ifdef ALLOW_MNC
638        CALL TIMER_START('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)        IF (useMNC) THEN
639        CALL WRITE_CHECKPOINT(  C       Close all open NetCDF files
640       &        .TRUE., myCurrentTime, myCurrentIter, myThid )          _BEGIN_MASTER( mythid )
641        CALL TIMER_STOP ('WRITE_CHECKPOINT       [THE_MODEL_MAIN]',myThid)          CALL MNC_FILE_CLOSE_ALL( myThid )
642            _END_MASTER( mythid )
643          ENDIF
644    #endif
645    
646    C--   This timer encompasses the whole code
647        CALL TIMER_STOP ('ALL                    [THE_MODEL_MAIN]',myThid)        CALL TIMER_STOP ('ALL                    [THE_MODEL_MAIN]',myThid)
648    
649  C--   Write timer statistics  C--   Write timer statistics
# Line 574  C--   Write timer statistics Line 652  C--   Write timer statistics
652         CALL COMM_STATS         CALL COMM_STATS
653        ENDIF        ENDIF
654    
655    C--   Check threads synchronization :
656          CALL BAR_CHECK( 9, myThid )
657    
658    #ifdef ALLOW_DEBUG
659          IF (debugMode) CALL DEBUG_LEAVE('THE_MODEL_MAIN',myThid)
660    #endif
661    
662        RETURN        RETURN
663        END        END

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.103

  ViewVC Help
Powered by ViewVC 1.1.22