File indexing completed on 2018-03-02 18:36:56 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
af2e1a21f9 Jean*0001 #include "PACKAGES_CONFIG.h"
f76021331f Jean*0002 #include "CPP_OPTIONS.h"
af2e1a21f9 Jean*0003 #ifdef ALLOW_EXCH2
0004 # include "W2_OPTIONS.h"
0005 #endif /* ALLOW_EXCH2 */
f76021331f Jean*0006
0007
0008
0009
0010
0011 SUBROUTINE LOAD_GRID_SPACING( myThid )
0012
0013
c57655c2bb Jean*0014
0015
f76021331f Jean*0016
0017 IMPLICIT NONE
0018 #include "SIZE.h"
0019 #include "EEPARAMS.h"
0020 #include "PARAMS.h"
af2e1a21f9 Jean*0021 #ifdef ALLOW_EXCH2
0022 # include "W2_EXCH2_SIZE.h"
0023 # include "W2_EXCH2_TOPOLOGY.h"
0024 #endif /* ALLOW_EXCH2 */
f15994caab Jean*0025 #include "GRID.h"
af2e1a21f9 Jean*0026 #include "SET_GRID.h"
f76021331f Jean*0027
0028
c57655c2bb Jean*0029
f76021331f Jean*0030 INTEGER myThid
0031
0032
95393692ef Jean*0033
0034 INTEGER ILNBLNK
0035 EXTERNAL ILNBLNK
0036
f76021331f Jean*0037
f15994caab Jean*0038
af2e1a21f9 Jean*0039
95393692ef Jean*0040 INTEGER iLen
2c9ae9ba9d Jean*0041 INTEGER i, j, n
af2e1a21f9 Jean*0042 INTEGER gridNx, gridNy
f76021331f Jean*0043 CHARACTER*(MAX_LEN_MBUF) msgBuf
af2e1a21f9 Jean*0044 _RL delYsum
f76021331f Jean*0045
c57655c2bb Jean*0046
0047
af2e1a21f9 Jean*0048 #ifdef ALLOW_EXCH2
0049 gridNx = exch2_mydNx(1)
0050 gridNy = exch2_mydNy(1)
0051 #else /* ALLOW_EXCH2 */
0052 gridNx = Nx
0053 gridNy = Ny
0054 #endif /* ALLOW_EXCH2 */
0055
c57655c2bb Jean*0056 _BEGIN_MASTER( myThid )
0057
f15994caab Jean*0058
f76021331f Jean*0059 IF ( delXFile .NE. ' ' ) THEN
0060 iLen = ILNBLNK(delXFile)
af2e1a21f9 Jean*0061 CALL READ_GLVEC_RL( delXFile, ' ', delX, gridNx, 1, myThid )
f76021331f Jean*0062 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
0063 & ' delX loaded from file: ', delXFile(1:iLen)
0064 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
c57655c2bb Jean*0065 & SQUEEZE_RIGHT , myThid )
f76021331f Jean*0066 ENDIF
0067
f15994caab Jean*0068
f76021331f Jean*0069 IF ( delYFile .NE. ' ' ) THEN
0070 iLen = ILNBLNK(delYFile)
af2e1a21f9 Jean*0071 CALL READ_GLVEC_RL( delYFile, ' ', delY, gridNy, 1, myThid )
f76021331f Jean*0072 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
0073 & ' delY loaded from file: ', delYFile(1:iLen)
0074 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
c57655c2bb Jean*0075 & SQUEEZE_RIGHT , myThid )
0076 ENDIF
0077
f15994caab Jean*0078
c57655c2bb Jean*0079 IF ( delRFile .NE. ' ' ) THEN
0080 iLen = ILNBLNK(delRFile)
95393692ef Jean*0081 CALL READ_GLVEC_RL( delRFile, ' ', delR, Nr, 1, myThid )
c57655c2bb Jean*0082 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
0083 & ' delR loaded from file: ', delRFile(1:iLen)
0084 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0085 & SQUEEZE_RIGHT , myThid )
0086 ENDIF
0087
0088 IF ( delRcFile .NE. ' ' ) THEN
0089 iLen = ILNBLNK(delRcFile)
95393692ef Jean*0090 CALL READ_GLVEC_RL( delRcFile, ' ', delRc, Nr+1, 1, myThid )
c57655c2bb Jean*0091 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
0092 & ' delRc loaded from file: ', delRcFile(1:iLen)
0093 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0094 & SQUEEZE_RIGHT , myThid )
f76021331f Jean*0095 ENDIF
0096
f15994caab Jean*0097
0098 IF ( hybSigmFile .NE. ' ' ) THEN
0099 iLen = ILNBLNK(hybSigmFile)
0ad8252b99 Jean*0100 CALL READ_GLVEC_RS( hybSigmFile,' ',aHybSigmF,Nr+1, 1,myThid )
0101 CALL READ_GLVEC_RS( hybSigmFile,' ',bHybSigmF,Nr+1, 2,myThid )
f15994caab Jean*0102 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
0103 & ' a&b_HybSigmF loaded from file: ', hybSigmFile(1:iLen)
0104 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0105 & SQUEEZE_RIGHT , myThid )
0106 ENDIF
0107
2c9ae9ba9d Jean*0108
0109 IF ( .NOT.usingCurvilinearGrid ) THEN
0110
0111
0112
0113
0114
0115 n = 0
af2e1a21f9 Jean*0116 DO i=1,gridNx
2c9ae9ba9d Jean*0117
0118 IF ( delX(i).EQ.UNSET_RL ) THEN
0119 n = n+1
0120 WRITE(msgBuf,'(2A,I5)') 'S/R LOAD_GRID_SPACING:',
0121 & ' No value for delX at i =', i
0122 CALL PRINT_ERROR( msgBuf, myThid )
0123 ENDIF
0124
0125 IF ( delX(i).LE.0. ) THEN
0126 n = n+1
0127 WRITE(msgBuf,'(2A,I5,A,1PE16.8,A)') 'S/R LOAD_GRID_SPACING:',
0128 & ' delX(i=', i, ')=', delX(i), ' : MUST BE >0'
0129 CALL PRINT_ERROR( msgBuf, myThid )
0130 ENDIF
0131 ENDDO
0132 IF ( n.GE.1 ) THEN
0133 WRITE(msgBuf,'(2A,I5,A)') 'S/R LOAD_GRID_SPACING:',
0134 & ' found', n, ' invalid delX values'
0135 CALL PRINT_ERROR( msgBuf, myThid )
0136 STOP 'ABNORMAL END: S/R LOAD_GRID_SPACING'
0137 ENDIF
0138
0139
0140 n = 0
af2e1a21f9 Jean*0141 DO j=1,gridNy
2c9ae9ba9d Jean*0142
0143 IF ( delY(j).EQ.UNSET_RL ) THEN
0144 n = n+1
0145 WRITE(msgBuf,'(2A,I5)') 'S/R LOAD_GRID_SPACING:',
0146 & ' No value for delY at j =', j
0147 CALL PRINT_ERROR( msgBuf, myThid )
0148 ENDIF
0149
0150 IF ( delY(j).LE.0. ) THEN
0151 n = n+1
0152 WRITE(msgBuf,'(2A,I5,A,1PE16.8,A)') 'S/R LOAD_GRID_SPACING:',
0153 & ' delY(j=', j, ')=', delY(j), ' : MUST BE >0'
0154 CALL PRINT_ERROR( msgBuf, myThid )
0155 ENDIF
0156 ENDDO
0157 IF ( n.GE.1 ) THEN
0158 WRITE(msgBuf,'(2A,I5,A)') 'S/R LOAD_GRID_SPACING:',
0159 & ' found', n, ' invalid delY values'
0160 CALL PRINT_ERROR( msgBuf, myThid )
0161 STOP 'ABNORMAL END: S/R LOAD_GRID_SPACING'
0162 ENDIF
0163
0164 ENDIF
0165
af2e1a21f9 Jean*0166
0167 IF ( usingCartesianGrid .OR. usingSphericalPolarGrid ) THEN
0168 delYsum = 0.
0169 DO j=1,gridNy
0170 delYsum = delYsum + delY(j)
0171 ENDDO
0172 IF ( latBandClimRelax.EQ.UNSET_RL ) THEN
0173 latBandClimRelax = delYsum*3. _d 0
0174 ENDIF
0175 ENDIF
0176
c57655c2bb Jean*0177 _END_MASTER(myThid)
f76021331f Jean*0178
0179 _BARRIER
0180
0181 RETURN
0182 END