File indexing completed on 2018-03-02 18:43:24 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
ae125ba74b Jean*0001 #include "SEAICE_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE SEAICE_CHECK_PICKUP(
0007 I missFldList,
0008 I nMissing, nbFields,
0009 I myIter, myThid )
0010
0011
0012
0013
0014
0015
0016
0017 IMPLICIT NONE
0018
0019
0020 #include "SIZE.h"
0021 #include "EEPARAMS.h"
0022 #include "PARAMS.h"
ccaa3c61f4 Patr*0023 #include "SEAICE_SIZE.h"
ae125ba74b Jean*0024 #include "SEAICE_PARAMS.h"
0025 #include "SEAICE.h"
ccaa3c61f4 Patr*0026 #include "SEAICE_TRACER.h"
ae125ba74b Jean*0027
0028
0029
0030
0031
0032
0033
0034 CHARACTER*(8) missFldList(*)
0035 INTEGER nMissing
0036 INTEGER nbFields
0037 INTEGER myIter
0038 INTEGER myThid
0039
0040
0041
0042 INTEGER ILNBLNK
0043 EXTERNAL ILNBLNK
0044
0045
0046
0047
0048
0049
0050
0051
bd632d6a0a Jean*0052 INTEGER nj, ioUnit
ae125ba74b Jean*0053 INTEGER tIceFlag, warnCnts
0054 LOGICAL stopFlag
bd632d6a0a Jean*0055
86b84a92fc Patr*0056 #ifdef SEAICE_ITD
0057
0058
0059
0060 LOGICAL useAvgFldsForITD
0061 #endif
ae125ba74b Jean*0062 CHARACTER*(MAX_LEN_MBUF) msgBuf
ccaa3c61f4 Patr*0063 CHARACTER*(8) fldName
ed6012c5a0 Jean*0064
e54fe3e1f9 Gael*0065 #ifdef ALLOW_SITRACER
0066 INTEGER iTracer
ccaa3c61f4 Patr*0067 CHARACTER*(2) fldNum
bd632d6a0a Jean*0068 #endif
ae125ba74b Jean*0069
0070
0071
0072
0073 IF ( nMissing.GE.1 ) THEN
0074 ioUnit = errorMessageUnit
0075 tIceFlag = 0
bd632d6a0a Jean*0076
ae125ba74b Jean*0077 DO nj=1,nMissing
0078 IF ( missFldList(nj).EQ.'siTICES ' ) tIceFlag = tIceFlag + 2
0079 IF ( missFldList(nj).EQ.'siTICE ' ) tIceFlag = tIceFlag + 1
bd632d6a0a Jean*0080
ae125ba74b Jean*0081 ENDDO
0082 stopFlag = .FALSE.
86b84a92fc Patr*0083 #ifdef SEAICE_ITD
0084 useAvgFldsForITD = .FALSE.
0085 #endif
ae125ba74b Jean*0086 warnCnts = nMissing
ccaa3c61f4 Patr*0087
ae125ba74b Jean*0088 DO nj=1,nMissing
ccaa3c61f4 Patr*0089 fldName = missFldList(nj)
38af4b423b Jean*0090 IF ( fldName.EQ.'siTICE ' .AND. tIceFlag.LE.1 ) THEN
ae125ba74b Jean*0091 IF ( .NOT.pickupStrictlyMatch ) THEN
38af4b423b Jean*0092 _BEGIN_MASTER( myThid )
e2d4045aec Jean*0093 WRITE(msgBuf,'(4A)') '** WARNING ** SEAICE_CHECK_PICKUP:',
bd632d6a0a Jean*0094 & ' restart with Tice from 1rst category'
ae125ba74b Jean*0095 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
38af4b423b Jean*0096 _END_MASTER( myThid )
ae125ba74b Jean*0097 ENDIF
38af4b423b Jean*0098 ELSEIF ( fldName.EQ.'siTICES ' .AND. tIceFlag.LE.2 ) THEN
0099 IF ( .NOT.pickupStrictlyMatch .AND. SEAICE_multDim.GT.1 ) THEN
0100 _BEGIN_MASTER( myThid )
e2d4045aec Jean*0101 WRITE(msgBuf,'(4A)') '** WARNING ** SEAICE_CHECK_PICKUP:',
bd632d6a0a Jean*0102 & ' restart from single category Tice (copied to TICES)'
ae125ba74b Jean*0103 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
38af4b423b Jean*0104 _END_MASTER( myThid )
0bc24de323 Mart*0105
ae125ba74b Jean*0106 ENDIF
ccaa3c61f4 Patr*0107 ELSEIF ( fldName(1:6).EQ.'siSigm' ) THEN
ae125ba74b Jean*0108
0109
0110
0111 IF ( .NOT.pickupStrictlyMatch ) THEN
38af4b423b Jean*0112 _BEGIN_MASTER( myThid )
e2d4045aec Jean*0113 WRITE(msgBuf,'(4A)') '** WARNING ** SEAICE_CHECK_PICKUP:',
bd632d6a0a Jean*0114 & ' restart without "',fldName,'" (set to zero)'
ae125ba74b Jean*0115 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
38af4b423b Jean*0116 _END_MASTER( myThid )
ae125ba74b Jean*0117 ENDIF
6cbc659de0 Mart*0118 ELSEIF ( fldName(1:8).EQ.'siUicNm1' .OR.
0119 & fldName(1:8).EQ.'siVicNm1' ) THEN
0120 IF ( .NOT.pickupStrictlyMatch ) THEN
0121
e501eee760 Mart*0122 SEAICEmomStartBDF = 0
6cbc659de0 Mart*0123 _BEGIN_MASTER( myThid )
0124 WRITE(msgBuf,'(4A)') '** WARNING ** SEAICE_CHECK_PICKUP:',
0125 & ' restart without "',fldName,'" (set to zero)'
0126 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0127 _END_MASTER( myThid )
0128 ENDIF
ccaa3c61f4 Patr*0129 ELSEIF ( fldName.EQ.'siTICES ' .OR.
0130 & fldName.EQ.'siTICE ' .OR.
0131 & fldName.EQ.'siUICE ' .OR.
0132 & fldName.EQ.'siVICE ' .OR.
0133 & fldName.EQ.'siAREA ' .OR.
0134 & fldName.EQ.'siHEFF ' .OR.
0135 & fldName.EQ.'siHSNOW ' .OR.
0136 & fldName.EQ.'siHSALT ' ) THEN
ae125ba74b Jean*0137 stopFlag = .TRUE.
38af4b423b Jean*0138 _BEGIN_MASTER( myThid )
ae125ba74b Jean*0139 WRITE(msgBuf,'(4A)') 'SEAICE_CHECK_PICKUP: ',
ccaa3c61f4 Patr*0140 & 'cannot restart without field "',fldName,'"'
ae125ba74b Jean*0141 CALL PRINT_ERROR( msgBuf, myThid )
38af4b423b Jean*0142 _END_MASTER( myThid )
86b84a92fc Patr*0143 #ifdef SEAICE_ITD
0144 ELSEIF ( fldName.EQ.'siAREAn ' .OR.
0145 & fldName.EQ.'siHEFFn ' .OR.
346a7f9e71 Jean*0146 & fldName.EQ.'siHSNOWn' ) THEN
86b84a92fc Patr*0147 IF ( .NOT.pickupStrictlyMatch ) THEN
0148
0149 useAvgFldsForITD = .TRUE.
346a7f9e71 Jean*0150 ELSE
0151
86b84a92fc Patr*0152
0153 stopFlag = .TRUE.
0154 WRITE(msgBuf,'(4A)') 'SEAICE_CHECK_PICKUP: ',
0155 & 'cannot restart without ITD field "',fldName,'"'
0156 CALL PRINT_ERROR( msgBuf, myThid )
346a7f9e71 Jean*0157 ENDIF
86b84a92fc Patr*0158 #endif
e54fe3e1f9 Gael*0159 #ifdef ALLOW_SITRACER
0160 ELSEIF ( fldName(1:6).EQ.'siTrac' ) THEN
38af4b423b Jean*0161 IF ( .NOT.pickupStrictlyMatch ) THEN
0162 _BEGIN_MASTER( myThid )
0163 DO iTracer = 1, SItrMaxNum
0164 WRITE(fldNum,'(I2.2)') iTracer
0165 IF ( fldName(7:8).EQ.fldNum ) THEN
0166 WRITE(msgBuf,'(4A)')
0167 & '** WARNING ** SEAICE_CHECK_PICKUP: ',
e54fe3e1f9 Gael*0168 & 'restart without "',fldName,'" (set to zero)'
38af4b423b Jean*0169 CALL PRINT_MESSAGE(
e54fe3e1f9 Gael*0170 & msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0171 ENDIF
38af4b423b Jean*0172 ENDDO
0173 _END_MASTER( myThid )
0174 ENDIF
e54fe3e1f9 Gael*0175 #endif /* ALLOW_SITRACER */
ae125ba74b Jean*0176 ELSE
0177
0178 stopFlag = .TRUE.
38af4b423b Jean*0179 _BEGIN_MASTER( myThid )
ae125ba74b Jean*0180 WRITE(msgBuf,'(4A)') 'SEAICE_CHECK_PICKUP: ',
ccaa3c61f4 Patr*0181 & 'missing field "',fldName,'" not recognized'
ae125ba74b Jean*0182 CALL PRINT_ERROR( msgBuf, myThid )
38af4b423b Jean*0183 _END_MASTER( myThid )
ae125ba74b Jean*0184 ENDIF
0185
0186 ENDDO
0187
0188 IF ( stopFlag ) THEN
0189 STOP 'ABNORMAL END: S/R SEAICE_CHECK_PICKUP'
0190 ELSEIF ( pickupStrictlyMatch ) THEN
38af4b423b Jean*0191 _BEGIN_MASTER( myThid )
ae125ba74b Jean*0192 WRITE(msgBuf,'(4A)') 'SEAICE_CHECK_PICKUP: ',
0193 & 'try with " pickupStrictlyMatch=.FALSE.,"',
0194 & ' in file: "data", NameList: "PARM03"'
0195 CALL PRINT_ERROR( msgBuf, myThid )
38af4b423b Jean*0196 _END_MASTER( myThid )
ae125ba74b Jean*0197 STOP 'ABNORMAL END: S/R SEAICE_CHECK_PICKUP'
0198 ELSEIF ( warnCnts .GT. 0 ) THEN
38af4b423b Jean*0199 _BEGIN_MASTER( myThid )
86b84a92fc Patr*0200 #ifdef SEAICE_ITD
346a7f9e71 Jean*0201 IF ( useAvgFldsForITD ) THEN
86b84a92fc Patr*0202 WRITE(msgBuf,'(3A)') '** WARNING ** SEAICE_CHECK_PICKUP:',
0203 & ' no ITD fields available, restart from single category',
32cea6ae05 Mart*0204 & ' fields,'
0205 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
0206 WRITE(msgBuf,'(2A)') '** WARNING ** SEAICE_CHECK_PICKUP:',
0207 & ' i.e. AREA -> AREAITD, HEFF -> HEFFITD, etc.'
86b84a92fc Patr*0208 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
346a7f9e71 Jean*0209 CALL SEAICE_ITD_PICKUP( myIter, myThid )
0210 ENDIF
86b84a92fc Patr*0211 #endif
e2d4045aec Jean*0212 WRITE(msgBuf,'(4A)') '** WARNING ** SEAICE_CHECK_PICKUP: ',
ae125ba74b Jean*0213 & 'Will get only an approximated Restart'
0214 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
38af4b423b Jean*0215 _END_MASTER( myThid )
ae125ba74b Jean*0216 ENDIF
0217
0218 ENDIF
0219
0220
0221
0222
0223
0224
0225 RETURN
0226 END