File indexing completed on 2023-11-05 05:11:22 UTC
view on githubraw file Latest commit 65754df4 on 2023-11-04 17:55:24 UTC
2e7aec9951 dngo*0001 #include "CTRL_OPTIONS.h"
0002 #define PREVENT_TOO_COLD_TEMP
0003
0004
0005
0006
0007 SUBROUTINE CTRL_MAP_INI_GENARR( myThid )
0008
0009
0010
0011
0012
0013
4d72283393 Mart*0014
2e7aec9951 dngo*0015
0016
0017
0018
0019
0020
0021 IMPLICIT NONE
0022
0023
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "PARAMS.h"
0027 #include "GRID.h"
0028 #include "DYNVARS.h"
0029
0030 #include "CTRL_SIZE.h"
4d72283393 Mart*0031 #include "CTRL.h"
2e7aec9951 dngo*0032 #include "CTRL_GENARR.h"
edcd27be69 Mart*0033 #include "CTRL_DUMMY.h"
65754df434 Mart*0034 #include "OPTIMCYCLE.h"
2e7aec9951 dngo*0035
0036
0037
0038 INTEGER myThid
0039
0040
0041 INTEGER ILNBLNk
0042 EXTERNAL ILNBLNK
0043
0044
0045
0046 INTEGER bi,bj
0047 INTEGER i,j,k
0048 INTEGER il
0049 INTEGER iarr
0050
0051 LOGICAL doglobalread
0052 LOGICAL ladinit
0053 CHARACTER*(MAX_LEN_FNAM) fnamebase
de57a2ec4b Mart*0054 CHARACTER*(MAX_LEN_FNAM) fnamegeneric
2e7aec9951 dngo*0055 _RL fac
0056 #ifdef ALLOW_GENARR2D_CONTROL
0057 _RL tmpfld2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
0058 #endif
0059 #ifdef ALLOW_GENARR3D_CONTROL
0060 _RL tmpfld3d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
0061 #endif
0062
0063
0064 doglobalread = .FALSE.
0065 ladinit = .FALSE.
0066 fac = 1. _d 0
0067
0068 #ifdef ALLOW_GENARR2D_CONTROL
0069
0070
0071
0072
0073
0074
0075
0076 DO iarr = 1, maxCtrlArr2D
0077
0078
0079
0080
0081
0082 DO bj=myByLo(myThid), myByHi(myThid)
0083 DO bi=myBxLo(myThid), myBxHi(myThid)
0084 DO j = 1,sNy
0085 DO i = 1,sNx
0086 tmpfld2d(i,j,bi,bj) = 0. _d 0
0087 ENDDO
0088 ENDDO
0089 ENDDO
0090 ENDDO
0091 fnamebase = xx_genarr2d_file(iarr)
0092 il=ILNBLNK( fnamebase )
de57a2ec4b Mart*0093 WRITE(fnamegeneric,'(2A,I10.10)')
2e7aec9951 dngo*0094 & fnamebase(1:il),'.',optimcycle
0095 CALL ACTIVE_READ_XY ( fnamegeneric, tmpfld2d, 1,
0096 & doglobalread, ladinit, optimcycle,
0097 & myThid, xx_genarr2d_dummy(iarr) )
0098 IF ( iarr .EQ. 1 ) THEN
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109 ELSEIF ( iarr .EQ. 2 ) THEN
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120 ELSEIF ( iarr .EQ. 3 ) THEN
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131 ELSEIF ( iarr .EQ. 4 ) THEN
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142 ENDIF
0143
0144 ENDDO
0145
0146
0147
0148
0149 #endif /* ALLOW_GENARR2D_CONTROL */
0150
0151 #ifdef ALLOW_GENARR3D_CONTROL
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161 DO iarr = 1, maxCtrlArr3D
0162
0163 DO bj=myByLo(myThid), myByHi(myThid)
0164 DO bi=myBxLo(myThid), myBxHi(myThid)
0165 DO k = 1,Nr
0166 DO j = 1,sNy
0167 DO i = 1,sNx
0168 tmpfld3d(i,j,k,bi,bj) = 0. _d 0
0169 ENDDO
0170 ENDDO
0171 ENDDO
0172 ENDDO
0173 ENDDO
0174 fnamebase = xx_genarr3d_file(iarr)
0175 il=ILNBLNK( fnamebase )
de57a2ec4b Mart*0176 WRITE(fnamegeneric,'(2A,I10.10)')
2e7aec9951 dngo*0177 & fnamebase(1:il),'.',optimcycle
0178 CALL ACTIVE_READ_XYZ( fnamegeneric, tmpfld3d, 1,
0179 & doglobalread, ladinit, optimcycle,
0180 & myThid, xx_genarr3d_dummy(iarr) )
0181 IF ( iarr .EQ. 1 ) THEN
0182 DO bj=myByLo(myThid), myByHi(myThid)
0183 DO bi=myBxLo(myThid), myBxHi(myThid)
0184 DO k = 1,Nr
0185 DO j = 1,sNy
0186 DO i = 1,sNx
0187 theta(i,j,k,bi,bj) = theta(i,j,k,bi,bj)
0188 & + fac*tmpfld3d(i,j,k,bi,bj)
0189 #ifdef PREVENT_TOO_COLD_TEMP
0190
0191 IF ( theta(i,j,k,bi,bj).LT.-2.0 _d 0 )
0192 & theta(i,j,k,bi,bj) = -2.0 _d 0
0193 #endif
0194 ENDDO
0195 ENDDO
0196 ENDDO
0197 ENDDO
0198 ENDDO
0199 CALL EXCH_3D_RL( theta, Nr, myThid )
0200 ELSEIF ( iarr .EQ. 2 ) THEN
0201 DO bj=myByLo(myThid), myByHi(myThid)
0202 DO bi=myBxLo(myThid), myBxHi(myThid)
0203 DO k = 1,Nr
0204 DO j = 1,sNy
0205 DO i = 1,sNx
0206 salt(i,j,k,bi,bj) = salt(i,j,k,bi,bj)
0207 & + fac*tmpfld3d(i,j,k,bi,bj)
0208 ENDDO
0209 ENDDO
0210 ENDDO
0211 ENDDO
0212 ENDDO
0213 CALL EXCH_3D_RL( salt, Nr, myThid )
0214 ELSEIF ( iarr .EQ. 3 ) THEN
0215 DO bj=myByLo(myThid), myByHi(myThid)
0216 DO bi=myBxLo(myThid), myBxHi(myThid)
0217 DO k = 1,Nr
0218 DO j = 1,sNy
0219 DO i = 1,sNx
0220 diffKr(i,j,k,bi,bj) = diffKr(i,j,k,bi,bj)
0221 & + fac*tmpfld3d(i,j,k,bi,bj)
0222 ENDDO
0223 ENDDO
0224 ENDDO
0225 ENDDO
0226 ENDDO
0227 CALL EXCH_3D_RL( diffKr, Nr, myThid )
0228 ENDIF
0229
0230
0231 ENDDO
0232
0233 #endif /* ALLOW_GENARR3D_CONTROL */
0234
0235 RETURN
0236 END