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

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

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


Revision 1.17 - (hide 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 gforget 1.17 C $Header: /u/gcmpack/MITgcm/model/src/load_fields_driver.F,v 1.16 2014/04/04 20:54:11 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_OPTIONS.h"
6 jmc 1.16 #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 jmc 1.1
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 jmc 1.10 C |-- CHEAPAML_FIELDS_LOAD
40     C |
41 jmc 1.1 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 jmc 1.14 #include "FFIELDS.h"
58 jmc 1.1
59 jmc 1.16 #ifdef ALLOW_AUTODIFF
60 jmc 1.1 # include "tamc.h"
61 heimbach 1.12 # include "CTRL_SIZE.h"
62 jmc 1.1 # include "ctrl.h"
63     # include "ctrl_dummy.h"
64     # include "cost.h"
65     # include "EOS.h"
66     # ifdef ALLOW_EXF
67 jmc 1.2 # include "EXF_FIELDS.h"
68 jmc 1.16 # include "EXF_CONSTANTS.h"
69 jmc 1.1 # endif
70 jmc 1.16 #endif /* ALLOW_AUTODIFF */
71 jmc 1.1
72 jmc 1.10 C !INPUT/OUTPUT PARAMETERS:
73 jmc 1.1 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 jmc 1.10 C !LOCAL VARIABLES:
81 jmc 1.14 #if (defined ALLOW_ADDFLUID) || (defined ALLOW_FRICTION_HEATING)
82     INTEGER i,j,k,bi,bj
83     #endif
84 jmc 1.1 CEOP
85    
86     #ifdef ALLOW_DEBUG
87 jmc 1.9 IF (debugMode) CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
88 jmc 1.1 #endif
89    
90 jmc 1.14 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 gforget 1.17 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 jmc 1.1 #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 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('BULKF_FIELDS_LOAD',myThid)
133 jmc 1.1 #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 heimbach 1.4 IF (useEXF) THEN
143 jmc 1.1 # ifdef ALLOW_DEBUG
144 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('EXF_GETFORCING',myThid)
145 jmc 1.1 # 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 heimbach 1.4 ENDIF
150 jmc 1.5 #endif /* ALLOW_EXF */
151    
152 jmc 1.7 C-- Call external CheapAML forcing package
153     #ifdef ALLOW_CHEAPAML
154     IF ( useCheapAML ) THEN
155     #ifdef ALLOW_DEBUG
156 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('CHEAPAML_FIELDS_LOAD',myThid)
157 jmc 1.7 #endif
158 jmc 1.9 CALL CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
159     ENDIF
160 jmc 1.7 #endif /*ALLOW_CHEAPAML */
161    
162 jahn 1.13 IF ( .NOT.useCheapAML ) THEN
163 jmc 1.5 #ifdef ALLOW_DEBUG
164 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
165 jmc 1.5 #endif
166 jmc 1.1 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 jmc 1.5 #ifdef NONLIN_FRSURF
170 heimbach 1.8 CADJ STORE SST = comlev1, key = ikey_dynamics, kind = isbyte
171     CADJ STORE SSS = comlev1, key = ikey_dynamics, kind = isbyte
172 jmc 1.5 # ifdef SHORTWAVE_HEATING
173 heimbach 1.8 CADJ STORE Qsw = comlev1, key = ikey_dynamics, kind = isbyte
174 jmc 1.1 # endif
175 jmc 1.5 #endif
176 jmc 1.1 ENDIF
177    
178     #ifdef ALLOW_OFFLINE
179     IF ( useOffLine ) THEN
180     #ifdef ALLOW_DEBUG
181 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('OFFLINE_FIELDS_LOAD',myThid)
182 jmc 1.1 #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 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
193 jmc 1.1 #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 jmc 1.9 IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
213 jmc 1.1 #endif
214    
215     RETURN
216     END

  ViewVC Help
Powered by ViewVC 1.1.22