File indexing completed on 2021-08-12 05:11:35 UTC
view on githubraw file Latest commit 0320e252 on 2021-08-11 16:08:52 UTC
793277f3cc Patr*0001 #include "EXF_OPTIONS.h"
0002
a69c3cf465 Jean*0003 SUBROUTINE EXF_CHECK_RANGE( myTime, myIter, myThid )
793277f3cc Patr*0004
a69c3cf465 Jean*0005
0006
0007
793277f3cc Patr*0008
a69c3cf465 Jean*0009 IMPLICIT NONE
793277f3cc Patr*0010
a69c3cf465 Jean*0011
793277f3cc Patr*0012 #include "EEPARAMS.h"
0013 #include "SIZE.h"
0320e25227 Mart*0014 #include "PARAMS.h"
793277f3cc Patr*0015 #include "GRID.h"
0016
082e18c36c Jean*0017 #include "EXF_PARAM.h"
a69c3cf465 Jean*0018
082e18c36c Jean*0019 #include "EXF_FIELDS.h"
793277f3cc Patr*0020
a69c3cf465 Jean*0021
0022
0023 _RL myTime
0024 INTEGER myIter, myThid
793277f3cc Patr*0025
a69c3cf465 Jean*0026
0320e25227 Mart*0027 INTEGER i, j, ks, bi, bj
a69c3cf465 Jean*0028 INTEGER exferr
793277f3cc Patr*0029
a69c3cf465 Jean*0030
793277f3cc Patr*0031
9b42fddb2a Patr*0032 exferr = 0
0033
72e614f603 Jean*0034
0035 _BARRIER
0036 _BEGIN_MASTER( myThid )
a69c3cf465 Jean*0037
0320e25227 Mart*0038 ks = 1
0039 IF ( usingPCoords ) ks = Nr
a69c3cf465 Jean*0040
0041
0042 DO bj = 1, nSy
0043 DO bi = 1, nSx
1e27e6f431 Dimi*0044
0045
0046
a69c3cf465 Jean*0047
0048
0049 DO j = 1, sNy
0050 DO i = 1, sNx
0051
0052
0053 IF ( ( hflux(i,j,bi,bj) .GT. 1600. .OR.
02be45b849 Mart*0054 & hflux(i,j,bi,bj) .LT. -500. ) .AND.
0320e25227 Mart*0055 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0056 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0057 & 'EXF WARNING: hflux out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0058 & bi, bj, i, j, myIter, hflux(i,j,bi,bj)
02be45b849 Mart*0059 exferr = 1
a69c3cf465 Jean*0060 ENDIF
0061
0062
0063 IF ( ABS(sflux(i,j,bi,bj)) .GT. 1.E-6 .AND.
0320e25227 Mart*0064 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0065 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0066 & 'EXF WARNING: sflux out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0067 & bi, bj, i, j, myIter, sflux(i,j,bi,bj)
02be45b849 Mart*0068 exferr = 1
a69c3cf465 Jean*0069 ENDIF
0070
0071
0072 IF ( ABS(ustress(i,j,bi,bj)) .GT. 2.7 .AND.
0320e25227 Mart*0073 & maskW(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0074 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0075 & 'EXF WARNING: ustress out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0076 & bi, bj, i, j, myIter, ustress(i,j,bi,bj)
02be45b849 Mart*0077 exferr = 1
a69c3cf465 Jean*0078 ENDIF
0079
0080
0081 IF ( ABS(vstress(i,j,bi,bj)) .GT. 2.3 .AND.
0320e25227 Mart*0082 & maskS(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0083 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0084 & 'EXF WARNING: vstress out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0085 & bi, bj, i, j, myIter, vstress(i,j,bi,bj)
02be45b849 Mart*0086 exferr = 1
a69c3cf465 Jean*0087 ENDIF
0088
0089 IF ( useAtmWind ) THEN
0090
0091 IF ( ABS(uwind(i,j,bi,bj)) .GT. 100. .AND.
0320e25227 Mart*0092 & maskW(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0093 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0094 & 'EXF WARNING: uwind out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0095 & bi, bj, i, j, myIter, uwind(i,j,bi,bj)
0096 exferr = 1
0097 ENDIF
0098
0099
0100 IF ( ABS(vwind(i,j,bi,bj)) .GT. 100. .AND.
0320e25227 Mart*0101 & maskS(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0102 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0103 & 'EXF WARNING: vwind out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0104 & bi, bj, i, j, myIter, vwind(i,j,bi,bj)
0105 exferr = 1
0106 ENDIF
0107 ENDIF
0108
0109
0110 IF ( ( wspeed(i,j,bi,bj) .LT. 0. .OR.
02be45b849 Mart*0111 & wspeed(i,j,bi,bj) .GT. 100. ) .AND.
0320e25227 Mart*0112 & maskS(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0113 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0114 & 'EXF WARNING: wspeed out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0115 & bi, bj, i, j, myIter, wspeed(i,j,bi,bj)
02be45b849 Mart*0116 exferr = 1
a69c3cf465 Jean*0117 ENDIF
0118
793277f3cc Patr*0119 #ifdef ALLOW_ATM_TEMP
a69c3cf465 Jean*0120
0121 IF ( (atemp(i,j,bi,bj) .LT. 183 .OR.
02be45b849 Mart*0122 & atemp(i,j,bi,bj) .GT. 343 ) .AND.
0320e25227 Mart*0123 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0124 WRITE(standardMessageUnit,'(2A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0125 & 'EXF WARNING: atemp + exf_offset_atemp ',
0126 & 'out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0127 & bi, bj, i, j, myIter, atemp(i,j,bi,bj)
02be45b849 Mart*0128 exferr = 1
a69c3cf465 Jean*0129 ENDIF
0130
0131
0132 IF ( (aqh(i,j,bi,bj) .LT. 0. .OR.
02be45b849 Mart*0133 & aqh(i,j,bi,bj) .GT. 0.1 ) .AND.
0320e25227 Mart*0134 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0135 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0136 & 'EXF WARNING: aqh out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0137 & bi, bj, i, j, myIter, aqh(i,j,bi,bj)
02be45b849 Mart*0138 exferr = 1
a69c3cf465 Jean*0139 ENDIF
0140
0141
0142 IF ( (precip(i,j,bi,bj) .LT. 0. .OR.
02be45b849 Mart*0143 & precip(i,j,bi,bj) .GT. 2.E-6 ) .AND.
0320e25227 Mart*0144 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0145 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0146 & 'EXF WARNING: precip out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0147 & bi, bj, i, j, myIter, precip(i,j,bi,bj)
02be45b849 Mart*0148 exferr = 1
a69c3cf465 Jean*0149 ENDIF
0150
0151
0152 IF ( (snowprecip(i,j,bi,bj) .LT. 0. .OR.
02be45b849 Mart*0153 & snowprecip(i,j,bi,bj) .GT. 2.E-6 ) .AND.
0320e25227 Mart*0154 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0155 WRITE(standardMessageUnit,'(2A,5(1X,I6),2X,D22.15)')
0156 & 'EXF WARNING: snowprecip out of range ',
02be45b849 Mart*0157 & 'for bi,bj,i,j,it= ',
a69c3cf465 Jean*0158 & bi, bj, i, j, myIter, snowprecip(i,j,bi,bj)
02be45b849 Mart*0159 exferr = 1
a69c3cf465 Jean*0160 ENDIF
793277f3cc Patr*0161 #endif
0162
0163 #ifdef SHORTWAVE_HEATING
a69c3cf465 Jean*0164
0165 IF ( (swflux(i,j,bi,bj) .GT. 1. .OR.
02be45b849 Mart*0166 & swflux(i,j,bi,bj) .LT. -1000. ) .AND.
0320e25227 Mart*0167 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0168 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0169 & 'EXF WARNING: swflux out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0170 & bi, bj, i, j, myIter, swflux(i,j,bi,bj)
02be45b849 Mart*0171 exferr = 1
a69c3cf465 Jean*0172 ENDIF
793277f3cc Patr*0173 #endif
0174
9b42fddb2a Patr*0175 #ifdef ALLOW_RUNOFF
a69c3cf465 Jean*0176
0177 IF ( (runoff(i,j,bi,bj) .LT. 0. .OR.
02be45b849 Mart*0178 & runoff(i,j,bi,bj) .GT. 1.E-6 ) .AND.
0320e25227 Mart*0179 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0180 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
02be45b849 Mart*0181 & 'EXF WARNING: runoff out of range for bi,bj,i,j,it= ',
a69c3cf465 Jean*0182 & bi, bj, i, j, myIter, runoff(i,j,bi,bj)
0183 WRITE(standardMessageUnit,'(A)')
02be45b849 Mart*0184 & 'Please note that input units for runoff are'
a69c3cf465 Jean*0185 WRITE(standardMessageUnit,'(A)')
02be45b849 Mart*0186 & 'm/s not m/yr. If input file is in m/yr, set'
a69c3cf465 Jean*0187 WRITE(standardMessageUnit,'(A)')
02be45b849 Mart*0188 & 'exf_inscal_runoff=3.170979198E-8'
a69c3cf465 Jean*0189 WRITE(standardMessageUnit,'(A)')
02be45b849 Mart*0190 & 'in the data.exf input file.'
0191 exferr = 1
a69c3cf465 Jean*0192 ENDIF
e603dbf008 Dimi*0193 # ifdef ALLOW_RUNOFTEMP
a69c3cf465 Jean*0194
0195 IF ( (runoftemp(i,j,bi,bj) .LT. -2. .OR.
e603dbf008 Dimi*0196 & runoff(i,j,bi,bj) .GT. 36 ) .AND.
0320e25227 Mart*0197 & maskC(i,j,ks,bi,bj) .NE. 0. ) THEN
a69c3cf465 Jean*0198 WRITE(standardMessageUnit,'(A,5(1X,I6),2X,D22.15)')
e603dbf008 Dimi*0199 & 'EXF WARNING: runoftemp out of range at bi,bj,i,j,it= ',
a69c3cf465 Jean*0200 & bi, bj, i, j, myIter, runoff(i,j,bi,bj)
e603dbf008 Dimi*0201 exferr = 1
a69c3cf465 Jean*0202 ENDIF
e603dbf008 Dimi*0203 # endif /* ALLOW_RUNOFTEMP */
0204 #endif /* ALLOW_RUNOFF */
a69c3cf465 Jean*0205 ENDDO
0206 ENDDO
0207
0208 ENDDO
0209 ENDDO
0210
0211 IF ( exferr .NE. 0 ) THEN
0212 WRITE(standardMessageUnit,'(A)')
02be45b849 Mart*0213 & 'EXF WARNING: If you think these values are OK '
a69c3cf465 Jean*0214 WRITE(standardMessageUnit,'(A)')
02be45b849 Mart*0215 & 'EXF WARNING: then set useExfCheckRange=.FALSE.'
72e614f603 Jean*0216 STOP 'ABNORMAL END: S/R EXF_CHECK_RANGE'
a69c3cf465 Jean*0217 ENDIF
72e614f603 Jean*0218 _END_MASTER( myThid )
0320e25227 Mart*0219 _BARRIER
02be45b849 Mart*0220
72e614f603 Jean*0221 RETURN
0222 END