1 |
C $Header: /u/gcmpack/MITgcm/pkg/admtlm/admtlm_driver.F,v 1.2 2004/11/16 05:42:11 heimbach Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "CPP_OPTIONS.h" |
5 |
|
6 |
CBOP |
7 |
|
8 |
C !ROUTINE: ADMTLM_DRIVER |
9 |
|
10 |
C !INTERFACE: |
11 |
SUBROUTINE ADMTLM_DRIVER( myThid ) |
12 |
IMPLICIT NONE |
13 |
|
14 |
C !DESCRIPTION: \bv |
15 |
C *==========================================================* |
16 |
C | SUBROUTINE ADMTLM_DRIVER |
17 |
C | o Master controlling routine for model using the MITgcm |
18 |
C | UV parallel wrapper. |
19 |
C *==========================================================* |
20 |
C \ev |
21 |
|
22 |
C !USES: |
23 |
C == Global variables === |
24 |
#include "SIZE.h" |
25 |
#include "EEPARAMS.h" |
26 |
#include "PARAMS.h" |
27 |
#include "DYNVARS.h" |
28 |
|
29 |
#ifdef ALLOW_ADMTLM |
30 |
# include "tamc.h" |
31 |
# include "ctrl.h" |
32 |
# include "optim.h" |
33 |
#endif |
34 |
|
35 |
C !INPUT/OUTPUT PARAMETERS: |
36 |
C == Routine arguments == |
37 |
INTEGER myThid |
38 |
|
39 |
C == Local == |
40 |
INTEGER myCurrentIter |
41 |
_RL myCurrentTime |
42 |
C |
43 |
CEOP |
44 |
|
45 |
#ifndef DISABLE_DEBUGMODE |
46 |
IF (debugMode) CALL DEBUG_ENTER('ADMTLM_DRIVER',myThid) |
47 |
#endif |
48 |
|
49 |
#if ( defined (ALLOW_ADMTLM) ) |
50 |
|
51 |
myCurrentTime = startTime |
52 |
myCurrentIter = nIter0 |
53 |
yadprefix = 'g_' |
54 |
|
55 |
IF (optimcycle .GT. 0 ) THEN |
56 |
_BEGIN_MASTER( mythid ) |
57 |
IF ( myProcId .eq. 0 ) THEN |
58 |
CALL CTRL_UNPACK( .false., mythid ) |
59 |
ENDIF |
60 |
_END_MASTER( mythid ) |
61 |
CALL ADMTLM_UPXX( mythid ) |
62 |
ENDIF |
63 |
c |
64 |
CALL TIMER_START('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
65 |
CALL G_THE_MAIN_LOOP ( myCurrentTime, myCurrentIter, myThid ) |
66 |
CALL TIMER_STOP ('G_THE_MAIN_LOOP [TANGENT RUN]',mythid) |
67 |
c |
68 |
c _BEGIN_MASTER( mythid ) |
69 |
c IF ( myProcId .eq. 0) THEN |
70 |
c call CTRL_PACK( mycurrentiter, mycurrenttime, mythid ) |
71 |
c ENDIF |
72 |
c _END_MASTER( mythid ) |
73 |
c |
74 |
CALL ADMTLM_METRIC ( mythid ) |
75 |
CALL ADMTLM_MAP ( mythid ) |
76 |
c |
77 |
myCurrentTime = startTime |
78 |
myCurrentIter = nIter0 |
79 |
yadprefix = 'ad' |
80 |
c |
81 |
c _BEGIN_MASTER( mythid ) |
82 |
c IF (myProcId .eq. 0) THEN |
83 |
c CALL CTRL_UNPACK( mycurrentiter, mycurrenttime, mythid ) |
84 |
c ENDIF |
85 |
c _END_MASTER( mythid ) |
86 |
c |
87 |
CALL CTRL_INIT( mythid ) |
88 |
c |
89 |
CALL TIMER_START('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
90 |
CALL ADTHE_MAIN_LOOP ( myCurrentTime, myCurrentIter, mythid ) |
91 |
CALL TIMER_STOP ('ADTHE_MAIN_LOOP [ADJOINT RUN]', mythid) |
92 |
c |
93 |
_BEGIN_MASTER( mythid ) |
94 |
IF ( myProcId .eq. 0 ) THEN |
95 |
call CTRL_PACK( .FALSE., mythid ) |
96 |
ENDIF |
97 |
_END_MASTER( mythid ) |
98 |
c |
99 |
#endif |
100 |
|
101 |
#ifndef DISABLE_DEBUGMODE |
102 |
IF (debugMode) CALL DEBUG_LEAVE('ADMTLM_DRIVER',myThid) |
103 |
#endif |
104 |
|
105 |
RETURN |
106 |
END |