Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:36:55 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
1dbaea09ee Chri*0002 #include "CPP_OPTIONS.h"
924557e60a Chri*0003 
9366854e02 Chri*0004 CBOP
                0005 C     !ROUTINE: INITIALISE_FIXED
                0006 C     !INTERFACE:
27bebc4ab1 Jean*0007       SUBROUTINE INITIALISE_FIXED( myThid )
924557e60a Chri*0008 
9366854e02 Chri*0009 C     !DESCRIPTION: \bv
                0010 C     *==========================================================*
d87b427b2d Jean*0011 C     | SUBROUTINE INITIALISE_FIXED
                0012 C     | o Routine for setting fixed model arrays such as
                0013 C     |   topography, grid, solver matrices, etc.
9366854e02 Chri*0014 C     *==========================================================*
d87b427b2d Jean*0015 C     | INITIALISE_FIXED is invoked at the start of the model to
                0016 C     | set fixed model arrays. It reads data from an input file
                0017 C     | and from various binary files.
                0018 C     | Each thread invokes an instance of this routine as does
                0019 C     | each process in a multi-process parallel environment like
                0020 C     | MPI.
9366854e02 Chri*0021 C     *==========================================================*
                0022 C     \ev
                0023 
                0024 C     !CALLING SEQUENCE:
                0025 C     INITIALISE_FIXED
                0026 C      |
ef55996ae3 Jean*0027 C      |-- INI_PARMS
                0028 C      |
cdf6d093b9 Ed H*0029 C      |-- PACKAGES_BOOT
                0030 C      |
347bbce579 Jean*0031 C      |-- CPL_IMPORT_CPLPARMS
                0032 C      |
cdf6d093b9 Ed H*0033 C      |-- PACKAGES_READPARMS
c74c95df5c Jean*0034 C      |  |- ${PKG}_READPARMS
c83e0242d5 Ed H*0035 C      |
809bdccbfc Jean*0036 C      |-- SET_PARMS
                0037 C      |
2e4e265a2e Jean*0038 C      |-- INI_MODEL_IO
c74c95df5c Jean*0039 C      |  |- MNC_INIT + MNC_CW_INIT
                0040 C      |  |- MON_INIT
9366854e02 Chri*0041 C      |
                0042 C      |-- INI_GRID
                0043 C      |
d87b427b2d Jean*0044 C      |-- LOAD_REF_FILES
                0045 C      |
ef55996ae3 Jean*0046 C      |-- INI_EOS
                0047 C      |
d87b427b2d Jean*0048 C      |-- SET_REF_STATE
                0049 C      |
                0050 C      |-- SET_GRID_FACTORS
769c28d1ef Jean*0051 C      |
                0052 C      |-- INI_DEPTHS
                0053 C      |
9366854e02 Chri*0054 C      |-- INI_MASKS_ETC
                0055 C      |
                0056 C      |-- PACKAGES_INIT_FIXED
c74c95df5c Jean*0057 C      |  |- ${PKG}_INIT_FIXED
9366854e02 Chri*0058 C      |
aa03c27196 Jean*0059 C      |-- INI_GLOBAL_DOMAIN
                0060 C      |
07c6b5d518 Jean*0061 C      |-- INI_LINEAR_PHISURF
81137b71a1 Jean*0062 C      |
                0063 C      |-- INI_CORI
9366854e02 Chri*0064 C      |
                0065 C      |-- INI_CG2D
                0066 C      |
                0067 C      |-- INI_CG3D
                0068 C      |
                0069 C      |-- CONFIG_SUMMARY
c2c21ed3a3 Alis*0070 C      |
27bebc4ab1 Jean*0071 C      |-- PACKAGES_CHECK
07c6b5d518 Jean*0072 C      |  |- ${PKG}_CHECK
27bebc4ab1 Jean*0073 C      |
                0074 C      |-- CONFIG_CHECK
                0075 C      |
c2c21ed3a3 Alis*0076 C      |-- WRITE_GRID
ef55996ae3 Jean*0077 C      |
                0078 C      |-- CPL_EXCH_CONFIGS
9366854e02 Chri*0079 
                0080 C     !USES:
                0081       IMPLICIT NONE
924557e60a Chri*0082 C     == Global variables ==
                0083 #include "SIZE.h"
                0084 #include "EEPARAMS.h"
                0085 #include "PARAMS.h"
                0086 
9366854e02 Chri*0087 C     !INPUT/OUTPUT PARAMETERS:
924557e60a Chri*0088 C     == Routine arguments ==
                0089       INTEGER myThid
9366854e02 Chri*0090 CEOP
e5c33d9529 Alis*0091 
b75fe8c753 Jean*0092 #ifdef ALLOW_DEBUG
                0093       IF (debugMode) CALL DEBUG_ENTER('INITIALISE_FIXED',myThid)
                0094 #endif
                0095 
36d9303bf2 Jean*0096 C-    here is a way to deliberately break the barrier syncronization
                0097 C     by adding a BARRIER on thread XXX only ; Used to test BAR_CHECK.
                0098 c     IF ( myThid.EQ.XXX ) THEN
                0099 c       _BARRIER
                0100 c       CALL SYSTEM('sleep 1')
                0101 c     ENDIF
                0102 C--   Check barrier synchronization:
                0103       CALL BAR_CHECK( 2, myThid )
                0104 
924557e60a Chri*0105 C--   Set model parameters.
                0106 C     Parameters are set to defaults and then updates are read from
                0107 C     an input file called data.
bb98134c53 Jean*0108 #ifdef ALLOW_DEBUG
                0109       IF (debugMode) CALL DEBUG_CALL('INI_PARMS',myThid)
                0110 #endif
0584c16502 Alis*0111       CALL INI_PARMS( myThid )
924557e60a Chri*0112 
cdf6d093b9 Ed H*0113 C--   Configure packages
bb98134c53 Jean*0114 #ifdef ALLOW_DEBUG
                0115       IF (debugMode) CALL DEBUG_CALL('PACKAGES_BOOT',myThid)
                0116 #endif
cdf6d093b9 Ed H*0117       CALL PACKAGES_BOOT( myThid )
                0118 
347bbce579 Jean*0119 #ifdef COMPONENT_MODULE
                0120 C--   Import coupling exchange parameters from coupler
                0121       IF ( useCoupler ) THEN
                0122 # ifdef ALLOW_DEBUG
                0123         IF (debugMode) CALL DEBUG_CALL('CPL_IMPORT_CPLPARMS',myThid)
                0124 # endif
                0125         CALL CPL_IMPORT_CPLPARMS( myThid )
                0126       ENDIF
                0127 #endif /* COMPONENT_MODULE */
                0128 
cdf6d093b9 Ed H*0129 C--   Read configuration parameters for packages
bb98134c53 Jean*0130 #ifdef ALLOW_DEBUG
                0131       IF (debugMode) CALL DEBUG_CALL('PACKAGES_READPARMS',myThid)
                0132 #endif
cdf6d093b9 Ed H*0133       CALL PACKAGES_READPARMS( myThid )
1d48290185 Ed H*0134 
809bdccbfc Jean*0135 C--   Set (or reset) parameters (at this point, know which packages are used);
                0136 C     after this call, main model parameters are not supposed to be modified.
bb98134c53 Jean*0137 #ifdef ALLOW_DEBUG
                0138       IF (debugMode) CALL DEBUG_CALL('SET_PARMS',myThid)
                0139 #endif
809bdccbfc Jean*0140       CALL SET_PARMS( myThid )
                0141 
c74c95df5c Jean*0142 C--   Write units/set precision/etc for I/O (pickup, MDS/RW, MNC, MONITOR):
bb98134c53 Jean*0143 #ifdef ALLOW_DEBUG
                0144       IF (debugMode) CALL DEBUG_CALL('INI_MODEL_IO',myThid)
                0145 #endif
2e4e265a2e Jean*0146       CALL INI_MODEL_IO( myThid )
                0147 
a74b31ee34 Alis*0148 C--   Set model grid.
                0149 C     Variables defining model grid spacing are defined.
bb98134c53 Jean*0150 #ifdef ALLOW_DEBUG
                0151       IF (debugMode) CALL DEBUG_CALL('INI_GRID',myThid)
                0152 #endif
931afb889c Jean*0153 #ifdef ALLOW_OPENAD
60e3924f90 Patr*0154       CALL OpenAD_INI_GRID( myThid )
                0155 #else
a74b31ee34 Alis*0156       CALL INI_GRID( myThid )
60e3924f90 Patr*0157 #endif
a74b31ee34 Alis*0158 
d87b427b2d Jean*0159 C--   Load reference profiles from files
bb98134c53 Jean*0160 #ifdef ALLOW_DEBUG
                0161       IF (debugMode) CALL DEBUG_CALL('LOAD_REF_FILES',myThid)
                0162 #endif
d87b427b2d Jean*0163       CALL LOAD_REF_FILES( myThid )
                0164 
a37a13034c Mart*0165 C--   Set equation of state parameters.
bb98134c53 Jean*0166 #ifdef ALLOW_DEBUG
                0167       IF (debugMode) CALL DEBUG_CALL('INI_EOS',myThid)
                0168 #endif
a37a13034c Mart*0169       CALL INI_EOS( myThid )
                0170 
d87b427b2d Jean*0171 C--   Set reference state (vertical reference profiles)
bb98134c53 Jean*0172 #ifdef ALLOW_DEBUG
                0173       IF (debugMode) CALL DEBUG_CALL('SET_REF_STATE',myThid)
                0174 #endif
d87b427b2d Jean*0175       CALL SET_REF_STATE( myThid )
                0176 
                0177 C--   Set remaining grid factors
bb98134c53 Jean*0178 #ifdef ALLOW_DEBUG
                0179       IF (debugMode) CALL DEBUG_CALL('SET_GRID_FACTORS',myThid)
                0180 #endif
d87b427b2d Jean*0181       CALL SET_GRID_FACTORS( myThid )
769c28d1ef Jean*0182 
924557e60a Chri*0183 C--   Initialise map of depths
bb98134c53 Jean*0184 #ifdef ALLOW_DEBUG
                0185       IF (debugMode) CALL DEBUG_CALL('INI_DEPTHS',myThid)
                0186 #endif
931afb889c Jean*0187 #ifdef ALLOW_OPENAD
60e3924f90 Patr*0188       CALL OpenAD_INI_DEPTHS( myThid )
                0189 #else
924557e60a Chri*0190       CALL INI_DEPTHS( myThid )
60e3924f90 Patr*0191 #endif
924557e60a Chri*0192 
a74b31ee34 Alis*0193 C--   Derive masks, lopping factors and recipricols of quantities.
924557e60a Chri*0194 C     Volumes and areas are set according to grid and depth map.
bb98134c53 Jean*0195 #ifdef ALLOW_DEBUG
                0196       IF (debugMode) CALL DEBUG_CALL('INI_MASKS_ETC',myThid)
                0197 #endif
931afb889c Jean*0198 #ifdef ALLOW_OPENAD
60e3924f90 Patr*0199       CALL OpenAD_INI_MASKS_ETC( myThid )
                0200 #else
a74b31ee34 Alis*0201       CALL INI_MASKS_ETC( myThid )
60e3924f90 Patr*0202 #endif
06bb0cec77 Jean*0203 
                0204 C--   Synchronize all threads after setting masks and before pkgs init.
1dbaea09ee Chri*0205       _BARRIER
924557e60a Chri*0206 
fb481a83c2 Alis*0207 C--   Call fixed data initialization phase of packages
bb98134c53 Jean*0208 #ifdef ALLOW_DEBUG
                0209       IF (debugMode) CALL DEBUG_CALL('PACKAGES_INIT_FIXED',myThid)
                0210 #endif
fb481a83c2 Alis*0211       CALL PACKAGES_INIT_FIXED( myThid )
                0212 
aa03c27196 Jean*0213 C--   Set some domain-dependent (global) constant (e.g., globalArea)
                0214 #ifdef ALLOW_DEBUG
                0215       IF (debugMode) CALL DEBUG_CALL('INI_GLOBAL_DOMAIN',myThid)
                0216 #endif
                0217       CALL INI_GLOBAL_DOMAIN( myThid )
                0218 
81137b71a1 Jean*0219 C--   Set Bo_surf => define the Linear Relation: Phi_surf(eta)
bb98134c53 Jean*0220 #ifdef ALLOW_DEBUG
                0221       IF (debugMode) CALL DEBUG_CALL('INI_LINEAR_PHISURF',myThid)
                0222 #endif
931afb889c Jean*0223 #ifdef ALLOW_OPENAD
60e3924f90 Patr*0224       CALL OpenAD_INI_LINEAR_PHISURF( myThid )
                0225 #else
81137b71a1 Jean*0226       CALL INI_LINEAR_PHISURF( myThid )
60e3924f90 Patr*0227 #endif
81137b71a1 Jean*0228 
                0229 C--   Set coriolis operators
bb98134c53 Jean*0230 #ifdef ALLOW_DEBUG
                0231       IF (debugMode) CALL DEBUG_CALL('INI_CORI',myThid)
                0232 #endif
931afb889c Jean*0233 #ifdef ALLOW_OPENAD
60e3924f90 Patr*0234       CALL OpenAD_INI_CORI( myThid )
                0235 #else
81137b71a1 Jean*0236       CALL INI_CORI( myThid )
60e3924f90 Patr*0237 #endif
81137b71a1 Jean*0238 
88830be691 Alis*0239 C--   Set laplace operators for use in 2D conjugate gradient solver.
bb98134c53 Jean*0240 #ifdef ALLOW_DEBUG
                0241       IF (debugMode) CALL DEBUG_CALL('INI_CG2D',myThid)
                0242 #endif
931afb889c Jean*0243 #ifdef ALLOW_OPENAD
60e3924f90 Patr*0244       CALL OpenAD_INI_CG2D( myThid )
                0245 #else
924557e60a Chri*0246       CALL INI_CG2D( myThid )
60e3924f90 Patr*0247 #endif
924557e60a Chri*0248 
88830be691 Alis*0249 #ifdef ALLOW_NONHYDROSTATIC
                0250 C--   Set laplace operators for use in 3D conjugate gradient solver.
bb98134c53 Jean*0251 #ifdef ALLOW_DEBUG
                0252       IF (debugMode) CALL DEBUG_CALL('INI_CG3D',myThid)
                0253 #endif
88830be691 Alis*0254       CALL INI_CG3D( myThid )
                0255 #endif
                0256 
27bebc4ab1 Jean*0257 C--   Finally summarise the model configuration
bb98134c53 Jean*0258 #ifdef ALLOW_DEBUG
                0259       IF (debugMode) CALL DEBUG_CALL('CONFIG_SUMMARY',myThid)
                0260 #endif
0b705bf73c Patr*0261       CALL CONFIG_SUMMARY( myThid )
0584c16502 Alis*0262 
27bebc4ab1 Jean*0263 C--   Check packages configuration (& print summary)
bb98134c53 Jean*0264 #ifdef ALLOW_DEBUG
                0265       IF (debugMode) CALL DEBUG_CALL('PACKAGES_CHECK',myThid)
                0266 #endif
27bebc4ab1 Jean*0267       CALL PACKAGES_CHECK( myThid )
                0268 
                0269 C--   Check parameters and model configuration
bb98134c53 Jean*0270 #ifdef ALLOW_DEBUG
                0271       IF (debugMode) CALL DEBUG_CALL('CONFIG_CHECK',myThid)
                0272 #endif
27bebc4ab1 Jean*0273       CALL CONFIG_CHECK( myThid )
                0274 
f4a7634227 Alis*0275 C--   Write grid data and geometry arrays
bb98134c53 Jean*0276       IF ( debugLevel.GE.debLevA .OR. startTime.EQ.baseTime ) THEN
                0277 #ifdef ALLOW_DEBUG
                0278         IF (debugMode) CALL DEBUG_CALL('WRITE_GRID',myThid)
                0279 #endif
                0280         CALL WRITE_GRID( myThid )
                0281       ENDIF
f4a7634227 Alis*0282 
c1b6df074d Jean*0283 #ifdef COMPONENT_MODULE
                0284 C--   Post component-model configuration information to coupler
                0285 C     and get config. info for other component(s).
bb98134c53 Jean*0286       IF ( useCoupler ) THEN
                0287 # ifdef ALLOW_DEBUG
                0288         IF (debugMode) CALL DEBUG_CALL('CPL_EXCH_CONFIGS',myThid)
                0289 # endif
                0290         CALL CPL_EXCH_CONFIGS( myThid )
                0291       ENDIF
                0292 #endif /* COMPONENT_MODULE */
c1b6df074d Jean*0293 
36d9303bf2 Jean*0294 C--   Check barrier synchronization:
                0295       CALL BAR_CHECK( 3, myThid )
                0296 
b75fe8c753 Jean*0297 #ifdef ALLOW_DEBUG
                0298       IF (debugMode) CALL DEBUG_LEAVE('INITIALISE_FIXED',myThid)
                0299 #endif
                0300 
353773d087 Ed H*0301 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0302 
81137b71a1 Jean*0303       RETURN
924557e60a Chri*0304       END