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

Contents of /MITgcm/model/src/load_fields_driver.F

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


Revision 1.17 - (show annotations) (download)
Fri Sep 12 14:54:32 2014 UTC (9 years, 8 months ago) by gforget
Branch: MAIN
CVS Tags: checkpoint65f, checkpoint65d, checkpoint65e
Changes since 1.16: +6 -6 lines
- move call to CTRL_MAP_GENTIM2D ahead of BULKF_FIELDS_LOAD, EXF_GETFORCING
  so xx_gentim2d can be applied to e.g. exf fields in a timely manner.

1 C $Header: /u/gcmpack/MITgcm/model/src/load_fields_driver.F,v 1.16 2014/04/04 20:54:11 jmc Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6 #ifdef ALLOW_AUTODIFF
7 # include "AUTODIFF_OPTIONS.h"
8 #endif
9 #ifdef ALLOW_COST
10 # include "COST_OPTIONS.h"
11 #endif
12 #ifdef ALLOW_CTRL
13 # include "CTRL_OPTIONS.h"
14 #endif
15 #ifdef ALLOW_EXF
16 # include "EXF_OPTIONS.h"
17 #endif
18
19 CBOP
20 C !ROUTINE: LOAD_FIELDS_DRIVER
21 C !INTERFACE:
22 SUBROUTINE LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
23
24 C !DESCRIPTION: \bv
25 C *==================================================================
26 C | SUBROUTINE LOAD_FIELDS_DRIVER
27 C | o Load external forcing fields from file
28 C *==================================================================
29 C *==================================================================
30 C \ev
31
32 C !CALLING SEQUENCE:
33 C LOAD_FIELDS_DRIVER
34 C |
35 C |-- BULKF_FIELDS_LOAD
36 C |
37 C |-- EXF_GETFORCING
38 C |
39 C |-- CHEAPAML_FIELDS_LOAD
40 C |
41 C |-- EXTERNAL_FIELDS_LOAD
42 C |
43 C |-- OFFLINE_FIELDS_LOAD
44 C |
45 C |-- GCHEM_FIELDS_LOAD
46 C |
47 C |-- RBCS_FIELDS_LOAD
48 C |
49 C |-- AIM_FIELDS_LOAD
50
51 C !USES:
52 IMPLICIT NONE
53 C == Global variables ==
54 #include "SIZE.h"
55 #include "EEPARAMS.h"
56 #include "PARAMS.h"
57 #include "FFIELDS.h"
58
59 #ifdef ALLOW_AUTODIFF
60 # include "tamc.h"
61 # include "CTRL_SIZE.h"
62 # include "ctrl.h"
63 # include "ctrl_dummy.h"
64 # include "cost.h"
65 # include "EOS.h"
66 # ifdef ALLOW_EXF
67 # include "EXF_FIELDS.h"
68 # include "EXF_CONSTANTS.h"
69 # endif
70 #endif /* ALLOW_AUTODIFF */
71
72 C !INPUT/OUTPUT PARAMETERS:
73 C myTime :: time counter for this thread
74 C myIter :: iteration counter for this thread
75 C myThid :: thread number for this instance of the routine.
76 _RL myTime
77 INTEGER myIter
78 INTEGER myThid
79
80 C !LOCAL VARIABLES:
81 #if (defined ALLOW_ADDFLUID) || (defined ALLOW_FRICTION_HEATING)
82 INTEGER i,j,k,bi,bj
83 #endif
84 CEOP
85
86 #ifdef ALLOW_DEBUG
87 IF (debugMode) CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
88 #endif
89
90 C-- Initialise forcing arrays that may receive multiple contributions
91 #ifdef ALLOW_ADDFLUID
92 IF ( addMassFile .EQ. ' ' ) THEN
93 DO bj=myByLo(myThid),myByHi(myThid)
94 DO bi=myBxLo(myThid),myBxHi(myThid)
95 DO k=1,Nr
96 DO j=1-OLy,sNy+OLy
97 DO i=1-OLx,sNx+OLx
98 addMass(i,j,k,bi,bj) = 0. _d 0
99 ENDDO
100 ENDDO
101 ENDDO
102 ENDDO
103 ENDDO
104 ENDIF
105 #endif /* ALLOW_ADDFLUID */
106
107 #ifdef ALLOW_FRICTION_HEATING
108 IF ( addFrictionHeating ) THEN
109 DO bj=myByLo(myThid),myByHi(myThid)
110 DO bi=myBxLo(myThid),myBxHi(myThid)
111 DO k=1,Nr
112 DO j=1-OLy,sNy+OLy
113 DO i=1-OLx,sNx+OLx
114 frictionHeating(i,j,k,bi,bj) = 0. _d 0
115 ENDDO
116 ENDDO
117 ENDDO
118 ENDDO
119 ENDDO
120 ENDIF
121 #endif /* ALLOW_FRICTION_HEATING */
122
123 C-- Map generic time varying controls to xx_gentim2d
124 #ifdef ALLOW_CTRL
125 CALL CTRL_MAP_GENTIM2D( myTime, myIter, myThid )
126 #endif
127
128 #ifdef ALLOW_BULK_FORCE
129 IF ( useBulkForce ) THEN
130 C-- Bulk-Formulae pkg: load all forcing fields at current time
131 #ifdef ALLOW_DEBUG
132 IF (debugMode) CALL DEBUG_CALL('BULKF_FIELDS_LOAD',myThid)
133 #endif
134 CALL TIMER_START('BULKF_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
135 CALL BULKF_FIELDS_LOAD( myTime, myIter, myThid )
136 CALL TIMER_STOP ('BULKF_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
137 ENDIF
138 #endif /* ALLOW_BULK_FORCE */
139
140 C-- Call external forcing package
141 #ifdef ALLOW_EXF
142 IF (useEXF) THEN
143 # ifdef ALLOW_DEBUG
144 IF (debugMode) CALL DEBUG_CALL('EXF_GETFORCING',myThid)
145 # endif
146 CALL TIMER_START('EXF_GETFORCING [LOAD_FLDS_DRIVER]',myThid)
147 CALL EXF_GETFORCING( myTime, myIter, myThid )
148 CALL TIMER_STOP ('EXF_GETFORCING [LOAD_FLDS_DRIVER]',myThid)
149 ENDIF
150 #endif /* ALLOW_EXF */
151
152 C-- Call external CheapAML forcing package
153 #ifdef ALLOW_CHEAPAML
154 IF ( useCheapAML ) THEN
155 #ifdef ALLOW_DEBUG
156 IF (debugMode) CALL DEBUG_CALL('CHEAPAML_FIELDS_LOAD',myThid)
157 #endif
158 CALL CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
159 ENDIF
160 #endif /*ALLOW_CHEAPAML */
161
162 IF ( .NOT.useCheapAML ) THEN
163 #ifdef ALLOW_DEBUG
164 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
165 #endif
166 CALL TIMER_START('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
167 CALL EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
168 CALL TIMER_STOP ('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
169 #ifdef NONLIN_FRSURF
170 CADJ STORE SST = comlev1, key = ikey_dynamics, kind = isbyte
171 CADJ STORE SSS = comlev1, key = ikey_dynamics, kind = isbyte
172 # ifdef SHORTWAVE_HEATING
173 CADJ STORE Qsw = comlev1, key = ikey_dynamics, kind = isbyte
174 # endif
175 #endif
176 ENDIF
177
178 #ifdef ALLOW_OFFLINE
179 IF ( useOffLine ) THEN
180 #ifdef ALLOW_DEBUG
181 IF (debugMode) CALL DEBUG_CALL('OFFLINE_FIELDS_LOAD',myThid)
182 #endif /* ALLOW_DEBUG */
183 CALL TIMER_START('OFFLINE_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
184 CALL OFFLINE_FIELDS_LOAD( myTime, myIter, myThid )
185 CALL TIMER_STOP ('OFFLINE_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
186 ENDIF
187 #endif /* ALLOW_OFFLINE */
188
189 #ifdef ALLOW_GCHEM
190 IF ( useGCHEM ) THEN
191 #ifdef ALLOW_DEBUG
192 IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
193 #endif /* ALLOW_DEBUG */
194 CALL GCHEM_FIELDS_LOAD( myTime, myIter, myThid )
195 ENDIF
196 #endif /* ALLOW_GCHEM */
197
198 #ifdef ALLOW_RBCS
199 IF ( useRBCS ) THEN
200 CALL RBCS_FIELDS_LOAD( myTime, myIter, myThid )
201 ENDIF
202 #endif
203
204 #ifdef ALLOW_AIM
205 IF ( useAIM ) THEN
206 C- Update AIM bottom boundary data
207 CALL AIM_FIELDS_LOAD( myTime, myIter, myThid )
208 ENDIF
209 #endif
210
211 #ifdef ALLOW_DEBUG
212 IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
213 #endif
214
215 RETURN
216 END

  ViewVC Help
Powered by ViewVC 1.1.22