** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Tue, 14 Jul 2025 05:10:07 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/autodiff/autodiff_restore.F
File indexing completed on 2024-06-06 05:10:26 UTC
view on github raw file Latest commit af61e5eb on 2024-06-06 03:30:35 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
0116 #ifdef EXACT_CONSERV
f255f6c083 Jean* 0117 etaH (I ,J ,bi ,bj ) = StoreDynVars2D (I ,J ,bi ,bj ,20)
0118 dEtaHdt (I ,J ,bi ,bj ) = StoreDynVars2D (I ,J ,bi ,bj ,21)
0119 PmEpR (I ,J ,bi ,bj ) = StoreDynVars2D (I ,J ,bi ,bj ,22)
5728d4a98b Patr* 0120 #endif
0121 ENDDO
0122 ENDDO
3c775cbf98 Mart* 0123 ENDDO
0124 ENDDO
c5c9d716eb Patr* 0125
3c775cbf98 Mart* 0126
0127 DO bj = myByLo (myThid ), myByHi (myThid )
0128 DO bi = myBxLo (myThid ), myBxHi (myThid )
5728d4a98b Patr* 0129
0130 DO K =1,Nr
e4f1c09db9 Jean* 0131 DO J =1-OLy ,sNy +OLy
0132 DO I =1-OLx ,sNx +OLx
507fbacc22 Gael* 0133 #ifdef ALLOW_ADAMSBASHFORTH_3
e4f1c09db9 Jean* 0134 gtNm (I ,J ,K ,bi ,bj ,1) = StoreDynVars3D (I ,J ,K ,bi ,bj ,1)
0135 gsNm (I ,J ,K ,bi ,bj ,1) = StoreDynVars3D (I ,J ,K ,bi ,bj ,2)
0136 guNm (I ,J ,K ,bi ,bj ,1) = StoreDynVars3D (I ,J ,K ,bi ,bj ,3)
0137 gvNm (I ,J ,K ,bi ,bj ,1) = StoreDynVars3D (I ,J ,K ,bi ,bj ,4)
507fbacc22 Gael* 0138 #else
e4f1c09db9 Jean* 0139 gtNm1 (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,1)
0140 gsNm1 (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,2)
0141 guNm1 (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,3)
0142 gvNm1 (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,4)
507fbacc22 Gael* 0143 #endif
e4f1c09db9 Jean* 0144 theta (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,5)
0145 salt (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,6)
0146 uVel (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,7)
0147 vVel (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,8)
0148 wVel (I ,J ,K ,bi ,bj ) = StoreDynVars3D (I ,J ,K ,bi ,bj ,9)
0149 totPhiHyd (I ,J ,K ,bi ,bj )= StoreDynVars3D (I ,J ,K ,bi ,bj ,10)
507fbacc22 Gael* 0150 #ifdef ALLOW_ADAMSBASHFORTH_3
e4f1c09db9 Jean* 0151 gtNm (I ,J ,K ,bi ,bj ,2) = StoreDynVars3D (I ,J ,K ,bi ,bj ,11)
0152 gsNm (I ,J ,K ,bi ,bj ,2) = StoreDynVars3D (I ,J ,K ,bi ,bj ,12)
0153 guNm (I ,J ,K ,bi ,bj ,2) = StoreDynVars3D (I ,J ,K ,bi ,bj ,13)
0154 gvNm (I ,J ,K ,bi ,bj ,2) = StoreDynVars3D (I ,J ,K ,bi ,bj ,14)
507fbacc22 Gael* 0155 #endif
5728d4a98b Patr* 0156 ENDDO
0157 ENDDO
0158 ENDDO
0159 ENDDO
0160 ENDDO
0d7eb15592 Jean* 0161
5728d4a98b Patr* 0162 #ifdef ALLOW_EXF
0163
0164 DO bj = myByLo (myThid ), myByHi (myThid )
0165 DO bi = myBxLo (myThid ), myBxHi (myThid )
0166
e4f1c09db9 Jean* 0167 DO J =1-OLy ,sNy +OLy
0168 DO I =1-OLx ,sNx +OLx
fc77a29eb0 Patr* 0169 hflux0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,1)
0170 hflux1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,2)
0171 sflux0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,3)
0172 sflux1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,4)
0173 ustress0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,5)
0174 ustress1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,6)
0175 vstress0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,7)
0176 vstress1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,8)
0177 wspeed0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,9)
0178 wspeed1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,10)
0179 # ifdef SHORTWAVE_HEATING
0180 swflux0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,11)
0181 swflux1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,12)
0182 # endif
0183 # ifdef ALLOW_RUNOFF
0184 runoff0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,13)
0185 runoff1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,14)
0186 # endif
0187 # ifdef ATMOSPHERIC_LOADING
0188 apressure0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,15)
0189 apressure1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,16)
0190 siceload (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,17)
0191 # endif
0192 # ifdef ALLOW_CLIMSSS_RELAXATION
0193 climsss0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,18)
0194 climsss1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,19)
0195 # endif
0196 # ifdef ALLOW_CLIMSST_RELAXATION
0197 climsst0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,20)
0198 climsst1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,21)
0199 # endif
d217f7c14d Gael* 0200 # ifdef ALLOW_SALTFLX
0201 saltflx0 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,22)
0202 saltflx1 (I ,J ,bi ,bj ) = StoreEXF1 (I ,J ,bi ,bj ,23)
0203 # endif
634ecb5dc5 Jean* 0204 ENDDO
0205 ENDDO
0206 ENDDO
0207 ENDDO
0d7eb15592 Jean* 0208
5728d4a98b Patr* 0209
0210 DO bj = myByLo (myThid ), myByHi (myThid )
0211 DO bi = myBxLo (myThid ), myBxHi (myThid )
0212
e4f1c09db9 Jean* 0213 DO J =1-OLy ,sNy +OLy
0214 DO I =1-OLx ,sNx +OLx
6fe4379e6f Jean* 0215 # ifdef ALLOW_ATM_TEMP
5728d4a98b Patr* 0216 aqh0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,1)
0217 aqh1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,2)
0218 atemp0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,3)
0219 atemp1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,4)
0220 precip0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,5)
0221 precip1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,6)
0d7eb15592 Jean* 0222 lwflux0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,7)
5728d4a98b Patr* 0223 lwflux1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,8)
fead278c20 Patr* 0224 snowprecip0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,9)
0225 snowprecip1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,10)
0e8df33a35 Jean* 0226 # ifdef ALLOW_READ_TURBFLUXES
0227 hs0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,11)
0228 hs1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,12)
0229 hl0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,13)
0230 hl1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,14)
0231 # endif /* ALLOW_READ_TURBFLUXES */
6fe4379e6f Jean* 0232 # ifdef EXF_READ_EVAP
0e8df33a35 Jean* 0233 evap0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,15)
0234 evap1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,16)
6fe4379e6f Jean* 0235 # else
0e8df33a35 Jean* 0236 evap (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,15)
6fe4379e6f Jean* 0237 # endif /* EXF_READ_EVAP */
0238 # ifdef ALLOW_DOWNWARD_RADIATION
0e8df33a35 Jean* 0239 swdown0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,17)
0240 swdown1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,18)
0241 lwdown0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,19)
0242 lwdown1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,20)
6fe4379e6f Jean* 0243 # endif
0244 # endif /* ALLOW_ATM_TEMP */
0e8df33a35 Jean* 0245 uwind0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,21)
0246 uwind1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,22)
0247 vwind0 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,23)
0248 vwind1 (I ,J ,bi ,bj ) = StoreEXF2 (I ,J ,bi ,bj ,24)
634ecb5dc5 Jean* 0249 ENDDO
0250 ENDDO
0251 ENDDO
0252 ENDDO
5728d4a98b Patr* 0253 #endif /* ALLOW_EXF */
0254
3c775cbf98 Mart* 0255 #ifdef ALLOW_SEAICE
0256
0257 DO bj = myByLo (myThid ), myByHi (myThid )
0258 DO bi = myBxLo (myThid ), myBxHi (myThid )
0259
0260 DO J =1-OLy ,sNy +OLy
0261 DO I =1-OLx ,sNx +OLx
0262 AREA (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 1)
0263 HEFF (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 2)
0264 HSNOW (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 3)
0265 RUNOFF (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 4)
0266 UICE (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 5)
0267 VICE (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 6)
0268 ZETA (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 7)
0269 ETA (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 8)
0270 # ifdef SEAICE_CGRID
0271 dwatn (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj , 9)
0272 # ifdef SEAICE_ALLOW_BOTTOMDRAG
0273 cbotc (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,10)
0274 # endif /* SEAICE_ALLOW_BOTTOMDRAG */
0275 stressDivergenceX (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,11)
0276 stressDivergenceY (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,12)
0277 # endif /* SEAICE_CGRID */
0278 # ifdef SEAICE_ALLOW_EVP
0279 seaice_sigma1 (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,13)
0280 seaice_sigma2 (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,14)
0281 seaice_sigma12 (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,15)
0282 # endif /* SEAICE_ALLOW_EVP */
0283 # ifdef SEAICE_VARIABLE_SALINITY
0284 HSALT (I ,J ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,16)
0285 # endif
0286 ENDDO
0287 ENDDO
0288
cda1c18f72 Jean* 0289 DO K =1,nITD
3c775cbf98 Mart* 0290 DO J =1-OLy ,sNy +OLy
0291 DO I =1-OLx ,sNx +OLx
cda1c18f72 Jean* 0292 TICES (I ,J ,K ,bi ,bj ) = StoreSEAICE (I ,J ,bi ,bj ,16+K )
3c775cbf98 Mart* 0293 ENDDO
0294 ENDDO
0295 ENDDO
0296
0297 ENDDO
0298 ENDDO
0299 #endif /* ALLOW_SEAICE */
0300
0301 #endif /* AUTODIFF_USE_STORE_RESTORE */
0302
0303 #if ( defined ALLOW_OBCS && defined AUTODIFF_USE_STORE_RESTORE_OBCS )
5728d4a98b Patr* 0304 # ifdef ALLOW_OBCS_NORTH
0305
0306 DO bj = myByLo (myThid ), myByHi (myThid )
0307 DO bi = myBxLo (myThid ), myBxHi (myThid )
0308
0309 DO K =1,Nr
e4f1c09db9 Jean* 0310 DO I =1-OLx ,sNx +OLx
634ecb5dc5 Jean* 0311 OBNu (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,1)
0312 OBNv (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,2)
0313 OBNt (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,3)
0314 OBNs (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,4)
7b94249161 Jean* 0315 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean* 0316 OBNu0 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,5)
0317 OBNv0 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,6)
0318 OBNt0 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,7)
0319 OBNs0 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,8)
0320 OBNu1 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,9)
0321 OBNv1 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,10)
0322 OBNt1 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,11)
0323 OBNs1 (I ,K ,bi ,bj ) = StoreOBCSN (I ,K ,bi ,bj ,12)
7b94249161 Jean* 0324 # endif
5728d4a98b Patr* 0325 # ifdef ALLOW_OBCSN_CONTROL
634ecb5dc5 Jean* 0326 xx_obcsn0 (I ,K ,bi ,bj ,1) = StoreOBCSN (I ,K ,bi ,bj ,13)
0327 xx_obcsn0 (I ,K ,bi ,bj ,2) = StoreOBCSN (I ,K ,bi ,bj ,14)
0328 xx_obcsn0 (I ,K ,bi ,bj ,3) = StoreOBCSN (I ,K ,bi ,bj ,15)
0329 xx_obcsn0 (I ,K ,bi ,bj ,4) = StoreOBCSN (I ,K ,bi ,bj ,16)
0330 xx_obcsn1 (I ,K ,bi ,bj ,1) = StoreOBCSN (I ,K ,bi ,bj ,17)
0331 xx_obcsn1 (I ,K ,bi ,bj ,2) = StoreOBCSN (I ,K ,bi ,bj ,18)
0332 xx_obcsn1 (I ,K ,bi ,bj ,3) = StoreOBCSN (I ,K ,bi ,bj ,19)
0333 xx_obcsn1 (I ,K ,bi ,bj ,4) = StoreOBCSN (I ,K ,bi ,bj ,20)
5728d4a98b Patr* 0334 # endif
634ecb5dc5 Jean* 0335 ENDDO
0336 ENDDO
0337 ENDDO
0338 ENDDO
0d7eb15592 Jean* 0339 # endif /* ALLOW_OBCS_NORTH */
5728d4a98b Patr* 0340
0341 # ifdef ALLOW_OBCS_SOUTH
0342
0343 DO bj = myByLo (myThid ), myByHi (myThid )
0344 DO bi = myBxLo (myThid ), myBxHi (myThid )
0345
0346 DO K =1,Nr
e4f1c09db9 Jean* 0347 DO I =1-OLx ,sNx +OLx
634ecb5dc5 Jean* 0348 OBSu (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,1)
0349 OBSv (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,2)
0350 OBSt (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,3)
0351 OBSs (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,4)
7b94249161 Jean* 0352 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean* 0353 OBSu0 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,5)
0354 OBSv0 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,6)
0355 OBSt0 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,7)
0356 OBSs0 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,8)
0357 OBSu1 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,9)
0358 OBSv1 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,10)
0359 OBSt1 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,11)
0360 OBSs1 (I ,K ,bi ,bj ) = StoreOBCSS (I ,K ,bi ,bj ,12)
7b94249161 Jean* 0361 # endif
5728d4a98b Patr* 0362 # ifdef ALLOW_OBCSS_CONTROL
634ecb5dc5 Jean* 0363 xx_obcss0 (I ,K ,bi ,bj ,1) = StoreOBCSS (I ,K ,bi ,bj ,13)
0364 xx_obcss0 (I ,K ,bi ,bj ,2) = StoreOBCSS (I ,K ,bi ,bj ,14)
0365 xx_obcss0 (I ,K ,bi ,bj ,3) = StoreOBCSS (I ,K ,bi ,bj ,15)
0366 xx_obcss0 (I ,K ,bi ,bj ,4) = StoreOBCSS (I ,K ,bi ,bj ,16)
0367 xx_obcss1 (I ,K ,bi ,bj ,1) = StoreOBCSS (I ,K ,bi ,bj ,17)
0368 xx_obcss1 (I ,K ,bi ,bj ,2) = StoreOBCSS (I ,K ,bi ,bj ,18)
0369 xx_obcss1 (I ,K ,bi ,bj ,3) = StoreOBCSS (I ,K ,bi ,bj ,19)
0370 xx_obcss1 (I ,K ,bi ,bj ,4) = StoreOBCSS (I ,K ,bi ,bj ,20)
5728d4a98b Patr* 0371 # endif
634ecb5dc5 Jean* 0372 ENDDO
0373 ENDDO
0374 ENDDO
0375 ENDDO
0d7eb15592 Jean* 0376 # endif /* ALLOW_OBCS_SOUTH */
5728d4a98b Patr* 0377
0378 # ifdef ALLOW_OBCS_EAST
0379
0380 DO bj = myByLo (myThid ), myByHi (myThid )
0381 DO bi = myBxLo (myThid ), myBxHi (myThid )
0382
0383 DO K =1,Nr
e4f1c09db9 Jean* 0384 DO J =1-OLy ,sNy +OLy
634ecb5dc5 Jean* 0385 OBEu (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,1)
0386 OBEv (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,2)
0387 OBEt (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,3)
0388 OBEs (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,4)
7b94249161 Jean* 0389 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean* 0390 OBEu0 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,5)
0391 OBEv0 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,6)
0392 OBEt0 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,7)
0393 OBEs0 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,8)
0394 OBEu1 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,9)
0395 OBEv1 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,10)
0396 OBEt1 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,11)
0397 OBEs1 (J ,K ,bi ,bj ) = StoreOBCSE (J ,K ,bi ,bj ,12)
7b94249161 Jean* 0398 # endif
5728d4a98b Patr* 0399 # ifdef ALLOW_OBCSE_CONTROL
634ecb5dc5 Jean* 0400 xx_obcse0 (J ,K ,bi ,bj ,1) = StoreOBCSE (J ,K ,bi ,bj ,13)
0401 xx_obcse0 (J ,K ,bi ,bj ,2) = StoreOBCSE (J ,K ,bi ,bj ,14)
0402 xx_obcse0 (J ,K ,bi ,bj ,3) = StoreOBCSE (J ,K ,bi ,bj ,15)
0403 xx_obcse0 (J ,K ,bi ,bj ,4) = StoreOBCSE (J ,K ,bi ,bj ,16)
0404 xx_obcse1 (J ,K ,bi ,bj ,1) = StoreOBCSE (J ,K ,bi ,bj ,17)
0405 xx_obcse1 (J ,K ,bi ,bj ,2) = StoreOBCSE (J ,K ,bi ,bj ,18)
0406 xx_obcse1 (J ,K ,bi ,bj ,3) = StoreOBCSE (J ,K ,bi ,bj ,19)
0407 xx_obcse1 (J ,K ,bi ,bj ,4) = StoreOBCSE (J ,K ,bi ,bj ,20)
5728d4a98b Patr* 0408 # endif
634ecb5dc5 Jean* 0409 ENDDO
0410 ENDDO
0411 ENDDO
0412 ENDDO
0d7eb15592 Jean* 0413 # endif /* ALLOW_OBCS_EAST */
5728d4a98b Patr* 0414
0415 # ifdef ALLOW_OBCS_WEST
0416
0417 DO bj = myByLo (myThid ), myByHi (myThid )
0418 DO bi = myBxLo (myThid ), myBxHi (myThid )
0419
0420 DO K =1,Nr
e4f1c09db9 Jean* 0421 DO J =1-OLy ,sNy +OLy
634ecb5dc5 Jean* 0422 OBWu (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,1)
0423 OBWv (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,2)
0424 OBWt (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,3)
0425 OBWs (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,4)
7b94249161 Jean* 0426 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean* 0427 OBWu0 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,5)
0428 OBWv0 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,6)
0429 OBWt0 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,7)
0430 OBWs0 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,8)
0431 OBWu1 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,9)
0432 OBWv1 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,10)
0433 OBWt1 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,11)
0434 OBWs1 (J ,K ,bi ,bj ) = StoreOBCSW (J ,K ,bi ,bj ,12)
7b94249161 Jean* 0435 # endif
5728d4a98b Patr* 0436 # ifdef ALLOW_OBCSW_CONTROL
634ecb5dc5 Jean* 0437 xx_obcsw0 (J ,K ,bi ,bj ,1) = StoreOBCSW (J ,K ,bi ,bj ,13)
0438 xx_obcsw0 (J ,K ,bi ,bj ,2) = StoreOBCSW (J ,K ,bi ,bj ,14)
0439 xx_obcsw0 (J ,K ,bi ,bj ,3) = StoreOBCSW (J ,K ,bi ,bj ,15)
0440 xx_obcsw0 (J ,K ,bi ,bj ,4) = StoreOBCSW (J ,K ,bi ,bj ,16)
0441 xx_obcsw1 (J ,K ,bi ,bj ,1) = StoreOBCSW (J ,K ,bi ,bj ,17)
0442 xx_obcsw1 (J ,K ,bi ,bj ,2) = StoreOBCSW (J ,K ,bi ,bj ,18)
0443 xx_obcsw1 (J ,K ,bi ,bj ,3) = StoreOBCSW (J ,K ,bi ,bj ,19)
0444 xx_obcsw1 (J ,K ,bi ,bj ,4) = StoreOBCSW (J ,K ,bi ,bj ,20)
5728d4a98b Patr* 0445 # endif
634ecb5dc5 Jean* 0446 ENDDO
0447 ENDDO
0448 ENDDO
0449 ENDDO
5728d4a98b Patr* 0450 # endif /* ALLOW_OBCS_WEST */
cda1c18f72 Jean* 0451 #endif /* ALLOW_OBCS & AUTODIFF_USE_STORE_RESTORE_OBCS */
5728d4a98b Patr* 0452
b167b0379c Patr* 0453 #ifdef ALLOW_DEBUG
862d160a2f Jean* 0454 IF ( debugMode ) CALL DEBUG_LEAVE ('AUTODIFF_RESTORE' ,myThid )
5728d4a98b Patr* 0455 #endif
0456
0457 #endif /* ALLOW_AUTODIFF_TAMC */
cda1c18f72 Jean* 0458
5728d4a98b Patr* 0459
6fe4379e6f Jean* 0460 RETURN
0461 END