/[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.20 - (hide annotations) (download)
Sat Jul 18 21:45:03 2015 UTC (8 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65n, checkpoint65o
Changes since 1.19: +1 -14 lines
- change where Offline-Fields are loaded, from load_fields_driver.F to
  directly within FORWARD_STEP, just after updating iter number and time;
- move setting of GM and KPP diffusivity out of OFFLINE_FIELDS_LOAD into new
  S/R OFFLINE_GET_DIFFUS that is called towards the end of DO_OCEANIC_PHYS;

1 jmc 1.20 C $Header: /u/gcmpack/MITgcm/model/src/load_fields_driver.F,v 1.19 2015/01/22 18:21:45 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 |-- 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 jmc 1.14 #include "FFIELDS.h"
56 jmc 1.1
57 jmc 1.16 #ifdef ALLOW_AUTODIFF
58 jmc 1.1 # include "tamc.h"
59 heimbach 1.12 # include "CTRL_SIZE.h"
60 jmc 1.1 # include "ctrl.h"
61     # include "ctrl_dummy.h"
62     # include "cost.h"
63     # include "EOS.h"
64     # ifdef ALLOW_EXF
65 jmc 1.2 # include "EXF_FIELDS.h"
66 jmc 1.16 # include "EXF_CONSTANTS.h"
67 jmc 1.1 # endif
68 jmc 1.16 #endif /* ALLOW_AUTODIFF */
69 jmc 1.1
70 jmc 1.10 C !INPUT/OUTPUT PARAMETERS:
71 jmc 1.1 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 jmc 1.10 C !LOCAL VARIABLES:
79 jmc 1.14 #if (defined ALLOW_ADDFLUID) || (defined ALLOW_FRICTION_HEATING)
80     INTEGER i,j,k,bi,bj
81     #endif
82 jmc 1.1 CEOP
83    
84     #ifdef ALLOW_DEBUG
85 jmc 1.9 IF (debugMode) CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
86 jmc 1.1 #endif
87    
88 jmc 1.14 C-- Initialise forcing arrays that may receive multiple contributions
89     #ifdef ALLOW_ADDFLUID
90 jmc 1.19 IF ( selectAddFluid.NE.0 .AND. addMassFile.EQ.' ' ) THEN
91 jmc 1.14 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 jmc 1.19 IF ( addFrictionHeating .AND. staggerTimeStep ) THEN
107 jmc 1.14 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 gforget 1.17 C-- Map generic time varying controls to xx_gentim2d
122     #ifdef ALLOW_CTRL
123 gforget 1.18 if (useCTRL) CALL CTRL_MAP_GENTIM2D( myTime, myIter, myThid )
124 gforget 1.17 #endif
125    
126 jmc 1.1 #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 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('BULKF_FIELDS_LOAD',myThid)
131 jmc 1.1 #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 heimbach 1.4 IF (useEXF) THEN
141 jmc 1.1 # ifdef ALLOW_DEBUG
142 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('EXF_GETFORCING',myThid)
143 jmc 1.1 # 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 heimbach 1.4 ENDIF
148 jmc 1.5 #endif /* ALLOW_EXF */
149    
150 jmc 1.7 C-- Call external CheapAML forcing package
151     #ifdef ALLOW_CHEAPAML
152     IF ( useCheapAML ) THEN
153     #ifdef ALLOW_DEBUG
154 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('CHEAPAML_FIELDS_LOAD',myThid)
155 jmc 1.7 #endif
156 jmc 1.9 CALL CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
157     ENDIF
158 jmc 1.7 #endif /*ALLOW_CHEAPAML */
159    
160 jahn 1.13 IF ( .NOT.useCheapAML ) THEN
161 jmc 1.5 #ifdef ALLOW_DEBUG
162 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
163 jmc 1.5 #endif
164 jmc 1.1 CALL TIMER_START('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
165     CALL EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
166     CALL TIMER_STOP ('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
167 jmc 1.5 #ifdef NONLIN_FRSURF
168 heimbach 1.8 CADJ STORE SST = comlev1, key = ikey_dynamics, kind = isbyte
169     CADJ STORE SSS = comlev1, key = ikey_dynamics, kind = isbyte
170 jmc 1.5 # ifdef SHORTWAVE_HEATING
171 heimbach 1.8 CADJ STORE Qsw = comlev1, key = ikey_dynamics, kind = isbyte
172 jmc 1.1 # endif
173 jmc 1.5 #endif
174 jmc 1.1 ENDIF
175    
176     #ifdef ALLOW_GCHEM
177     IF ( useGCHEM ) THEN
178     #ifdef ALLOW_DEBUG
179 jmc 1.9 IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
180 jmc 1.1 #endif /* ALLOW_DEBUG */
181     CALL GCHEM_FIELDS_LOAD( myTime, myIter, myThid )
182     ENDIF
183     #endif /* ALLOW_GCHEM */
184    
185     #ifdef ALLOW_RBCS
186     IF ( useRBCS ) THEN
187     CALL RBCS_FIELDS_LOAD( myTime, myIter, myThid )
188     ENDIF
189     #endif
190    
191     #ifdef ALLOW_AIM
192     IF ( useAIM ) THEN
193     C- Update AIM bottom boundary data
194     CALL AIM_FIELDS_LOAD( myTime, myIter, myThid )
195     ENDIF
196     #endif
197    
198     #ifdef ALLOW_DEBUG
199 jmc 1.9 IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
200 jmc 1.1 #endif
201    
202     RETURN
203     END

  ViewVC Help
Powered by ViewVC 1.1.22