File indexing completed on 2025-11-15 13:23:47 UTC
view on githubraw file Latest commit 2552df94 on 2025-11-14 20:30:12 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"
9b45bc1f6c Patr*0343 # include "SEAICE.h"
34ea64e027 Patr*0344 # include "SEAICE_COST.h"
9b45bc1f6c Patr*0345 # endif
56b3a0d0fa Patr*0346 # ifdef ALLOW_SALT_PLUME
0347 # include "SALT_PLUME.h"
0348 # endif
9c41af81f6 Timo*0349 # ifdef ALLOW_DOWN_SLOPE
0350 # include "DWNSLP_SIZE.h"
0351 # include "DWNSLP_VARS.h"
0352 # endif
3e86393e2c Patr*0353 # ifdef ALLOW_SHELFICE
0354 # include "SHELFICE.h"
0355 # include "SHELFICE_COST.h"
0356 # endif
376d4a0160 Patr*0357 # ifdef ALLOW_STREAMICE
0358 # include "STREAMICE.h"
0359 # include "STREAMICE_ADV.h"
0360 # include "STREAMICE_BDRY.h"
0361 # include "STREAMICE_CG.h"
0362 # endif
d8206d87ee Patr*0363 # ifdef ALLOW_EBM
0364 # include "EBM.h"
0365 # endif
9b184aa726 Patr*0366 # ifdef ALLOW_KPP
0367 # include "KPP.h"
0368 # endif
cc747f5a7a Patr*0369 # ifdef ALLOW_RBCS
de7a0e15d8 Jean*0370 # include "RBCS_SIZE.h"
0371 # include "RBCS_FIELDS.h"
cc747f5a7a Patr*0372 # endif
9683f9bbcc Patr*0373 # ifdef ALLOW_OFFLINE
0374 # include "OFFLINE.h"
0375 # endif
aecc8b0f47 Mart*0376 # if (defined ALLOW_CG2D_NSA || defined NONLIN_FRSURF || \
0377 defined ALLOW_DEPTH_CONTROL)
55d9234027 Patr*0378 # include "CG2D.h"
0379 # endif
517dbdc414 Jean*0380 #endif /* ALLOW_AUTODIFF */
d8ea337c6c Patr*0381
b4daa24319 Shre*0382 #ifdef ALLOW_TAPENADE
0383
0384
0385
0386 # ifdef ALLOW_MOM_FLUXFORM
0387 # include "MOM_FLUXFORM.h"
0388 # endif
0389 # ifdef ALLOW_EXF
0390 # include "EXF_PARAM.h"
0391 # include "EXF_INTERP_PARAM.h"
0392 # endif
0393 #endif /* ALLOW_TAPENADE */
0394
455a90837c Jean*0395
9366854e02 Chri*0396
529408dc72 Jean*0397
0398
0399
0400
b7d016da10 Alis*0401
455a90837c Jean*0402
0403
0404
9fcf571bcd Jean*0405 INTEGER iloop
0406 _RL myTime
455a90837c Jean*0407 INTEGER myIter
0408 INTEGER myThid
9fcf571bcd Jean*0409
455a90837c Jean*0410
9fcf571bcd Jean*0411
455a90837c Jean*0412
4e66ab0b67 Oliv*0413
0414
455a90837c Jean*0415 LOGICAL modelEnd
ea669e205e Jean*0416 #ifdef ALLOW_LONGSTEP
fda3710353 Oliv*0417 INTEGER myIterBeg
0418 _RL myTimeBeg
ea669e205e Jean*0419 #endif /* ALLOW_LONGSTEP */
9366854e02 Chri*0420
d8ea337c6c Patr*0421
49e3578e36 Ed H*0422 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0423 IF (debugMode) CALL DEBUG_ENTER('FORWARD_STEP',myThid)
73ead277e0 Alis*0424 #endif
0425
517dbdc414 Jean*0426 #ifdef ALLOW_AUTODIFF
cee16b76ae Dimi*0427
51d88069bf Jean*0428 myIter = nIter0 + (iloop-1)
7c3b863339 Jean*0429 myTime = startTime + deltaTClock*(iLoop-1)
d8ea337c6c Patr*0430 #endif
0431
a10c595eb6 Timo*0432 #ifdef ALLOW_AUTODIFF
0433 CALL AUTODIFF_INADMODE_UNSET( myTime, myIter, myThid )
0434 #endif
0435
ea669e205e Jean*0436 #ifdef ALLOW_LONGSTEP
4e66ab0b67 Oliv*0437
fda3710353 Oliv*0438
0439
4e66ab0b67 Oliv*0440 myIterBeg = myIter
0441 myTimeBeg = myTime
ea669e205e Jean*0442 #endif /* ALLOW_LONGSTEP */
4e66ab0b67 Oliv*0443
32117771cc Patr*0444 #ifdef ALLOW_AUTODIFF_TAMC
0445
0446 #include "checkpoint_lev1_directives.h"
32af943b8a Patr*0447 #include "checkpoint_lev1_template.h"
32117771cc Patr*0448
67a1e439d8 Patr*0449 #endif
6424ee9bc0 Curt*0450
9952f046d7 dngo*0451 #ifdef ALLOW_SHELFICE_REMESHING
0452 IF ( useShelfIce ) THEN
0453
0454 CALL TIMER_START('SHELFICE_REMESHING [FORWARD_STEP]',myThid)
0455 CALL SHELFICE_REMESHING ( myTime, myIter, myThid )
0456 CALL TIMER_STOP('SHELFICE_REMESHING [FORWARD_STEP]',myThid)
0457 ENDIF
0458 #endif /* ALLOW_SHELFICE_REMESHING */
0459
0bcf1b56f4 Jean*0460
0461
72a058b866 Gael*0462 #ifdef NONLIN_FRSURF
517dbdc414 Jean*0463 #ifndef ALLOW_AUTODIFF
0bcf1b56f4 Jean*0464 IF ( doResetHFactors ) THEN
0465 #endif
ccbf39d1a4 Jean*0466 CALL RESET_NLFS_VARS( myTime, myIter, myThid )
72a058b866 Gael*0467 IF ( select_rStar.GT.0 ) THEN
0468 # ifndef DISABLE_RSTAR_CODE
0469 # ifdef ALLOW_AUTODIFF_TAMC
35d3d94e31 Jean*0470
ced23bb277 Gael*0471
72a058b866 Gael*0472 # endif
0473 CALL TIMER_START('UPDATE_R_STAR [FORWARD_STEP]',myThid)
0474 CALL UPDATE_R_STAR( .FALSE., myTime, myIter, myThid )
0475 CALL TIMER_STOP ('UPDATE_R_STAR [FORWARD_STEP]',myThid)
0476 # endif /* DISABLE_RSTAR_CODE */
0477 ELSE
0478 #ifdef ALLOW_AUTODIFF_TAMC
0479
ced23bb277 Gael*0480
72a058b866 Gael*0481 #endif
0482 CALL TIMER_START('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
0483 CALL UPDATE_SURF_DR( .FALSE., myTime, myIter, myThid )
0484 CALL TIMER_STOP ('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
0485 ENDIF
0bcf1b56f4 Jean*0486 #ifdef ALLOW_AUTODIFF_TAMC
ced23bb277 Gael*0487
0488
0489
0490
45ae106d3b Jean*0491 #endif
0492 #ifndef ALLOW_AUTODIFF
0bcf1b56f4 Jean*0493 ENDIF
0494 #endif
72a058b866 Gael*0495 #endif /* NONLIN_FRSURF */
0496
7bfcf7940f Jean*0497 #ifdef ALLOW_PTRACERS
0498
0499 IF ( usePTRACERS ) THEN
0500 CALL PTRACERS_SWITCH_ONOFF( myTime, myIter, myThid )
0501 ENDIF
0502 #endif /* ALLOW_PTRACERS */
0503
be7aceba73 Jean*0504
0505 #ifdef ALLOW_DIAGNOSTICS
0506 IF ( useDiagnostics ) THEN
41c4545f8f Jean*0507 CALL DIAGNOSTICS_SWITCH_ONOFF( 1, myTime, myIter, myThid )
b5c2f2589c Jean*0508
0509 CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0510 CALL DO_STATEVARS_DIAGS( myTime, 0, myIter, myThid )
0511 CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0512 ENDIF
7bfcf7940f Jean*0513 #endif /* ALLOW_DIAGNOSTICS */
b5c2f2589c Jean*0514
ba9a45d563 Jean*0515 #ifdef ALLOW_NEST_CHILD
0516 IF ( useNEST_CHILD) THEN
8440e8ae5d Jean*0517 CALL NEST_CHILD_SETMEMO( myTime, myIter, myThid )
ba9a45d563 Jean*0518 ENDIF
0519 #endif /* ALLOW_NEST_CHILD */
0520
0521 #ifdef ALLOW_NEST_PARENT
0522 IF ( useNEST_PARENT) THEN
0523 CALL NEST_PARENT_IO_1( myTime, myIter, myThid )
0524 ENDIF
0525 #endif /* ALLOW_NEST_PARENT */
0526
529408dc72 Jean*0527
0528 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0529 IF (debugMode) CALL DEBUG_CALL('LOAD_FIELDS_DRIVER',myThid)
13783cb644 Patr*0530 #endif
0531 #ifdef ALLOW_AUTODIFF_TAMC
0532
8a7ca847ff Patr*0533
0534
35d3d94e31 Jean*0535
8a7ca847ff Patr*0536
529408dc72 Jean*0537 #endif
0538 CALL TIMER_START('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid)
0539 CALL LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
0540 CALL TIMER_STOP ('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid)
0541
40ad671a6b Jean*0542
7753507405 Curt*0543 #ifdef ALLOW_BULK_FORCE
10e4bbdd7f Jean*0544 IF ( useBulkForce ) THEN
49e3578e36 Ed H*0545 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0546 IF (debugMode) CALL DEBUG_CALL('BULKF_FORCING',myThid)
73ead277e0 Alis*0547 #endif
529408dc72 Jean*0548 CALL TIMER_START('BULKF_FORCING [FORWARD_STEP]',myThid)
10e4bbdd7f Jean*0549
529408dc72 Jean*0550 CALL BULKF_FORCING( myTime, myIter, myThid )
0551 CALL TIMER_STOP ('BULKF_FORCING [FORWARD_STEP]',myThid)
40ad671a6b Jean*0552 ENDIF
b2498468b3 Jean*0553 #endif /* ALLOW_BULK_FORCE */
33c873885d Jean*0554
86f14fa6df Jean*0555
0556 #ifdef ALLOW_CHEAPAML
0557 IF ( useCheapAML ) THEN
0558 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0559 IF (debugMode) CALL DEBUG_CALL('CHEAPAML',myThid)
86f14fa6df Jean*0560 #endif
9e647b4f24 Jean*0561 CALL TIMER_START('CHEAPAML [FORWARD_STEP]',myThid)
86f14fa6df Jean*0562
8440e8ae5d Jean*0563 CALL CHEAPAML( myTime, myIter,myThid )
9e647b4f24 Jean*0564 CALL TIMER_STOP ('CHEAPAML [FORWARD_STEP]',myThid)
86f14fa6df Jean*0565 ENDIF
0566 #endif /*ALLOW_CHEAPAML */
0567
a424c359ed Gael*0568 #ifdef ALLOW_CTRL
35d3d94e31 Jean*0569
25c5ed8154 Gael*0570 IF ( useCTRL ) THEN
0571 CALL TIMER_START('CTRL_MAP_FORCING [FORWARD_STEP]',myThid)
0572 CALL CTRL_MAP_FORCING( myTime, myIter, myThid )
0573 CALL TIMER_STOP ('CTRL_MAP_FORCING [FORWARD_STEP]',myThid)
0574 ENDIF
448ff6251a Patr*0575 #endif
6424ee9bc0 Curt*0576
517dbdc414 Jean*0577 #ifdef ALLOW_AUTODIFF_MONITOR
8f0b59c61c Patr*0578 CALL DUMMY_IN_STEPPING( myTime, myIter, myThid )
176ce185cd Step*0579 #endif
0580
c1b6df074d Jean*0581 #ifdef COMPONENT_MODULE
904dd2a012 Jean*0582 IF ( useCoupler ) THEN
c1b6df074d Jean*0583
0584
0585 CALL TIMER_START('CPL_EXPORT-IMPORT [FORWARD_STEP]',myThid)
f533a5790a Jean*0586 CALL CPL_EXPORT_IMPORT_DATA( myTime, myIter, myThid )
c1b6df074d Jean*0587 CALL TIMER_STOP ('CPL_EXPORT-IMPORT [FORWARD_STEP]',myThid)
529408dc72 Jean*0588 ENDIF
c1b6df074d Jean*0589 #endif /* COMPONENT_MODULE */
696c4221e9 Mart*0590 #ifdef ALLOW_OASIS
0591 IF ( useOASIS ) THEN
0592 CALL TIMER_START('OASIS_PUT-GET [FORWARD_STEP]',myThid)
0593
0594 CALL OASIS_PUT( myTime, myIter, myThid )
0595
0596 CALL OASIS_GET( myTime, myIter, myThid )
0597 CALL TIMER_STOP ('OASIS_PUT-GET [FORWARD_STEP]',myThid)
0598 ENDIF
0599 #endif /* ALLOW_OASIS */
0600
d8206d87ee Patr*0601 #ifdef ALLOW_EBM
529408dc72 Jean*0602 IF ( useEBM ) THEN
d8206d87ee Patr*0603 # ifdef ALLOW_DEBUG
8440e8ae5d Jean*0604 IF (debugMode) CALL DEBUG_CALL('EBM',myThid)
d8206d87ee Patr*0605 # endif
8440e8ae5d Jean*0606 CALL TIMER_START('EBM [FORWARD_STEP]',myThid)
0607 CALL EBM_DRIVER ( myTime, myIter, myThid )
0608 CALL TIMER_STOP ('EBM [FORWARD_STEP]',myThid)
529408dc72 Jean*0609 ENDIF
0610 #endif /* ALLOW_EBM */
d8206d87ee Patr*0611
9c41af81f6 Timo*0612 #ifdef ALLOW_AUTODIFF_TAMC
0613
0614
0615
0616 # include "check_lev1_dir_forcing.h"
0617
0618 #endif /* ALLOW_AUTODIFF_TAMC */
0619
c8e3a3b543 Jean*0620
0621
0622 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0623 IF (debugMode) CALL DEBUG_CALL('DO_ATMOSPHERIC_PHYS',myThid)
c8e3a3b543 Jean*0624 #endif
529408dc72 Jean*0625 CALL TIMER_START('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',myThid)
0626 CALL DO_ATMOSPHERIC_PHYS( myTime, myIter, myThid )
0627 CALL TIMER_STOP ('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',myThid)
c8e3a3b543 Jean*0628
9b184aa726 Patr*0629 #ifdef ALLOW_AUTODIFF_TAMC
0630 # ifdef ALLOW_KPP
aecc8b0f47 Mart*0631
38b71af82a Patr*0632 # endif /* ALLOW_KPP */
aecc8b0f47 Mart*0633
0634
b919404dfb Patr*0635 # ifdef ALLOW_OBCS
aecc8b0f47 Mart*0636
0637
38b71af82a Patr*0638 # endif /* ALLOW_OBCS */
49a23c9cb2 Patr*0639 # ifdef ALLOW_PTRACERS
aecc8b0f47 Mart*0640
38b71af82a Patr*0641 # endif /* ALLOW_PTRACERS */
0bcf1b56f4 Jean*0642 # ifdef ALLOW_DEPTH_CONTROL
aecc8b0f47 Mart*0643
cdc9f269ae Patr*0644 # endif
9b184aa726 Patr*0645 #endif /* ALLOW_AUTODIFF_TAMC */
0646
49e3578e36 Ed H*0647 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0648 IF (debugMode) CALL DEBUG_CALL('DO_OCEANIC_PHYS',myThid)
1d71c648ad Jean*0649 #endif
529408dc72 Jean*0650 CALL TIMER_START('DO_OCEANIC_PHYS [FORWARD_STEP]',myThid)
615c650f5e Jean*0651 CALL DO_OCEANIC_PHYS( myTime, myIter, myThid )
529408dc72 Jean*0652 CALL TIMER_STOP ('DO_OCEANIC_PHYS [FORWARD_STEP]',myThid)
376d4a0160 Patr*0653
9e647b4f24 Jean*0654 #ifdef ALLOW_STREAMICE
5fb2fbfa94 Jean*0655 IF (useStreamIce) THEN
0656 CALL STREAMICE_TIMESTEP ( myThid, myIter,
0657 & iLoop, myTime )
0658 ENDIF
376d4a0160 Patr*0659 #endif
0660
a1ee12c555 Patr*0661 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0662
0663
0664
0665
0666
0667
0668 # include "check_lev1_dir_ocephys.h"
0669
0499e7ef48 Patr*0670 #endif /* ALLOW_AUTODIFF_TAMC */
91bac1c842 Andr*0671
9c41af81f6 Timo*0672 #ifdef GCHEM_ADD2TR_TENDENCY
0673 #ifndef ALLOW_AUTODIFF
35d3d94e31 Jean*0674 IF ( useGCHEM ) THEN
9c41af81f6 Timo*0675 #endif
529eea311c Gael*0676 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0677
0678
529eea311c Gael*0679 #endif
6153ee95d4 Mart*0680 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0681 IF (debugMode) CALL DEBUG_CALL('GCHEM_CALC_TENDENCY',myThid)
6153ee95d4 Mart*0682 #endif
0683 CALL TIMER_START('GCHEM_CALC_TENDENCY [FORWARD_STEP]',myThid)
0684 CALL GCHEM_CALC_TENDENCY( myTime, myIter, myThid )
0685 CALL TIMER_STOP ('GCHEM_CALC_TENDENCY [FORWARD_STEP]',myThid)
9b184aa726 Patr*0686 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*0687
0688 #endif
0689 #ifndef ALLOW_AUTODIFF
0690 ENDIF
0691 #endif
0692 #endif /* GCHEM_ADD2TR_TENDENCY */
9b184aa726 Patr*0693
9a7312b062 Oliv*0694 #ifdef ALLOW_GCHEM
0695 IF ( .NOT.staggerTimeStep ) THEN
0696 IF ( useGCHEM ) THEN
61264e5471 Oliv*0697 #ifdef ALLOW_LONGSTEP
0698 IF ( MOD(myIterBeg, LS_nIter) .EQ. 0 ) THEN
0699 #endif
9a7312b062 Oliv*0700 CALL GCHEM_CONS(0, myTime, myIter, myThid)
61264e5471 Oliv*0701 #ifdef ALLOW_LONGSTEP
0702 ENDIF
0703 #endif
9a7312b062 Oliv*0704 ENDIF
0705 ENDIF
0706 #endif
0707
4e66ab0b67 Oliv*0708 #ifdef ALLOW_LONGSTEP
9e647b4f24 Jean*0709 IF ( usePTRACERS .AND. LS_whenToSample .EQ. 0 ) THEN
4e66ab0b67 Oliv*0710
0711
0712
0713
0714 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0715 IF (debugMode) CALL DEBUG_CALL('LONGSTEP_AVERAGE',myThid)
4e66ab0b67 Oliv*0716 #endif
0717 CALL TIMER_START('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
0718 CALL LONGSTEP_AVERAGE( myTime, myIter, myThid )
0719 CALL TIMER_STOP ('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
fda3710353 Oliv*0720
0721 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0722 IF (debugMode)
fda3710353 Oliv*0723 & CALL DEBUG_CALL('LONGSTEP_THERMODYNAMICS',myThid)
0724 #endif
0725 CALL TIMER_START('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0726 & myThid)
0727 CALL LONGSTEP_THERMODYNAMICS( myTime, myIter, myThid )
0728 CALL TIMER_STOP ('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0729 & myThid)
4e66ab0b67 Oliv*0730 ENDIF
0731 #endif /* ALLOW_LONGSTEP */
0732
615c650f5e Jean*0733 IF ( .NOT.staggerTimeStep ) THEN
35d3d94e31 Jean*0734 #ifdef ALLOW_AUTODIFF_TAMC
0735
0736 #endif
49e3578e36 Ed H*0737 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0738 IF (debugMode) CALL DEBUG_CALL('THERMODYNAMICS',myThid)
544a4ff6e0 Patr*0739 #endif
529408dc72 Jean*0740 CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid)
615c650f5e Jean*0741 CALL THERMODYNAMICS( myTime, myIter, myThid )
529408dc72 Jean*0742 CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid)
fda3710353 Oliv*0743
b649ac9bae Jean*0744 ENDIF
9c41af81f6 Timo*0745 #if (defined ALLOW_AUTODIFF_TAMC) && (defined ALLOW_OBCS)
0746
0747 #endif /* ALLOW_AUTODIFF_TAMC && ALLOW_OBCS */
4e66ab0b67 Oliv*0748
0749 #ifdef ALLOW_LONGSTEP
9e647b4f24 Jean*0750 IF ( usePTRACERS .AND. LS_whenToSample .EQ. 1 ) THEN
fda3710353 Oliv*0751
0752
4e66ab0b67 Oliv*0753
0754 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0755 IF (debugMode) CALL DEBUG_CALL('LONGSTEP_AVERAGE',myThid)
4e66ab0b67 Oliv*0756 #endif
0757 CALL TIMER_START('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
0758 CALL LONGSTEP_AVERAGE( myTime, myIter, myThid )
0759 CALL TIMER_STOP ('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
fda3710353 Oliv*0760
0761 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0762 IF (debugMode)
fda3710353 Oliv*0763 & CALL DEBUG_CALL('LONGSTEP_THERMODYNAMICS',myThid)
0764 #endif
0765 CALL TIMER_START('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0766 & myThid)
0767 CALL LONGSTEP_THERMODYNAMICS( myTime, myIter, myThid )
0768 CALL TIMER_STOP ('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
0769 & myThid)
4e66ab0b67 Oliv*0770 ENDIF
0771 #endif /* ALLOW_LONGSTEP */
0772
cb7fa97db9 Jean*0773
0774 IF ( implicitIntGravWave ) THEN
0775 CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
0776 CALL DO_STAGGER_FIELDS_EXCHANGES( myTime, myIter, myThid )
0777 CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
0778 ENDIF
0779
1d71c648ad Jean*0780
0499e7ef48 Patr*0781 #ifdef ALLOW_AUTODIFF_TAMC
79fda098df Gael*0782
bfdbc242ac Jean*0783 # ifdef ALLOW_DEPTH_CONTROL
ced23bb277 Gael*0784
0785
0786
0787
bfdbc242ac Jean*0788 # endif /* ALLOW_DEPTH_CONTROL */
0789 #endif /* ALLOW_AUTODIFF_TAMC */
fc62302ca1 Patr*0790
cee16b76ae Dimi*0791
9e647b4f24 Jean*0792 #ifdef ALLOW_MOM_STEPPING
517dbdc414 Jean*0793 #ifndef ALLOW_AUTODIFF
cee16b76ae Dimi*0794 IF ( momStepping ) THEN
edc3e287c7 Patr*0795 #endif
49e3578e36 Ed H*0796 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0797 IF (debugMode) CALL DEBUG_CALL('DYNAMICS',myThid)
73ead277e0 Alis*0798 #endif
529408dc72 Jean*0799 CALL TIMER_START('DYNAMICS [FORWARD_STEP]',myThid)
d8ea337c6c Patr*0800 CALL DYNAMICS( myTime, myIter, myThid )
529408dc72 Jean*0801 CALL TIMER_STOP ('DYNAMICS [FORWARD_STEP]',myThid)
517dbdc414 Jean*0802 #ifndef ALLOW_AUTODIFF
cee16b76ae Dimi*0803 ENDIF
edc3e287c7 Patr*0804 #endif
9e647b4f24 Jean*0805 #endif /* ALLOW_MOM_STEPPING */
a27159adf7 Jean*0806
0499e7ef48 Patr*0807 #ifdef ALLOW_AUTODIFF_TAMC
616600b8d2 Patr*0808 # if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL)
8a7ca847ff Patr*0809
0810
0499e7ef48 Patr*0811 # endif
f66c946416 Step*0812 #endif
d8ea337c6c Patr*0813
615c650f5e Jean*0814
0815 myIter = nIter0 + iLoop
7c3b863339 Jean*0816 myTime = startTime + deltaTClock*iLoop
615c650f5e Jean*0817
5bc9611487 Ed H*0818 #ifdef ALLOW_MNC
ce8f1dd452 Jean*0819
5bc9611487 Ed H*0820 IF ( useMNC ) THEN
ce8f1dd452 Jean*0821 CALL MNC_UPDATE_TIME( myTime, myIter, myThid )
529408dc72 Jean*0822 ENDIF
0823 #endif /* ALLOW_MNC */
5bc9611487 Ed H*0824
dc2ebbdaf0 Jean*0825 #ifdef ALLOW_OFFLINE
0826
0827 IF ( useOffLine ) THEN
0828 #ifdef ALLOW_DEBUG
0829 IF (debugMode) CALL DEBUG_CALL('OFFLINE_FIELDS_LOAD',myThid)
0830 #endif /* ALLOW_DEBUG */
0831 CALL TIMER_START('OFFLINE_FLDS_LOAD [FORWARD_STEP]',myThid)
0832 CALL OFFLINE_FIELDS_LOAD( myTime, myIter, myThid )
0833 CALL TIMER_STOP ('OFFLINE_FLDS_LOAD [FORWARD_STEP]',myThid)
0834 ENDIF
0835 #endif /* ALLOW_OFFLINE */
0836
615c650f5e Jean*0837
8de3419279 Jean*0838 #ifdef NONLIN_FRSURF
615c650f5e Jean*0839
855d57fc61 Jean*0840 IF ( select_rStar.GT.0 ) THEN
cdc9f269ae Patr*0841 # ifndef DISABLE_RSTAR_CODE
0499e7ef48 Patr*0842 # ifdef ALLOW_AUTODIFF_TAMC
35d3d94e31 Jean*0843
ced23bb277 Gael*0844
0499e7ef48 Patr*0845 # endif
529408dc72 Jean*0846 CALL TIMER_START('UPDATE_R_STAR [FORWARD_STEP]',myThid)
72a058b866 Gael*0847 CALL UPDATE_R_STAR( .TRUE., myTime, myIter, myThid )
529408dc72 Jean*0848 CALL TIMER_STOP ('UPDATE_R_STAR [FORWARD_STEP]',myThid)
a2a20dcddc Jean*0849 # endif /* DISABLE_RSTAR_CODE */
855d57fc61 Jean*0850 ELSEIF ( selectSigmaCoord.NE.0 ) THEN
a2a20dcddc Jean*0851 # ifndef DISABLE_SIGMA_CODE
0852 CALL UPDATE_SIGMA( etaH, myTime, myIter, myThid )
cdc9f269ae Patr*0853 # endif /* DISABLE_RSTAR_CODE */
855d57fc61 Jean*0854 ELSE
517dbdc414 Jean*0855 # ifdef ALLOW_AUTODIFF_TAMC
ba9a45d563 Jean*0856
ced23bb277 Gael*0857
517dbdc414 Jean*0858 # endif
529408dc72 Jean*0859 CALL TIMER_START('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
72a058b866 Gael*0860 CALL UPDATE_SURF_DR( .TRUE., myTime, myIter, myThid )
529408dc72 Jean*0861 CALL TIMER_STOP ('UPDATE_SURF_DR [FORWARD_STEP]',myThid)
855d57fc61 Jean*0862 ENDIF
0499e7ef48 Patr*0863 # ifdef ALLOW_AUTODIFF_TAMC
de7a0e15d8 Jean*0864
ced23bb277 Gael*0865
de7a0e15d8 Jean*0866
ced23bb277 Gael*0867
0499e7ef48 Patr*0868 # endif
855d57fc61 Jean*0869 #endif /* NONLIN_FRSURF */
0870
aecc8b0f47 Mart*0871 #if ( defined NONLIN_FRSURF || defined ALLOW_SOLVE4_PS_AND_DRAG || \
0872 defined ALLOW_CG2D_NSA || defined ALLOW_DEPTH_CONTROL )
855d57fc61 Jean*0873
0874 IF ( momStepping .AND.
0875 & ( nonlinFreeSurf.GT.2 .OR. selectImplicitDrag.EQ.2 ) ) THEN
529408dc72 Jean*0876 CALL TIMER_START('UPDATE_CG2D [FORWARD_STEP]',myThid)
8de3419279 Jean*0877 CALL UPDATE_CG2D( myTime, myIter, myThid )
529408dc72 Jean*0878 CALL TIMER_STOP ('UPDATE_CG2D [FORWARD_STEP]',myThid)
8de3419279 Jean*0879 ENDIF
aecc8b0f47 Mart*0880 # ifdef ALLOW_AUTODIFF_TAMC
79b5d5775c Jean*0881
aecc8b0f47 Mart*0882
0883 # endif
855d57fc61 Jean*0884 #endif /* NONLIN_FRSURF or ALLOW_SOLVE4_PS_AND_DRAG */
8de3419279 Jean*0885
b649ac9bae Jean*0886
0887 #ifdef ALLOW_SHAP_FILT
0888 IF (useSHAP_FILT .AND. shap_filt_uvStar) THEN
f3ec658fc9 Jean*0889 CALL TIMER_START('SHAP_FILT_UV [FORWARD_STEP]',myThid)
79b5d5775c Jean*0890 CALL SHAP_FILT_APPLY_UV( gU, gV, myTime, myIter, myThid )
f3ec658fc9 Jean*0891 CALL TIMER_STOP ('SHAP_FILT_UV [FORWARD_STEP]',myThid)
b649ac9bae Jean*0892 ENDIF
0893 #endif
0894 #ifdef ALLOW_ZONAL_FILT
0895 IF (useZONAL_FILT .AND. zonal_filt_uvStar) THEN
f3ec658fc9 Jean*0896 CALL TIMER_START('ZONAL_FILT_UV [FORWARD_STEP]',myThid)
db44121e58 Jean*0897 CALL ZONAL_FILT_APPLY_UV( gU, gV, myThid )
f3ec658fc9 Jean*0898 CALL TIMER_STOP ('ZONAL_FILT_UV [FORWARD_STEP]',myThid)
b649ac9bae Jean*0899 ENDIF
a27159adf7 Jean*0900 #endif
b7d016da10 Alis*0901
d8ea337c6c Patr*0902
529408dc72 Jean*0903
d8ea337c6c Patr*0904
85937bd52b Alis*0905 IF ( momStepping ) THEN
d6e8c9ce95 Patr*0906 #ifdef ALLOW_AUTODIFF_TAMC
616600b8d2 Patr*0907 # if (defined NONLIN_FRSURF) || (defined ALLOW_DEPTH_CONTROL)
79b5d5775c Jean*0908
9c41af81f6 Timo*0909 # endif
d6e8c9ce95 Patr*0910 #endif
615c650f5e Jean*0911 CALL TIMER_START('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid)
79b5d5775c Jean*0912 CALL SOLVE_FOR_PRESSURE( myTime, myIter, myThid )
615c650f5e Jean*0913 CALL TIMER_STOP ('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid)
0914 ENDIF
0915
0916
9e647b4f24 Jean*0917 #ifdef ALLOW_MOM_STEPPING
517dbdc414 Jean*0918 #ifndef ALLOW_AUTODIFF
a27159adf7 Jean*0919 IF ( momStepping ) THEN
e2c5f2fe7c Patr*0920 #endif
f3ec658fc9 Jean*0921 CALL TIMER_START('MOM_CORRECTION_STEP [FORWARD_STEP]',myThid)
79b5d5775c Jean*0922 CALL MOMENTUM_CORRECTION_STEP( myTime, myIter, myThid )
f3ec658fc9 Jean*0923 CALL TIMER_STOP ('MOM_CORRECTION_STEP [FORWARD_STEP]',myThid)
517dbdc414 Jean*0924 #ifndef ALLOW_AUTODIFF
a27159adf7 Jean*0925 ENDIF
f66c946416 Step*0926 #endif
9e647b4f24 Jean*0927 #endif /* ALLOW_MOM_STEPPING */
9257d2aab8 Patr*0928 #ifdef ALLOW_AUTODIFF_TAMC
b1d6b00360 Jean*0929
9257d2aab8 Patr*0930 #endif
615c650f5e Jean*0931
bfdbc242ac Jean*0932 IF ( calc_wVelocity ) THEN
0933
0934
0935 CALL TIMER_START('INTEGR_CONTINUITY [FORWARD_STEP]',myThid)
0936 CALL INTEGR_CONTINUITY( uVel, vVel, myTime, myIter, myThid)
0937 CALL TIMER_STOP ('INTEGR_CONTINUITY [FORWARD_STEP]',myThid)
85937bd52b Alis*0938 ENDIF
9c41af81f6 Timo*0939 #ifdef ALLOW_AUTODIFF_TAMC
aa93ca8e85 Ciar*0940
9c41af81f6 Timo*0941
0942
aa93ca8e85 Ciar*0943
9c41af81f6 Timo*0944 #endif
615c650f5e Jean*0945
0946 #ifdef NONLIN_FRSURF
0947 IF ( select_rStar.NE.0 ) THEN
cdc9f269ae Patr*0948 # ifndef DISABLE_RSTAR_CODE
e2c5f2fe7c Patr*0949 # ifdef ALLOW_AUTODIFF_TAMC
9257d2aab8 Patr*0950
0951
35d3d94e31 Jean*0952
9257d2aab8 Patr*0953
e2c5f2fe7c Patr*0954 # endif
529408dc72 Jean*0955
0956 CALL TIMER_START('CALC_R_STAR [FORWARD_STEP]',myThid)
615c650f5e Jean*0957 CALL CALC_R_STAR(etaH, myTime, myIter, myThid )
529408dc72 Jean*0958 CALL TIMER_STOP ('CALC_R_STAR [FORWARD_STEP]',myThid)
cdc9f269ae Patr*0959 # endif /* DISABLE_RSTAR_CODE */
a2a20dcddc Jean*0960 ELSEIF ( nonlinFreeSurf.GT.0 .AND. selectSigmaCoord.EQ.0 ) THEN
529408dc72 Jean*0961
0499e7ef48 Patr*0962 # ifdef ALLOW_AUTODIFF_TAMC
8a7ca847ff Patr*0963
0964
0499e7ef48 Patr*0965 # endif
529408dc72 Jean*0966 CALL TIMER_START('CALC_SURF_DR [FORWARD_STEP]',myThid)
615c650f5e Jean*0967 CALL CALC_SURF_DR(etaH, myTime, myIter, myThid )
529408dc72 Jean*0968 CALL TIMER_STOP ('CALC_SURF_DR [FORWARD_STEP]',myThid)
615c650f5e Jean*0969 ENDIF
0499e7ef48 Patr*0970 # ifdef ALLOW_AUTODIFF_TAMC
9257d2aab8 Patr*0971
0972
8a7ca847ff Patr*0973
0974
35d3d94e31 Jean*0975
8a7ca847ff Patr*0976
9c41af81f6 Timo*0977 # ifdef ALLOW_PTRACERS
0978
0979 # endif /* ALLOW_PTRACERS */
529408dc72 Jean*0980 # endif
615c650f5e Jean*0981 #endif /* NONLIN_FRSURF */
0982
0983
0984 IF ( staggerTimeStep ) THEN
ffd0966f4f Jean*0985
0986 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0987 IF (debugMode)
529408dc72 Jean*0988 & CALL DEBUG_CALL('DO_STAGGER_FIELDS_EXCH.',myThid)
ffd0966f4f Jean*0989 #endif
0990 CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
0991 CALL DO_STAGGER_FIELDS_EXCHANGES( myTime, myIter, myThid )
0992 CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
615c650f5e Jean*0993
0499e7ef48 Patr*0994 #ifdef ALLOW_DIAGNOSTICS
b5c2f2589c Jean*0995
529408dc72 Jean*0996 IF ( useDiagnostics ) THEN
0997 CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
0998 CALL DO_STATEVARS_DIAGS( myTime, 1, myIter, myThid )
0999 CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
1000 ENDIF
0499e7ef48 Patr*1001 #endif
b5c2f2589c Jean*1002
9a7312b062 Oliv*1003 #ifdef ALLOW_GCHEM
1004 IF ( useGCHEM ) THEN
61264e5471 Oliv*1005 #ifdef ALLOW_LONGSTEP
1006 IF ( MOD(myIterBeg, LS_nIter) .EQ. 0 ) THEN
1007 #endif
9a7312b062 Oliv*1008 CALL GCHEM_CONS(0, myTime, myIter, myThid)
61264e5471 Oliv*1009 #ifdef ALLOW_LONGSTEP
1010 ENDIF
1011 #endif
9a7312b062 Oliv*1012 ENDIF
1013 #endif
1014
35d3d94e31 Jean*1015 #ifdef ALLOW_AUTODIFF_TAMC
9c41af81f6 Timo*1016
1017
1018
1019
35d3d94e31 Jean*1020 #endif
615c650f5e Jean*1021 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1022 IF (debugMode) CALL DEBUG_CALL('THERMODYNAMICS',myThid)
615c650f5e Jean*1023 #endif
529408dc72 Jean*1024 CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid)
615c650f5e Jean*1025 CALL THERMODYNAMICS( myTime, myIter, myThid )
529408dc72 Jean*1026 CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid)
615c650f5e Jean*1027
1028
1029 ENDIF
9c41af81f6 Timo*1030 #ifdef ALLOW_AUTODIFF_TAMC
1031
1032
1033
1034 #endif /* ALLOW_AUTODIFF_TAMC */
529408dc72 Jean*1035
d8ea337c6c Patr*1036
7103bd8015 Patr*1037 #ifdef ALLOW_AUTODIFF_TAMC
1038
1039
35d3d94e31 Jean*1040
8a7ca847ff Patr*1041
7103bd8015 Patr*1042 #endif
bd27360393 Jean*1043
529408dc72 Jean*1044 CALL TIMER_START('TRC_CORRECTION_STEP [FORWARD_STEP]',myThid)
1045 CALL TRACERS_CORRECTION_STEP(myTime, myIter, myThid)
1046 CALL TIMER_STOP ('TRC_CORRECTION_STEP [FORWARD_STEP]',myThid)
d8ea337c6c Patr*1047
4e66ab0b67 Oliv*1048 #ifdef ALLOW_LONGSTEP
1049 IF ( usePTRACERS ) THEN
fda3710353 Oliv*1050 IF ( LS_whenToSample .EQ. 2 ) THEN
4e66ab0b67 Oliv*1051
1052
fda3710353 Oliv*1053
4e66ab0b67 Oliv*1054 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1055 IF (debugMode) CALL DEBUG_CALL('LONGSTEP_AVERAGE',myThid)
4e66ab0b67 Oliv*1056 #endif
1057 CALL TIMER_START('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
1058
1059
1060 CALL LONGSTEP_AVERAGE( myTimeBeg, myIterBeg, myThid )
1061 CALL TIMER_STOP ('LONGSTEP_AVERAGE [FORWARD_STEP]',myThid)
1062
1063 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1064 IF (debugMode)
fda3710353 Oliv*1065 & CALL DEBUG_CALL('LONGSTEP_THERMODYNAMICS',myThid)
4e66ab0b67 Oliv*1066 #endif
fda3710353 Oliv*1067 CALL TIMER_START('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
4e66ab0b67 Oliv*1068 & myThid)
fda3710353 Oliv*1069 CALL LONGSTEP_THERMODYNAMICS( myTime, myIter, myThid )
1070 CALL TIMER_STOP ('LONGSTEP_THERMODYNAMICS [FORWARD_STEP]',
1071 & myThid)
1072
1073 ENDIF
4e66ab0b67 Oliv*1074
bd27360393 Jean*1075
1076
1077
1078
fda3710353 Oliv*1079
4e66ab0b67 Oliv*1080 ENDIF
1081 #endif /* ALLOW_LONGSTEP */
1082
6153ee95d4 Mart*1083 #ifdef ALLOW_GCHEM
e359829a2b Mart*1084
1085
35d3d94e31 Jean*1086 #ifdef ALLOW_LONGSTEP
1087 IF ( useGCHEM .AND. LS_doTimeStep ) THEN
1088 #else
1089 IF ( useGCHEM ) THEN
1090 #endif
9c41af81f6 Timo*1091 # ifdef ALLOW_AUTODIFF_TAMC
1092
1093 # ifdef ALLOW_PTRACERS
1094
1095 # endif /* ALLOW_PTRACERS */
1096 # endif
e359829a2b Mart*1097 #ifdef ALLOW_DEBUG
35d3d94e31 Jean*1098 IF (debugMode) CALL DEBUG_CALL('GCHEM_FORCING_SEP',myThid)
e359829a2b Mart*1099 #endif /* ALLOW_DEBUG */
35d3d94e31 Jean*1100 CALL TIMER_START('GCHEM_FORCING_SEP [FORWARD_STEP]',myThid)
1101 CALL GCHEM_FORCING_SEP( myTime,myIter,myThid )
1102 CALL TIMER_STOP ('GCHEM_FORCING_SEP [FORWARD_STEP]',myThid)
529408dc72 Jean*1103 ENDIF
6d54cf9ca1 Ed H*1104 #endif /* ALLOW_GCHEM */
e39d13c4c9 Step*1105
30a55c64a0 Mart*1106
1107
1108
1109
1110
1111
1112 CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
1113 CALL DO_FIELDS_BLOCKING_EXCHANGES( myThid )
1114 CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
9c41af81f6 Timo*1115 #ifdef ALLOW_AUTODIFF_TAMC
1116
1117
1118
1119
1120
1121
1122 # ifdef ALLOW_PTRACERS
1123
1124 # endif
1125 #endif
30a55c64a0 Mart*1126
0499e7ef48 Patr*1127 #ifdef ALLOW_DIAGNOSTICS
a27159adf7 Jean*1128 IF ( useDiagnostics ) THEN
cf44a6a231 Andr*1129 CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
1130 CALL DO_STATEVARS_DIAGS( myTime, 2, myIter, myThid )
1131 CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
1132 ENDIF
0499e7ef48 Patr*1133 #endif
30a55c64a0 Mart*1134
bc57263004 Andr*1135 #ifdef ALLOW_GRIDALT
529408dc72 Jean*1136 IF (useGRIDALT) THEN
dc451e9e8f Andr*1137 CALL GRIDALT_UPDATE(myThid)
529408dc72 Jean*1138 ENDIF
bc57263004 Andr*1139 #endif
1140
468f196fcd Andr*1141 #ifdef ALLOW_FIZHI
529408dc72 Jean*1142 IF (useFIZHI) THEN
1143 CALL TIMER_START('FIZHI [FORWARD_STEP]',myThid)
a9203e518a Andr*1144 CALL STEP_FIZHI_CORR ( myTime, myIter, myThid, dTtracerLev(1) )
529408dc72 Jean*1145 CALL TIMER_STOP ('FIZHI [FORWARD_STEP]',myThid)
1146 ENDIF
468f196fcd Andr*1147 #endif
e39d13c4c9 Step*1148
c806179eb4 Alis*1149 #ifdef ALLOW_FLT
1150
1151 IF (useFLT) THEN
650cc6304d Patr*1152 CALL TIMER_START('FLOATS [FORWARD_STEP]',myThid)
5fcc68371c Jean*1153 CALL FLT_MAIN( myTime, myIter, myThid )
650cc6304d Patr*1154 CALL TIMER_STOP ('FLOATS [FORWARD_STEP]',myThid)
c806179eb4 Alis*1155 ENDIF
1156 #endif
1157
94884059ae Jean*1158 #ifdef ALLOW_NEST_PARENT
1159 IF ( useNEST_PARENT) THEN
1160 CALL NEST_PARENT_IO_2( myTime, myIter, myThid )
1161 ENDIF
1162 #endif /* ALLOW_NEST_PARENT */
1163
1164 #ifdef ALLOW_NEST_CHILD
1165 IF ( useNEST_CHILD) THEN
1166 CALL NEST_CHILD_TRANSP( myTime, myIter, myThid )
1167 ENDIF
1168 #endif /* ALLOW_NEST_CHILD */
1169
ffced37781 Ed H*1170 #ifdef ALLOW_MONITOR
5f45e58a14 Jean*1171 IF ( monitorFreq.GT.0. .OR. adjMonitorFreq.GT.0. ) THEN
d8ea337c6c Patr*1172
a27159adf7 Jean*1173 CALL TIMER_START('MONITOR [FORWARD_STEP]',myThid)
4f8feb8bdf Jean*1174 CALL MONITOR( myTime, myIter, myThid )
a27159adf7 Jean*1175 CALL TIMER_STOP ('MONITOR [FORWARD_STEP]',myThid)
1176 ENDIF
ffced37781 Ed H*1177 #endif /* ALLOW_MONITOR */
d8ea337c6c Patr*1178
449f3c105b Patr*1179 #ifdef ALLOW_COST
1180
1181
1182 CALL TIMER_START('COST_TILE [FORWARD_STEP]',myThid)
529408dc72 Jean*1183 CALL COST_TILE ( myTime, myIter, myThid )
449f3c105b Patr*1184 CALL TIMER_STOP ('COST_TILE [FORWARD_STEP]',myThid)
1185 #endif
1186
3949c257c5 Gael*1187 #ifdef ALLOW_ECCO
aa93ca8e85 Ciar*1188
0cd0083da8 Ou W*1189 IF ( useECCO ) CALL ECCO_PHYS( myTime, myIter, myThid )
3949c257c5 Gael*1190 #endif
1191
94884059ae Jean*1192
455a90837c Jean*1193 modelEnd = myTime.EQ.endTime .OR. myIter.EQ.nEndIter
b81731e160 Ed H*1194 #ifdef HAVE_SIGREG
1195 IF ( useSIGREG ) THEN
455a90837c Jean*1196 modelEnd = modelEnd .OR. ( i_got_signal.GT.0 )
b81731e160 Ed H*1197 ENDIF
a27159adf7 Jean*1198 #endif /* HAVE_SIGREG */
b81731e160 Ed H*1199
94884059ae Jean*1200
1201 CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
1202 CALL DO_THE_MODEL_IO( modelEnd, myTime, myIter, myThid )
1203 CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
1204
9fbec3c176 Oliv*1205 #ifdef ALLOW_PTRACERS
1206
1207 IF ( usePTRACERS ) THEN
1208 CALL TIMER_START('PTRACERS_RESET [FORWARD_STEP]',myThid)
1209 CALL PTRACERS_RESET( myTime, myIter, myThid )
1210 CALL TIMER_STOP ('PTRACERS_RESET [FORWARD_STEP]',myThid)
1211 ENDIF
1212 #endif /* ALLOW_PTRACERS */
1213
d8ea337c6c Patr*1214
931983c6ab Jean*1215 CALL TIMER_START('DO_WRITE_PICKUP [FORWARD_STEP]',myThid)
94884059ae Jean*1216 CALL DO_WRITE_PICKUP( modelEnd, myTime, myIter, myThid )
931983c6ab Jean*1217 CALL TIMER_STOP ('DO_WRITE_PICKUP [FORWARD_STEP]',myThid)
d8ea337c6c Patr*1218
455a90837c Jean*1219 #ifdef HAVE_SIGREG
1220 IF ( useSIGREG ) THEN
1221 IF ( modelEnd .AND. i_got_signal.GT.0 ) THEN
1222 STOP 'Checkpoint completed -- killed by signal handler'
1223 ENDIF
1224 ENDIF
1225 #endif /* HAVE_SIGREG */
e01e1e4fa5 Patr*1226
517dbdc414 Jean*1227 #ifdef ALLOW_AUTODIFF
a10c595eb6 Timo*1228 CALL AUTODIFF_INADMODE_SET( myTime, myIter, myThid )
e01e1e4fa5 Patr*1229 #endif
1230
1231 #ifdef ALLOW_SHOWFLOPS
9e647b4f24 Jean*1232 CALL TIMER_START('SHOWFLOPS_INLOOP [THE_MAIN_LOOP]', myThid)
1233 CALL SHOWFLOPS_INLOOP( iloop, myThid )
1234 CALL TIMER_STOP ('SHOWFLOPS_INLOOP [THE_MAIN_LOOP]', myThid)
e01e1e4fa5 Patr*1235 #endif
1236
49e3578e36 Ed H*1237 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*1238 IF (debugMode) CALL DEBUG_LEAVE('FORWARD_STEP',myThid)
73ead277e0 Alis*1239 #endif
1240
fddb7fab2a Jean*1241 RETURN
d8ea337c6c Patr*1242 END