Back to home page

MITgcm

 
 

    


File indexing completed on 2023-10-13 05:09:56 UTC

view on githubraw file Latest commit edcd27be on 2023-10-12 20:00:12 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 CBOP
                0017 C     !ROUTINE: LOAD_FIELDS_DRIVER
                0018 C     !INTERFACE:
                0019       SUBROUTINE LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
                0020 
                0021 C     !DESCRIPTION: \bv
                0022 C     *==================================================================
                0023 C     | SUBROUTINE LOAD_FIELDS_DRIVER
                0024 C     | o Load external forcing fields from file
                0025 C     *==================================================================
                0026 C     *==================================================================
                0027 C     \ev
                0028 
                0029 C     !CALLING SEQUENCE:
                0030 C     LOAD_FIELDS_DRIVER
                0031 C       |
                0032 C       |-- BULKF_FIELDS_LOAD
                0033 C       |
                0034 C       |-- EXF_GETFORCING
                0035 C       |
b4c132448c Jean*0036 C       |-- CHEAPAML_FIELDS_LOAD
                0037 C       |
a9bb88678f Jean*0038 C       |-- EXTERNAL_FIELDS_LOAD
                0039 C       |
                0040 C       |-- GCHEM_FIELDS_LOAD
                0041 C       |
                0042 C       |-- RBCS_FIELDS_LOAD
                0043 C       |
                0044 C       |-- AIM_FIELDS_LOAD
                0045 
                0046 C     !USES:
                0047       IMPLICIT NONE
                0048 C     == Global variables ==
                0049 #include "SIZE.h"
                0050 #include "EEPARAMS.h"
                0051 #include "PARAMS.h"
43e432aa51 Jean*0052 #include "FFIELDS.h"
a9bb88678f Jean*0053 
517dbdc414 Jean*0054 #ifdef ALLOW_AUTODIFF
7c50f07931 Mart*0055 # ifdef ALLOW_AUTODIFF_TAMC
                0056 #  include "tamc.h"
                0057 # endif
cfdbfa0351 Gael*0058 # ifdef ALLOW_CTRL
                0059 #  include "CTRL_SIZE.h"
4d72283393 Mart*0060 #  include "CTRL.h"
9c41af81f6 Timo*0061 #  include "CTRL_GENARR.h"
edcd27be69 Mart*0062 #  include "CTRL_DUMMY.h"
cfdbfa0351 Gael*0063 # endif
                0064 # ifdef ALLOW_COST
                0065 #  include "cost.h"
                0066 # endif
a9bb88678f Jean*0067 # include "EOS.h"
                0068 # ifdef ALLOW_EXF
798a745844 Jean*0069 #  include "EXF_FIELDS.h"
517dbdc414 Jean*0070 #  include "EXF_CONSTANTS.h"
b4daa24319 Shre*0071 #  ifdef ALLOW_TAPENADE
                0072 #   include "EXF_PARAM.h"
                0073 #   include "EXF_INTERP_SIZE.h"
                0074 #   include "EXF_INTERP_PARAM.h"
                0075 #  endif
a9bb88678f Jean*0076 # endif
517dbdc414 Jean*0077 #endif /* ALLOW_AUTODIFF */
a9bb88678f Jean*0078 
b4c132448c Jean*0079 C     !INPUT/OUTPUT PARAMETERS:
a9bb88678f Jean*0080 C     myTime :: time counter for this thread
                0081 C     myIter :: iteration counter for this thread
                0082 C     myThid :: thread number for this instance of the routine.
                0083       _RL     myTime
                0084       INTEGER myIter
                0085       INTEGER myThid
                0086 
b4c132448c Jean*0087 C     !LOCAL VARIABLES:
43e432aa51 Jean*0088 #if (defined ALLOW_ADDFLUID) || (defined ALLOW_FRICTION_HEATING)
                0089       INTEGER i,j,k,bi,bj
                0090 #endif
a9bb88678f Jean*0091 CEOP
                0092 
                0093 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0094       IF (debugMode) CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
a9bb88678f Jean*0095 #endif
                0096 
43e432aa51 Jean*0097 C--   Initialise forcing arrays that may receive multiple contributions
                0098 #ifdef ALLOW_ADDFLUID
f4d71cd088 Jean*0099       IF ( selectAddFluid.NE.0 .AND. addMassFile.EQ.' ' ) THEN
43e432aa51 Jean*0100         DO bj=myByLo(myThid),myByHi(myThid)
                0101          DO bi=myBxLo(myThid),myBxHi(myThid)
                0102           DO k=1,Nr
                0103            DO j=1-OLy,sNy+OLy
                0104             DO i=1-OLx,sNx+OLx
                0105              addMass(i,j,k,bi,bj) =  0. _d 0
                0106             ENDDO
                0107            ENDDO
                0108           ENDDO
                0109          ENDDO
                0110         ENDDO
                0111       ENDIF
                0112 #endif /* ALLOW_ADDFLUID */
                0113 
                0114 #ifdef ALLOW_FRICTION_HEATING
f4d71cd088 Jean*0115       IF ( addFrictionHeating .AND. staggerTimeStep ) THEN
43e432aa51 Jean*0116         DO bj=myByLo(myThid),myByHi(myThid)
                0117          DO bi=myBxLo(myThid),myBxHi(myThid)
                0118           DO k=1,Nr
                0119            DO j=1-OLy,sNy+OLy
                0120             DO i=1-OLx,sNx+OLx
                0121              frictionHeating(i,j,k,bi,bj) = 0. _d 0
                0122             ENDDO
                0123            ENDDO
                0124           ENDDO
                0125          ENDDO
                0126         ENDDO
                0127       ENDIF
                0128 #endif /* ALLOW_FRICTION_HEATING */
                0129 
d50b75bb8d Gael*0130 C--   Map generic time varying controls to xx_gentim2d
                0131 #ifdef ALLOW_CTRL
a424c359ed Gael*0132       if (useCTRL) CALL CTRL_MAP_GENTIM2D( myTime, myIter, myThid )
d50b75bb8d Gael*0133 #endif
                0134 
a9bb88678f Jean*0135 #ifdef ALLOW_BULK_FORCE
                0136       IF ( useBulkForce ) THEN
                0137 C--   Bulk-Formulae pkg: load all forcing fields at current time
                0138 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0139         IF (debugMode) CALL DEBUG_CALL('BULKF_FIELDS_LOAD',myThid)
a9bb88678f Jean*0140 #endif
                0141         CALL TIMER_START('BULKF_FIELDS_LOAD  [LOAD_FLDS_DRIVER]',myThid)
                0142         CALL BULKF_FIELDS_LOAD( myTime, myIter, myThid )
                0143         CALL TIMER_STOP ('BULKF_FIELDS_LOAD  [LOAD_FLDS_DRIVER]',myThid)
                0144       ENDIF
                0145 #endif /* ALLOW_BULK_FORCE */
                0146 
                0147 C--   Call external forcing package
                0148 #ifdef ALLOW_EXF
342da43f96 Patr*0149       IF (useEXF) THEN
a9bb88678f Jean*0150 # ifdef ALLOW_DEBUG
8440e8ae5d Jean*0151         IF (debugMode) CALL DEBUG_CALL('EXF_GETFORCING',myThid)
a9bb88678f Jean*0152 # endif
                0153         CALL TIMER_START('EXF_GETFORCING     [LOAD_FLDS_DRIVER]',myThid)
                0154         CALL EXF_GETFORCING( myTime, myIter, myThid )
                0155         CALL TIMER_STOP ('EXF_GETFORCING     [LOAD_FLDS_DRIVER]',myThid)
342da43f96 Patr*0156       ENDIF
1a09ceef82 Jean*0157 #endif /* ALLOW_EXF */
                0158 
86f14fa6df Jean*0159 C--   Call external CheapAML forcing package
                0160 #ifdef ALLOW_CHEAPAML
                0161       IF ( useCheapAML  ) THEN
                0162 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0163         IF (debugMode) CALL DEBUG_CALL('CHEAPAML_FIELDS_LOAD',myThid)
86f14fa6df Jean*0164 #endif
8440e8ae5d Jean*0165         CALL CHEAPAML_FIELDS_LOAD( myTime, myIter, myThid )
                0166       ENDIF
86f14fa6df Jean*0167 #endif /*ALLOW_CHEAPAML */
                0168 
3fb95cc0ad Jean*0169       IF ( fluidIsWater ) THEN
1a09ceef82 Jean*0170 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0171         IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
1a09ceef82 Jean*0172 #endif
a9bb88678f Jean*0173         CALL TIMER_START('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
                0174         CALL EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
                0175         CALL TIMER_STOP ('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
3fb95cc0ad Jean*0176       ENDIF
a9bb88678f Jean*0177 
                0178 #ifdef ALLOW_GCHEM
                0179       IF ( useGCHEM ) THEN
                0180 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0181         IF (debugMode) CALL DEBUG_CALL('GCHEM_FIELDS_LOAD',myThid)
a9bb88678f Jean*0182 #endif /* ALLOW_DEBUG */
                0183         CALL GCHEM_FIELDS_LOAD( myTime, myIter, myThid )
                0184       ENDIF
                0185 #endif /* ALLOW_GCHEM */
                0186 
                0187 #ifdef ALLOW_RBCS
                0188       IF ( useRBCS ) THEN
                0189         CALL RBCS_FIELDS_LOAD( myTime, myIter, myThid )
                0190       ENDIF
                0191 #endif
                0192 
                0193 #ifdef ALLOW_AIM
                0194       IF ( useAIM ) THEN
                0195 C-     Update AIM bottom boundary data
                0196         CALL AIM_FIELDS_LOAD( myTime, myIter, myThid )
                0197       ENDIF
                0198 #endif
                0199 
                0200 #ifdef ALLOW_DEBUG
8440e8ae5d Jean*0201       IF (debugMode) CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
a9bb88678f Jean*0202 #endif
                0203 
                0204       RETURN
                0205       END