File indexing completed on 2024-03-02 06:10:10 UTC
view on githubraw file Latest commit 5cf43646 on 2024-03-01 18:50:49 UTC
0d7eb15592 Jean*0001 #include "AUTODIFF_OPTIONS.h"
bead363026 Jean*0002 #ifdef ALLOW_CTRL
0003 # include "CTRL_OPTIONS.h"
0004 #endif
5728d4a98b Patr*0005 #ifdef ALLOW_OBCS
0006 # include "OBCS_OPTIONS.h"
0007 #endif
0008 #ifdef ALLOW_SEAICE
0009 # include "SEAICE_OPTIONS.h"
0010 #endif
bf759c6109 Gael*0011 #ifdef ALLOW_EXF
0012 # include "EXF_OPTIONS.h"
0013 #endif
5728d4a98b Patr*0014
6fe4379e6f Jean*0015 SUBROUTINE AUTODIFF_RESTORE( myThid )
5728d4a98b Patr*0016
cda1c18f72 Jean*0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
5728d4a98b Patr*0028
7b94249161 Jean*0029 IMPLICIT NONE
5728d4a98b Patr*0030
cda1c18f72 Jean*0031
5728d4a98b Patr*0032
0033 #include "SIZE.h"
0034 #include "EEPARAMS.h"
0035 #include "PARAMS.h"
cda1c18f72 Jean*0036
0037
0038
0039
5728d4a98b Patr*0040
56a89d1ef6 Mart*0041 #include "GRID.h"
0042 #include "DYNVARS.h"
0043 #include "FFIELDS.h"
0044 #include "SURFACE.h"
5728d4a98b Patr*0045
e28d7f2731 Gael*0046 #ifdef ALLOW_OBCS
0047 # include "OBCS_FIELDS.h"
0048 # include "OBCS_SEAICE.h"
0049 #endif
0050 #ifdef ALLOW_EXF
0051 # include "EXF_FIELDS.h"
0052 # ifdef ALLOW_BULKFORMULAE
0053 # include "EXF_CONSTANTS.h"
5728d4a98b Patr*0054 # endif
e28d7f2731 Gael*0055 #endif /* ALLOW_EXF */
0056 #ifdef ALLOW_SEAICE
0057 # include "SEAICE_SIZE.h"
0058 # include "SEAICE.h"
0059 #endif
0060 #ifdef ALLOW_CTRL
5cf4364659 Mart*0061 # include "CTRL_SIZE.h"
4d72283393 Mart*0062 # include "CTRL.h"
e28d7f2731 Gael*0063 # include "CTRL_OBCS.h"
0064 #endif
cda1c18f72 Jean*0065
56a89d1ef6 Mart*0066 #include "AUTODIFF_STORE.h"
5728d4a98b Patr*0067
cda1c18f72 Jean*0068
0069
6fe4379e6f Jean*0070 INTEGER myThid
5728d4a98b Patr*0071
a47c7bbdd2 Mart*0072 #ifdef ALLOW_AUTODIFF_TAMC
cda1c18f72 Jean*0073
0074 #if ( defined AUTODIFF_USE_STORE_RESTORE || \
0075 ( defined ALLOW_OBCS && defined AUTODIFF_USE_STORE_RESTORE_OBCS ))
0076 INTEGER bi, bj
0077 INTEGER I, J, K
0078 #endif
0079
5728d4a98b Patr*0080
b167b0379c Patr*0081 #ifdef ALLOW_DEBUG
862d160a2f Jean*0082 IF ( debugMode ) CALL DEBUG_ENTER('AUTODIFF_RESTORE',myThid)
5728d4a98b Patr*0083 #endif
0d7eb15592 Jean*0084
3c775cbf98 Mart*0085 #ifdef AUTODIFF_USE_STORE_RESTORE
5728d4a98b Patr*0086
0087 DO bj = myByLo(myThid), myByHi(myThid)
0088 DO bi = myBxLo(myThid), myBxHi(myThid)
0089
e4f1c09db9 Jean*0090 DO J=1-OLy,sNy+OLy
0091 DO I=1-OLx,sNx+OLx
f255f6c083 Jean*0092 etaN(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,1)
0093 taux0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,2)
0094 taux1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,3)
0095 tauy0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,4)
0096 tauy1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,5)
0097 qnet0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,6)
0098 qnet1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,7)
0099 empmr0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,8)
0100 empmr1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,9)
0101 sst0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,10)
0102 sst1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,11)
0103 sss0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,12)
0104 sss1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,13)
0105 saltflux0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,14)
0106 saltflux1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,15)
5728d4a98b Patr*0107 #ifdef SHORTWAVE_HEATING
f255f6c083 Jean*0108 qsw0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,16)
0109 qsw1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,17)
5728d4a98b Patr*0110 #endif
0111 #ifdef ATMOSPHERIC_LOADING
f255f6c083 Jean*0112 pload0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,18)
0113 pload1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,19)
5728d4a98b Patr*0114 #endif
0115 #ifdef EXACT_CONSERV
f255f6c083 Jean*0116 etaH(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,20)
0117 dEtaHdt(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,21)
0118 PmEpR(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,22)
5728d4a98b Patr*0119 #endif
0120 ENDDO
0121 ENDDO
3c775cbf98 Mart*0122 ENDDO
0123 ENDDO
c5c9d716eb Patr*0124
3c775cbf98 Mart*0125
0126 DO bj = myByLo(myThid), myByHi(myThid)
0127 DO bi = myBxLo(myThid), myBxHi(myThid)
5728d4a98b Patr*0128
0129 DO K=1,Nr
e4f1c09db9 Jean*0130 DO J=1-OLy,sNy+OLy
0131 DO I=1-OLx,sNx+OLx
507fbacc22 Gael*0132 #ifdef ALLOW_ADAMSBASHFORTH_3
e4f1c09db9 Jean*0133 gtNm(I,J,K,bi,bj,1) = StoreDynVars3D(I,J,K,bi,bj,1)
0134 gsNm(I,J,K,bi,bj,1) = StoreDynVars3D(I,J,K,bi,bj,2)
0135 guNm(I,J,K,bi,bj,1) = StoreDynVars3D(I,J,K,bi,bj,3)
0136 gvNm(I,J,K,bi,bj,1) = StoreDynVars3D(I,J,K,bi,bj,4)
507fbacc22 Gael*0137 #else
e4f1c09db9 Jean*0138 gtNm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,1)
0139 gsNm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,2)
0140 guNm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,3)
0141 gvNm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,4)
507fbacc22 Gael*0142 #endif
e4f1c09db9 Jean*0143 theta(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,5)
0144 salt(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,6)
0145 uVel(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,7)
0146 vVel(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,8)
0147 wVel(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,9)
0148 totPhiHyd(I,J,K,bi,bj)= StoreDynVars3D(I,J,K,bi,bj,10)
507fbacc22 Gael*0149 #ifdef ALLOW_ADAMSBASHFORTH_3
e4f1c09db9 Jean*0150 gtNm(I,J,K,bi,bj,2) = StoreDynVars3D(I,J,K,bi,bj,11)
0151 gsNm(I,J,K,bi,bj,2) = StoreDynVars3D(I,J,K,bi,bj,12)
0152 guNm(I,J,K,bi,bj,2) = StoreDynVars3D(I,J,K,bi,bj,13)
0153 gvNm(I,J,K,bi,bj,2) = StoreDynVars3D(I,J,K,bi,bj,14)
507fbacc22 Gael*0154 #endif
5728d4a98b Patr*0155 ENDDO
0156 ENDDO
0157 ENDDO
0158 ENDDO
0159 ENDDO
0d7eb15592 Jean*0160
5728d4a98b Patr*0161 #ifdef ALLOW_EXF
0162
0163 DO bj = myByLo(myThid), myByHi(myThid)
0164 DO bi = myBxLo(myThid), myBxHi(myThid)
0165
e4f1c09db9 Jean*0166 DO J=1-OLy,sNy+OLy
0167 DO I=1-OLx,sNx+OLx
fc77a29eb0 Patr*0168 hflux0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,1)
0169 hflux1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,2)
0170 sflux0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,3)
0171 sflux1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,4)
0172 ustress0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,5)
0173 ustress1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,6)
0174 vstress0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,7)
0175 vstress1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,8)
0176 wspeed0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,9)
0177 wspeed1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,10)
0178 # ifdef SHORTWAVE_HEATING
0179 swflux0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,11)
0180 swflux1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,12)
0181 # endif
0182 # ifdef ALLOW_RUNOFF
0183 runoff0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,13)
0184 runoff1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,14)
0185 # endif
0186 # ifdef ATMOSPHERIC_LOADING
0187 apressure0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,15)
0188 apressure1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,16)
0189 siceload(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,17)
0190 # endif
0191 # ifdef ALLOW_CLIMSSS_RELAXATION
0192 climsss0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,18)
0193 climsss1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,19)
0194 # endif
0195 # ifdef ALLOW_CLIMSST_RELAXATION
0196 climsst0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,20)
0197 climsst1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,21)
0198 # endif
d217f7c14d Gael*0199 # ifdef ALLOW_SALTFLX
0200 saltflx0(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,22)
0201 saltflx1(I,J,bi,bj) = StoreEXF1(I,J,bi,bj,23)
0202 # endif
634ecb5dc5 Jean*0203 ENDDO
0204 ENDDO
0205 ENDDO
0206 ENDDO
0d7eb15592 Jean*0207
5728d4a98b Patr*0208
0209 DO bj = myByLo(myThid), myByHi(myThid)
0210 DO bi = myBxLo(myThid), myBxHi(myThid)
0211
e4f1c09db9 Jean*0212 DO J=1-OLy,sNy+OLy
0213 DO I=1-OLx,sNx+OLx
6fe4379e6f Jean*0214 # ifdef ALLOW_ATM_TEMP
5728d4a98b Patr*0215 aqh0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,1)
0216 aqh1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,2)
0217 atemp0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,3)
0218 atemp1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,4)
0219 precip0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,5)
0220 precip1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,6)
0d7eb15592 Jean*0221 lwflux0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,7)
5728d4a98b Patr*0222 lwflux1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,8)
fead278c20 Patr*0223 snowprecip0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,9)
0224 snowprecip1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,10)
0e8df33a35 Jean*0225 # ifdef ALLOW_READ_TURBFLUXES
0226 hs0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,11)
0227 hs1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,12)
0228 hl0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,13)
0229 hl1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,14)
0230 # endif /* ALLOW_READ_TURBFLUXES */
6fe4379e6f Jean*0231 # ifdef EXF_READ_EVAP
0e8df33a35 Jean*0232 evap0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,15)
0233 evap1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,16)
6fe4379e6f Jean*0234 # else
0e8df33a35 Jean*0235 evap(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,15)
6fe4379e6f Jean*0236 # endif /* EXF_READ_EVAP */
0237 # ifdef ALLOW_DOWNWARD_RADIATION
0e8df33a35 Jean*0238 swdown0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,17)
0239 swdown1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,18)
0240 lwdown0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,19)
0241 lwdown1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,20)
6fe4379e6f Jean*0242 # endif
0243 # endif /* ALLOW_ATM_TEMP */
0e8df33a35 Jean*0244 uwind0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,21)
0245 uwind1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,22)
0246 vwind0(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,23)
0247 vwind1(I,J,bi,bj) = StoreEXF2(I,J,bi,bj,24)
634ecb5dc5 Jean*0248 ENDDO
0249 ENDDO
0250 ENDDO
0251 ENDDO
5728d4a98b Patr*0252 #endif /* ALLOW_EXF */
0253
3c775cbf98 Mart*0254 #ifdef ALLOW_SEAICE
0255
0256 DO bj = myByLo(myThid), myByHi(myThid)
0257 DO bi = myBxLo(myThid), myBxHi(myThid)
0258
0259 DO J=1-OLy,sNy+OLy
0260 DO I=1-OLx,sNx+OLx
0261 AREA (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 1)
0262 HEFF (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 2)
0263 HSNOW (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 3)
0264 RUNOFF(I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 4)
0265 UICE (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 5)
0266 VICE (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 6)
0267 ZETA (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 7)
0268 ETA (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 8)
0269 # ifdef SEAICE_CGRID
0270 dwatn(I,J,bi,bj) = StoreSEAICE(I,J,bi,bj, 9)
0271 # ifdef SEAICE_ALLOW_BOTTOMDRAG
0272 cbotc(I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,10)
0273 # endif /* SEAICE_ALLOW_BOTTOMDRAG */
0274 stressDivergenceX(I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,11)
0275 stressDivergenceY(I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,12)
0276 # endif /* SEAICE_CGRID */
0277 # ifdef SEAICE_ALLOW_EVP
0278 seaice_sigma1 (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,13)
0279 seaice_sigma2 (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,14)
0280 seaice_sigma12 (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,15)
0281 # endif /* SEAICE_ALLOW_EVP */
0282 # ifdef SEAICE_VARIABLE_SALINITY
0283 HSALT (I,J,bi,bj) = StoreSEAICE(I,J,bi,bj,16)
0284 # endif
0285 ENDDO
0286 ENDDO
0287
cda1c18f72 Jean*0288 DO K=1,nITD
3c775cbf98 Mart*0289 DO J=1-OLy,sNy+OLy
0290 DO I=1-OLx,sNx+OLx
cda1c18f72 Jean*0291 TICES(I,J,K,bi,bj) = StoreSEAICE(I,J,bi,bj,16+K)
3c775cbf98 Mart*0292 ENDDO
0293 ENDDO
0294 ENDDO
0295
0296 ENDDO
0297 ENDDO
0298 #endif /* ALLOW_SEAICE */
0299
0300 #endif /* AUTODIFF_USE_STORE_RESTORE */
0301
0302 #if ( defined ALLOW_OBCS && defined AUTODIFF_USE_STORE_RESTORE_OBCS )
5728d4a98b Patr*0303 # ifdef ALLOW_OBCS_NORTH
0304
0305 DO bj = myByLo(myThid), myByHi(myThid)
0306 DO bi = myBxLo(myThid), myBxHi(myThid)
0307
0308 DO K=1,Nr
e4f1c09db9 Jean*0309 DO I=1-OLx,sNx+OLx
634ecb5dc5 Jean*0310 OBNu(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,1)
0311 OBNv(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,2)
0312 OBNt(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,3)
0313 OBNs(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,4)
7b94249161 Jean*0314 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0315 OBNu0(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,5)
0316 OBNv0(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,6)
0317 OBNt0(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,7)
0318 OBNs0(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,8)
0319 OBNu1(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,9)
0320 OBNv1(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,10)
0321 OBNt1(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,11)
0322 OBNs1(I,K,bi,bj) = StoreOBCSN(I,K,bi,bj,12)
7b94249161 Jean*0323 # endif
5728d4a98b Patr*0324 # ifdef ALLOW_OBCSN_CONTROL
634ecb5dc5 Jean*0325 xx_obcsn0(I,K,bi,bj,1) = StoreOBCSN(I,K,bi,bj,13)
0326 xx_obcsn0(I,K,bi,bj,2) = StoreOBCSN(I,K,bi,bj,14)
0327 xx_obcsn0(I,K,bi,bj,3) = StoreOBCSN(I,K,bi,bj,15)
0328 xx_obcsn0(I,K,bi,bj,4) = StoreOBCSN(I,K,bi,bj,16)
0329 xx_obcsn1(I,K,bi,bj,1) = StoreOBCSN(I,K,bi,bj,17)
0330 xx_obcsn1(I,K,bi,bj,2) = StoreOBCSN(I,K,bi,bj,18)
0331 xx_obcsn1(I,K,bi,bj,3) = StoreOBCSN(I,K,bi,bj,19)
0332 xx_obcsn1(I,K,bi,bj,4) = StoreOBCSN(I,K,bi,bj,20)
5728d4a98b Patr*0333 # endif
634ecb5dc5 Jean*0334 ENDDO
0335 ENDDO
0336 ENDDO
0337 ENDDO
0d7eb15592 Jean*0338 # endif /* ALLOW_OBCS_NORTH */
5728d4a98b Patr*0339
0340 # ifdef ALLOW_OBCS_SOUTH
0341
0342 DO bj = myByLo(myThid), myByHi(myThid)
0343 DO bi = myBxLo(myThid), myBxHi(myThid)
0344
0345 DO K=1,Nr
e4f1c09db9 Jean*0346 DO I=1-OLx,sNx+OLx
634ecb5dc5 Jean*0347 OBSu(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,1)
0348 OBSv(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,2)
0349 OBSt(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,3)
0350 OBSs(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,4)
7b94249161 Jean*0351 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0352 OBSu0(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,5)
0353 OBSv0(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,6)
0354 OBSt0(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,7)
0355 OBSs0(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,8)
0356 OBSu1(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,9)
0357 OBSv1(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,10)
0358 OBSt1(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,11)
0359 OBSs1(I,K,bi,bj) = StoreOBCSS(I,K,bi,bj,12)
7b94249161 Jean*0360 # endif
5728d4a98b Patr*0361 # ifdef ALLOW_OBCSS_CONTROL
634ecb5dc5 Jean*0362 xx_obcss0(I,K,bi,bj,1) = StoreOBCSS(I,K,bi,bj,13)
0363 xx_obcss0(I,K,bi,bj,2) = StoreOBCSS(I,K,bi,bj,14)
0364 xx_obcss0(I,K,bi,bj,3) = StoreOBCSS(I,K,bi,bj,15)
0365 xx_obcss0(I,K,bi,bj,4) = StoreOBCSS(I,K,bi,bj,16)
0366 xx_obcss1(I,K,bi,bj,1) = StoreOBCSS(I,K,bi,bj,17)
0367 xx_obcss1(I,K,bi,bj,2) = StoreOBCSS(I,K,bi,bj,18)
0368 xx_obcss1(I,K,bi,bj,3) = StoreOBCSS(I,K,bi,bj,19)
0369 xx_obcss1(I,K,bi,bj,4) = StoreOBCSS(I,K,bi,bj,20)
5728d4a98b Patr*0370 # endif
634ecb5dc5 Jean*0371 ENDDO
0372 ENDDO
0373 ENDDO
0374 ENDDO
0d7eb15592 Jean*0375 # endif /* ALLOW_OBCS_SOUTH */
5728d4a98b Patr*0376
0377 # ifdef ALLOW_OBCS_EAST
0378
0379 DO bj = myByLo(myThid), myByHi(myThid)
0380 DO bi = myBxLo(myThid), myBxHi(myThid)
0381
0382 DO K=1,Nr
e4f1c09db9 Jean*0383 DO J=1-OLy,sNy+OLy
634ecb5dc5 Jean*0384 OBEu(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,1)
0385 OBEv(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,2)
0386 OBEt(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,3)
0387 OBEs(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,4)
7b94249161 Jean*0388 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0389 OBEu0(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,5)
0390 OBEv0(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,6)
0391 OBEt0(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,7)
0392 OBEs0(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,8)
0393 OBEu1(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,9)
0394 OBEv1(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,10)
0395 OBEt1(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,11)
0396 OBEs1(J,K,bi,bj) = StoreOBCSE(J,K,bi,bj,12)
7b94249161 Jean*0397 # endif
5728d4a98b Patr*0398 # ifdef ALLOW_OBCSE_CONTROL
634ecb5dc5 Jean*0399 xx_obcse0(J,K,bi,bj,1) = StoreOBCSE(J,K,bi,bj,13)
0400 xx_obcse0(J,K,bi,bj,2) = StoreOBCSE(J,K,bi,bj,14)
0401 xx_obcse0(J,K,bi,bj,3) = StoreOBCSE(J,K,bi,bj,15)
0402 xx_obcse0(J,K,bi,bj,4) = StoreOBCSE(J,K,bi,bj,16)
0403 xx_obcse1(J,K,bi,bj,1) = StoreOBCSE(J,K,bi,bj,17)
0404 xx_obcse1(J,K,bi,bj,2) = StoreOBCSE(J,K,bi,bj,18)
0405 xx_obcse1(J,K,bi,bj,3) = StoreOBCSE(J,K,bi,bj,19)
0406 xx_obcse1(J,K,bi,bj,4) = StoreOBCSE(J,K,bi,bj,20)
5728d4a98b Patr*0407 # endif
634ecb5dc5 Jean*0408 ENDDO
0409 ENDDO
0410 ENDDO
0411 ENDDO
0d7eb15592 Jean*0412 # endif /* ALLOW_OBCS_EAST */
5728d4a98b Patr*0413
0414 # ifdef ALLOW_OBCS_WEST
0415
0416 DO bj = myByLo(myThid), myByHi(myThid)
0417 DO bi = myBxLo(myThid), myBxHi(myThid)
0418
0419 DO K=1,Nr
e4f1c09db9 Jean*0420 DO J=1-OLy,sNy+OLy
634ecb5dc5 Jean*0421 OBWu(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,1)
0422 OBWv(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,2)
0423 OBWt(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,3)
0424 OBWs(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,4)
7b94249161 Jean*0425 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0426 OBWu0(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,5)
0427 OBWv0(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,6)
0428 OBWt0(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,7)
0429 OBWs0(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,8)
0430 OBWu1(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,9)
0431 OBWv1(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,10)
0432 OBWt1(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,11)
0433 OBWs1(J,K,bi,bj) = StoreOBCSW(J,K,bi,bj,12)
7b94249161 Jean*0434 # endif
5728d4a98b Patr*0435 # ifdef ALLOW_OBCSW_CONTROL
634ecb5dc5 Jean*0436 xx_obcsw0(J,K,bi,bj,1) = StoreOBCSW(J,K,bi,bj,13)
0437 xx_obcsw0(J,K,bi,bj,2) = StoreOBCSW(J,K,bi,bj,14)
0438 xx_obcsw0(J,K,bi,bj,3) = StoreOBCSW(J,K,bi,bj,15)
0439 xx_obcsw0(J,K,bi,bj,4) = StoreOBCSW(J,K,bi,bj,16)
0440 xx_obcsw1(J,K,bi,bj,1) = StoreOBCSW(J,K,bi,bj,17)
0441 xx_obcsw1(J,K,bi,bj,2) = StoreOBCSW(J,K,bi,bj,18)
0442 xx_obcsw1(J,K,bi,bj,3) = StoreOBCSW(J,K,bi,bj,19)
0443 xx_obcsw1(J,K,bi,bj,4) = StoreOBCSW(J,K,bi,bj,20)
5728d4a98b Patr*0444 # endif
634ecb5dc5 Jean*0445 ENDDO
0446 ENDDO
0447 ENDDO
0448 ENDDO
5728d4a98b Patr*0449 # endif /* ALLOW_OBCS_WEST */
cda1c18f72 Jean*0450 #endif /* ALLOW_OBCS & AUTODIFF_USE_STORE_RESTORE_OBCS */
5728d4a98b Patr*0451
b167b0379c Patr*0452 #ifdef ALLOW_DEBUG
862d160a2f Jean*0453 IF ( debugMode ) CALL DEBUG_LEAVE('AUTODIFF_RESTORE',myThid)
5728d4a98b Patr*0454 #endif
0455
0456 #endif /* ALLOW_AUTODIFF_TAMC */
cda1c18f72 Jean*0457
5728d4a98b Patr*0458
6fe4379e6f Jean*0459 RETURN
0460 END