File indexing completed on 2025-10-27 12:20:01 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"
bf759c6109 Gael*0010 #endif
0011 #ifdef ALLOW_EXF
0012 # include "EXF_OPTIONS.h"
5728d4a98b Patr*0013 #endif
0014
6fe4379e6f Jean*0015 SUBROUTINE AUTODIFF_STORE( myThid )
5728d4a98b Patr*0016
cda1c18f72 Jean*0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
5728d4a98b Patr*0028
6fe4379e6f 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
e28d7f2731 Gael*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
0d7eb15592 Jean*0080
cda1c18f72 Jean*0081
5728d4a98b Patr*0082
3e55964de2 Patr*0083 #ifdef ALLOW_DEBUG
862d160a2f Jean*0084 IF ( debugMode ) CALL DEBUG_ENTER('AUTODIFF_STORE',myThid)
5728d4a98b Patr*0085 #endif
0d7eb15592 Jean*0086
3c775cbf98 Mart*0087 #ifdef AUTODIFF_USE_STORE_RESTORE
5728d4a98b Patr*0088
0089 DO bj = myByLo(myThid), myByHi(myThid)
0090 DO bi = myBxLo(myThid), myBxHi(myThid)
0091
e4f1c09db9 Jean*0092 DO J=1-OLy,sNy+OLy
0093 DO I=1-OLx,sNx+OLx
0094 StoreDynVars2D(I,J,bi,bj,1) = etaN(I,J,bi,bj)
f255f6c083 Jean*0095 StoreDynVars2D(I,J,bi,bj,2) = taux0(I,J,bi,bj)
0096 StoreDynVars2D(I,J,bi,bj,3) = taux1(I,J,bi,bj)
0097 StoreDynVars2D(I,J,bi,bj,4) = tauy0(I,J,bi,bj)
0098 StoreDynVars2D(I,J,bi,bj,5) = tauy1(I,J,bi,bj)
0099 StoreDynVars2D(I,J,bi,bj,6) = qnet0(I,J,bi,bj)
0100 StoreDynVars2D(I,J,bi,bj,7) = qnet1(I,J,bi,bj)
0101 StoreDynVars2D(I,J,bi,bj,8) = empmr0(I,J,bi,bj)
0102 StoreDynVars2D(I,J,bi,bj,9) = empmr1(I,J,bi,bj)
0103 StoreDynVars2D(I,J,bi,bj,10) = sst0(I,J,bi,bj)
0104 StoreDynVars2D(I,J,bi,bj,11) = sst1(I,J,bi,bj)
0105 StoreDynVars2D(I,J,bi,bj,12) = sss0(I,J,bi,bj)
0106 StoreDynVars2D(I,J,bi,bj,13) = sss1(I,J,bi,bj)
0107 StoreDynVars2D(I,J,bi,bj,14) = saltflux0(I,J,bi,bj)
0108 StoreDynVars2D(I,J,bi,bj,15) = saltflux1(I,J,bi,bj)
5728d4a98b Patr*0109 #ifdef SHORTWAVE_HEATING
f255f6c083 Jean*0110 StoreDynVars2D(I,J,bi,bj,16) = qsw0(I,J,bi,bj)
0111 StoreDynVars2D(I,J,bi,bj,17) = qsw1(I,J,bi,bj)
5728d4a98b Patr*0112 #else
f255f6c083 Jean*0113 StoreDynVars2D(I,J,bi,bj,16) = 0.
5728d4a98b Patr*0114 StoreDynVars2D(I,J,bi,bj,17) = 0.
0115 #endif
0116 #ifdef ATMOSPHERIC_LOADING
f255f6c083 Jean*0117 StoreDynVars2D(I,J,bi,bj,18) = pload0(I,J,bi,bj)
0118 StoreDynVars2D(I,J,bi,bj,19) = pload1(I,J,bi,bj)
5728d4a98b Patr*0119 #else
f255f6c083 Jean*0120 StoreDynVars2D(I,J,bi,bj,18) = 0.
5728d4a98b Patr*0121 StoreDynVars2D(I,J,bi,bj,19) = 0.
0122 #endif
f255f6c083 Jean*0123 StoreDynVars2D(I,J,bi,bj,20) = etaH(I,J,bi,bj)
0124 StoreDynVars2D(I,J,bi,bj,21) = dEtaHdt(I,J,bi,bj)
0125 StoreDynVars2D(I,J,bi,bj,22) = PmEpR(I,J,bi,bj)
5728d4a98b Patr*0126 ENDDO
0127 ENDDO
3c775cbf98 Mart*0128 ENDDO
0129 ENDDO
c5c9d716eb Patr*0130
3c775cbf98 Mart*0131
0132 DO bj = myByLo(myThid), myByHi(myThid)
0133 DO bi = myBxLo(myThid), myBxHi(myThid)
5728d4a98b Patr*0134
0135 DO K=1,Nr
e4f1c09db9 Jean*0136 DO J=1-OLy,sNy+OLy
0137 DO I=1-OLx,sNx+OLx
507fbacc22 Gael*0138 #ifdef ALLOW_ADAMSBASHFORTH_3
e4f1c09db9 Jean*0139 StoreDynVars3D(I,J,K,bi,bj,1) = gtNm(I,J,K,bi,bj,1)
0140 StoreDynVars3D(I,J,K,bi,bj,2) = gsNm(I,J,K,bi,bj,1)
0141 StoreDynVars3D(I,J,K,bi,bj,3) = guNm(I,J,K,bi,bj,1)
0142 StoreDynVars3D(I,J,K,bi,bj,4) = gvNm(I,J,K,bi,bj,1)
507fbacc22 Gael*0143 #else
e4f1c09db9 Jean*0144 StoreDynVars3D(I,J,K,bi,bj,1) = gtNm1(I,J,K,bi,bj)
0145 StoreDynVars3D(I,J,K,bi,bj,2) = gsNm1(I,J,K,bi,bj)
0146 StoreDynVars3D(I,J,K,bi,bj,3) = guNm1(I,J,K,bi,bj)
0147 StoreDynVars3D(I,J,K,bi,bj,4) = gvNm1(I,J,K,bi,bj)
507fbacc22 Gael*0148 #endif
e4f1c09db9 Jean*0149 StoreDynVars3D(I,J,K,bi,bj,5) = theta(I,J,K,bi,bj)
0150 StoreDynVars3D(I,J,K,bi,bj,6) = salt(I,J,K,bi,bj)
0151 StoreDynVars3D(I,J,K,bi,bj,7) = uVel(I,J,K,bi,bj)
0152 StoreDynVars3D(I,J,K,bi,bj,8) = vVel(I,J,K,bi,bj)
0153 StoreDynVars3D(I,J,K,bi,bj,9) = wVel(I,J,K,bi,bj)
0154 StoreDynVars3D(I,J,K,bi,bj,10) = totPhiHyd(I,J,K,bi,bj)
507fbacc22 Gael*0155 #ifdef ALLOW_ADAMSBASHFORTH_3
e4f1c09db9 Jean*0156 StoreDynVars3D(I,J,K,bi,bj,11) = gtNm(I,J,K,bi,bj,2)
0157 StoreDynVars3D(I,J,K,bi,bj,12) = gsNm(I,J,K,bi,bj,2)
0158 StoreDynVars3D(I,J,K,bi,bj,13) = guNm(I,J,K,bi,bj,2)
0159 StoreDynVars3D(I,J,K,bi,bj,14) = gvNm(I,J,K,bi,bj,2)
507fbacc22 Gael*0160 #endif
5728d4a98b Patr*0161 ENDDO
0162 ENDDO
0163 ENDDO
0164 ENDDO
0165 ENDDO
0d7eb15592 Jean*0166
5728d4a98b Patr*0167 #ifdef ALLOW_EXF
0168
0169 DO bj = myByLo(myThid), myByHi(myThid)
0170 DO bi = myBxLo(myThid), myBxHi(myThid)
0171
e4f1c09db9 Jean*0172 DO J=1-OLy,sNy+OLy
0173 DO I=1-OLx,sNx+OLx
0e8df33a35 Jean*0174 StoreEXF1(I,J,bi,bj,1) = hflux0(I,J,bi,bj)
0175 StoreEXF1(I,J,bi,bj,2) = hflux1(I,J,bi,bj)
0176 StoreEXF1(I,J,bi,bj,3) = sflux0(I,J,bi,bj)
0177 StoreEXF1(I,J,bi,bj,4) = sflux1(I,J,bi,bj)
0178 StoreEXF1(I,J,bi,bj,5) = ustress0(I,J,bi,bj)
0179 StoreEXF1(I,J,bi,bj,6) = ustress1(I,J,bi,bj)
0180 StoreEXF1(I,J,bi,bj,7) = vstress0(I,J,bi,bj)
0181 StoreEXF1(I,J,bi,bj,8) = vstress1(I,J,bi,bj)
0182 StoreEXF1(I,J,bi,bj,9) = wspeed0(I,J,bi,bj)
fc77a29eb0 Patr*0183 StoreEXF1(I,J,bi,bj,10) = wspeed1(I,J,bi,bj)
0184 # ifdef SHORTWAVE_HEATING
0185 StoreEXF1(I,J,bi,bj,11) = swflux0(I,J,bi,bj)
0186 StoreEXF1(I,J,bi,bj,12) = swflux1(I,J,bi,bj)
0187 # else
0188 StoreEXF1(I,J,bi,bj,11) = 0.0
0189 StoreEXF1(I,J,bi,bj,12) = 0.0
0190 # endif
0191 # ifdef ALLOW_RUNOFF
0192 StoreEXF1(I,J,bi,bj,13) = runoff0(I,J,bi,bj)
0193 StoreEXF1(I,J,bi,bj,14) = runoff1(I,J,bi,bj)
0194 # else
5728d4a98b Patr*0195 StoreEXF1(I,J,bi,bj,13) = 0.0
0196 StoreEXF1(I,J,bi,bj,14) = 0.0
fc77a29eb0 Patr*0197 # endif
0198 # ifdef ATMOSPHERIC_LOADING
0199 StoreEXF1(I,J,bi,bj,15) = apressure0(I,J,bi,bj)
0200 StoreEXF1(I,J,bi,bj,16) = apressure1(I,J,bi,bj)
0201 StoreEXF1(I,J,bi,bj,17) = siceload(I,J,bi,bj)
0202 # else
5728d4a98b Patr*0203 StoreEXF1(I,J,bi,bj,15) = 0.0
0204 StoreEXF1(I,J,bi,bj,16) = 0.0
fc77a29eb0 Patr*0205 StoreEXF1(I,J,bi,bj,17) = 0.0
0206 # endif
0207 # ifdef ALLOW_CLIMSSS_RELAXATION
0208 StoreEXF1(I,J,bi,bj,18) = climsss0(I,J,bi,bj)
0209 StoreEXF1(I,J,bi,bj,19) = climsss1(I,J,bi,bj)
0210 # else
0211 StoreEXF1(I,J,bi,bj,18) = 0.0
0212 StoreEXF1(I,J,bi,bj,19) = 0.0
0213 # endif
0214 # ifdef ALLOW_CLIMSST_RELAXATION
0215 StoreEXF1(I,J,bi,bj,20) = climsst0(I,J,bi,bj)
0216 StoreEXF1(I,J,bi,bj,21) = climsst1(I,J,bi,bj)
0217 # else
0218 StoreEXF1(I,J,bi,bj,20) = 0.0
0219 StoreEXF1(I,J,bi,bj,21) = 0.0
d217f7c14d Gael*0220 # endif
0221 # ifdef ALLOW_SALTFLX
0222 StoreEXF1(I,J,bi,bj,22) = saltflx0(I,J,bi,bj)
0223 StoreEXF1(I,J,bi,bj,23) = saltflx1(I,J,bi,bj)
0224 # else
0225 StoreEXF1(I,J,bi,bj,22) = 0.0
0226 StoreEXF1(I,J,bi,bj,23) = 0.0
fc77a29eb0 Patr*0227 # endif
634ecb5dc5 Jean*0228 ENDDO
0229 ENDDO
0230 ENDDO
0231 ENDDO
0d7eb15592 Jean*0232
5728d4a98b Patr*0233
0234 DO bj = myByLo(myThid), myByHi(myThid)
0235 DO bi = myBxLo(myThid), myBxHi(myThid)
0236
e4f1c09db9 Jean*0237 DO J=1-OLy,sNy+OLy
0238 DO I=1-OLx,sNx+OLx
6fe4379e6f Jean*0239 # ifdef ALLOW_ATM_TEMP
5728d4a98b Patr*0240 StoreEXF2(I,J,bi,bj,1) = aqh0(I,J,bi,bj)
0241 StoreEXF2(I,J,bi,bj,2) = aqh1(I,J,bi,bj)
0242 StoreEXF2(I,J,bi,bj,3) = atemp0(I,J,bi,bj)
0243 StoreEXF2(I,J,bi,bj,4) = atemp1(I,J,bi,bj)
0244 StoreEXF2(I,J,bi,bj,5) = precip0(I,J,bi,bj)
0245 StoreEXF2(I,J,bi,bj,6) = precip1(I,J,bi,bj)
0246 StoreEXF2(I,J,bi,bj,7) = lwflux0(I,J,bi,bj)
0247 StoreEXF2(I,J,bi,bj,8) = lwflux1(I,J,bi,bj)
fead278c20 Patr*0248 StoreEXF2(I,J,bi,bj,9) = snowprecip0(I,J,bi,bj)
0249 StoreEXF2(I,J,bi,bj,10) = snowprecip1(I,J,bi,bj)
0e8df33a35 Jean*0250 # ifdef ALLOW_READ_TURBFLUXES
0251 StoreEXF2(I,J,bi,bj,11) = hs0(I,J,bi,bj)
0252 StoreEXF2(I,J,bi,bj,12) = hs1(I,J,bi,bj)
0253 StoreEXF2(I,J,bi,bj,13) = hl0(I,J,bi,bj)
0254 StoreEXF2(I,J,bi,bj,14) = hl1(I,J,bi,bj)
6fe4379e6f Jean*0255 # else
0e8df33a35 Jean*0256 StoreEXF2(I,J,bi,bj,11) = 0.0
fead278c20 Patr*0257 StoreEXF2(I,J,bi,bj,12) = 0.0
5728d4a98b Patr*0258 StoreEXF2(I,J,bi,bj,13) = 0.0
0259 StoreEXF2(I,J,bi,bj,14) = 0.0
0e8df33a35 Jean*0260 # endif
0261 # ifdef EXF_READ_EVAP
0262 StoreEXF2(I,J,bi,bj,15) = evap0(I,J,bi,bj)
0263 StoreEXF2(I,J,bi,bj,16) = evap1(I,J,bi,bj)
0264 # else
0265 StoreEXF2(I,J,bi,bj,15) = evap(I,J,bi,bj)
fead278c20 Patr*0266 StoreEXF2(I,J,bi,bj,16) = 0.0
0e8df33a35 Jean*0267 # endif /* EXF_READ_EVAP */
0268 # ifdef ALLOW_DOWNWARD_RADIATION
0269 StoreEXF2(I,J,bi,bj,17) = swdown0(I,J,bi,bj)
0270 StoreEXF2(I,J,bi,bj,18) = swdown1(I,J,bi,bj)
0271 StoreEXF2(I,J,bi,bj,19) = lwdown0(I,J,bi,bj)
0272 StoreEXF2(I,J,bi,bj,20) = lwdown1(I,J,bi,bj)
0273 # else
0274 StoreEXF2(I,J,bi,bj,17) = 0.0
0275 StoreEXF2(I,J,bi,bj,18) = 0.0
0276 StoreEXF2(I,J,bi,bj,19) = 0.0
0277 StoreEXF2(I,J,bi,bj,20) = 0.0
6fe4379e6f Jean*0278 # endif
0279 # endif /* ALLOW_ATM_TEMP */
0e8df33a35 Jean*0280 StoreEXF2(I,J,bi,bj,21) = uwind0(I,J,bi,bj)
0281 StoreEXF2(I,J,bi,bj,22) = uwind1(I,J,bi,bj)
0282 StoreEXF2(I,J,bi,bj,23) = vwind0(I,J,bi,bj)
0283 StoreEXF2(I,J,bi,bj,24) = vwind1(I,J,bi,bj)
634ecb5dc5 Jean*0284 ENDDO
0285 ENDDO
0286 ENDDO
0287 ENDDO
5728d4a98b Patr*0288 #endif /* ALLOW_EXF */
0289
3c775cbf98 Mart*0290 #ifdef ALLOW_SEAICE
0291
0292 DO bj = myByLo(myThid), myByHi(myThid)
0293 DO bi = myBxLo(myThid), myBxHi(myThid)
0294
0295 DO J=1-OLy,sNy+OLy
0296 DO I=1-OLx,sNx+OLx
0297 StoreSEAICE(I,J,bi,bj, 1) = AREA(I,J,bi,bj)
0298 StoreSEAICE(I,J,bi,bj, 2) = HEFF(I,J,bi,bj)
0299 StoreSEAICE(I,J,bi,bj, 3) = HSNOW(I,J,bi,bj)
0300 StoreSEAICE(I,J,bi,bj, 4) = RUNOFF(I,J,bi,bj)
0301 StoreSEAICE(I,J,bi,bj, 5) = UICE(I,J,bi,bj)
0302 StoreSEAICE(I,J,bi,bj, 6) = VICE(I,J,bi,bj)
0303 StoreSEAICE(I,J,bi,bj, 7) = ZETA(I,J,bi,bj)
0304 StoreSEAICE(I,J,bi,bj, 8) = ETA(I,J,bi,bj)
0305 # ifdef SEAICE_CGRID
0306 StoreSEAICE(I,J,bi,bj, 9) = dwatn(I,J,bi,bj)
0307 # ifdef SEAICE_ALLOW_BOTTOMDRAG
0308 StoreSEAICE(I,J,bi,bj,10) = cbotc(I,J,bi,bj)
0309 # else
0310 StoreSEAICE(I,J,bi,bj,10) = 0.0
0311 # endif /* SEAICE_ALLOW_BOTTOMDRAG */
0312 StoreSEAICE(I,J,bi,bj,11) = stressDivergenceX(I,J,bi,bj)
0313 StoreSEAICE(I,J,bi,bj,12) = stressDivergenceY(I,J,bi,bj)
0314 # else
0315 StoreSEAICE(I,J,bi,bj, 9) = 0.0
0316 StoreSEAICE(I,J,bi,bj,10) = 0.0
0317 StoreSEAICE(I,J,bi,bj,11) = 0.0
0318 StoreSEAICE(I,J,bi,bj,12) = 0.0
0319 # endif /* SEAICE_CGRID */
0320 # ifdef SEAICE_ALLOW_EVP
0321 StoreSEAICE(I,J,bi,bj,13) = seaice_sigma1(I,J,bi,bj)
0322 StoreSEAICE(I,J,bi,bj,14) = seaice_sigma2(I,J,bi,bj)
0323 StoreSEAICE(I,J,bi,bj,15) = seaice_sigma12(I,J,bi,bj)
0324 # else
0325 StoreSEAICE(I,J,bi,bj,13) = 0.0
0326 StoreSEAICE(I,J,bi,bj,14) = 0.0
0327 StoreSEAICE(I,J,bi,bj,15) = 0.0
0328 # endif /* SEAICE_ALLOW_EVP */
0329 # ifdef SEAICE_VARIABLE_SALINITY
0330 StoreSEAICE(I,J,bi,bj,16) = HSALT(I,J,bi,bj)
0331 # else
0332 StoreSEAICE(I,J,bi,bj,16) = 0.0
0333 # endif
0334 ENDDO
0335 ENDDO
0336
cda1c18f72 Jean*0337 DO K=1,nITD
3c775cbf98 Mart*0338 DO J=1-OLy,sNy+OLy
0339 DO I=1-OLx,sNx+OLx
cda1c18f72 Jean*0340 StoreSEAICE(I,J,bi,bj,16+K) = TICES(I,J,K,bi,bj)
3c775cbf98 Mart*0341 ENDDO
0342 ENDDO
0343 ENDDO
0344
0345 ENDDO
0346 ENDDO
0347 #endif /* ALLOW_SEAICE */
0348
0349 #endif /* AUTODIFF_USE_STORE_RESTORE */
0350
0351 #if ( defined ALLOW_OBCS && defined AUTODIFF_USE_STORE_RESTORE_OBCS )
5728d4a98b Patr*0352 # ifdef ALLOW_OBCS_NORTH
0353
0354 DO bj = myByLo(myThid), myByHi(myThid)
0355 DO bi = myBxLo(myThid), myBxHi(myThid)
0356
0357 DO K=1,Nr
e4f1c09db9 Jean*0358 DO I=1-OLx,sNx+OLx
634ecb5dc5 Jean*0359 StoreOBCSN(I,K,bi,bj,1) = OBNu(I,K,bi,bj)
0360 StoreOBCSN(I,K,bi,bj,2) = OBNv(I,K,bi,bj)
0361 StoreOBCSN(I,K,bi,bj,3) = OBNt(I,K,bi,bj)
0362 StoreOBCSN(I,K,bi,bj,4) = OBNs(I,K,bi,bj)
7b94249161 Jean*0363 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0364 StoreOBCSN(I,K,bi,bj,5) = OBNu0(I,K,bi,bj)
0365 StoreOBCSN(I,K,bi,bj,6) = OBNv0(I,K,bi,bj)
0366 StoreOBCSN(I,K,bi,bj,7) = OBNt0(I,K,bi,bj)
0367 StoreOBCSN(I,K,bi,bj,8) = OBNs0(I,K,bi,bj)
0368 StoreOBCSN(I,K,bi,bj,9) = OBNu1(I,K,bi,bj)
0369 StoreOBCSN(I,K,bi,bj,10) = OBNv1(I,K,bi,bj)
0370 StoreOBCSN(I,K,bi,bj,11) = OBNt1(I,K,bi,bj)
0371 StoreOBCSN(I,K,bi,bj,12) = OBNs1(I,K,bi,bj)
7b94249161 Jean*0372 # endif
5728d4a98b Patr*0373 # ifdef ALLOW_OBCSN_CONTROL
634ecb5dc5 Jean*0374 StoreOBCSN(I,K,bi,bj,13) = xx_obcsn0(I,K,bi,bj,1)
0375 StoreOBCSN(I,K,bi,bj,14) = xx_obcsn0(I,K,bi,bj,2)
0376 StoreOBCSN(I,K,bi,bj,15) = xx_obcsn0(I,K,bi,bj,3)
0377 StoreOBCSN(I,K,bi,bj,16) = xx_obcsn0(I,K,bi,bj,4)
0378 StoreOBCSN(I,K,bi,bj,17) = xx_obcsn1(I,K,bi,bj,1)
0379 StoreOBCSN(I,K,bi,bj,18) = xx_obcsn1(I,K,bi,bj,2)
0380 StoreOBCSN(I,K,bi,bj,19) = xx_obcsn1(I,K,bi,bj,3)
0381 StoreOBCSN(I,K,bi,bj,20) = xx_obcsn1(I,K,bi,bj,4)
6fe4379e6f Jean*0382 # else
60bf15049b Patr*0383 StoreOBCSN(I,K,bi,bj,13) = 0.0
0384 StoreOBCSN(I,K,bi,bj,14) = 0.0
0385 StoreOBCSN(I,K,bi,bj,15) = 0.0
0386 StoreOBCSN(I,K,bi,bj,16) = 0.0
0387 StoreOBCSN(I,K,bi,bj,17) = 0.0
0388 StoreOBCSN(I,K,bi,bj,18) = 0.0
634ecb5dc5 Jean*0389 StoreOBCSN(I,K,bi,bj,19) = 0.0
0390 StoreOBCSN(I,K,bi,bj,20) = 0.0
5728d4a98b Patr*0391 # endif
634ecb5dc5 Jean*0392 ENDDO
0393 ENDDO
0394 ENDDO
0395 ENDDO
0d7eb15592 Jean*0396 # endif /* ALLOW_OBCS_NORTH */
5728d4a98b Patr*0397
0398 # ifdef ALLOW_OBCS_SOUTH
0399
0400 DO bj = myByLo(myThid), myByHi(myThid)
0401 DO bi = myBxLo(myThid), myBxHi(myThid)
0402
0403 DO K=1,Nr
e4f1c09db9 Jean*0404 DO I=1-OLx,sNx+OLx
634ecb5dc5 Jean*0405 StoreOBCSS(I,K,bi,bj,1) = OBSu(I,K,bi,bj)
0406 StoreOBCSS(I,K,bi,bj,2) = OBSv(I,K,bi,bj)
0407 StoreOBCSS(I,K,bi,bj,3) = OBSt(I,K,bi,bj)
0408 StoreOBCSS(I,K,bi,bj,4) = OBSs(I,K,bi,bj)
7b94249161 Jean*0409 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0410 StoreOBCSS(I,K,bi,bj,5) = OBSu0(I,K,bi,bj)
0411 StoreOBCSS(I,K,bi,bj,6) = OBSv0(I,K,bi,bj)
0412 StoreOBCSS(I,K,bi,bj,7) = OBSt0(I,K,bi,bj)
0413 StoreOBCSS(I,K,bi,bj,8) = OBSs0(I,K,bi,bj)
0414 StoreOBCSS(I,K,bi,bj,9) = OBSu1(I,K,bi,bj)
0415 StoreOBCSS(I,K,bi,bj,10) = OBSv1(I,K,bi,bj)
0416 StoreOBCSS(I,K,bi,bj,11) = OBSt1(I,K,bi,bj)
0417 StoreOBCSS(I,K,bi,bj,12) = OBSs1(I,K,bi,bj)
7b94249161 Jean*0418 # endif
5728d4a98b Patr*0419 # ifdef ALLOW_OBCSS_CONTROL
634ecb5dc5 Jean*0420 StoreOBCSS(I,K,bi,bj,13) = xx_obcss0(I,K,bi,bj,1)
0421 StoreOBCSS(I,K,bi,bj,14) = xx_obcss0(I,K,bi,bj,2)
0422 StoreOBCSS(I,K,bi,bj,15) = xx_obcss0(I,K,bi,bj,3)
0423 StoreOBCSS(I,K,bi,bj,16) = xx_obcss0(I,K,bi,bj,4)
0424 StoreOBCSS(I,K,bi,bj,17) = xx_obcss1(I,K,bi,bj,1)
0425 StoreOBCSS(I,K,bi,bj,18) = xx_obcss1(I,K,bi,bj,2)
0426 StoreOBCSS(I,K,bi,bj,19) = xx_obcss1(I,K,bi,bj,3)
0427 StoreOBCSS(I,K,bi,bj,20) = xx_obcss1(I,K,bi,bj,4)
6fe4379e6f Jean*0428 # else
60bf15049b Patr*0429 StoreOBCSS(I,K,bi,bj,13) = 0.0
0430 StoreOBCSS(I,K,bi,bj,14) = 0.0
0431 StoreOBCSS(I,K,bi,bj,15) = 0.0
0432 StoreOBCSS(I,K,bi,bj,16) = 0.0
0433 StoreOBCSS(I,K,bi,bj,17) = 0.0
0434 StoreOBCSS(I,K,bi,bj,18) = 0.0
634ecb5dc5 Jean*0435 StoreOBCSS(I,K,bi,bj,19) = 0.0
0436 StoreOBCSS(I,K,bi,bj,20) = 0.0
5728d4a98b Patr*0437 # endif
634ecb5dc5 Jean*0438 ENDDO
0439 ENDDO
0440 ENDDO
0441 ENDDO
0d7eb15592 Jean*0442 # endif /* ALLOW_OBCS_SOUTH */
5728d4a98b Patr*0443
0444 # ifdef ALLOW_OBCS_EAST
0445
0446 DO bj = myByLo(myThid), myByHi(myThid)
0447 DO bi = myBxLo(myThid), myBxHi(myThid)
0448
0449 DO K=1,Nr
e4f1c09db9 Jean*0450 DO J=1-OLy,sNy+OLy
634ecb5dc5 Jean*0451 StoreOBCSE(J,K,bi,bj,1) = OBEu(J,K,bi,bj)
0452 StoreOBCSE(J,K,bi,bj,2) = OBEv(J,K,bi,bj)
0453 StoreOBCSE(J,K,bi,bj,3) = OBEt(J,K,bi,bj)
0454 StoreOBCSE(J,K,bi,bj,4) = OBEs(J,K,bi,bj)
7b94249161 Jean*0455 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0456 StoreOBCSE(J,K,bi,bj,5) = OBEu0(J,K,bi,bj)
0457 StoreOBCSE(J,K,bi,bj,6) = OBEv0(J,K,bi,bj)
0458 StoreOBCSE(J,K,bi,bj,7) = OBEt0(J,K,bi,bj)
0459 StoreOBCSE(J,K,bi,bj,8) = OBEs0(J,K,bi,bj)
0460 StoreOBCSE(J,K,bi,bj,9) = OBEu1(J,K,bi,bj)
0461 StoreOBCSE(J,K,bi,bj,10) = OBEv1(J,K,bi,bj)
0462 StoreOBCSE(J,K,bi,bj,11) = OBEt1(J,K,bi,bj)
0463 StoreOBCSE(J,K,bi,bj,12) = OBEs1(J,K,bi,bj)
7b94249161 Jean*0464 # endif
5728d4a98b Patr*0465 # ifdef ALLOW_OBCSE_CONTROL
634ecb5dc5 Jean*0466 StoreOBCSE(J,K,bi,bj,13) = xx_obcse0(J,K,bi,bj,1)
0467 StoreOBCSE(J,K,bi,bj,14) = xx_obcse0(J,K,bi,bj,2)
0468 StoreOBCSE(J,K,bi,bj,15) = xx_obcse0(J,K,bi,bj,3)
0469 StoreOBCSE(J,K,bi,bj,16) = xx_obcse0(J,K,bi,bj,4)
0470 StoreOBCSE(J,K,bi,bj,17) = xx_obcse1(J,K,bi,bj,1)
0471 StoreOBCSE(J,K,bi,bj,18) = xx_obcse1(J,K,bi,bj,2)
0472 StoreOBCSE(J,K,bi,bj,19) = xx_obcse1(J,K,bi,bj,3)
0473 StoreOBCSE(J,K,bi,bj,20) = xx_obcse1(J,K,bi,bj,4)
6fe4379e6f Jean*0474 # else
60bf15049b Patr*0475 StoreOBCSE(J,K,bi,bj,13) = 0.0
0476 StoreOBCSE(J,K,bi,bj,14) = 0.0
0477 StoreOBCSE(J,K,bi,bj,15) = 0.0
0478 StoreOBCSE(J,K,bi,bj,16) = 0.0
0479 StoreOBCSE(J,K,bi,bj,17) = 0.0
0480 StoreOBCSE(J,K,bi,bj,18) = 0.0
634ecb5dc5 Jean*0481 StoreOBCSE(J,K,bi,bj,19) = 0.0
0482 StoreOBCSE(J,K,bi,bj,20) = 0.0
5728d4a98b Patr*0483 # endif
634ecb5dc5 Jean*0484 ENDDO
0485 ENDDO
0486 ENDDO
0487 ENDDO
0d7eb15592 Jean*0488 # endif /* ALLOW_OBCS_EAST */
5728d4a98b Patr*0489
0490 # ifdef ALLOW_OBCS_WEST
0491
0492 DO bj = myByLo(myThid), myByHi(myThid)
0493 DO bi = myBxLo(myThid), myBxHi(myThid)
0494
0495 DO K=1,Nr
e4f1c09db9 Jean*0496 DO J=1-OLy,sNy+OLy
634ecb5dc5 Jean*0497 StoreOBCSW(J,K,bi,bj,1) = OBWu(J,K,bi,bj)
0498 StoreOBCSW(J,K,bi,bj,2) = OBWv(J,K,bi,bj)
0499 StoreOBCSW(J,K,bi,bj,3) = OBWt(J,K,bi,bj)
0500 StoreOBCSW(J,K,bi,bj,4) = OBWs(J,K,bi,bj)
7b94249161 Jean*0501 # ifdef ALLOW_OBCS_PRESCRIBE
634ecb5dc5 Jean*0502 StoreOBCSW(J,K,bi,bj,5) = OBWu0(J,K,bi,bj)
0503 StoreOBCSW(J,K,bi,bj,6) = OBWv0(J,K,bi,bj)
0504 StoreOBCSW(J,K,bi,bj,7) = OBWt0(J,K,bi,bj)
0505 StoreOBCSW(J,K,bi,bj,8) = OBWs0(J,K,bi,bj)
0506 StoreOBCSW(J,K,bi,bj,9) = OBWu1(J,K,bi,bj)
0507 StoreOBCSW(J,K,bi,bj,10) = OBWv1(J,K,bi,bj)
0508 StoreOBCSW(J,K,bi,bj,11) = OBWt1(J,K,bi,bj)
0509 StoreOBCSW(J,K,bi,bj,12) = OBWs1(J,K,bi,bj)
7b94249161 Jean*0510 # endif
5728d4a98b Patr*0511 # ifdef ALLOW_OBCSW_CONTROL
634ecb5dc5 Jean*0512 StoreOBCSW(J,K,bi,bj,13) = xx_obcsw0(J,K,bi,bj,1)
0513 StoreOBCSW(J,K,bi,bj,14) = xx_obcsw0(J,K,bi,bj,2)
0514 StoreOBCSW(J,K,bi,bj,15) = xx_obcsw0(J,K,bi,bj,3)
0515 StoreOBCSW(J,K,bi,bj,16) = xx_obcsw0(J,K,bi,bj,4)
0516 StoreOBCSW(J,K,bi,bj,17) = xx_obcsw1(J,K,bi,bj,1)
0517 StoreOBCSW(J,K,bi,bj,18) = xx_obcsw1(J,K,bi,bj,2)
0518 StoreOBCSW(J,K,bi,bj,19) = xx_obcsw1(J,K,bi,bj,3)
0519 StoreOBCSW(J,K,bi,bj,20) = xx_obcsw1(J,K,bi,bj,4)
6fe4379e6f Jean*0520 # else
60bf15049b Patr*0521 StoreOBCSW(J,K,bi,bj,13) = 0.0
0522 StoreOBCSW(J,K,bi,bj,14) = 0.0
0523 StoreOBCSW(J,K,bi,bj,15) = 0.0
0524 StoreOBCSW(J,K,bi,bj,16) = 0.0
0525 StoreOBCSW(J,K,bi,bj,17) = 0.0
0526 StoreOBCSW(J,K,bi,bj,18) = 0.0
634ecb5dc5 Jean*0527 StoreOBCSW(J,K,bi,bj,19) = 0.0
0528 StoreOBCSW(J,K,bi,bj,20) = 0.0
5728d4a98b Patr*0529 # endif
634ecb5dc5 Jean*0530 ENDDO
0531 ENDDO
0532 ENDDO
0533 ENDDO
5728d4a98b Patr*0534 # endif /* ALLOW_OBCS_WEST */
cda1c18f72 Jean*0535 #endif /* ALLOW_OBCS & AUTODIFF_USE_STORE_RESTORE_OBCS */
5728d4a98b Patr*0536
b167b0379c Patr*0537 #ifdef ALLOW_DEBUG
862d160a2f Jean*0538 IF ( debugMode ) CALL DEBUG_LEAVE('AUTODIFF_STORE',myThid)
5728d4a98b Patr*0539 #endif
0540
0541 #endif /* ALLOW_AUTODIFF_TAMC */
cda1c18f72 Jean*0542
5728d4a98b Patr*0543
6fe4379e6f Jean*0544 RETURN
0545 END