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