/[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.22 - (show annotations) (download)
Sun Sep 10 15:19:17 2017 UTC (6 years, 8 months ago) by heimbach
Branch: MAIN
Changes since 1.21: +7 -1 lines
Temporary fix for call to EXTERNAL_FIELDS_LOAD to expose
conditional sensitivities.

1 C $Header: /u/gcmpack/MITgcm/model/src/load_fields_driver.F,v 1.21 2017/09/08 14:42:28 bderembl 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 |-- GCHEM_FIELDS_LOAD
44 C |
45 C |-- RBCS_FIELDS_LOAD
46 C |
47 C |-- AIM_FIELDS_LOAD
48
49 C !USES:
50 IMPLICIT NONE
51 C == Global variables ==
52 #include "SIZE.h"
53 #include "EEPARAMS.h"
54 #include "PARAMS.h"
55 #include "FFIELDS.h"
56
57 #ifdef ALLOW_AUTODIFF
58 # include "tamc.h"
59 # include "CTRL_SIZE.h"
60 # include "ctrl.h"
61 # include "ctrl_dummy.h"
62 # include "cost.h"
63 # include "EOS.h"
64 # ifdef ALLOW_EXF
65 # include "EXF_FIELDS.h"
66 # include "EXF_CONSTANTS.h"
67 # endif
68 #endif /* ALLOW_AUTODIFF */
69
70 C !INPUT/OUTPUT PARAMETERS:
71 C myTime :: time counter for this thread
72 C myIter :: iteration counter for this thread
73 C myThid :: thread number for this instance of the routine.
74 _RL myTime
75 INTEGER myIter
76 INTEGER myThid
77
78 C !LOCAL VARIABLES:
79 #if (defined ALLOW_ADDFLUID) || (defined ALLOW_FRICTION_HEATING)
80 INTEGER i,j,k,bi,bj
81 #endif
82 CEOP
83
84 #ifdef ALLOW_DEBUG
85 IF (debugMode) CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
86 #endif
87
88 C-- Initialise forcing arrays that may receive multiple contributions
89 #ifdef ALLOW_ADDFLUID
90 IF ( selectAddFluid.NE.0 .AND. addMassFile.EQ.' ' ) THEN
91 DO bj=myByLo(myThid),myByHi(myThid)
92 DO bi=myBxLo(myThid),myBxHi(myThid)
93 DO k=1,Nr
94 DO j=1-OLy,sNy+OLy
95 DO i=1-OLx,sNx+OLx
96 addMass(i,j,k,bi,bj) = 0. _d 0
97 ENDDO
98 ENDDO
99 ENDDO
100 ENDDO
101 ENDDO
102 ENDIF
103 #endif /* ALLOW_ADDFLUID */
104
105 #ifdef ALLOW_FRICTION_HEATING
106 IF ( addFrictionHeating .AND. staggerTimeStep ) THEN
107 DO bj=myByLo(myThid),myByHi(myThid)
108 DO bi=myBxLo(myThid),myBxHi(myThid)
109 DO k=1,Nr
110 DO j=1-OLy,sNy+OLy
111 DO i=1-OLx,sNx+OLx
112 frictionHeating(i,j,k,bi,bj) = 0. _d 0
113 ENDDO
114 ENDDO
115 ENDDO
116 ENDDO
117 ENDDO
118 ENDIF
119 #endif /* ALLOW_FRICTION_HEATING */
120
121 C-- Map generic time varying controls to xx_gentim2d
122 #ifdef ALLOW_CTRL
123 if (useCTRL) CALL CTRL_MAP_GENTIM2D( myTime, myIter, myThid )
124 #endif
125
126 #ifdef ALLOW_BULK_FORCE
127 IF ( useBulkForce ) THEN
128 C-- Bulk-Formulae pkg: load all forcing fields at current time
129 #ifdef ALLOW_DEBUG
130 IF (debugMode) CALL DEBUG_CALL('BULKF_FIELDS_LOAD',myThid)
131 #endif
132 CALL TIMER_START('BULKF_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
133 CALL BULKF_FIELDS_LOAD( myTime, myIter, myThid )
134 CALL TIMER_STOP ('BULKF_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
135 ENDIF
136 #endif /* ALLOW_BULK_FORCE */
137
138 C-- Call external forcing package
139 #ifdef ALLOW_EXF
140 IF (useEXF) THEN
141 # ifdef ALLOW_DEBUG
142 IF (debugMode) CALL DEBUG_CALL('EXF_GETFORCING',myThid)
143 # endif
144 CALL TIMER_START('EXF_GETFORCING [LOAD_FLDS_DRIVER]',myThid)
145 CALL EXF_GETFORCING( myTime, myIter, myThid )
146 CALL TIMER_STOP ('EXF_GETFORCING [LOAD_FLDS_DRIVER]',myThid)
147 ENDIF
148 #endif /* ALLOW_EXF */
149
150 C-- Call external CheapAML forcing package
151 #ifdef ALLOW_CHEAPAML
152 IF ( useCheapAML ) THEN
153 #ifdef ALLOW_DEBUG
154 IF (debugMode) CALL DEBUG_CALL('CHEAPAML_FIELDS_LOAD',myThid)
155 #endif
156 CALL CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
157 ENDIF
158 #endif /*ALLOW_CHEAPAML */
159
160 #ifdef ALLOW_AUTODIFF
161 IF ( .NOT. useEXF ) THEN
162 #endif /* ALLOW_AUTODIFF */
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 ALLOW_AUTODIFF
170 ENDIF
171 #endif /* ALLOW_AUTODIFF */
172 #ifdef NONLIN_FRSURF
173 CADJ STORE SST = comlev1, key = ikey_dynamics, kind = isbyte
174 CADJ STORE SSS = comlev1, key = ikey_dynamics, kind = isbyte
175 # ifdef SHORTWAVE_HEATING
176 CADJ STORE Qsw = comlev1, key = ikey_dynamics, kind = isbyte
177 # endif
178 #endif
179
180 #ifdef ALLOW_GCHEM
181 IF ( useGCHEM ) THEN
182 #ifdef ALLOW_DEBUG
183 IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
184 #endif /* ALLOW_DEBUG */
185 CALL GCHEM_FIELDS_LOAD( myTime, myIter, myThid )
186 ENDIF
187 #endif /* ALLOW_GCHEM */
188
189 #ifdef ALLOW_RBCS
190 IF ( useRBCS ) THEN
191 CALL RBCS_FIELDS_LOAD( myTime, myIter, myThid )
192 ENDIF
193 #endif
194
195 #ifdef ALLOW_AIM
196 IF ( useAIM ) THEN
197 C- Update AIM bottom boundary data
198 CALL AIM_FIELDS_LOAD( myTime, myIter, myThid )
199 ENDIF
200 #endif
201
202 #ifdef ALLOW_DEBUG
203 IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
204 #endif
205
206 RETURN
207 END

  ViewVC Help
Powered by ViewVC 1.1.22