File indexing completed on 2026-05-05 05:08:22 UTC
view on githubraw file Latest commit 3f0f10fc on 2026-05-04 14:55:37 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
d8ea337c6c Patr*0002 #include "CPP_OPTIONS.h"
6d54cf9ca1 Ed H*0003
517dbdc414 Jean*0004 #ifdef ALLOW_AUTODIFF
0005 # include "AUTODIFF_OPTIONS.h"
0006 #endif
83df00bce7 Patr*0007 #ifdef ALLOW_GENERIC_ADVDIFF
0008 # include "GAD_OPTIONS.h"
0009 #endif
685f7544b6 Patr*0010 #ifdef ALLOW_GGL90
0011 # include "GGL90_OPTIONS.h"
0012 #endif
9b184aa726 Patr*0013 #ifdef ALLOW_GMREDI
0014 # include "GMREDI_OPTIONS.h"
0015 #endif
65b69c6b17 Patr*0016 #ifdef ALLOW_OBCS
0017 # include "OBCS_OPTIONS.h"
0018 #endif
a7828ed4d5 Patr*0019 #ifdef ALLOW_THSICE
0020 # include "THSICE_OPTIONS.h"
0021 #endif
9b45bc1f6c Patr*0022 #ifdef ALLOW_SEAICE
0023 # include "SEAICE_OPTIONS.h"
0024 #endif
80fd556159 Ou W*0025 #ifdef ALLOW_SALT_PLUME
0026 # include "SALT_PLUME_OPTIONS.h"
0027 #endif
544a4ff6e0 Patr*0028 #ifdef ALLOW_PTRACERS
0029 # include "PTRACERS_OPTIONS.h"
0030 #endif
1dc3e353c5 Jean*0031 #ifdef ALLOW_GCHEM
0032 # include "GCHEM_OPTIONS.h"
0033 #endif
0034 #ifdef ALLOW_DIC
0035 # include "DIC_OPTIONS.h"
0036 #endif
4e5fc818bf Matt*0037 #ifdef ALLOW_BLING
0038 # include "BLING_OPTIONS.h"
0039 #endif
9a00d4fc17 Gael*0040 #ifdef ALLOW_EXF
0041 # include "EXF_OPTIONS.h"
0042 #endif
376d4a0160 Patr*0043 #ifdef ALLOW_STREAMICE
0044 # include "STREAMICE_OPTIONS.h"
0045 #endif
9952f046d7 dngo*0046 #ifdef ALLOW_SHELFICE
0047 # include "SHELFICE_OPTIONS.h"
0048 #endif
517dbdc414 Jean*0049 #ifdef ALLOW_COST
0050 # include "COST_OPTIONS.h"
0051 #endif
c1fca7389f Gael*0052 #ifdef ALLOW_CTRL
0053 # include "CTRL_OPTIONS.h"
0054 #endif
30c7aa4d63 Gael*0055 #ifdef ALLOW_ECCO
0056 # include "ECCO_OPTIONS.h"
0057 #endif
80fd556159 Ou W*0058 #ifdef ALLOW_RBCS
0059 # include "RBCS_OPTIONS.h"
0060 #endif
d8ea337c6c Patr*0061
9e647b4f24 Jean*0062 #define ALLOW_MOM_STEPPING
0063 #if ( defined (ALLOW_AUTODIFF) && defined (ALLOW_OFFLINE) )
0064 # undef ALLOW_MOM_STEPPING
0065 #endif
0066
9366854e02 Chri*0067
0068
0069
b7d016da10 Alis*0070 SUBROUTINE FORWARD_STEP( iloop, myTime, myIter, myThid )
d8ea337c6c Patr*0071
9366854e02 Chri*0072
adcc4b1a0c Jean*0073
9366854e02 Chri*0074
adcc4b1a0c Jean*0075
0076
0077
9366854e02 Chri*0078
adcc4b1a0c Jean*0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
9366854e02 Chri*0090
adcc4b1a0c Jean*0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
9366854e02 Chri*0121
d8ea337c6c Patr*0122
8f92343d9b Jean*0123
0124
0125
0126
0127
9952f046d7 dngo*0128
0129
8f92343d9b Jean*0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
f533a5790a Jean*0151
8f92343d9b Jean*0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
9400d89b34 Dani*0162
8f92343d9b Jean*0163
0164
0165
0166
0167
0168
0169
0170
0171
6a828494d3 Jean*0172
8f92343d9b Jean*0173
0174
0175
0176
0177
0178
0179
dc2ebbdaf0 Jean*0180
0181
8f92343d9b Jean*0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
9366854e02 Chri*0238
0239 IMPLICIT NONE
0240
d8ea337c6c Patr*0241 #include "SIZE.h"
0242 #include "EEPARAMS.h"
0243 #include "PARAMS.h"
0244 #include "DYNVARS.h"
0245
b81731e160 Ed H*0246 #ifdef HAVE_SIGREG
0247 #include "SIGREG.h"
0248 #endif
0249
b649ac9bae Jean*0250 #ifdef ALLOW_SHAP_FILT
47738741e7 Jean*0251 # include "SHAP_FILT.h"
b649ac9bae Jean*0252 #endif
0253 #ifdef ALLOW_ZONAL_FILT
47738741e7 Jean*0254 # include "ZONAL_FILT.h"
b649ac9bae Jean*0255 #endif
0256
4e66ab0b67 Oliv*0257 #ifdef ALLOW_LONGSTEP
0258 # include "LONGSTEP_PARAMS.h"
0259 # include "LONGSTEP.h"
0260 #endif
0261
517dbdc414 Jean*0262 #ifdef ALLOW_AUTODIFF
47738741e7 Jean*0263 # include "FFIELDS.h"
bef5cbe0ec Patr*0264 # include "SURFACE.h"
47738741e7 Jean*0265
7c50f07931 Mart*0266 # ifdef ALLOW_AUTODIFF_TAMC
0267 # include "tamc.h"
0268 # endif
0513668de6 Gael*0269 # ifdef ALLOW_CTRL
0270 # include "CTRL_SIZE.h"
4d72283393 Mart*0271 # include "CTRL.h"
edcd27be69 Mart*0272 # include "CTRL_DUMMY.h"
c1fca7389f Gael*0273 # include "CTRL_GENARR.h"
4948b10fac Gael*0274 # include "CTRL_OBCS.h"
0513668de6 Gael*0275 # endif
0276 # ifdef ALLOW_COST
0277 # include "cost.h"
0278 # endif
345f7357c1 Gael*0279 # ifdef ALLOW_ECCO
0280 # include "ecco_cost.h"
0281 # endif
7103bd8015 Patr*0282 # include "EOS.h"
616600b8d2 Patr*0283 # if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL)
cdc9f269ae Patr*0284 # include "GRID.h"
0285 # endif
685f7544b6 Patr*0286 # ifdef ALLOW_GMREDI
0287 # include "GMREDI.h"
0288 # endif
95c7d150a4 Ed H*0289 # ifdef ALLOW_EXF
33c873885d Jean*0290 # ifdef ALLOW_BULKFORMULAE
798a745844 Jean*0291 # include "EXF_CONSTANTS.h"
de416ebcde Patr*0292 # endif
67647493ca Jean*0293 # include "EXF_INTERP_SIZE.h"
0294 # include "EXF_FIELDS.h"
de416ebcde Patr*0295 # endif
685f7544b6 Patr*0296 # ifdef ALLOW_CD_CODE
0297 # include "CD_CODE_VARS.h"
0298 # endif
0299 # ifdef ALLOW_GENERIC_ADVDIFF
0300 # include "GAD.h"
0301 # include "GAD_SOM_VARS.h"
0302 # endif
0303 # ifdef ALLOW_GGL90
0304 # include "GGL90.h"
0305 # endif
cf2549e769 Patr*0306 # ifdef ALLOW_PTRACERS
636477d15b Jean*0307 # include "PTRACERS_SIZE.h"
85f77391e5 Jean*0308 # include "PTRACERS_FIELDS.h"
cf2549e769 Patr*0309 # endif
529eea311c Gael*0310 # ifdef ALLOW_GCHEM
1dc3e353c5 Jean*0311 # include "GCHEM_SIZE.h"
529eea311c Gael*0312 # include "GCHEM_FIELDS.h"
0313 # endif
0314 # ifdef ALLOW_CFC
0315 # include "CFC.h"
0316 # endif
0317 # ifdef ALLOW_DIC
0318 # include "DIC_VARS.h"
0319 # include "DIC_LOAD.h"
0320 # include "DIC_ATMOS.h"
fc62302ca1 Patr*0321 # include "DIC_COST.h"
529eea311c Gael*0322 # endif
f09d2da379 Jean*0323 # ifdef ALLOW_BLING
0324 # include "BLING_VARS.h"
0325 # include "BLING_LOAD.h"
0326 # endif
65b69c6b17 Patr*0327 # ifdef ALLOW_OBCS
6f4cf52d27 Dimi*0328 # include "OBCS_PARAMS.h"
a9eb030de2 Jean*0329 # include "OBCS_FIELDS.h"
0330 # include "OBCS_SEAICE.h"
65b69c6b17 Patr*0331 # ifdef ALLOW_PTRACERS
0332 # include "OBCS_PTRACERS.h"
0333 # endif
0334 # endif
c567874792 Patr*0335 # ifdef ALLOW_THSICE
a7828ed4d5 Patr*0336 # include "THSICE_PARAMS.h"
0337 # include "THSICE_SIZE.h"
c567874792 Patr*0338 # include "THSICE_VARS.h"
a7828ed4d5 Patr*0339 # include "THSICE_COST.h"
c567874792 Patr*0340 # endif
9b45bc1f6c Patr*0341 # ifdef ALLOW_SEAICE
a2c8840cf9 Jean*0342 # include "SEAICE_SIZE.h"
3f0f10fc37 Mart*0343 # include "SEAICE_GRID.h"
9b45bc1f6c Patr*0344 # include "SEAICE.h"
34ea64e027 Patr*0345 # include "SEAICE_COST.h"
9b45bc1f6c Patr*0346 # endif
56b3a0d0fa Patr*0347 # ifdef ALLOW_SALT_PLUME
0348 # include "SALT_PLUME.h"
0349 # endif
9c41af81f6 Timo*0350 # ifdef ALLOW_DOWN_SLOPE
0351 # include "DWNSLP_SIZE.h"
0352 # include "DWNSLP_VARS.h"
0353 # endif
3e86393e2c Patr*0354 # ifdef ALLOW_SHELFICE
0355 # include "SHELFICE.h"
0356 # include "SHELFICE_COST.h"
0357 # endif
376d4a0160 Patr*0358 # ifdef ALLOW_STREAMICE
0359 # include "STREAMICE.h"
0360 # include "STREAMICE_ADV.h"
0361 # include "STREAMICE_BDRY.h"
0362 # include "STREAMICE_CG.h"
0363 # endif
d8206d87ee Patr*0364 # ifdef ALLOW_EBM
0365 # include "EBM.h"
0366 # endif
9b184aa726 Patr*0367 # ifdef ALLOW_KPP
0368 # include "KPP.h"
0369 # endif
cc747f5a7a Patr*0370 # ifdef ALLOW_RBCS
de7a0e15d8 Jean*0371 # include "RBCS_SIZE.h"
0372 # include "RBCS_FIELDS.h"
cc747f5a7a Patr*0373 # endif
9683f9bbcc Patr*0374 # ifdef ALLOW_OFFLINE
0375 # include "OFFLINE.h"
0376 # endif
aecc8b0f47 Mart*0377 # if (defined ALLOW_CG2D_NSA || defined NONLIN_FRSURF || \
0378 defined ALLOW_DEPTH_CONTROL)
55d9234027 Patr*0379 # include "CG2D.h"
0380 # endif
517dbdc414 Jean*0381 #endif /* ALLOW_AUTODIFF */
d8ea337c6c Patr*0382
b4daa24319 Shre*0383 #ifdef ALLOW_TAPENADE
0384
0385
0386
0387 # ifdef ALLOW_MOM_FLUXFORM
0388 # include "MOM_FLUXFORM.h"
0389 # endif
0390 # ifdef ALLOW_EXF
0391 # include "EXF_PARAM.h"
0392 # include "EXF_INTERP_PARAM.h"
0393 # endif
0394 #endif /* ALLOW_TAPENADE */
0395
455a90837c Jean*0396
9366854e02 Chri*0397
529408dc72 Jean*0398
0399
0400
0401
b7d016da10 Alis*0402
455a90837c Jean*0403
0404
0405
9fcf571bcd Jean*0406 INTEGER iloop
0407 _RL myTime
455a90837c Jean*0408 INTEGER myIter
0409 INTEGER myThid
9fcf571bcd Jean*0410
455a90837c Jean*0411
9fcf571bcd Jean*0412
455a90837c Jean*0413
4e66ab0b67 Oliv*0414
0415
455a90837c Jean*0416 LOGICAL modelEnd
ea669e205e Jean*0417 #ifdef ALLOW_LONGSTEP
fda3710353 Oliv*0418 INTEGER myIterBeg
0419 _RL myTimeBeg
ea669e205e Jean*0420 #endif /* ALLOW_LONGSTEP */
9366854e02 Chri*0421
d8ea337c6c Patr*0422
49e3578e36 Ed H*0423 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0424 IF (debugMode) CALL DEBUG_ENTER('FORWARD_STEP',myThid)
73ead277e0 Alis*0425 #endif
0426
517dbdc414 Jean*0427 #ifdef ALLOW_AUTODIFF
cee16b76ae Dimi*0428
51d88069bf Jean*0429 myIter = nIter0 + (iloop-1)
7c3b863339 Jean*0430 myTime = startTime + deltaTClock*(iLoop-1)
d8ea337c6c Patr*0431 #endif
0432
a10c595eb6 Timo*0433 #ifdef ALLOW_AUTODIFF
0434 CALL AUTODIFF_INADMODE_UNSET( myTime, myIter, myThid )
0435 #endif
0436
ea669e205e Jean*0437 #ifdef ALLOW_LONGSTEP
4e66ab0b67 Oliv*0438
fda3710353 Oliv*0439
0440
4e66ab0b67 Oliv*0441 myIterBeg = myIter
0442 myTimeBeg = myTime
ea669e205e Jean*0443 #endif /* ALLOW_LONGSTEP */
4e66ab0b67 Oliv*0444
32117771cc Patr*0445 #ifdef ALLOW_AUTODIFF_TAMC
0446
0447 #include "checkpoint_lev1_directives.h"
32af943b8a Patr*0448 #include "checkpoint_lev1_template.h"
32117771cc Patr*0449
67a1e439d8 Patr*0450 #endif
6424ee9bc0 Curt*0451
9952f046d7 dngo*0452 #ifdef ALLOW_SHELFICE_REMESHING
0453 IF ( useShelfIce ) THEN
0454
0455 CALL TIMER_START('SHELFICE_REMESHING [FORWARD_STEP]',myThid)
0456 CALL SHELFICE_REMESHING ( myTime, myIter, myThid )
0457 CALL TIMER_STOP('SHELFICE_REMESHING [FORWARD_STEP]',myThid)
0458 ENDIF
0459 #endif /* ALLOW_SHELFICE_REMESHING */
0460
0bcf1b56f4 Jean*0461
0462
72a058b866 Gael*0463 #ifdef NONLIN_FRSURF
517dbdc414 Jean*0464 #ifndef ALLOW_AUTODIFF
0bcf1b56f4 Jean*0465 IF ( doResetHFactors ) THEN
0466 #endif
ccbf39d1a4 Jean*0467 CALL RESET_NLFS_VARS( myTime, myIter, myThid )
72a058b866 Gael*0468 IF ( select_rStar.GT.0 ) THEN
0469 # ifndef DISABLE_RSTAR_CODE
0470 # ifdef ALLOW_AUTODIFF_TAMC
35d3d94e31 Jean*0471
ced23bb277 Gael*0472
72a058b866 Gael*0473 # endif
0474 CALL TIMER_START('UPDATE_R_STAR [FORWARD_STEP]',myThid)
0475 CALL UPDATE_R_STAR( .FALSE., myTime, myIter, myThid )
0476 CALL TIMER_STOP ('UPDATE_R_STAR [FORWARD_STEP]',myThid)
0477 # endif /* DISABLE_RSTAR_CODE */
0478 ELSE
0479 #ifdef ALLOW_AUTODIFF_TAMC
0480
ced23bb277 Gael*0481
72a058b866 Gael*0482 #endif
0483 CALL TIMER_START('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
0484 CALL UPDATE_SURF_DR( .FALSE., myTime, myIter, myThid )
0485 CALL TIMER_STOP ('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
0486 ENDIF
0bcf1b56f4 Jean*0487 #ifdef ALLOW_AUTODIFF_TAMC
ced23bb277 Gael*0488
0489
0490
0491
45ae106d3b Jean*0492 #endif
0493 #ifndef ALLOW_AUTODIFF
0bcf1b56f4 Jean*0494 ENDIF
0495 #endif
72a058b866 Gael*0496 #endif /* NONLIN_FRSURF */
0497
7bfcf7940f Jean*0498 #ifdef ALLOW_PTRACERS
0499
0500 IF ( usePTRACERS ) THEN
0501 CALL PTRACERS_SWITCH_ONOFF( myTime, myIter, myThid )
0502 ENDIF
0503 #endif /* ALLOW_PTRACERS */
0504
be7aceba73 Jean*0505
0506 #ifdef ALLOW_DIAGNOSTICS
0507 IF ( useDiagnostics ) THEN
41c4545f8f Jean*0508 CALL DIAGNOSTICS_SWITCH_ONOFF( 1, myTime, myIter, myThid )
b5c2f2589c Jean*0509
0510 CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0511 CALL DO_STATEVARS_DIAGS( myTime, 0, myIter, myThid )
0512 CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0513 ENDIF
7bfcf7940f Jean*0514 #endif /* ALLOW_DIAGNOSTICS */
b5c2f2589c Jean*0515
ba9a45d563 Jean*0516 #ifdef ALLOW_NEST_CHILD
0517 IF ( useNEST_CHILD) THEN
8440e8ae5d Jean*0518 CALL NEST_CHILD_SETMEMO( myTime, myIter, myThid )
ba9a45d563 Jean*0519 ENDIF
0520 #endif /* ALLOW_NEST_CHILD */
0521
0522 #ifdef ALLOW_NEST_PARENT
0523 IF ( useNEST_PARENT) THEN
0524 CALL NEST_PARENT_IO_1( myTime, myIter, myThid )
0525 ENDIF
0526 #endif /* ALLOW_NEST_PARENT */
0527
529408dc72 Jean*0528
0529 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0530 IF (debugMode) CALL DEBUG_CALL('LOAD_FIELDS_DRIVER',myThid)
529408dc72 Jean*0531 #endif
13783cb644 Patr*0532 #ifdef ALLOW_AUTODIFF_TAMC
0533
8a7ca847ff Patr*0534
0535
35d3d94e31 Jean*0536
8a7ca847ff Patr*0537
13783cb644 Patr*0538 #endif
529408dc72 Jean*0539 CALL TIMER_START('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid)
0540 CALL LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
0541 CALL TIMER_STOP ('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid)
0542
40ad671a6b Jean*0543
7753507405 Curt*0544 #ifdef ALLOW_BULK_FORCE
10e4bbdd7f Jean*0545 IF ( useBulkForce ) THEN
49e3578e36 Ed H*0546 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0547 IF (debugMode) CALL DEBUG_CALL('BULKF_FORCING',myThid)
73ead277e0 Alis*0548 #endif
529408dc72 Jean*0549 CALL TIMER_START('BULKF_FORCING [FORWARD_STEP]',myThid)
10e4bbdd7f Jean*0550
529408dc72 Jean*0551 CALL BULKF_FORCING( myTime, myIter, myThid )
0552 CALL TIMER_STOP ('BULKF_FORCING [FORWARD_STEP]',myThid)
40ad671a6b Jean*0553 ENDIF
b2498468b3 Jean*0554 #endif /* ALLOW_BULK_FORCE */
33c873885d Jean*0555
86f14fa6df Jean*0556
0557 #ifdef ALLOW_CHEAPAML
0558 IF ( useCheapAML ) THEN
0559 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0560 IF (debugMode) CALL DEBUG_CALL('CHEAPAML',myThid)
86f14fa6df Jean*0561 #endif
9e647b4f24 Jean*0562 CALL TIMER_START('CHEAPAML [FORWARD_STEP]',myThid)
86f14fa6df Jean*0563
8440e8ae5d Jean*0564 CALL CHEAPAML( myTime, myIter,myThid )
9e647b4f24 Jean*0565 CALL TIMER_STOP ('CHEAPAML [FORWARD_STEP]',myThid)
86f14fa6df Jean*0566 ENDIF
0567 #endif /*ALLOW_CHEAPAML */
0568
a424c359ed Gael*0569 #ifdef ALLOW_CTRL
35d3d94e31 Jean*0570
25c5ed8154 Gael*0571 IF ( useCTRL ) THEN
0572 CALL TIMER_START('CTRL_MAP_FORCING [FORWARD_STEP]',myThid)
0573 CALL CTRL_MAP_FORCING( myTime, myIter, myThid )
0574 CALL TIMER_STOP ('CTRL_MAP_FORCING [FORWARD_STEP]',myThid)
0575 ENDIF
448ff6251a Patr*0576 #endif
6424ee9bc0 Curt*0577
517dbdc414 Jean*0578 #ifdef ALLOW_AUTODIFF_MONITOR
8f0b59c61c Patr*0579 CALL DUMMY_IN_STEPPING( myTime, myIter, myThid )
176ce185cd Step*0580 #endif
0581
c1b6df074d Jean*0582 #ifdef COMPONENT_MODULE
904dd2a012 Jean*0583 IF ( useCoupler ) THEN
c1b6df074d Jean*0584
0585
0586 CALL TIMER_START('CPL_EXPORT-IMPORT [FORWARD_STEP]',myThid)
f533a5790a Jean*0587 CALL CPL_EXPORT_IMPORT_DATA( myTime, myIter, myThid )
c1b6df074d Jean*0588 CALL TIMER_STOP ('CPL_EXPORT-IMPORT [FORWARD_STEP]',myThid)
529408dc72 Jean*0589 ENDIF
c1b6df074d Jean*0590 #endif /* COMPONENT_MODULE */
696c4221e9 Mart*0591 #ifdef ALLOW_OASIS
0592 IF ( useOASIS ) THEN
0593 CALL TIMER_START('OASIS_PUT-GET [FORWARD_STEP]',myThid)
0594
0595 CALL OASIS_PUT( myTime, myIter, myThid )
0596
0597 CALL OASIS_GET( myTime, myIter, myThid )
0598 CALL TIMER_STOP ('OASIS_PUT-GET [FORWARD_STEP]',myThid)
0599 ENDIF
0600 #endif /* ALLOW_OASIS */
0601
d8206d87ee Patr*0602 #ifdef ALLOW_EBM
529408dc72 Jean*0603 IF ( useEBM ) THEN
d8206d87ee Patr*0604 # ifdef ALLOW_DEBUG
8440e8ae5d Jean*0605 IF (debugMode) CALL DEBUG_CALL('EBM',myThid)
d8206d87ee Patr*0606 # endif
8440e8ae5d Jean*0607 CALL TIMER_START('EBM [FORWARD_STEP]',myThid)
0608 CALL EBM_DRIVER ( myTime, myIter, myThid )
0609 CALL TIMER_STOP ('EBM [FORWARD_STEP]',myThid)
529408dc72 Jean*0610 ENDIF
0611 #endif /* ALLOW_EBM */
d8206d87ee Patr*0612
9c41af81f6 Timo*0613 #ifdef ALLOW_AUTODIFF_TAMC
0614
0615
0616
0617 # include "check_lev1_dir_forcing.h"
0618
0619 #endif /* ALLOW_AUTODIFF_TAMC */
0620
c8e3a3b543 Jean*0621
0622
0623 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0624 IF (debugMode) CALL DEBUG_CALL('DO_ATMOSPHERIC_PHYS',myThid)
c8e3a3b543 Jean*0625 #endif
529408dc72 Jean*0626 CALL TIMER_START('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',myThid)
0627 CALL DO_ATMOSPHERIC_PHYS( myTime, myIter, myThid )
0628 CALL TIMER_STOP ('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',myThid)
c8e3a3b543 Jean*0629
9b184aa726 Patr*0630 #ifdef ALLOW_AUTODIFF_TAMC
0631 # ifdef ALLOW_KPP
aecc8b0f47 Mart*0632
38b71af82a Patr*0633 # endif /* ALLOW_KPP */
aecc8b0f47 Mart*0634
0635
b919404dfb Patr*0636 # ifdef ALLOW_OBCS
aecc8b0f47 Mart*0637
0638
38b71af82a Patr*0639 # endif /* ALLOW_OBCS */
49a23c9cb2 Patr*0640 # ifdef ALLOW_PTRACERS
aecc8b0f47 Mart*0641
38b71af82a Patr*0642 # endif /* ALLOW_PTRACERS */
0bcf1b56f4 Jean*0643 # ifdef ALLOW_DEPTH_CONTROL
aecc8b0f47 Mart*0644
69361556c2 Mart*0645 # ifdef ALLOW_SEAICE
0646
0647
0648
0649 # endif
cdc9f269ae Patr*0650 # endif
9b184aa726 Patr*0651 #endif /* ALLOW_AUTODIFF_TAMC */
0652
49e3578e36 Ed H*0653 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0654 IF (debugMode) CALL DEBUG_CALL('DO_OCEANIC_PHYS',myThid)
1d71c648ad Jean*0655 #endif
529408dc72 Jean*0656 CALL TIMER_START('DO_OCEANIC_PHYS [FORWARD_STEP]',myThid)
615c650f5e Jean*0657 CALL DO_OCEANIC_PHYS( myTime, myIter, myThid )
529408dc72 Jean*0658 CALL TIMER_STOP ('DO_OCEANIC_PHYS [FORWARD_STEP]',myThid)
376d4a0160 Patr*0659
9e647b4f24 Jean*0660 #ifdef ALLOW_STREAMICE
5fb2fbfa94 Jean*0661 IF (useStreamIce) THEN
0662 CALL STREAMICE_TIMESTEP ( myThid, myIter,
0663 & iLoop, myTime )
0664 ENDIF
376d4a0160 Patr*0665 #endif
0666
a1ee12c555 Patr*0667 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0668
0669
0670
0671
0672
0673
0674 # include "check_lev1_dir_ocephys.h"
0675
0499e7ef48 Patr*0676 #endif /* ALLOW_AUTODIFF_TAMC */
91bac1c842 Andr*0677
9c41af81f6 Timo*0678 #ifdef GCHEM_ADD2TR_TENDENCY
0679 #ifndef ALLOW_AUTODIFF
35d3d94e31 Jean*0680 IF ( useGCHEM ) THEN
9c41af81f6 Timo*0681 #endif
529eea311c Gael*0682 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0683
0684
529eea311c Gael*0685 #endif
6153ee95d4 Mart*0686 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0687 IF (debugMode) CALL DEBUG_CALL('GCHEM_CALC_TENDENCY',myThid)
6153ee95d4 Mart*0688 #endif
0689 CALL TIMER_START('GCHEM_CALC_TENDENCY [FORWARD_STEP]',myThid)
0690 CALL GCHEM_CALC_TENDENCY( myTime, myIter, myThid )
0691 CALL TIMER_STOP ('GCHEM_CALC_TENDENCY [FORWARD_STEP]',myThid)
9b184aa726 Patr*0692 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0693
0694 #endif
0695 #ifndef ALLOW_AUTODIFF
0696 ENDIF
0697 #endif
0698 #endif /* GCHEM_ADD2TR_TENDENCY */
9b184aa726 Patr*0699
4e66ab0b67 Oliv*0700 #ifdef ALLOW_LONGSTEP
9e647b4f24 Jean*0701 IF ( usePTRACERS .AND. LS_whenToSample .EQ. 0 ) THEN
4e66ab0b67 Oliv*0702
0703
0704
0705
0706 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0707 IF (debugMode) CALL DEBUG_CALL('LONGSTEP_AVERAGE',myThid)
4e66ab0b67 Oliv*0708 #endif
0709 CALL TIMER_START('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
0710 CALL LONGSTEP_AVERAGE( myTime, myIter, myThid )
0711 CALL TIMER_STOP ('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
fda3710353 Oliv*0712
0713 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0714 IF (debugMode)
fda3710353 Oliv*0715 & CALL DEBUG_CALL('LONGSTEP_THERMODYNAMICS',myThid)
0716 #endif
0717 CALL TIMER_START('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0718 & myThid)
0719 CALL LONGSTEP_THERMODYNAMICS( myTime, myIter, myThid )
0720 CALL TIMER_STOP ('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0721 & myThid)
4e66ab0b67 Oliv*0722 ENDIF
0723 #endif /* ALLOW_LONGSTEP */
0724
615c650f5e Jean*0725 IF ( .NOT.staggerTimeStep ) THEN
35d3d94e31 Jean*0726 #ifdef ALLOW_AUTODIFF_TAMC
0727
0728 #endif
49e3578e36 Ed H*0729 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0730 IF (debugMode) CALL DEBUG_CALL('THERMODYNAMICS',myThid)
73ead277e0 Alis*0731 #endif
529408dc72 Jean*0732 CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid)
615c650f5e Jean*0733 CALL THERMODYNAMICS( myTime, myIter, myThid )
529408dc72 Jean*0734 CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid)
fda3710353 Oliv*0735
b649ac9bae Jean*0736 ENDIF
9c41af81f6 Timo*0737 #if (defined ALLOW_AUTODIFF_TAMC) && (defined ALLOW_OBCS)
0738
0739 #endif /* ALLOW_AUTODIFF_TAMC && ALLOW_OBCS */
4e66ab0b67 Oliv*0740
0741 #ifdef ALLOW_LONGSTEP
9e647b4f24 Jean*0742 IF ( usePTRACERS .AND. LS_whenToSample .EQ. 1 ) THEN
fda3710353 Oliv*0743
0744
4e66ab0b67 Oliv*0745
0746 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0747 IF (debugMode) CALL DEBUG_CALL('LONGSTEP_AVERAGE',myThid)
4e66ab0b67 Oliv*0748 #endif
0749 CALL TIMER_START('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
0750 CALL LONGSTEP_AVERAGE( myTime, myIter, myThid )
0751 CALL TIMER_STOP ('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
fda3710353 Oliv*0752
0753 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0754 IF (debugMode)
fda3710353 Oliv*0755 & CALL DEBUG_CALL('LONGSTEP_THERMODYNAMICS',myThid)
0756 #endif
0757 CALL TIMER_START('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0758 & myThid)
0759 CALL LONGSTEP_THERMODYNAMICS( myTime, myIter, myThid )
0760 CALL TIMER_STOP ('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0761 & myThid)
4e66ab0b67 Oliv*0762 ENDIF
0763 #endif /* ALLOW_LONGSTEP */
0764
cb7fa97db9 Jean*0765
0766 IF ( implicitIntGravWave ) THEN
0767 CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
0768 CALL DO_STAGGER_FIELDS_EXCHANGES( myTime, myIter, myThid )
0769 CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
0770 ENDIF
0771
1d71c648ad Jean*0772
0499e7ef48 Patr*0773 #ifdef ALLOW_AUTODIFF_TAMC
79fda098df Gael*0774
bfdbc242ac Jean*0775 # ifdef ALLOW_DEPTH_CONTROL
ced23bb277 Gael*0776
0777
0778
0779
bfdbc242ac Jean*0780 # endif /* ALLOW_DEPTH_CONTROL */
0781 #endif /* ALLOW_AUTODIFF_TAMC */
fc62302ca1 Patr*0782
cee16b76ae Dimi*0783
9e647b4f24 Jean*0784 #ifdef ALLOW_MOM_STEPPING
517dbdc414 Jean*0785 #ifndef ALLOW_AUTODIFF
cee16b76ae Dimi*0786 IF ( momStepping ) THEN
edc3e287c7 Patr*0787 #endif
49e3578e36 Ed H*0788 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0789 IF (debugMode) CALL DEBUG_CALL('DYNAMICS',myThid)
73ead277e0 Alis*0790 #endif
529408dc72 Jean*0791 CALL TIMER_START('DYNAMICS [FORWARD_STEP]',myThid)
d8ea337c6c Patr*0792 CALL DYNAMICS( myTime, myIter, myThid )
529408dc72 Jean*0793 CALL TIMER_STOP ('DYNAMICS [FORWARD_STEP]',myThid)
517dbdc414 Jean*0794 #ifndef ALLOW_AUTODIFF
cee16b76ae Dimi*0795 ENDIF
edc3e287c7 Patr*0796 #endif
9e647b4f24 Jean*0797 #endif /* ALLOW_MOM_STEPPING */
a27159adf7 Jean*0798
0499e7ef48 Patr*0799 #ifdef ALLOW_AUTODIFF_TAMC
616600b8d2 Patr*0800 # if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL)
8a7ca847ff Patr*0801
0802
0499e7ef48 Patr*0803 # endif
f66c946416 Step*0804 #endif
d8ea337c6c Patr*0805
615c650f5e Jean*0806
0807 myIter = nIter0 + iLoop
7c3b863339 Jean*0808 myTime = startTime + deltaTClock*iLoop
615c650f5e Jean*0809
5bc9611487 Ed H*0810 #ifdef ALLOW_MNC
ce8f1dd452 Jean*0811
5bc9611487 Ed H*0812 IF ( useMNC ) THEN
ce8f1dd452 Jean*0813 CALL MNC_UPDATE_TIME( myTime, myIter, myThid )
529408dc72 Jean*0814 ENDIF
0815 #endif /* ALLOW_MNC */
5bc9611487 Ed H*0816
dc2ebbdaf0 Jean*0817 #ifdef ALLOW_OFFLINE
0818
0819 IF ( useOffLine ) THEN
0820 #ifdef ALLOW_DEBUG
0821 IF (debugMode) CALL DEBUG_CALL('OFFLINE_FIELDS_LOAD',myThid)
0822 #endif /* ALLOW_DEBUG */
0823 CALL TIMER_START('OFFLINE_FLDS_LOAD [FORWARD_STEP]',myThid)
0824 CALL OFFLINE_FIELDS_LOAD( myTime, myIter, myThid )
0825 CALL TIMER_STOP ('OFFLINE_FLDS_LOAD [FORWARD_STEP]',myThid)
0826 ENDIF
0827 #endif /* ALLOW_OFFLINE */
0828
615c650f5e Jean*0829
8de3419279 Jean*0830 #ifdef NONLIN_FRSURF
615c650f5e Jean*0831
855d57fc61 Jean*0832 IF ( select_rStar.GT.0 ) THEN
cdc9f269ae Patr*0833 # ifndef DISABLE_RSTAR_CODE
0499e7ef48 Patr*0834 # ifdef ALLOW_AUTODIFF_TAMC
35d3d94e31 Jean*0835
ced23bb277 Gael*0836
0499e7ef48 Patr*0837 # endif
529408dc72 Jean*0838 CALL TIMER_START('UPDATE_R_STAR [FORWARD_STEP]',myThid)
72a058b866 Gael*0839 CALL UPDATE_R_STAR( .TRUE., myTime, myIter, myThid )
529408dc72 Jean*0840 CALL TIMER_STOP ('UPDATE_R_STAR [FORWARD_STEP]',myThid)
cdc9f269ae Patr*0841 # endif /* DISABLE_RSTAR_CODE */
855d57fc61 Jean*0842 ELSEIF ( selectSigmaCoord.NE.0 ) THEN
a2a20dcddc Jean*0843 # ifndef DISABLE_SIGMA_CODE
0844 CALL UPDATE_SIGMA( etaH, myTime, myIter, myThid )
0845 # endif /* DISABLE_RSTAR_CODE */
855d57fc61 Jean*0846 ELSE
517dbdc414 Jean*0847 # ifdef ALLOW_AUTODIFF_TAMC
ba9a45d563 Jean*0848
ced23bb277 Gael*0849
517dbdc414 Jean*0850 # endif
529408dc72 Jean*0851 CALL TIMER_START('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
72a058b866 Gael*0852 CALL UPDATE_SURF_DR( .TRUE., myTime, myIter, myThid )
529408dc72 Jean*0853 CALL TIMER_STOP ('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
855d57fc61 Jean*0854 ENDIF
0499e7ef48 Patr*0855 # ifdef ALLOW_AUTODIFF_TAMC
de7a0e15d8 Jean*0856
ced23bb277 Gael*0857
de7a0e15d8 Jean*0858
ced23bb277 Gael*0859
0499e7ef48 Patr*0860 # endif
855d57fc61 Jean*0861 #endif /* NONLIN_FRSURF */
0862
aecc8b0f47 Mart*0863 #if ( defined NONLIN_FRSURF || defined ALLOW_SOLVE4_PS_AND_DRAG || \
0864 defined ALLOW_CG2D_NSA || defined ALLOW_DEPTH_CONTROL )
855d57fc61 Jean*0865
0866 IF ( momStepping .AND.
0867 & ( nonlinFreeSurf.GT.2 .OR. selectImplicitDrag.EQ.2 ) ) THEN
529408dc72 Jean*0868 CALL TIMER_START('UPDATE_CG2D [FORWARD_STEP]',myThid)
8de3419279 Jean*0869 CALL UPDATE_CG2D( myTime, myIter, myThid )
529408dc72 Jean*0870 CALL TIMER_STOP ('UPDATE_CG2D [FORWARD_STEP]',myThid)
8de3419279 Jean*0871 ENDIF
aecc8b0f47 Mart*0872 # ifdef ALLOW_AUTODIFF_TAMC
79b5d5775c Jean*0873
aecc8b0f47 Mart*0874
0875 # endif
855d57fc61 Jean*0876 #endif /* NONLIN_FRSURF or ALLOW_SOLVE4_PS_AND_DRAG */
8de3419279 Jean*0877
b649ac9bae Jean*0878
0879 #ifdef ALLOW_SHAP_FILT
0880 IF (useSHAP_FILT .AND. shap_filt_uvStar) THEN
f3ec658fc9 Jean*0881 CALL TIMER_START('SHAP_FILT_UV [FORWARD_STEP]',myThid)
79b5d5775c Jean*0882 CALL SHAP_FILT_APPLY_UV( gU, gV, myTime, myIter, myThid )
f3ec658fc9 Jean*0883 CALL TIMER_STOP ('SHAP_FILT_UV [FORWARD_STEP]',myThid)
b649ac9bae Jean*0884 ENDIF
0885 #endif
0886 #ifdef ALLOW_ZONAL_FILT
0887 IF (useZONAL_FILT .AND. zonal_filt_uvStar) THEN
f3ec658fc9 Jean*0888 CALL TIMER_START('ZONAL_FILT_UV [FORWARD_STEP]',myThid)
db44121e58 Jean*0889 CALL ZONAL_FILT_APPLY_UV( gU, gV, myThid )
f3ec658fc9 Jean*0890 CALL TIMER_STOP ('ZONAL_FILT_UV [FORWARD_STEP]',myThid)
b649ac9bae Jean*0891 ENDIF
a27159adf7 Jean*0892 #endif
b7d016da10 Alis*0893
d8ea337c6c Patr*0894
529408dc72 Jean*0895
d8ea337c6c Patr*0896
85937bd52b Alis*0897 IF ( momStepping ) THEN
d6e8c9ce95 Patr*0898 #ifdef ALLOW_AUTODIFF_TAMC
616600b8d2 Patr*0899 # if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL)
79b5d5775c Jean*0900
9c41af81f6 Timo*0901 # endif
d6e8c9ce95 Patr*0902 #endif
615c650f5e Jean*0903 CALL TIMER_START('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid)
79b5d5775c Jean*0904 CALL SOLVE_FOR_PRESSURE( myTime, myIter, myThid )
615c650f5e Jean*0905 CALL TIMER_STOP ('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid)
0906 ENDIF
0907
0908
9e647b4f24 Jean*0909 #ifdef ALLOW_MOM_STEPPING
517dbdc414 Jean*0910 #ifndef ALLOW_AUTODIFF
a27159adf7 Jean*0911 IF ( momStepping ) THEN
0912 #endif
f3ec658fc9 Jean*0913 CALL TIMER_START('MOM_CORRECTION_STEP [FORWARD_STEP]',myThid)
79b5d5775c Jean*0914 CALL MOMENTUM_CORRECTION_STEP( myTime, myIter, myThid )
f3ec658fc9 Jean*0915 CALL TIMER_STOP ('MOM_CORRECTION_STEP [FORWARD_STEP]',myThid)
517dbdc414 Jean*0916 #ifndef ALLOW_AUTODIFF
a27159adf7 Jean*0917 ENDIF
f66c946416 Step*0918 #endif
9e647b4f24 Jean*0919 #endif /* ALLOW_MOM_STEPPING */
9257d2aab8 Patr*0920 #ifdef ALLOW_AUTODIFF_TAMC
b1d6b00360 Jean*0921
9257d2aab8 Patr*0922 #endif
615c650f5e Jean*0923
bfdbc242ac Jean*0924 IF ( calc_wVelocity ) THEN
0925
0926
0927 CALL TIMER_START('INTEGR_CONTINUITY [FORWARD_STEP]',myThid)
0928 CALL INTEGR_CONTINUITY( uVel, vVel, myTime, myIter, myThid)
0929 CALL TIMER_STOP ('INTEGR_CONTINUITY [FORWARD_STEP]',myThid)
85937bd52b Alis*0930 ENDIF
9c41af81f6 Timo*0931 #ifdef ALLOW_AUTODIFF_TAMC
aa93ca8e85 Ciar*0932
9c41af81f6 Timo*0933
0934
aa93ca8e85 Ciar*0935
9c41af81f6 Timo*0936 #endif
615c650f5e Jean*0937
0938 #ifdef NONLIN_FRSURF
0939 IF ( select_rStar.NE.0 ) THEN
cdc9f269ae Patr*0940 # ifndef DISABLE_RSTAR_CODE
e2c5f2fe7c Patr*0941 # ifdef ALLOW_AUTODIFF_TAMC
9257d2aab8 Patr*0942
0943
35d3d94e31 Jean*0944
9257d2aab8 Patr*0945
e2c5f2fe7c Patr*0946 # endif
529408dc72 Jean*0947
0948 CALL TIMER_START('CALC_R_STAR [FORWARD_STEP]',myThid)
615c650f5e Jean*0949 CALL CALC_R_STAR(etaH, myTime, myIter, myThid )
529408dc72 Jean*0950 CALL TIMER_STOP ('CALC_R_STAR [FORWARD_STEP]',myThid)
cdc9f269ae Patr*0951 # endif /* DISABLE_RSTAR_CODE */
a2a20dcddc Jean*0952 ELSEIF ( nonlinFreeSurf.GT.0 .AND. selectSigmaCoord.EQ.0 ) THEN
529408dc72 Jean*0953
0499e7ef48 Patr*0954 # ifdef ALLOW_AUTODIFF_TAMC
8a7ca847ff Patr*0955
0956
0499e7ef48 Patr*0957 # endif
529408dc72 Jean*0958 CALL TIMER_START('CALC_SURF_DR [FORWARD_STEP]',myThid)
615c650f5e Jean*0959 CALL CALC_SURF_DR(etaH, myTime, myIter, myThid )
529408dc72 Jean*0960 CALL TIMER_STOP ('CALC_SURF_DR [FORWARD_STEP]',myThid)
615c650f5e Jean*0961 ENDIF
0499e7ef48 Patr*0962 # ifdef ALLOW_AUTODIFF_TAMC
9257d2aab8 Patr*0963
0964
8a7ca847ff Patr*0965
0966
35d3d94e31 Jean*0967
8a7ca847ff Patr*0968
9c41af81f6 Timo*0969 # ifdef ALLOW_PTRACERS
0970
0971 # endif /* ALLOW_PTRACERS */
529408dc72 Jean*0972 # endif
615c650f5e Jean*0973 #endif /* NONLIN_FRSURF */
0974
0975
0976 IF ( staggerTimeStep ) THEN
ffd0966f4f Jean*0977
0978 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0979 IF (debugMode)
529408dc72 Jean*0980 & CALL DEBUG_CALL('DO_STAGGER_FIELDS_EXCH.',myThid)
ffd0966f4f Jean*0981 #endif
0982 CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
0983 CALL DO_STAGGER_FIELDS_EXCHANGES( myTime, myIter, myThid )
0984 CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
615c650f5e Jean*0985
0499e7ef48 Patr*0986 #ifdef ALLOW_DIAGNOSTICS
b5c2f2589c Jean*0987
529408dc72 Jean*0988 IF ( useDiagnostics ) THEN
0989 CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0990 CALL DO_STATEVARS_DIAGS( myTime, 1, myIter, myThid )
0991 CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0992 ENDIF
0499e7ef48 Patr*0993 #endif
b5c2f2589c Jean*0994
35d3d94e31 Jean*0995 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0996
0997
0998
0999
35d3d94e31 Jean*1000 #endif
615c650f5e Jean*1001 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1002 IF (debugMode) CALL DEBUG_CALL('THERMODYNAMICS',myThid)
615c650f5e Jean*1003 #endif
529408dc72 Jean*1004 CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid)
615c650f5e Jean*1005 CALL THERMODYNAMICS( myTime, myIter, myThid )
529408dc72 Jean*1006 CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid)
615c650f5e Jean*1007
1008
1009 ENDIF
9c41af81f6 Timo*1010 #ifdef ALLOW_AUTODIFF_TAMC
1011
1012
1013
1014 #endif /* ALLOW_AUTODIFF_TAMC */
529408dc72 Jean*1015
d8ea337c6c Patr*1016
7103bd8015 Patr*1017 #ifdef ALLOW_AUTODIFF_TAMC
1018
1019
35d3d94e31 Jean*1020
8a7ca847ff Patr*1021
7103bd8015 Patr*1022 #endif
bd27360393 Jean*1023
529408dc72 Jean*1024 CALL TIMER_START('TRC_CORRECTION_STEP [FORWARD_STEP]',myThid)
1025 CALL TRACERS_CORRECTION_STEP(myTime, myIter, myThid)
1026 CALL TIMER_STOP ('TRC_CORRECTION_STEP [FORWARD_STEP]',myThid)
d8ea337c6c Patr*1027
4e66ab0b67 Oliv*1028 #ifdef ALLOW_LONGSTEP
1029 IF ( usePTRACERS ) THEN
fda3710353 Oliv*1030 IF ( LS_whenToSample .EQ. 2 ) THEN
4e66ab0b67 Oliv*1031
1032
fda3710353 Oliv*1033
4e66ab0b67 Oliv*1034 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1035 IF (debugMode) CALL DEBUG_CALL('LONGSTEP_AVERAGE',myThid)
4e66ab0b67 Oliv*1036 #endif
1037 CALL TIMER_START('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
1038
1039
1040 CALL LONGSTEP_AVERAGE( myTimeBeg, myIterBeg, myThid )
1041 CALL TIMER_STOP ('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
1042
1043 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1044 IF (debugMode)
fda3710353 Oliv*1045 & CALL DEBUG_CALL('LONGSTEP_THERMODYNAMICS',myThid)
4e66ab0b67 Oliv*1046 #endif
fda3710353 Oliv*1047 CALL TIMER_START('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
4e66ab0b67 Oliv*1048 & myThid)
fda3710353 Oliv*1049 CALL LONGSTEP_THERMODYNAMICS( myTime, myIter, myThid )
1050 CALL TIMER_STOP ('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
1051 & myThid)
1052
1053 ENDIF
4e66ab0b67 Oliv*1054
bd27360393 Jean*1055
1056
1057
1058
fda3710353 Oliv*1059
4e66ab0b67 Oliv*1060 ENDIF
1061 #endif /* ALLOW_LONGSTEP */
1062
6153ee95d4 Mart*1063 #ifdef ALLOW_GCHEM
e359829a2b Mart*1064
1065
35d3d94e31 Jean*1066 #ifdef ALLOW_LONGSTEP
1067 IF ( useGCHEM .AND. LS_doTimeStep ) THEN
1068 #else
1069 IF ( useGCHEM ) THEN
1070 #endif
9c41af81f6 Timo*1071 # ifdef ALLOW_AUTODIFF_TAMC
1072
1073 # ifdef ALLOW_PTRACERS
1074
1075 # endif /* ALLOW_PTRACERS */
1076 # endif
e359829a2b Mart*1077 #ifdef ALLOW_DEBUG
35d3d94e31 Jean*1078 IF (debugMode) CALL DEBUG_CALL('GCHEM_FORCING_SEP',myThid)
e359829a2b Mart*1079 #endif /* ALLOW_DEBUG */
35d3d94e31 Jean*1080 CALL TIMER_START('GCHEM_FORCING_SEP [FORWARD_STEP]',myThid)
1081 CALL GCHEM_FORCING_SEP( myTime,myIter,myThid )
1082 CALL TIMER_STOP ('GCHEM_FORCING_SEP [FORWARD_STEP]',myThid)
529408dc72 Jean*1083 ENDIF
6d54cf9ca1 Ed H*1084 #endif /* ALLOW_GCHEM */
e39d13c4c9 Step*1085
30a55c64a0 Mart*1086
1087
1088
1089
1090
1091
1092 CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
1093 CALL DO_FIELDS_BLOCKING_EXCHANGES( myThid )
1094 CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
9c41af81f6 Timo*1095 #ifdef ALLOW_AUTODIFF_TAMC
1096
1097
1098
1099
1100
1101
1102 # ifdef ALLOW_PTRACERS
1103
1104 # endif
1105 #endif
30a55c64a0 Mart*1106
0499e7ef48 Patr*1107 #ifdef ALLOW_DIAGNOSTICS
a27159adf7 Jean*1108 IF ( useDiagnostics ) THEN
cf44a6a231 Andr*1109 CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
1110 CALL DO_STATEVARS_DIAGS( myTime, 2, myIter, myThid )
1111 CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
1112 ENDIF
0499e7ef48 Patr*1113 #endif
30a55c64a0 Mart*1114
bc57263004 Andr*1115 #ifdef ALLOW_GRIDALT
529408dc72 Jean*1116 IF (useGRIDALT) THEN
dc451e9e8f Andr*1117 CALL GRIDALT_UPDATE(myThid)
529408dc72 Jean*1118 ENDIF
bc57263004 Andr*1119 #endif
1120
468f196fcd Andr*1121 #ifdef ALLOW_FIZHI
529408dc72 Jean*1122 IF (useFIZHI) THEN
1123 CALL TIMER_START('FIZHI [FORWARD_STEP]',myThid)
a9203e518a Andr*1124 CALL STEP_FIZHI_CORR ( myTime, myIter, myThid, dTtracerLev(1) )
529408dc72 Jean*1125 CALL TIMER_STOP ('FIZHI [FORWARD_STEP]',myThid)
1126 ENDIF
468f196fcd Andr*1127 #endif
e39d13c4c9 Step*1128
c806179eb4 Alis*1129 #ifdef ALLOW_FLT
1130
1131 IF (useFLT) THEN
650cc6304d Patr*1132 CALL TIMER_START('FLOATS [FORWARD_STEP]',myThid)
5fcc68371c Jean*1133 CALL FLT_MAIN( myTime, myIter, myThid )
650cc6304d Patr*1134 CALL TIMER_STOP ('FLOATS [FORWARD_STEP]',myThid)
c806179eb4 Alis*1135 ENDIF
1136 #endif
1137
94884059ae Jean*1138 #ifdef ALLOW_NEST_PARENT
1139 IF ( useNEST_PARENT) THEN
1140 CALL NEST_PARENT_IO_2( myTime, myIter, myThid )
1141 ENDIF
1142 #endif /* ALLOW_NEST_PARENT */
1143
1144 #ifdef ALLOW_NEST_CHILD
1145 IF ( useNEST_CHILD) THEN
1146 CALL NEST_CHILD_TRANSP( myTime, myIter, myThid )
1147 ENDIF
1148 #endif /* ALLOW_NEST_CHILD */
1149
ffced37781 Ed H*1150 #ifdef ALLOW_MONITOR
5f45e58a14 Jean*1151 IF ( monitorFreq.GT.0. .OR. adjMonitorFreq.GT.0. ) THEN
d8ea337c6c Patr*1152
a27159adf7 Jean*1153 CALL TIMER_START('MONITOR [FORWARD_STEP]',myThid)
4f8feb8bdf Jean*1154 CALL MONITOR( myTime, myIter, myThid )
a27159adf7 Jean*1155 CALL TIMER_STOP ('MONITOR [FORWARD_STEP]',myThid)
1156 ENDIF
ffced37781 Ed H*1157 #endif /* ALLOW_MONITOR */
d8ea337c6c Patr*1158
449f3c105b Patr*1159 #ifdef ALLOW_COST
1160
1161
1162 CALL TIMER_START('COST_TILE [FORWARD_STEP]',myThid)
529408dc72 Jean*1163 CALL COST_TILE ( myTime, myIter, myThid )
449f3c105b Patr*1164 CALL TIMER_STOP ('COST_TILE [FORWARD_STEP]',myThid)
1165 #endif
1166
3949c257c5 Gael*1167 #ifdef ALLOW_ECCO
aa93ca8e85 Ciar*1168
0cd0083da8 Ou W*1169 IF ( useECCO ) CALL ECCO_PHYS( myTime, myIter, myThid )
3949c257c5 Gael*1170 #endif
1171
94884059ae Jean*1172
455a90837c Jean*1173 modelEnd = myTime.EQ.endTime .OR. myIter.EQ.nEndIter
b81731e160 Ed H*1174 #ifdef HAVE_SIGREG
1175 IF ( useSIGREG ) THEN
455a90837c Jean*1176 modelEnd = modelEnd .OR. ( i_got_signal.GT.0 )
b81731e160 Ed H*1177 ENDIF
a27159adf7 Jean*1178 #endif /* HAVE_SIGREG */
b81731e160 Ed H*1179
94884059ae Jean*1180
1181 CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
1182 CALL DO_THE_MODEL_IO( modelEnd, myTime, myIter, myThid )
1183 CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
1184
9fbec3c176 Oliv*1185 #ifdef ALLOW_PTRACERS
1186
1187 IF ( usePTRACERS ) THEN
1188 CALL TIMER_START('PTRACERS_RESET [FORWARD_STEP]',myThid)
1189 CALL PTRACERS_RESET( myTime, myIter, myThid )
1190 CALL TIMER_STOP ('PTRACERS_RESET [FORWARD_STEP]',myThid)
1191 ENDIF
1192 #endif /* ALLOW_PTRACERS */
1193
d8ea337c6c Patr*1194
931983c6ab Jean*1195 CALL TIMER_START('DO_WRITE_PICKUP [FORWARD_STEP]',myThid)
94884059ae Jean*1196 CALL DO_WRITE_PICKUP( modelEnd, myTime, myIter, myThid )
931983c6ab Jean*1197 CALL TIMER_STOP ('DO_WRITE_PICKUP [FORWARD_STEP]',myThid)
d8ea337c6c Patr*1198
455a90837c Jean*1199 #ifdef HAVE_SIGREG
1200 IF ( useSIGREG ) THEN
1201 IF ( modelEnd .AND. i_got_signal.GT.0 ) THEN
1202 STOP 'Checkpoint completed -- killed by signal handler'
1203 ENDIF
1204 ENDIF
1205 #endif /* HAVE_SIGREG */
e01e1e4fa5 Patr*1206
517dbdc414 Jean*1207 #ifdef ALLOW_AUTODIFF
a10c595eb6 Timo*1208 CALL AUTODIFF_INADMODE_SET( myTime, myIter, myThid )
e01e1e4fa5 Patr*1209 #endif
1210
1211 #ifdef ALLOW_SHOWFLOPS
9e647b4f24 Jean*1212 CALL TIMER_START('SHOWFLOPS_INLOOP [THE_MAIN_LOOP]', myThid)
1213 CALL SHOWFLOPS_INLOOP( iloop, myThid )
1214 CALL TIMER_STOP ('SHOWFLOPS_INLOOP [THE_MAIN_LOOP]', myThid)
e01e1e4fa5 Patr*1215 #endif
1216
49e3578e36 Ed H*1217 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1218 IF (debugMode) CALL DEBUG_LEAVE('FORWARD_STEP',myThid)
73ead277e0 Alis*1219 #endif
1220
fddb7fab2a Jean*1221 RETURN
d8ea337c6c Patr*1222 END