/[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.21 - (show annotations) (download)
Fri Sep 8 14:42:28 2017 UTC (6 years, 8 months ago) by bderembl
Branch: MAIN
Changes since 1.20: +1 -3 lines
removed IF ( .NOT.useCheapAML )  before EXTERNAL_FIELDS_LOAD. in case you need both cheapaml and SST/SSS restoring

1 C $Header: /u/gcmpack/MITgcm/model/src/load_fields_driver.F,v 1.20 2015/07/18 21:45:03 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 |-- 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_DEBUG
161 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
162 #endif
163 CALL TIMER_START('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
164 CALL EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
165 CALL TIMER_STOP ('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
166 #ifdef NONLIN_FRSURF
167 CADJ STORE SST = comlev1, key = ikey_dynamics, kind = isbyte
168 CADJ STORE SSS = comlev1, key = ikey_dynamics, kind = isbyte
169 # ifdef SHORTWAVE_HEATING
170 CADJ STORE Qsw = comlev1, key = ikey_dynamics, kind = isbyte
171 # endif
172 #endif
173
174 #ifdef ALLOW_GCHEM
175 IF ( useGCHEM ) THEN
176 #ifdef ALLOW_DEBUG
177 IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
178 #endif /* ALLOW_DEBUG */
179 CALL GCHEM_FIELDS_LOAD( myTime, myIter, myThid )
180 ENDIF
181 #endif /* ALLOW_GCHEM */
182
183 #ifdef ALLOW_RBCS
184 IF ( useRBCS ) THEN
185 CALL RBCS_FIELDS_LOAD( myTime, myIter, myThid )
186 ENDIF
187 #endif
188
189 #ifdef ALLOW_AIM
190 IF ( useAIM ) THEN
191 C- Update AIM bottom boundary data
192 CALL AIM_FIELDS_LOAD( myTime, myIter, myThid )
193 ENDIF
194 #endif
195
196 #ifdef ALLOW_DEBUG
197 IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
198 #endif
199
200 RETURN
201 END

  ViewVC Help
Powered by ViewVC 1.1.22