/[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.14 - (hide annotations) (download)
Fri Nov 9 22:40:36 2012 UTC (11 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64a, checkpoint64c, checkpoint64b
Changes since 1.13: +38 -2 lines
reset forcing arrays that may receive multiple contributions:
 applied to: frictional-Heating  and addMass (if not read from file)

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

  ViewVC Help
Powered by ViewVC 1.1.22