File indexing completed on 2021-03-12 06:11:03 UTC
view on githubraw file Latest commit fdf5fb6a on 2021-02-21 02:42:37 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
d917b7e38b Jean*0051 IF ( nPx*nPy.NE.1 .AND. globalFiles
0052 & .AND. .NOT.useSingleCpuIO ) THEN
fb6a03c987 Jean*0053 _BEGIN_MASTER( myThid )
3a4af95da6 Jean*0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
9fafc42509 Jean*0065
3a4af95da6 Jean*0066
0067
9fafc42509 Jean*0068
3a4af95da6 Jean*0069
9fafc42509 Jean*0070
3a4af95da6 Jean*0071
0072
0073 WRITE(msgBuf,'(2A)')
0074 & '** WARNING ** INI_MODEL_IO: globalFiles=TRUE is not safe',
0075 & ' in Multi-processors (MPI) run'
0076 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
20b01888fd Jean*0077 & SQUEEZE_RIGHT, myThid )
3a4af95da6 Jean*0078 WRITE(msgBuf,'(2A)') '** WARNING ** INI_MODEL_IO:',
0079 & ' use instead "useSingleCpuIO=.TRUE."'
0080 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
20b01888fd Jean*0081 & SQUEEZE_RIGHT, myThid )
fb6a03c987 Jean*0082 _END_MASTER( myThid )
3a4af95da6 Jean*0083 ENDIF
0084
ab69c6018d Jean*0085
d19b47d96d Jean*0086 useGlobalBuff = useSingleCpuIO
0087 #ifdef CG2D_SINGLECPU_SUM
0088 useGlobalBuff = .TRUE.
0089 #endif /* CG2D_SINGLECPU_SUM */
0090 #ifdef ALLOW_EXCH2
10c5554546 Jean*0091 IF ( useGlobalBuff ) THEN
ab69c6018d Jean*0092 xySize = exch2_global_Nx*exch2_global_Ny
d19b47d96d Jean*0093 #ifndef CG2D_SINGLECPU_SUM
0094 IF ( .NOT.W2_useE2ioLayOut ) xySize = Nx*Ny
0095 #endif /* ndef CG2D_SINGLECPU_SUM */
ab69c6018d Jean*0096 IF ( xySize.GT.W2_ioBufferSize ) THEN
d19b47d96d Jean*0097 WRITE(msgBuf,'(A,2(I10,A))')
0098 & 'W2_ioBufferSize=', W2_ioBufferSize,
0099 & ' <', xySize, ' = Size of Global 2-D map'
ab69c6018d Jean*0100 CALL PRINT_ERROR( msgBuf, myThid )
d19b47d96d Jean*0101 WRITE(msgBuf,'(2A)')
0102 & 'INI_MODEL_IO: increase W2_ioBufferSize',
0103 & ' in "W2_EXCH2_SIZE.h" + recompile'
ab69c6018d Jean*0104 CALL PRINT_ERROR( msgBuf, myThid )
0105 STOP 'ABNORMAL END: S/R INI_MODEL_IO (buffer size)'
0106 ENDIF
0107 ENDIF
10c5554546 Jean*0108 #endif /* ALLOW_EXCH2 */
3a4af95da6 Jean*0109
0110
fb6a03c987 Jean*0111
0112 _BEGIN_MASTER( myThid )
0113
9fafc42509 Jean*0114
0115
c74c95df5c Jean*0116
9fafc42509 Jean*0117 tempStartAB = nIter0
0118 saltStartAB = nIter0
0119 mom_StartAB = nIter0
0120 nHydStartAB = nIter0
fdf5fb6af0 Jean*0121 qHydStartAB = nIter0
9fafc42509 Jean*0122 IF ( startFromPickupAB2 ) tempStartAB = MIN( nIter0 , 1 )
0123 saltStartAB = tempStartAB
0124 mom_StartAB = tempStartAB
cba4501825 Jean*0125 nHydStartAB = tempStartAB
fdf5fb6af0 Jean*0126 qHydStartAB = tempStartAB
cba4501825 Jean*0127 dPhiNHstatus= 0
9fafc42509 Jean*0128
0129
0130 nCheckLev = 1
0131 checkPtSuff(1) = 'ckptA'
0132 checkPtSuff(2) = 'ckptB'
0133
137309e213 Jean*0134
9fafc42509 Jean*0135
435d596cb2 Jean*0136
45a443d2a4 Jean*0137 IF ( mdsioLocalDir .NE. ' ' ) THEN
4916e53cda Jean*0138 iL = ILNBLNK( mdsioLocalDir )
435d596cb2 Jean*0139
0140
0141 IF ( 2*IL.GT.MAX_LEN_FNAM ) THEN
0142 WRITE(msgBuf,'(2A,I4,A)') 'INI_MODEL_IO: ',
0143 & 'Too long (IL=',IL,') mdsioLocalDir:'
0144 CALL PRINT_ERROR( msgBuf, myThid )
0145 WRITE(errorMessageUnit,'(3A)')
0146 & 'localDir: >',mdsioLocalDir(1:IL),'<'
0147 STOP 'ABNORMAL END: S/R INI_MODEL_IO (mdsioLocalDir)'
0148 ENDIF
b9dadda204 Mart*0149 i = ILNBLNK( myProcessStr )
b27db18f77 Jean*0150 WRITE(namBuf,'(4A)')
b9dadda204 Mart*0151 & ' mkdir -p ', mdsioLocalDir(1:iL),myProcessStr(1:i),' '
4916e53cda Jean*0152 pIL = 1 + ILNBLNK( namBuf )
b27db18f77 Jean*0153 #ifdef HAVE_SYSTEM
4916e53cda Jean*0154 WRITE(standardMessageUnit,'(3A)')
0155 & '==> SYSTEM CALL (from INI_MODEL_IO): >',namBuf(1:pIL),'<'
0156 CALL SYSTEM( namBuf(1:pIL) )
b27db18f77 Jean*0157 #else
0158 WRITE(msgBuf,'(3A)') '** WARNING ** INI_MODEL_IO: ',
0159 & 'SYSTEM call missing (HAVE_SYSTEM undef) for mdsioLocalDir'
0160 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0161 & SQUEEZE_RIGHT, myThid )
0162 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0163 & SQUEEZE_RIGHT, myThid )
0164 WRITE(errorMessageUnit,'(4A)') '** WARNING ** INI_MODEL_IO: ',
0165 & 'Skip command: >',namBuf(1:pIL),'<'
0166 #endif
0167 WRITE(msgBuf,'(A)') ' '
0168 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0169 & SQUEEZE_RIGHT, myThid )
4916e53cda Jean*0170 namBuf(1:iL) = mdsioLocalDir(1:iL)
b9dadda204 Mart*0171 WRITE(mdsioLocalDir,'(3A)') namBuf(1:iL),myProcessStr(1:i),'/'
45a443d2a4 Jean*0172 ENDIF
0173
13724ad946 Jean*0174
0175 CALL READ_MFLDS_INIT( myThid )
0176
f4a7634227 Alis*0177
0178 CALL SET_WRITE_GLOBAL_FLD( globalFiles )
0179
0180 CALL SET_WRITE_GLOBAL_REC( globalFiles )
20b01888fd Jean*0181
0182 IF ( useOBCS .AND. globalFiles ) THEN
0183 WRITE(msgBuf,'(2A)') '** WARNING ** INI_MODEL_IO:',
0184 & ' use tiled-files to write sections (for OBCS)'
0185 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0186 & SQUEEZE_RIGHT, myThid )
0187 CALL SET_WRITE_GLOBAL_SEC( .FALSE. )
0188 ELSE
0189 CALL SET_WRITE_GLOBAL_SEC( globalFiles )
0190 ENDIF
f4a7634227 Alis*0191
fb6a03c987 Jean*0192 _END_MASTER( myThid )
0193
0194 _BARRIER
5ec3834826 Jean*0195
d19b47d96d Jean*0196
0197 IF ( useGlobalBuff ) THEN
ab69c6018d Jean*0198 _BEGIN_MASTER( myThid )
0199 DO i=1,xyBuffer_size
0200 xy_buffer_r8(i) = 0. _d 0
0201 xy_buffer_r4(i) = 0.
0202 ENDDO
0203 _END_MASTER( myThid )
0204 ENDIF
0205
3a4af95da6 Jean*0206
0207
0208 #ifdef ALLOW_MNC
0209 IF (useMNC) THEN
c74c95df5c Jean*0210
0211 CALL MNC_INIT( myThid )
0212 CALL MNC_CW_INIT( sNx,sNy,OLx,OLy,nSx,nSy,nPx,nPy,
0213 & Nr,myThid )
0214
0215
0216
3a4af95da6 Jean*0217
0218
0219 CALL INI_MNC_VARS( myThid )
2f58e54336 Gael*0220 ENDIF
0221 #endif /* ALLOW_MNC */
0222
186531405c Patr*0223 #ifdef ALLOW_AUTODIFF
b27db18f77 Jean*0224 IF ( useAUTODIFF ) CALL AUTODIFF_INI_MODEL_IO( myThid )
3a4af95da6 Jean*0225 #endif
0226
70aa6530a3 Gael*0227 #ifdef ALLOW_PROFILES
69734456d8 Gael*0228 IF ( usePROFILES ) CALL PROFILES_INI_IO( myThid )
0229 #endif
0230
0231 #ifdef ALLOW_DIAGNOSTICS
0232 IF ( useDiagnostics ) CALL DIAGNOSTICS_INI_IO( myThid )
70aa6530a3 Gael*0233 #endif
0234
c74c95df5c Jean*0235 #ifdef ALLOW_MONITOR
0236
0237 CALL MON_INIT( myThid )
0238 #endif
0239
5ec3834826 Jean*0240
0241
0242 RETURN
0243 END