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