File indexing completed on 2025-10-27 12:19:56 UTC
view on githubraw file Latest commit 45756050 on 2025-10-24 18:16:22 UTC
a9bb88678f Jean*0001 #include "PACKAGES_CONFIG.h"
0002 #include "CPP_OPTIONS.h"
517dbdc414 Jean*0003 #ifdef ALLOW_AUTODIFF
0004 # include "AUTODIFF_OPTIONS.h"
0005 #endif
0006 #ifdef ALLOW_COST
0007 # include "COST_OPTIONS.h"
0008 #endif
0009 #ifdef ALLOW_CTRL
0010 # include "CTRL_OPTIONS.h"
0011 #endif
0012 #ifdef ALLOW_EXF
0013 # include "EXF_OPTIONS.h"
0014 #endif
a9bb88678f Jean*0015
0016
0017
0018
0019 SUBROUTINE LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
5991c9a6ad Jean*0032
0033
0034
0035
a9bb88678f Jean*0036
0037
0038
0039
b4c132448c Jean*0040
0041
a9bb88678f Jean*0042
0043
87dd4f7d5f Oliv*0044
0045
b55e95f1ff Oliv*0046
0047
a9bb88678f Jean*0048
0049
0050
0051
0052
0053
0054
0055 IMPLICIT NONE
0056
0057 #include "SIZE.h"
0058 #include "EEPARAMS.h"
0059 #include "PARAMS.h"
701e10a905 Mart*0060 #include "GRID.h"
43e432aa51 Jean*0061 #include "FFIELDS.h"
701e10a905 Mart*0062 #include "DYNVARS.h"
a9bb88678f Jean*0063
517dbdc414 Jean*0064 #ifdef ALLOW_AUTODIFF
7c50f07931 Mart*0065 # ifdef ALLOW_AUTODIFF_TAMC
0066 # include "tamc.h"
0067 # endif
cfdbfa0351 Gael*0068 # ifdef ALLOW_CTRL
0069 # include "CTRL_SIZE.h"
4d72283393 Mart*0070 # include "CTRL.h"
9c41af81f6 Timo*0071 # include "CTRL_GENARR.h"
edcd27be69 Mart*0072 # include "CTRL_DUMMY.h"
cfdbfa0351 Gael*0073 # endif
0074 # ifdef ALLOW_COST
0075 # include "cost.h"
0076 # endif
a9bb88678f Jean*0077 # include "EOS.h"
0078 # ifdef ALLOW_EXF
798a745844 Jean*0079 # include "EXF_FIELDS.h"
517dbdc414 Jean*0080 # include "EXF_CONSTANTS.h"
b4daa24319 Shre*0081 # ifdef ALLOW_TAPENADE
0082 # include "EXF_PARAM.h"
0083 # include "EXF_INTERP_SIZE.h"
0084 # include "EXF_INTERP_PARAM.h"
0085 # endif
a9bb88678f Jean*0086 # endif
517dbdc414 Jean*0087 #endif /* ALLOW_AUTODIFF */
a9bb88678f Jean*0088
b4c132448c Jean*0089
a9bb88678f Jean*0090
0091
0092
0093 _RL myTime
0094 INTEGER myIter
0095 INTEGER myThid
0096
701e10a905 Mart*0097 _RL consTemp_to_poTemp
0098 EXTERNAL consTemp_to_poTemp
0099
b4c132448c Jean*0100
43e432aa51 Jean*0101 #if (defined ALLOW_ADDFLUID) || (defined ALLOW_FRICTION_HEATING)
701e10a905 Mart*0102 INTEGER k
43e432aa51 Jean*0103 #endif
701e10a905 Mart*0104 INTEGER ks
0105 INTEGER i,j,bi,bj
a9bb88678f Jean*0106
0107
0108 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0109 IF (debugMode) CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
a9bb88678f Jean*0110 #endif
0111
43e432aa51 Jean*0112
0113 #ifdef ALLOW_ADDFLUID
79b5d5775c Jean*0114
0115
0116
0117
f4d71cd088 Jean*0118 IF ( selectAddFluid.NE.0 .AND. addMassFile.EQ.' ' ) THEN
43e432aa51 Jean*0119 DO bj=myByLo(myThid),myByHi(myThid)
0120 DO bi=myBxLo(myThid),myBxHi(myThid)
0121 DO k=1,Nr
0122 DO j=1-OLy,sNy+OLy
0123 DO i=1-OLx,sNx+OLx
0124 addMass(i,j,k,bi,bj) = 0. _d 0
0125 ENDDO
0126 ENDDO
0127 ENDDO
0128 ENDDO
0129 ENDDO
0130 ENDIF
0131 #endif /* ALLOW_ADDFLUID */
0132
0133 #ifdef ALLOW_FRICTION_HEATING
f4d71cd088 Jean*0134 IF ( addFrictionHeating .AND. staggerTimeStep ) THEN
43e432aa51 Jean*0135 DO bj=myByLo(myThid),myByHi(myThid)
0136 DO bi=myBxLo(myThid),myBxHi(myThid)
0137 DO k=1,Nr
0138 DO j=1-OLy,sNy+OLy
0139 DO i=1-OLx,sNx+OLx
0140 frictionHeating(i,j,k,bi,bj) = 0. _d 0
0141 ENDDO
0142 ENDDO
0143 ENDDO
0144 ENDDO
0145 ENDDO
0146 ENDIF
0147 #endif /* ALLOW_FRICTION_HEATING */
0148
701e10a905 Mart*0149
0150
0151
0152 IF ( usingPCoords ) THEN
0153 ks = Nr
0154 ELSE
0155 ks = 1
0156 ENDIF
0157 IF ( fluidIsWater .AND. eosType .EQ. 'TEOS10' ) THEN
0158 DO bj=myByLo(myThid),myByHi(myThid)
0159 DO bi=myBxLo(myThid),myBxHi(myThid)
0160 CALL CONVERT_CT2PT(
0161 I theta(1-OLx,1-OLy,ks,bi,bj),
0162 I salt(1-OLx,1-OLy,ks,bi,bj),
0163 O gcmSST(1-OLx,1-OLy,bi,bj),
0164 I myTime, myIter, myThid )
0165
0166 DO j=1-OLy,sNy+OLy
0167 DO i=1-OLx,sNx+OLx
0168 gcmSST(i,j,bi,bj) = gcmSST(i,j,bi,bj)*maskC(i,j,ks,bi,bj)
0169 ENDDO
0170 ENDDO
0171 ENDDO
0172 ENDDO
0173 #ifdef ALLOW_AUTODIFF
0174 ELSE
0175 #else
0176 ELSEIF ( fluidIsWater ) THEN
0177 #endif
0178 DO bj=myByLo(myThid),myByHi(myThid)
0179 DO bi=myBxLo(myThid),myBxHi(myThid)
0180 DO j=1-OLy,sNy+OLy
0181 DO i=1-OLx,sNx+OLx
0182 gcmSST(i,j,bi,bj) = theta(i,j,ks,bi,bj)
0183 ENDDO
0184 ENDDO
0185 ENDDO
0186 ENDDO
0187 ENDIF
0188
d50b75bb8d Gael*0189
0190 #ifdef ALLOW_CTRL
5991c9a6ad Jean*0191 IF ( useCTRL ) THEN
0192 #ifdef ALLOW_DEBUG
0193 IF (debugMode) CALL DEBUG_CALL('CTRL_MAP_GENTIM2D',myThid)
d50b75bb8d Gael*0194 #endif
5991c9a6ad Jean*0195 CALL CTRL_MAP_GENTIM2D( myTime, myIter, myThid )
0196 ENDIF
0197 #endif /* ALLOW_CTRL */
d50b75bb8d Gael*0198
a9bb88678f Jean*0199 #ifdef ALLOW_BULK_FORCE
0200 IF ( useBulkForce ) THEN
0201
0202 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0203 IF (debugMode) CALL DEBUG_CALL('BULKF_FIELDS_LOAD',myThid)
a9bb88678f Jean*0204 #endif
0205 CALL TIMER_START('BULKF_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
0206 CALL BULKF_FIELDS_LOAD( myTime, myIter, myThid )
0207 CALL TIMER_STOP ('BULKF_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
0208 ENDIF
0209 #endif /* ALLOW_BULK_FORCE */
0210
0211
0212 #ifdef ALLOW_EXF
342da43f96 Patr*0213 IF (useEXF) THEN
a9bb88678f Jean*0214 # ifdef ALLOW_DEBUG
8440e8ae5d Jean*0215 IF (debugMode) CALL DEBUG_CALL('EXF_GETFORCING',myThid)
a9bb88678f Jean*0216 # endif
0217 CALL TIMER_START('EXF_GETFORCING [LOAD_FLDS_DRIVER]',myThid)
0218 CALL EXF_GETFORCING( myTime, myIter, myThid )
0219 CALL TIMER_STOP ('EXF_GETFORCING [LOAD_FLDS_DRIVER]',myThid)
342da43f96 Patr*0220 ENDIF
1a09ceef82 Jean*0221 #endif /* ALLOW_EXF */
0222
86f14fa6df Jean*0223
0224 #ifdef ALLOW_CHEAPAML
0225 IF ( useCheapAML ) THEN
0226 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0227 IF (debugMode) CALL DEBUG_CALL('CHEAPAML_FIELDS_LOAD',myThid)
86f14fa6df Jean*0228 #endif
8440e8ae5d Jean*0229 CALL CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
0230 ENDIF
86f14fa6df Jean*0231 #endif /*ALLOW_CHEAPAML */
0232
3fb95cc0ad Jean*0233 IF ( fluidIsWater ) THEN
1a09ceef82 Jean*0234 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0235 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
1a09ceef82 Jean*0236 #endif
a9bb88678f Jean*0237 CALL TIMER_START('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
0238 CALL EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
0239 CALL TIMER_STOP ('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
3fb95cc0ad Jean*0240 ENDIF
a9bb88678f Jean*0241
87dd4f7d5f Oliv*0242 #ifdef ALLOW_OASIM
0243 IF ( useOASIM ) THEN
0244 #ifdef ALLOW_DEBUG
0245 IF (debugMode) CALL DEBUG_CALL('OASIM_FIELDS_LOAD',myThid)
0246 #endif /* ALLOW_DEBUG */
0247 CALL TIMER_START('OASIM_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
0248 CALL OASIM_FIELDS_LOAD( .TRUE., myTime, myIter, myThid )
0249 CALL TIMER_STOP ('OASIM_FIELDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
0250 ENDIF
0251 #endif /* ALLOW_OASIM */
0252
b55e95f1ff Oliv*0253 #ifdef ALLOW_RADTRANS
0254 IF ( useRADTRANS ) THEN
0255 #ifdef ALLOW_DEBUG
0256 IF (debugMode) CALL DEBUG_CALL('RADTRANS_FIELDS_LOAD',myThid)
0257 #endif /* ALLOW_DEBUG */
0258 CALL RADTRANS_FIELDS_LOAD( myTime, myIter, myThid )
0259 ENDIF
0260 #endif /* ALLOW_RADTRANS */
0261
a9bb88678f Jean*0262 #ifdef ALLOW_GCHEM
0263 IF ( useGCHEM ) THEN
0264 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0265 IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
a9bb88678f Jean*0266 #endif /* ALLOW_DEBUG */
0267 CALL GCHEM_FIELDS_LOAD( myTime, myIter, myThid )
0268 ENDIF
0269 #endif /* ALLOW_GCHEM */
0270
0271 #ifdef ALLOW_RBCS
0272 IF ( useRBCS ) THEN
0273 CALL RBCS_FIELDS_LOAD( myTime, myIter, myThid )
0274 ENDIF
0275 #endif
0276
0277 #ifdef ALLOW_AIM
0278 IF ( useAIM ) THEN
0279
0280 CALL AIM_FIELDS_LOAD( myTime, myIter, myThid )
0281 ENDIF
0282 #endif
0283
701e10a905 Mart*0284 #ifdef ALLOW_DIAGNOSTICS
0285 IF ( fluidIsWater .AND. useDiagnostics ) THEN
0286 CALL DIAGNOSTICS_FILL( gcmSST, 'GCM_SST ',
0287 & 0, 1, 0, 1, 1, myThid )
0288 ENDIF
0289 #endif /* ALLOW_DIAGNOSTICS */
0290
a9bb88678f Jean*0291 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0292 IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
a9bb88678f Jean*0293 #endif
0294
0295 RETURN
0296 END