File indexing completed on 2024-11-26 06:10:21 UTC
view on githubraw file Latest commit 27ce1202 on 2024-11-25 17:10:12 UTC
5ec3834826 Jean*0001 #include "PACKAGES_CONFIG.h"
0002 #include "CPP_OPTIONS.h"
0003
e9e5c3cd18 Ed H*0004
f4a7634227 Alis*0005
ef1e764710 Ed H*0006
e9e5c3cd18 Ed H*0007
f4a7634227 Alis*0008 SUBROUTINE INI_MODEL_IO( myThid )
0009
9fafc42509 Jean*0010
c74c95df5c Jean*0011
0012
0013
0014
0015
5ec3834826 Jean*0016
ef1e764710 Ed H*0017
5ec3834826 Jean*0018 IMPLICIT NONE
0019 #include "SIZE.h"
5ba1ba83f0 Ed H*0020 #include "EEPARAMS.h"
45a443d2a4 Jean*0021 #include "EESUPPORT.h"
5ba1ba83f0 Ed H*0022 #include "PARAMS.h"
9fafc42509 Jean*0023 #include "RESTART.h"
ab69c6018d Jean*0024 #ifdef ALLOW_EXCH2
1cc6effca6 Jean*0025 # include "W2_EXCH2_SIZE.h"
ab69c6018d Jean*0026 # include "W2_EXCH2_TOPOLOGY.h"
d19b47d96d Jean*0027 # include "W2_EXCH2_PARAMS.h"
ab69c6018d Jean*0028 #endif /* ALLOW_EXCH2 */
d19b47d96d Jean*0029 #include "EEBUFF_SCPU.h"
5ec3834826 Jean*0030
f4a7634227 Alis*0031
3a4af95da6 Jean*0032
5ec3834826 Jean*0033 INTEGER myThid
3a4af95da6 Jean*0034
45a443d2a4 Jean*0035
0036 INTEGER ILNBLNK
0037 EXTERNAL ILNBLNK
0038
3a4af95da6 Jean*0039
f84aaa453a Jean*0040
3a4af95da6 Jean*0041 CHARACTER*(MAX_LEN_MBUF) msgBuf
45a443d2a4 Jean*0042 CHARACTER*(MAX_LEN_FNAM) namBuf
d19b47d96d Jean*0043 INTEGER i, iL, pIL
0044 LOGICAL useGlobalBuff
ab69c6018d Jean*0045 #ifdef ALLOW_EXCH2
0046 INTEGER xySize
0047 #endif /* ALLOW_EXCH2 */
e9e5c3cd18 Ed H*0048
5ec3834826 Jean*0049
3a4af95da6 Jean*0050
27ce1202c5 Jean*0051 #ifdef FAST_BYTESWAP
0052 _BEGIN_MASTER( myThid )
0053 WRITE(msgBuf,'(2A)') 'INI_MODEL_IO: ',
0054 & 'Option FAST_BYTESWAP (from CPP_EEOPTIONS.h) has been removed'
0055 CALL PRINT_ERROR( msgBuf, myThid )
0056 STOP 'ABNORMAL END: S/R INI_MODEL_IO (FAST_BYTESWAP)'
0057 _END_MASTER( myThid )
0058 #endif /* FAST_BYTESWAP */
d917b7e38b Jean*0059 IF ( nPx*nPy.NE.1 .AND. globalFiles
0060 & .AND. .NOT.useSingleCpuIO ) THEN
fb6a03c987 Jean*0061 _BEGIN_MASTER( myThid )
3a4af95da6 Jean*0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
9fafc42509 Jean*0073
3a4af95da6 Jean*0074
0075
9fafc42509 Jean*0076
3a4af95da6 Jean*0077
9fafc42509 Jean*0078
3a4af95da6 Jean*0079
0080
0081 WRITE(msgBuf,'(2A)')
0082 & '** WARNING ** INI_MODEL_IO: globalFiles=TRUE is not safe',
0083 & ' in Multi-processors (MPI) run'
0084 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
20b01888fd Jean*0085 & SQUEEZE_RIGHT, myThid )
3a4af95da6 Jean*0086 WRITE(msgBuf,'(2A)') '** WARNING ** INI_MODEL_IO:',
0087 & ' use instead "useSingleCpuIO=.TRUE."'
0088 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
20b01888fd Jean*0089 & SQUEEZE_RIGHT, myThid )
fb6a03c987 Jean*0090 _END_MASTER( myThid )
3a4af95da6 Jean*0091 ENDIF
0092
ab69c6018d Jean*0093
d19b47d96d Jean*0094 useGlobalBuff = useSingleCpuIO
0095 #ifdef CG2D_SINGLECPU_SUM
0096 useGlobalBuff = .TRUE.
0097 #endif /* CG2D_SINGLECPU_SUM */
0098 #ifdef ALLOW_EXCH2
10c5554546 Jean*0099 IF ( useGlobalBuff ) THEN
ab69c6018d Jean*0100 xySize = exch2_global_Nx*exch2_global_Ny
d19b47d96d Jean*0101 #ifndef CG2D_SINGLECPU_SUM
0102 IF ( .NOT.W2_useE2ioLayOut ) xySize = Nx*Ny
0103 #endif /* ndef CG2D_SINGLECPU_SUM */
ab69c6018d Jean*0104 IF ( xySize.GT.W2_ioBufferSize ) THEN
d19b47d96d Jean*0105 WRITE(msgBuf,'(A,2(I10,A))')
0106 & 'W2_ioBufferSize=', W2_ioBufferSize,
0107 & ' <', xySize, ' = Size of Global 2-D map'
ab69c6018d Jean*0108 CALL PRINT_ERROR( msgBuf, myThid )
d19b47d96d Jean*0109 WRITE(msgBuf,'(2A)')
0110 & 'INI_MODEL_IO: increase W2_ioBufferSize',
0111 & ' in "W2_EXCH2_SIZE.h" + recompile'
ab69c6018d Jean*0112 CALL PRINT_ERROR( msgBuf, myThid )
0113 STOP 'ABNORMAL END: S/R INI_MODEL_IO (buffer size)'
0114 ENDIF
0115 ENDIF
10c5554546 Jean*0116 #endif /* ALLOW_EXCH2 */
3a4af95da6 Jean*0117
0118
fb6a03c987 Jean*0119
0120 _BEGIN_MASTER( myThid )
0121
9fafc42509 Jean*0122
0123
c74c95df5c Jean*0124
9fafc42509 Jean*0125 tempStartAB = nIter0
0126 saltStartAB = nIter0
0127 mom_StartAB = nIter0
0128 nHydStartAB = nIter0
fdf5fb6af0 Jean*0129 qHydStartAB = nIter0
9fafc42509 Jean*0130 IF ( startFromPickupAB2 ) tempStartAB = MIN( nIter0 , 1 )
0131 saltStartAB = tempStartAB
0132 mom_StartAB = tempStartAB
cba4501825 Jean*0133 nHydStartAB = tempStartAB
fdf5fb6af0 Jean*0134 qHydStartAB = tempStartAB
cba4501825 Jean*0135 dPhiNHstatus= 0
9fafc42509 Jean*0136
0137
0138 nCheckLev = 1
0139 checkPtSuff(1) = 'ckptA'
0140 checkPtSuff(2) = 'ckptB'
0141
137309e213 Jean*0142
9fafc42509 Jean*0143
435d596cb2 Jean*0144
45a443d2a4 Jean*0145 IF ( mdsioLocalDir .NE. ' ' ) THEN
4916e53cda Jean*0146 iL = ILNBLNK( mdsioLocalDir )
435d596cb2 Jean*0147
0148
0149 IF ( 2*IL.GT.MAX_LEN_FNAM ) THEN
0150 WRITE(msgBuf,'(2A,I4,A)') 'INI_MODEL_IO: ',
0151 & 'Too long (IL=',IL,') mdsioLocalDir:'
0152 CALL PRINT_ERROR( msgBuf, myThid )
0153 WRITE(errorMessageUnit,'(3A)')
0154 & 'localDir: >',mdsioLocalDir(1:IL),'<'
0155 STOP 'ABNORMAL END: S/R INI_MODEL_IO (mdsioLocalDir)'
0156 ENDIF
b9dadda204 Mart*0157 i = ILNBLNK( myProcessStr )
b27db18f77 Jean*0158 WRITE(namBuf,'(4A)')
b9dadda204 Mart*0159 & ' mkdir -p ', mdsioLocalDir(1:iL),myProcessStr(1:i),' '
4916e53cda Jean*0160 pIL = 1 + ILNBLNK( namBuf )
b27db18f77 Jean*0161 #ifdef HAVE_SYSTEM
4916e53cda Jean*0162 WRITE(standardMessageUnit,'(3A)')
0163 & '==> SYSTEM CALL (from INI_MODEL_IO): >',namBuf(1:pIL),'<'
0164 CALL SYSTEM( namBuf(1:pIL) )
b27db18f77 Jean*0165 #else
0166 WRITE(msgBuf,'(3A)') '** WARNING ** INI_MODEL_IO: ',
0167 & 'SYSTEM call missing (HAVE_SYSTEM undef) for mdsioLocalDir'
0168 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0169 & SQUEEZE_RIGHT, myThid )
0170 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0171 & SQUEEZE_RIGHT, myThid )
0172 WRITE(errorMessageUnit,'(4A)') '** WARNING ** INI_MODEL_IO: ',
0173 & 'Skip command: >',namBuf(1:pIL),'<'
0174 #endif
0175 WRITE(msgBuf,'(A)') ' '
0176 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0177 & SQUEEZE_RIGHT, myThid )
4916e53cda Jean*0178 namBuf(1:iL) = mdsioLocalDir(1:iL)
b9dadda204 Mart*0179 WRITE(mdsioLocalDir,'(3A)') namBuf(1:iL),myProcessStr(1:i),'/'
45a443d2a4 Jean*0180 ENDIF
0181
13724ad946 Jean*0182
0183 CALL READ_MFLDS_INIT( myThid )
0184
f4a7634227 Alis*0185
0186 CALL SET_WRITE_GLOBAL_FLD( globalFiles )
0187
0188 CALL SET_WRITE_GLOBAL_REC( globalFiles )
20b01888fd Jean*0189
0190 IF ( useOBCS .AND. globalFiles ) THEN
0191 WRITE(msgBuf,'(2A)') '** WARNING ** INI_MODEL_IO:',
0192 & ' use tiled-files to write sections (for OBCS)'
0193 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0194 & SQUEEZE_RIGHT, myThid )
0195 CALL SET_WRITE_GLOBAL_SEC( .FALSE. )
0196 ELSE
0197 CALL SET_WRITE_GLOBAL_SEC( globalFiles )
0198 ENDIF
f4a7634227 Alis*0199
fb6a03c987 Jean*0200 _END_MASTER( myThid )
0201
0202 _BARRIER
5ec3834826 Jean*0203
d19b47d96d Jean*0204
0205 IF ( useGlobalBuff ) THEN
ab69c6018d Jean*0206 _BEGIN_MASTER( myThid )
0207 DO i=1,xyBuffer_size
0208 xy_buffer_r8(i) = 0. _d 0
0209 xy_buffer_r4(i) = 0.
0210 ENDDO
0211 _END_MASTER( myThid )
0212 ENDIF
0213
3a4af95da6 Jean*0214
0215
0216 #ifdef ALLOW_MNC
0217 IF (useMNC) THEN
c74c95df5c Jean*0218
0219 CALL MNC_INIT( myThid )
0220 CALL MNC_CW_INIT( sNx,sNy,OLx,OLy,nSx,nSy,nPx,nPy,
0221 & Nr,myThid )
0222
0223
0224
3a4af95da6 Jean*0225
0226
0227 CALL INI_MNC_VARS( myThid )
2f58e54336 Gael*0228 ENDIF
0229 #endif /* ALLOW_MNC */
0230
186531405c Patr*0231 #ifdef ALLOW_AUTODIFF
b27db18f77 Jean*0232 IF ( useAUTODIFF ) CALL AUTODIFF_INI_MODEL_IO( myThid )
3a4af95da6 Jean*0233 #endif
0234
70aa6530a3 Gael*0235 #ifdef ALLOW_PROFILES
69734456d8 Gael*0236 IF ( usePROFILES ) CALL PROFILES_INI_IO( myThid )
0237 #endif
0238
0239 #ifdef ALLOW_DIAGNOSTICS
0240 IF ( useDiagnostics ) CALL DIAGNOSTICS_INI_IO( myThid )
70aa6530a3 Gael*0241 #endif
0242
c74c95df5c Jean*0243 #ifdef ALLOW_MONITOR
0244
0245 CALL MON_INIT( myThid )
0246 #endif
0247
5ec3834826 Jean*0248
0249
0250 RETURN
0251 END