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

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

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


Revision 1.33 - (hide annotations) (download)
Sun Feb 4 14:38:48 2001 UTC (23 years, 4 months ago) by cnh
Branch: MAIN
Changes since 1.32: +2 -1 lines
Made sure each .F and .h file had
the CVS keywords Header and Name at its start.
Most had header but very few currently have Name, so
lots of changes!

1 cnh 1.33 C $Header: /u/gcmpack/models/MITgcmUV/model/src/the_model_main.F,v 1.32 2000/04/05 19:04:14 adcroft Exp $
2     C $Name: $
3 cnh 1.1
4 adcroft 1.18 #include "CPP_OPTIONS.h"
5 cnh 1.1
6     SUBROUTINE THE_MODEL_MAIN(myThid)
7     C /==========================================================\
8     C | SUBROUTINE THE_MODEL_MAIN |
9     C | o Master controlling routine for model using the MITgcm |
10     C | UV parallel wrapper. |
11     C |==========================================================|
12     C | THE_MODEL_MAIN is invoked by the MITgcm UV parallel |
13     C | wrapper with a single integer argument "myThid". This |
14     C | variable identifies the thread number of an instance of |
15     C | THE_MODEL_MAIN. Each instance of THE_MODEL_MAIN works |
16     C | on a particular region of the models domain and |
17     C | synchronises with other instances as necessary. The |
18     C | routine has to "understand" the MITgcm parallel |
19     C | environment and the numerical algorithm. Editing this |
20     C | routine is best done with some knowledge of both aspects.|
21     C | Notes |
22     C | ===== |
23     C | C*P* comments indicating place holders for which code is |
24     C | presently being developed. |
25     C \==========================================================/
26 adcroft 1.24 IMPLICIT NONE
27 cnh 1.10 C
28     C Call Tree
29     C =========
30     C
31     C main ( eesupp )
32     C |
33     C .
34     C .
35     C . Generic environment initialisation ( see eesupp/src and
36     C . eesupp/inc )
37     C . multiple threads and/or processes are created in here
38     C .
39     C .
40     C .
41     C |
42     C |-THE_MODEL_MAIN - Begin specific model. One instance
43     C | | of this codes exists for each thread
44     C | | and/or instance. Each instance manages
45     C | | a specifc set of tiles.
46     C | |
47 adcroft 1.32 C | |--INITIALISE_FIXED
48     C | | o Set model configuration (fixed arrays)
49 cnh 1.10 C | | Topography, hydrography, timestep, grid, etc..
50     C | |
51 adcroft 1.32 C | |--THE_MAIN_LOOP
52     C | | |
53     C | | |--INITIALISE_VARIA
54     C | | | o Set initial conditions (variable arrays)
55     C | | |
56     C ==> | | | ** Time stepping loop starts here **
57     C | | | |
58     C /|\ | | |
59     C | | | |--FORWARD_STEP
60     C /|\ | | | | o Does a single forward step of the model
61     C | | | | |
62     C /|\ | | | |
63     C | | | | |--LOAD_EXTERNAL_DATA
64     C /|\ | | | | o Load and/or set time dependent forcing fields
65     C | | | | |
66     C /|\ | | | |--DYNAMICS
67     C | | | | | o Evaluate "forward" terms
68     C /|\ | | | |
69     C | | | | |--DO_THE_MODEL_IO
70     C /|\ | | | | o Write model state
71     C | | | | |
72     C /|\ | | | |--SOLVE_FOR_PRESSURE
73     C | | | | | o Find pressure field to keep flow non-divergent
74     C /|\ | | | |
75     C | | | | |--DO_GTERM_BLOCKING_EXCHANGES
76     C /|\ | | | | o Update overlap regions
77     C | | | | |
78     C /|\ | | | |--WRITE_CHECKPOINT
79     C | | | | | o Write restart file(s)
80     C /|\ | | |
81     C | | | |
82     C |<== | | | ** Time stepping loop finishes here **
83     C | | |
84     C | | |--
85 cnh 1.10 C | |
86     C | |--WRITE_STATE
87 adcroft 1.17 C | |--WRITE_CHECKPOINT
88 cnh 1.10 C |
89     C .
90     C .
91     C . Generic environment termination ( see eesupp/src and
92     C . eesupp/inc )
93     C .
94     C .
95 cnh 1.1
96     C == Global variables ===
97     #include "SIZE.h"
98     #include "EEPARAMS.h"
99     #include "PARAMS.h"
100 adcroft 1.26 #include "DYNVARS.h"
101 cnh 1.1 #include "CG2D.h"
102 adcroft 1.27 #ifdef ALLOW_NONHYDROSTATIC
103 adcroft 1.26 #include "CG3D.h"
104 adcroft 1.27 #endif
105 cnh 1.1
106     C == Routine arguments ==
107     C myThid - Thread number for this instance of the routine.
108 cnh 1.6 INTEGER myThid
109 cnh 1.1
110     C == Local variables ==
111 cnh 1.7 C Note: Under the multi-threaded model myCurrentIter and
112     C myCurrentTime are local variables passed around as routine
113     C arguments. Although this is fiddly it saves the need to
114     C impose additional synchronisation points when they are
115     C updated.
116 cnh 1.1
117 adcroft 1.19 C-- This timer encompasses the whole code
118 adcroft 1.32 CALL TIMER_START('ALL [THE_MODEL_MAIN]',myThid)
119 adcroft 1.19
120    
121 adcroft 1.32 C-- Set model configuration (fixed arrays)
122     CALL TIMER_START('INITIALISE_FIXED [THE_MODEL_MAIN]',myThid)
123     CALL INITIALISE_FIXED( myThid )
124     CALL TIMER_STOP ('INITIALISE_FIXED [THE_MODEL_MAIN]',myThid)
125 adcroft 1.26
126 adcroft 1.14
127 adcroft 1.32 C-- Call time stepping loop of full model
128     CALL TIMER_START('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid)
129     CALL THE_MAIN_LOOP( myThid )
130     CALL TIMER_STOP ('THE_MAIN_LOOP [THE_MODEL_MAIN]',myThid)
131 adcroft 1.12
132 adcroft 1.19
133 adcroft 1.32 CALL TIMER_STOP ('ALL [THE_MODEL_MAIN]',myThid)
134 cnh 1.7
135 adcroft 1.19 C-- Write timer statistics
136 cnh 1.20 IF ( myThid .EQ. 1 ) THEN
137     CALL TIMER_PRINTALL( myThid )
138     CALL COMM_STATS
139     ENDIF
140 cnh 1.1
141     RETURN
142     END

  ViewVC Help
Powered by ViewVC 1.1.22