Back to home page

darwin3

 
 

    


File indexing completed on 2025-11-15 13:23:47 UTC

view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
01070dbc48 Patr*0001 #include "PACKAGES_CONFIG.h"
                0002 #include "CPP_OPTIONS.h"
429468f71e Patr*0003 #ifdef ALLOW_OPENAD
                0004 # include "OPENAD_OPTIONS.h"
                0005 #endif
c10ffac493 Jean*0006 c#ifdef ALLOW_AUTODIFF
                0007 c# include "AUTODIFF_OPTIONS.h"
                0008 c#endif
01070dbc48 Patr*0009 #ifdef ALLOW_GENERIC_ADVDIFF
                0010 # include "GAD_OPTIONS.h"
                0011 #endif
1dc3e353c5 Jean*0012 #ifdef ALLOW_GGL90
                0013 # include "GGL90_OPTIONS.h"
                0014 #endif
01070dbc48 Patr*0015 #ifdef ALLOW_GMREDI
                0016 # include "GMREDI_OPTIONS.h"
                0017 #endif
1dc3e353c5 Jean*0018 #ifdef ALLOW_OBCS
                0019 # include "OBCS_OPTIONS.h"
01070dbc48 Patr*0020 #endif
1dc3e353c5 Jean*0021 #ifdef ALLOW_SEAICE
                0022 # include "SEAICE_OPTIONS.h"
                0023 #endif
                0024 #ifdef ALLOW_GCHEM
                0025 # include "GCHEM_OPTIONS.h"
                0026 #endif
                0027 #ifdef ALLOW_DIC
                0028 # include "DIC_OPTIONS.h"
01070dbc48 Patr*0029 #endif
                0030 #ifdef ALLOW_EXF
                0031 # include "EXF_OPTIONS.h"
                0032 #endif
1dc3e353c5 Jean*0033 #ifdef ALLOW_STREAMICE
                0034 # include "STREAMICE_OPTIONS.h"
                0035 #endif
c10ffac493 Jean*0036 #ifdef ALLOW_COST
                0037 # include "COST_OPTIONS.h"
                0038 #endif
01070dbc48 Patr*0039 #ifdef ALLOW_CTRL
                0040 # include "CTRL_OPTIONS.h"
                0041 #endif
30c7aa4d63 Gael*0042 c#ifdef ALLOW_ECCO
                0043 c# include "ECCO_OPTIONS.h"
                0044 c#endif
b4daa24319 Shre*0045 #ifdef ALLOW_TAPENADE
                0046 # ifdef ALLOW_SALT_PLUME
                0047 # include "SALT_PLUME_OPTIONS.h"
                0048 # endif
                0049 #ifdef ALLOW_ECCO
                0050 # include "ECCO_OPTIONS.h"
                0051 #endif
                0052 c# ifdef ALLOW_THSICE
                0053 c# include "THSICE_OPTIONS.h"
                0054 c# endif
                0055 #endif
                0056 #ifdef ALLOW_BLING
                0057 # include "BLING_OPTIONS.h"
                0058 #endif
01070dbc48 Patr*0059 CBOP
                0060 C     !ROUTINE: MAIN_DO_LOOP
                0061 C     !INTERFACE:
e5d0e61ee8 Patr*0062       SUBROUTINE MAIN_DO_LOOP( iloop, myTime, myIter, myThid )
01070dbc48 Patr*0063 
7855a13227 Mart*0064 C     !DESCRIPTION:
01070dbc48 Patr*0065 C     *================================================================*
7855a13227 Mart*0066 C     | SUBROUTINE MAIN_DO_LOOP
                0067 C     | o Interface S/R that calls FORWARD_STEP
01070dbc48 Patr*0068 C     *================================================================*
7855a13227 Mart*0069 C     | This S/R contains the model main "do-loop" for OpenAD built
                0070 C     | (i.e., ALLOW_OPENAD defined), with a call to FORWARD_STEP
                0071 C     | inside the loop.
                0072 C     | But without OpenAD, this S/R just calls directly FORWARD_STEP
                0073 C     | (in this case the main do-loop is done in S/R THE_MAIN_LOOP).
01070dbc48 Patr*0074 C     *================================================================*
                0075 
                0076 C     !USES:
                0077       IMPLICIT NONE
                0078 C     == Global variables ==
                0079 #include "SIZE.h"
                0080 #include "EEPARAMS.h"
                0081 #include "PARAMS.h"
                0082 
                0083 c**************************************
b4daa24319 Shre*0084 #if (defined ALLOW_OPENAD || defined ALLOW_TAPENADE)
31ec373cce Jean*0085 
01070dbc48 Patr*0086 # ifdef ALLOW_CTRL
31ec373cce Jean*0087 #  include "CTRL_SIZE.h"
4d72283393 Mart*0088 #  include "CTRL.h"
edcd27be69 Mart*0089 #  include "CTRL_DUMMY.h"
31ec373cce Jean*0090 #  include "CTRL_GENARR.h"
4948b10fac Gael*0091 #  include "CTRL_OBCS.h"
01070dbc48 Patr*0092 # endif
                0093 # ifdef ALLOW_COST
                0094 #  include "cost.h"
                0095 # endif
                0096 
31ec373cce Jean*0097 # ifdef ALLOW_PTRACERS
                0098 #  include "PTRACERS_SIZE.h"
                0099 #  include "PTRACERS_FIELDS.h"
                0100 #  include "PTRACERS_START.h"
                0101 # endif
18bb8f81a8 Patr*0102 # ifdef ALLOW_GCHEM
1dc3e353c5 Jean*0103 #  include "GCHEM_SIZE.h"
18bb8f81a8 Patr*0104 #  include "GCHEM_FIELDS.h"
                0105 # endif
                0106 # ifdef ALLOW_CFC
                0107 #  include "CFC.h"
                0108 # endif
                0109 # ifdef ALLOW_DIC
                0110 #  include "DIC_VARS.h"
                0111 #  include "DIC_LOAD.h"
                0112 #  include "DIC_ATMOS.h"
                0113 #  include "DIC_CTRL.h"
                0114 #  include "DIC_COST.h"
                0115 # endif
8569d7fc09 Patr*0116 # ifdef ALLOW_OBCS
                0117 #  include "OBCS_PARAMS.h"
                0118 #  include "OBCS_FIELDS.h"
                0119 #  include "OBCS_SEAICE.h"
                0120 #  ifdef ALLOW_PTRACERS
                0121 #   include "OBCS_PTRACERS.h"
18bb8f81a8 Patr*0122 #  endif
8569d7fc09 Patr*0123 # endif
                0124 # ifdef ALLOW_SHELFICE
                0125 #  include "SHELFICE.h"
                0126 #  include "SHELFICE_COST.h"
                0127 # endif
                0128 # ifdef ALLOW_STREAMICE
                0129 #  include "STREAMICE.h"
                0130 #  include "STREAMICE_ADV.h"
                0131 #  include "STREAMICE_BDRY.h"
                0132 #  include "STREAMICE_CG.h"
                0133 # endif
18bb8f81a8 Patr*0134 
b4daa24319 Shre*0135 #endif /* ALLOW_OPENAD or ALLOW_TAPENADE */
                0136 
                0137 #ifdef ALLOW_TAPENADE
                0138 # ifdef ALLOW_EXF
                0139 #  include "EXF_PARAM.h"
                0140 #  include "EXF_INTERP_SIZE.h"
                0141 #  include "EXF_INTERP_PARAM.h"
                0142 #  include "EXF_FIELDS.h"
                0143 # endif
                0144 # ifdef ALLOW_CD_CODE
                0145 #  include "CD_CODE_VARS.h"
                0146 # endif
                0147 # ifdef ALLOW_GMREDI
                0148 #  include "GMREDI.h"
                0149 # endif
                0150 # include "FFIELDS.h"
                0151 # include "DYNVARS.h"
                0152 # include "SURFACE.h"
                0153 # include "GRID.h"
                0154 # ifdef ALLOW_SEAICE
                0155 #  include "SEAICE_SIZE.h"
                0156 #  include "SEAICE.h"
                0157 # endif
                0158 # ifdef ALLOW_KPP
                0159 #  include "KPP.h"
                0160 c#  include "KPP_PARAMS.h"
                0161 # endif
                0162 # ifdef ALLOW_DOWN_SLOPE
                0163 #  include "DWNSLP_SIZE.h"
                0164 #  include "DWNSLP_VARS.h"
                0165 # endif
                0166 # ifdef ALLOW_THSICE
                0167 #  include "THSICE_VARS.h"
                0168 # endif
                0169 # ifdef ALLOW_SALT_PLUME
                0170 #  include "SALT_PLUME.h"
                0171 # endif
                0172 # ifdef ALLOW_ECCO
                0173 #  include "ECCO_SIZE.h"
                0174 #  include "ECCO.h"
                0175 # endif
                0176 # ifdef ALLOW_BLING
                0177 #  include "BLING_VARS.h"
                0178 #  include "BLING_LOAD.h"
                0179 # endif
                0180 #endif /* ALLOW_TAPENADE */
                0181 
01070dbc48 Patr*0182 c**************************************
                0183 
                0184 C     !INPUT/OUTPUT PARAMETERS:
                0185 C     myTime :: time counter for this thread
                0186 C     myIter :: iteration counter for this thread
                0187 C     myThid :: thread number for this instance of the routine.
7855a13227 Mart*0188       INTEGER iloop
01070dbc48 Patr*0189       _RL     myTime
                0190       INTEGER myIter
                0191       INTEGER myThid
                0192 
                0193 C     !LOCAL VARIABLES:
                0194 CEOP
                0195 
                0196 #ifdef ALLOW_DEBUG
                0197       IF (debugMode) CALL DEBUG_ENTER('MAIN_DO_LOOP',myThid)
                0198 #endif
                0199 
c10ffac493 Jean*0200 #ifdef ALLOW_OPENAD
d5885b3057 Jean*0201 C     >>>>>>>>>>>>>>>>>>>>>>>>>>>   LOOP   <<<<<<<<<<<<<<<<<<<<<<<<<<<<
                0202 C     >>>>>>>>>>>>>>>>>>>>>>>>>>>  STARTS  <<<<<<<<<<<<<<<<<<<<<<<<<<<<
429468f71e Patr*0203 # ifdef ALLOW_OPENAD_DIVA
6e6f314aa7 Patr*0204       DO iloop = 1, nTimeSteps_l2
429468f71e Patr*0205 # else
b6f3d01b24 Jean*0206       DO iloop = 1, nTimeSteps
429468f71e Patr*0207 # endif
                0208 #endif /* ALLOW_OPENAD */
6e6f314aa7 Patr*0209 
01070dbc48 Patr*0210 #ifdef ALLOW_DEBUG
7855a13227 Mart*0211         IF (debugMode) CALL DEBUG_CALL('FORWARD_STEP',myThid)
01070dbc48 Patr*0212 #endif
                0213 
6e6f314aa7 Patr*0214 #ifndef ALLOW_OPENAD
429468f71e Patr*0215 # ifdef ALLOW_ATM2D
22b72941c7 Jean*0216         CALL TIMER_START('FORWARD_STEP_ATM2D  [MAIN_DO_LOOP]',myThid)
                0217         CALL FORWARD_STEP_ATM2D( iloop, myTime, myIter, myThid )
                0218         CALL TIMER_STOP ('FORWARD_STEP_ATM2D  [MAIN_DO_LOOP]',myThid)
429468f71e Patr*0219 # else
22b72941c7 Jean*0220         CALL TIMER_START('FORWARD_STEP        [MAIN_DO_LOOP]',myThid)
                0221         CALL FORWARD_STEP( iloop, myTime, myIter, myThid )
                0222         CALL TIMER_STOP ('FORWARD_STEP        [MAIN_DO_LOOP]',myThid)
429468f71e Patr*0223 # endif
7855a13227 Mart*0224 #else /* ALLOW_OPENAD */
429468f71e Patr*0225 # ifdef ALLOW_OPENAD_DIVA
7855a13227 Mart*0226         CALL TIMER_START('INNER_DO_LOOP       [MAIN_DO_LOOP]',myThid)
                0227         nTimeSteps_l2 = 2
                0228         CALL INNER_DO_LOOP( iloop, myTime, myIter, myThid )
                0229         CALL TIMER_STOP ('INNER_DO_LOOP       [MAIN_DO_LOOP]',myThid)
429468f71e Patr*0230 # else
7855a13227 Mart*0231         CALL TIMER_START('FORWARD_STEP        [MAIN_DO_LOOP]',myThid)
                0232         nTimeSteps_l2 = 2
                0233         CALL FORWARD_STEP( iloop, myTime, myIter, myThid )
                0234         CALL TIMER_STOP ('FORWARD_STEP        [MAIN_DO_LOOP]',myThid)
429468f71e Patr*0235 # endif
7855a13227 Mart*0236 #endif /* ALLOW_OPENAD */
01070dbc48 Patr*0237 
c10ffac493 Jean*0238 #ifdef ALLOW_OPENAD
eca630dafc Jean*0239       ENDDO
d5885b3057 Jean*0240 C     >>>>>>>>>>>>>>>>>>>>>>>>>>>   LOOP   <<<<<<<<<<<<<<<<<<<<<<<<<<<<
                0241 C     >>>>>>>>>>>>>>>>>>>>>>>>>>>  STOPS   <<<<<<<<<<<<<<<<<<<<<<<<<<<<
429468f71e Patr*0242 #endif /* ALLOW_OPENAD */
01070dbc48 Patr*0243 
                0244 #ifdef ALLOW_DEBUG
                0245       IF (debugMode) CALL DEBUG_LEAVE('MAIN_DO_LOOP',myThid)
                0246 #endif
                0247 
                0248       RETURN
                0249       END