File indexing completed on 2023-07-20 05:10:46 UTC
view on githubraw file Latest commit 8e32c48b on 2023-07-19 16:52:24 UTC
dc54d31829 Ian *0001 #include "SEAICE_OPTIONS.h"
0002 #ifdef ALLOW_EXF
0003 # include "EXF_OPTIONS.h"
0004 #endif
0005 #ifdef ALLOW_SALT_PLUME
0006 # include "SALT_PLUME_OPTIONS.h"
0007 #endif
0008 #ifdef ALLOW_AUTODIFF
0009 # include "AUTODIFF_OPTIONS.h"
0010 #endif
0011
2383f7d4e9 Mart*0012 #undef SEAICE_GROWTH_ADX_STORE_MORE
0013
dc54d31829 Ian *0014
0015
0016
4dd39c50d9 Mart*0017 SUBROUTINE SEAICE_GROWTH_ADX( myTime, myIter, myThid )
dc54d31829 Ian *0018
0019
0020
4dd39c50d9 Mart*0021
0022
dc54d31829 Ian *0023
0024
0025
0026
0027
0028 IMPLICIT NONE
0029
0030 #include "SIZE.h"
0031 #include "EEPARAMS.h"
0032 #include "PARAMS.h"
0033 #include "DYNVARS.h"
0034 #include "GRID.h"
0035 #include "FFIELDS.h"
0036 #include "SEAICE_SIZE.h"
0037 #include "SEAICE_PARAMS.h"
0038 #include "SEAICE.h"
0039 #include "SEAICE_TRACER.h"
0040 #ifdef ALLOW_EXF
0041 # include "EXF_PARAM.h"
0042 # include "EXF_FIELDS.h"
0043 #endif
0044 #ifdef ALLOW_SALT_PLUME
0045 # include "SALT_PLUME.h"
0046 #endif
0047 #ifdef ALLOW_AUTODIFF_TAMC
0048 # include "tamc.h"
0049 #endif
0050
0051
0052
0053
0054
0055
0056 _RL myTime
0057 INTEGER myIter, myThid
0058
0059
5337b47ce7 Jean*0060 #ifdef SEAICE_USE_GROWTH_ADX
dc54d31829 Ian *0061 #if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
0062
0063 #ifdef ALLOW_DIAGNOSTICS
0064 LOGICAL DIAGNOSTICS_IS_ON
0065 EXTERNAL DIAGNOSTICS_IS_ON
0066 #endif
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 INTEGER i, j, bi, bj
0080
0081 INTEGER kSurface
0082
0083 INTEGER IT
0084
914da317ef jm-c 0085
dc54d31829 Ian *0086
0087 _RL tempFrz, ICE2SNOW, SNOW2ICE, surf_theta
914da317ef jm-c 0088 _RL QI, QS
dc54d31829 Ian *0089 _RL lhSublim
0090
0091
0092 _RL area_reg_sq, hice_reg_sq
0093
0094
0095 _RL heffTooHeavy
0096
0097
0098 _RL recip_multDim
0099 _RL recip_deltaTtherm
0100 _RL recip_rhoIce
4dd39c50d9 Mart*0101 _RL recip_QI
0102 _RL recip_QS
0103 _RL recip_HO
0104 _RL recip_HO_south
0105 _RL rhoFresh2rhoSnow
0106 _RL rhoSnow2rhoFresh
0107 _RL rhoIce2rhoFresh
dc54d31829 Ian *0108
0109
0110 _RL pFac, pFacSnow
0111
0112
914da317ef jm-c 0113 _RL tmpscal0, tmpscal1, tmpscal2, tmpscal3
dc54d31829 Ian *0114
7c50f07931 Mart*0115 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0116
0117 INTEGER tkey
7c50f07931 Mart*0118 #endif
0119
dc54d31829 Ian *0120
0121
0122 _RL TmixLoc (1:sNx,1:sNy)
0123
0124
0125 _RL hiceActual (1:sNx,1:sNy)
0126
0127 _RL hsnowActual (1:sNx,1:sNy)
0128
0129 _RL recip_hiceActual (1:sNx,1:sNy)
0130
0131
0132 _RL AREApreTH (1:sNx,1:sNy)
0133 _RL HEFFpreTH (1:sNx,1:sNy)
0134 _RL HSNWpreTH (1:sNx,1:sNy)
0135
0136
0137 _RL UG (1:sNx,1:sNy)
0138
0139
0140 _RL ticeInMult (1:sNx,1:sNy,nITD)
0141 _RL ticeOutMult (1:sNx,1:sNy,nITD)
0142 _RL hiceActualMult (1:sNx,1:sNy,nITD)
0143 _RL hsnowActualMult (1:sNx,1:sNy,nITD)
0144
0145 _RL F_io_net_mult (1:sNx,1:sNy,nITD)
0146 _RL F_ia_net_mult (1:sNx,1:sNy,nITD)
0147 _RL F_ia_mult (1:sNx,1:sNy,nITD)
0148 _RL QSWI_mult (1:sNx,1:sNy,nITD)
a4e168e012 antn*0149
0150
0151
0152
dc54d31829 Ian *0153 _RL FWsublim_mult (1:sNx,1:sNy,nITD)
a4e168e012 antn*0154 _RL FWsublim (1:sNx,1:sNy)
dc54d31829 Ian *0155
0156 #ifdef ALLOW_SALT_PLUME
0157
0158 _RL IceGrowthRateInLeads (1:sNx,1:sNy)
0159
0160
0161
0162 _RL leadPlumeFraction (1:sNx,1:sNy)
0163 #endif
0164
0165 _RL QSWO_BELOW_FIRST_LAYER (1:sNx,1:sNy)
0166 _RL QSWO_IN_FIRST_LAYER (1:sNx,1:sNy)
0167 _RL QSWO (1:sNx,1:sNy)
0168 _RL QSWI (1:sNx,1:sNy)
0169
0170
0171 _RL ActualNewTotalVolumeChange (1:sNx,1:sNy)
0172 _RL ActualNewTotalSnowMelt (1:sNx,1:sNy)
0173
0174 _RL NetExistingIceGrowthRate (1:sNx,1:sNy)
0175 _RL IceGrowthRateUnderExistingIce (1:sNx,1:sNy)
0176 _RL IceGrowthRateFromSurface (1:sNx,1:sNy)
0177 _RL IceGrowthRateOpenWater (1:sNx,1:sNy)
0178 _RL IceGrowthRateMixedLayer (1:sNx,1:sNy)
0179
0180 _RL EnergyInNewTotalIceVolume (1:sNx,1:sNy)
0181 _RL NetEnergyFluxOutOfOcean (1:sNx,1:sNy)
0182
d73d15cdef antn*0183 #ifdef ALLOW_DIAGNOSTICS
a4e168e012 antn*0184
4dd39c50d9 Mart*0185 _RL SItflux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
a4e168e012 antn*0186 _RL SIeprflx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
4dd39c50d9 Mart*0187 _RL SIatmFW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
d73d15cdef antn*0188 #endif
dc54d31829 Ian *0189
0190
4dd39c50d9 Mart*0191 _RL SIheffNeg (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0192 _RL SIhsnwNeg (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
dc54d31829 Ian *0193
d73d15cdef antn*0194 _RL d_HEFFbyFLOODING (1:sNx,1:sNy)
dc54d31829 Ian *0195
0196
0197
0198 _RL ResidualEnergyOutOfOcean (1:sNx,1:sNy)
0199
0200
0201 _RL SnowAccRateOverIce (1:sNx,1:sNy)
0202
0203
0204 _RL SnowAccOverIce (1:sNx,1:sNy)
0205
0206
0207 _RL PrecipRateOverIceSurfaceToSea (1:sNx,1:sNy)
0208
0209
0210
0211 _RL PotSnowMeltRateFromSurf (1:sNx,1:sNy)
0212
0213
0214
0215 _RL PotSnowMeltFromSurf (1:sNx,1:sNy)
0216
0217
0218 _RL SnowMeltRateFromSurface (1:sNx,1:sNy)
0219
0220
0221 _RL SurfHeatFluxConvergToSnowMelt (1:sNx,1:sNy)
0222
0223
0224
0225 _RL SnowMeltFromSurface (1:sNx,1:sNy)
0226
0227
0228 _RL FreshwaterContribFromSnowMelt (1:sNx,1:sNy)
0229
0230
0231 _RL FreshwaterContribFromIce (1:sNx,1:sNy)
0232
0233
0234 _RL S_a (1:sNx,1:sNy)
0235
0236
0237 _RL S_h (1:sNx,1:sNy)
0238
0239
0240 _RL S_hsnow (1:sNx,1:sNy)
0241
0242
0243
0244
0245 _RL F_ia (1:sNx,1:sNy)
0246
0247
0248
0249
0250
0251
0252
0253 _RL F_ia_net (1:sNx,1:sNy)
0254
0255
0256
0257
0258 _RL F_ia_net_before_snow (1:sNx,1:sNy)
0259
0260
0261
0262
0263
0264
0265 _RL F_io_net (1:sNx,1:sNy)
0266
0267
0268
0269 _RL F_ao (1:sNx,1:sNy)
0270
0271
0272 _RL F_mi (1:sNx,1:sNy)
0273
0274
0275 _RL S_a_IGROW (1:sNx,1:sNy)
0276
0277
0278 _RL S_a_IGRML (1:sNx,1:sNy)
0279
0280
0281 _RL S_a_IGRNE (1:sNx,1:sNy)
0282
0283
0284
4dd39c50d9 Mart*0285 _RL MLTF
dc54d31829 Ian *0286
0287
0288
0289
0290
0291
0292
0320e25227 Mart*0293 IF ( usingPCoords ) THEN
dc54d31829 Ian *0294 kSurface = Nr
0295 ELSE
0296 kSurface = 1
0297 ENDIF
0298
0299
0300 heffTooHeavy=drF(kSurface) / 5. _d 0
0320e25227 Mart*0301 IF ( usingPCoords )
0302 & heffTooHeavy = heffTooHeavy * recip_rhoConst * recip_gravity
dc54d31829 Ian *0303
0304
0305 ICE2SNOW = SEAICE_rhoIce/SEAICE_rhoSnow
0306 SNOW2ICE = ONE / ICE2SNOW
0307
0308
0309 QI = ONE/(SEAICE_rhoIce*SEAICE_lhFusion)
0310
0311 QS = ONE/(SEAICE_rhoSnow*SEAICE_lhFusion)
0312
0313
0314 lhSublim = SEAICE_lhEvap + SEAICE_lhFusion
0315
4dd39c50d9 Mart*0316
0317 recip_multDim = SEAICE_multDim
0318 recip_multDim = ONE / recip_multDim
0319
0320
0321 recip_deltaTtherm = ONE / SEAICE_deltaTtherm
0322 recip_rhoIce = ONE / SEAICE_rhoIce
0323 recip_QI = ONE / QI
0324 recip_QS = ONE / QS
0325 recip_HO = ONE / HO
0326 recip_HO_south = ONE / HO_south
0327 rhoFresh2rhoSnow = rhoConstFresh / SEAICE_rhoSnow
0328 rhoSnow2rhoFresh = ONE / rhoFresh2rhoSnow
0329 rhoIce2rhoFresh = SEAICE_rhoIce / rhoConstFresh
0330
dc54d31829 Ian *0331
0332 area_reg_sq = SEAICE_area_reg * SEAICE_area_reg
0333 hice_reg_sq = SEAICE_hice_reg * SEAICE_hice_reg
0334
0335
0336 DO bj=myByLo(myThid),myByHi(myThid)
0337 DO bi=myBxLo(myThid),myBxHi(myThid)
0338
0339 #ifdef ALLOW_AUTODIFF_TAMC
edb6656069 Mart*0340 tkey = bi + (bj-1)*nSx + (ikey_dynamics-1)*nSx*nSy
4dd39c50d9 Mart*0341
edb6656069 Mart*0342
0343
0344
0345
0346
0347
2383f7d4e9 Mart*0348
0349 #endif
dc54d31829 Ian *0350
0351
0352
0353
0354 DO J=1,sNy
0355 DO I=1,sNx
0356
0357
0358 NetExistingIceGrowthRate(I,J) = 0.0 _d 0
0359 IceGrowthRateOpenWater(I,J) = 0.0 _d 0
0360 IceGrowthRateFromSurface(I,J) = 0.0 _d 0
0361 IceGrowthRateMixedLayer(I,J) = 0.0 _d 0
0362
0363 EnergyInNewTotalIceVolume(I,J) = 0.0 _d 0
0364 NetEnergyFluxOutOfOcean(I,J) = 0.0 _d 0
0365 ResidualEnergyOutOfOcean(I,J) = 0.0 _d 0
0366
0367 PrecipRateOverIceSurfaceToSea(I,J) = 0.0 _d 0
0368
0369 DO IT=1,SEAICE_multDim
0370 ticeInMult(I,J,IT) = 0.0 _d 0
0371 ticeOutMult(I,J,IT) = 0.0 _d 0
0372
0373 F_io_net_mult(I,J,IT) = 0.0 _d 0
0374 F_ia_net_mult(I,J,IT) = 0.0 _d 0
0375 F_ia_mult(I,J,IT) = 0.0 _d 0
0376
0377 QSWI_mult(I,J,IT) = 0.0 _d 0
0378 FWsublim_mult(I,J,IT) = 0.0 _d 0
0379 ENDDO
0380
0381 F_io_net(I,J) = 0.0 _d 0
0382 F_ia_net(I,J) = 0.0 _d 0
0383 F_ia(I,J) = 0.0 _d 0
0384
0385 QSWI(I,J) = 0.0 _d 0
0386 FWsublim(I,J) = 0.0 _d 0
0387
0388 QSWO_BELOW_FIRST_LAYER (I,J) = 0.0 _d 0
0389 QSWO_IN_FIRST_LAYER (I,J) = 0.0 _d 0
0390 QSWO(I,J) = 0.0 _d 0
0391
0392 ActualNewTotalVolumeChange(I,J) = 0.0 _d 0
0393 ActualNewTotalSnowMelt(I,J) = 0.0 _d 0
0394
0395 SnowAccOverIce(I,J) = 0.0 _d 0
0396 SnowAccRateOverIce(I,J) = 0.0 _d 0
0397
0398 PotSnowMeltRateFromSurf(I,J) = 0.0 _d 0
0399 PotSnowMeltFromSurf(I,J) = 0.0 _d 0
0400 SnowMeltRateFromSurface(I,J) = 0.0 _d 0
0401 SurfHeatFluxConvergToSnowMelt(I,J) = 0.0 _d 0
0402 SnowMeltFromSurface(I,J) = 0.0 _d 0
0403
0404 FreshwaterContribFromSnowMelt(I,J) = 0.0 _d 0
0405 FreshwaterContribFromIce(I,J) = 0.0 _d 0
0406
0407 S_a(I,J) = 0.0 _d 0
0408 S_a_IGROW(I,J) = 0.0 _d 0
0409 S_a_IGRML(I,J) = 0.0 _d 0
0410 S_a_IGRNE(I,J) = 0.0 _d 0
0411
0412 S_h(I,J) = 0.0 _d 0
0413 S_hsnow(I,J) = 0.0 _d 0
0414
d73d15cdef antn*0415 d_HEFFbyFLOODING(I,J) = 0.0 _d 0
dc54d31829 Ian *0416 #ifdef ALLOW_SALT_PLUME
0417 IceGrowthRateInLeads (I,J) = 0. _d 0
0418 leadPlumeFraction (I,J) = 0. _d 0
0419 saltPlumeFlux (I,J,bi,bj) = 0. _d 0
0420 #endif
a4e168e012 antn*0421 SIeprflx(I,J,bi,bj) = 0. _d 0
dc54d31829 Ian *0422 ENDDO
0423 ENDDO
0424
0425
0426
0427
0428
0429
0430 DO J=1,sNy
0431 DO I=1,sNx
0432 SIheffNeg(I,J,bi,bj)=d_HEFFbyNEG(I,J,bi,bj)*SINegFac
0433 SIhsnwNeg(I,J,bi,bj)=d_HSNWbyNEG(I,J,bi,bj)*SINegFac
0434 ENDDO
0435 ENDDO
0436
0437 DO J=1,sNy
0438 DO I=1,sNx
0439
4dd39c50d9 Mart*0440 tmpscal0 = HEFF(I,J,bi,bj)
0441 HEFF(I,J,bi,bj) = MAX(ZERO, tmpscal0)
0442 tmpscal1 = AREA(I,J,bi,bj)
0443 AREA(I,J,bi,bj) = MAX(ZERO, tmpscal1)
dc54d31829 Ian *0444
0445 IF (HEFF(I,J,bi,bj) .LE. ZERO) then
0446 AREA(I,J, bi,bj) = ZERO
0447 HSNOW(I,J, bi,bj) = ZERO
0448 ELSEIF (AREA(I,J,bi,bj) .LE. ZERO) then
0449 HEFF(I,J,bi,bj) = ZERO
0450 HSNOW(I,J,bi,bj) = ZERO
0451 ENDIF
0452
0453 HEFFpreTH(I,J) = HEFF(I,J,bi,bj)
0454 HSNWpreTH(I,J) = HSNOW(I,J,bi,bj)
0455 AREApreTH(I,J) = AREA(I,J,bi,bj)
0456
0457 ENDDO
0458 ENDDO
0459
0460 #ifdef ALLOW_DIAGNOSTICS
0461 IF ( useDiagnostics ) THEN
d73d15cdef antn*0462 CALL DIAGNOSTICS_FILL(AREA, 'SIareaPT',0,1,1,bi,bj,myThid)
0463 CALL DIAGNOSTICS_FILL(HEFF, 'SIheffPT',0,1,1,bi,bj,myThid)
0464 CALL DIAGNOSTICS_FILL(HSNOW,'SIhsnoPT',0,1,1,bi,bj,myThid)
dc54d31829 Ian *0465 ENDIF
0466 #endif /* ALLOW_DIAGNOSTICS */
0467
2383f7d4e9 Mart*0468 #if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_GROWTH_ADX_STORE_MORE)
dc54d31829 Ian *0469
edb6656069 Mart*0470
0471
0472
dc54d31829 Ian *0473
2383f7d4e9 Mart*0474 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0475
0476
0477
0478
0479 DO J=1,sNy
0480 DO I=1,sNx
0481 IF (HEFFpreTH(I,J) .GT. ZERO) THEN
0482
0483 tmpscal1 = SQRT(AREApreTH(I,J)* AREApreTH(I,J) + area_reg_sq)
0484
0485
0486 tmpscal2 = HEFFpreTH(I,J) / tmpscal1
0487
0488
0489
0490 hiceActual(I,J) = MAX(0.05 _d 0, tmpscal2)
0491
0492
0493
4dd39c50d9 Mart*0494
dc54d31829 Ian *0495 hsnowActual(I,J) = HSNWpreTH(I,J) / AREApreTH(I,J)
0496
0497
0498 recip_hiceActual(I,J) = AREApreTH(I,J) /
0499 & sqrt(HEFFpreTH(I,J)*HEFFpreTH(I,J) + hice_reg_sq)
0500
0501
0502 ELSE
0503 hiceActual (I,J) = ZERO
0504 hsnowActual(I,J) = ZERO
0505 recip_hiceActual(I,J) = ZERO
0506 ENDIF
0507
0508 ENDDO
0509 ENDDO
0510
0511
0512
0513
0514
0515 DO J=1,sNy
0516 DO I=1,sNx
0517
0518
0519 IF (( AREApreTH(I,J) .GT. ZERO) .AND.
0520 & ( TICES(I,J,1,bi,bj) .LT. celsius2k) ) THEN
0521
0522
0523 IF ( snowPrecipFile .NE. ' ' ) THEN
0524
0525
4dd39c50d9 Mart*0526 SnowAccRateOverIce(I,J) = rhoFresh2rhoSnow *
dc54d31829 Ian *0527 & snowPrecip(i,j,bi,bj)
0528
0529 ELSE
4dd39c50d9 Mart*0530 SnowAccRateOverIce(I,J) = rhoFresh2rhoSnow *
dc54d31829 Ian *0531 & PRECIP(i,j,bi,bj)
0532
0533 ENDIF
0534
0535 PrecipRateOverIceSurfaceToSea(I,J) = ZERO
0536
0537 ELSE
0538
0539
0540 SnowAccRateOverIce(I,J) = ZERO
0541 PrecipRateOverIceSurfaceToSea(I,J) = PRECIP(i,j,bi,bj)
0542 ENDIF
0543
0544
0545
0546 SnowAccOverIce(I,J) =
0547 & SnowAccRateOverIce(I,J) * SEAICE_deltaTtherm * AREApreTH(I,J)
0548
0549
0550 ENDDO
0551 ENDDO
0552
0553
0554
0555
0556
0557 DO j=1,sNy
0558 DO i=1,sNx
0559
0560 TmixLoc(i,j) = theta(i,j,kSurface,bi,bj) + celsius2K
0561
0562 UG(I,J) = MAX(SEAICE_EPS, wspeed(I,J,bi,bj))
0563 ENDDO
0564 ENDDO
2383f7d4e9 Mart*0565 #if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_GROWTH_ADX_STORE_MORE)
0566
edb6656069 Mart*0567
0568
2383f7d4e9 Mart*0569
edb6656069 Mart*0570
2383f7d4e9 Mart*0571
0572 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0573
0574
0575
0576
0577
0578 CALL SEAICE_BUDGET_OCEAN(
0579 I UG,
0580 I TmixLoc,
0581 O F_ao, QSWO,
0582 I bi, bj, myTime, myIter, myThid )
0583
2383f7d4e9 Mart*0584 #if (
0585
0586
0587
edb6656069 Mart*0588
0589
2383f7d4e9 Mart*0590
0591 #endif
dc54d31829 Ian *0592
0593
0594
0595
8e32c48b8f Mart*0596
0597
0598
0599
0600
0601
dc54d31829 Ian *0602 DO J=1,sNy
0603 DO I=1,sNx
0604
0605
0606
0607 #ifdef SHORTWAVE_HEATING
8e32c48b8f Mart*0608 QSWO_BELOW_FIRST_LAYER(I,J)= QSWO(I,J)*SEAICE_SWFrac
0609 QSWO_IN_FIRST_LAYER(I,J) = QSWO(I,J)*(ONE - SEAICE_SWFrac)
dc54d31829 Ian *0610 #else
0611 QSWO_BELOW_FIRST_LAYER(I,J)= ZERO
0612 QSWO_IN_FIRST_LAYER(I,J) = ZERO
0613 #endif
0614 IceGrowthRateOpenWater(I,J) = QI *
0615 & (F_ao(I,J) - QSWO(I,J) + QSWO_IN_FIRST_LAYER(I,J))
0616
0617 ENDDO
0618 ENDDO
0619
0620 #ifdef ALLOW_AUTODIFF_TAMC
2383f7d4e9 Mart*0621
4dd39c50d9 Mart*0622
edb6656069 Mart*0623
dc54d31829 Ian *0624
2383f7d4e9 Mart*0625 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0626
0627
0628
0629
0630
0631
0632
0633 DO IT=1,SEAICE_multDim
0634
0635 DO J=1,sNy
0636 DO I=1,sNx
0637
0638 ticeInMult(I,J,IT) = TICES(I,J,IT,bi,bj)
0639 ticeOutMult(I,J,IT) = TICES(I,J,IT,bi,bj)
0640 TICES(I,J,IT,bi,bj) = ZERO
0641 ENDDO
0642 ENDDO
0643
0644
0645 pFac = (2.0 _d 0*IT - 1.0 _d 0)*recip_multDim
0646 pFacSnow = 1. _d 0
0647
0648
0649 IF ( SEAICE_useMultDimSnow ) pFacSnow=pFac
0650
0651 DO J=1,sNy
0652 DO I=1,sNx
0653 hiceActualMult(I,J,IT) = hiceActual(I,J) *pFac
0654 hsnowActualMult(I,J,IT) = hsnowActual(I,J)*pFacSnow
0655 ENDDO
0656 ENDDO
4dd39c50d9 Mart*0657
0658 ENDDO
dc54d31829 Ian *0659
2383f7d4e9 Mart*0660 #if (defined ALLOW_AUTODIFF_TAMC && defined SEAICE_GROWTH_ADX_STORE_MORE)
dc54d31829 Ian *0661
edb6656069 Mart*0662
0663
dc54d31829 Ian *0664
2383f7d4e9 Mart*0665 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0666
0667
0668
0669
0670
0671
0672 DO IT=1,SEAICE_multDim
4dd39c50d9 Mart*0673 CALL SEAICE_SOLVE4TEMP(
dc54d31829 Ian *0674 I UG, hiceActualMult(1,1,IT), hsnowActualMult(1,1,IT),
4dd39c50d9 Mart*0675 #ifdef SEAICE_CAP_SUBLIM
0676 This error is put here intentionally, because SEAICE_CAP_SUBLIM
0677 cannot be defined together with SEAICE_USE_GROWTH_ADX
0678 I latentHeatFluxMaxMult(1,1,IT),
0679 #endif
0680 I ticeInMult(1,1,IT),
0681 O ticeOutMult(1,1,IT),
dc54d31829 Ian *0682 O F_io_net_mult(1,1,IT),
0683 O F_ia_net_mult(1,1,IT),
0684 O F_ia_mult(1,1,IT),
0685 O QSWI_mult(1,1,IT),
0686 O FWsublim_mult(1,1,IT),
0687 I bi, bj, myTime, myIter, myThid )
0688 ENDDO
0689
0690
0691
0692
0693
0694 DO IT=1,SEAICE_multDim
0695 DO J=1,sNy
0696 DO I=1,sNx
0697
0698
0699 TICES(I,J,IT,bi,bj) = ticeOutMult(I,J,IT)
0700
0701 F_io_net(I,J) = F_io_net(I,J) +
0702 & F_io_net_mult(I,J,IT)*recip_multDim
0703
0704 F_ia_net(I,J) = F_ia_net(I,J) +
0705 & F_ia_net_mult(I,J,IT)*recip_multDim
0706
0707 F_ia(I,J) = F_ia(I,J) +
0708 & F_ia_mult(I,J,IT)*recip_multDim
0709
0710 QSWI(I,J) = QSWI(I,J) + QSWI_mult(I,J,IT)*recip_multDim
0711
0712 FWsublim(I,J) = FWsublim(I,J) +
0713 & FWsublim_mult(I,J,IT)*recip_multDim
0714
0715 ENDDO
0716 ENDDO
0717 ENDDO
2383f7d4e9 Mart*0718 #ifdef ALLOW_AUTODIFF_TAMC
0719
0720
0721
edb6656069 Mart*0722
2383f7d4e9 Mart*0723
0724 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0725
0726 DO J=1,sNy
0727 DO I=1,sNx
0728
4dd39c50d9 Mart*0729
dc54d31829 Ian *0730
0731
0732
0733
0734 F_ia_net_before_snow(I,J) = F_ia_net(I,J)
0735
0736
0737 IF (AREApreTH(I,J) .LE. ZERO) THEN
0738 IceGrowthRateUnderExistingIce(I,J) = 0. _d 0
0739 IceGrowthRateFromSurface(I,J) = 0. _d 0
0740 NetExistingIceGrowthRate(I,J) = 0. _d 0
0741 ELSE
0742
0743
0744 IceGrowthRateUnderExistingIce(I,J) = F_io_net(I,J)*QI
0745
0746
0747
0748
0749 PotSnowMeltRateFromSurf(I,J) = - F_ia_net(I,J)*QS
0750
0751
0752 PotSnowMeltFromSurf(I,J) =
0753 & PotSnowMeltRateFromSurf(I,J) * SEAICE_deltaTtherm
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
4dd39c50d9 Mart*0765
dc54d31829 Ian *0766 IF (PotSnowMeltFromSurf(I,J) .GE. hsnowActual(I,J)) THEN
0767
0768
0769 SnowMeltFromSurface(I,J) = hsnowActual(I,J)
0770
0771 SnowMeltRateFromSurface(I,J) =
4dd39c50d9 Mart*0772 & SnowMeltFromSurface(I,J) * recip_deltaTtherm
dc54d31829 Ian *0773
0774 SurfHeatFluxConvergToSnowMelt(I,J) =
4dd39c50d9 Mart*0775 & - hsnowActual(I,J)*recip_QS*recip_deltaTtherm
dc54d31829 Ian *0776 ELSE
0777
0778
0779
0780 SnowMeltFromSurface(I,J) = PotSnowMeltFromSurf(I,J)
0781
0782 SnowMeltRateFromSurface(I,J) =PotSnowMeltRateFromSurf(I,J)
0783
0784 SurfHeatFluxConvergToSnowMelt(I,J) = F_ia_net(I,J)
0785
0786 ENDIF
0787
0788
0789
0790 F_ia_net(I,J) = F_ia_net(I,J) -
0791 & SurfHeatFluxConvergToSnowMelt(I,J)
0792
0793 IceGrowthRateFromSurface(I,J) = F_ia_net(I,J) * QI
0794
0795
0796
0797 NetExistingIceGrowthRate(I,J) =
0798 & IceGrowthRateUnderExistingIce(I,J) +
0799 & IceGrowthRateFromSurface(I,J)
0800 ENDIF
0801
0802 ENDDO
0803 ENDDO
2383f7d4e9 Mart*0804 #ifdef ALLOW_AUTODIFF_TAMC
0805
0806
edb6656069 Mart*0807
0808
0809
2383f7d4e9 Mart*0810
edb6656069 Mart*0811
2383f7d4e9 Mart*0812
edb6656069 Mart*0813
2383f7d4e9 Mart*0814
0815 #endif /* ALLOW_AUTODIFF_TAMC */
4dd39c50d9 Mart*0816
0817 tmpscal0 = 0.4 _d 0
0818
0819 tmpscal1 = 7.0 _d 0/tmpscal0
0820
0821 tmpscal2 = STANTON_NUMBER*USTAR_BASE*rhoConst*HeatCapacity_Cp
2383f7d4e9 Mart*0822
dc54d31829 Ian *0823 DO J=1,sNy
0824 DO I=1,sNx
0825
4dd39c50d9 Mart*0826
dc54d31829 Ian *0827 tempFrz = SEAICE_tempFrz0 +
0828 & SEAICE_dTempFrz_dS * salt(I,J,kSurface,bi,bj)
0829
0830 surf_theta = max(theta(I,J,kSurface,bi,bj), tempFrz)
0831
4dd39c50d9 Mart*0832
0833 MLTF = ONE + (MCPHEE_TAPER_FAC - ONE)
0834 & / ( ONE + EXP( (AREApreTH(I,J) - tmpscal0)*tmpscal1 ) )
dc54d31829 Ian *0835
4dd39c50d9 Mart*0836
0837
0838
0839
0840
0841
dc54d31829 Ian *0842
4dd39c50d9 Mart*0843 F_mi(I,J) = - tmpscal2 * (surf_theta - tempFrz) * MLTF
dc54d31829 Ian *0844
0845 IceGrowthRateMixedLayer (I,J) = F_mi(I,J) * QI
0846
0847 ENDDO
0848 ENDDO
0849 #ifdef ALLOW_AUTODIFF_TAMC
2383f7d4e9 Mart*0850
0851
dc54d31829 Ian *0852
2383f7d4e9 Mart*0853
edb6656069 Mart*0854
2383f7d4e9 Mart*0855
edb6656069 Mart*0856
2383f7d4e9 Mart*0857 # ifdef SEAICE_GROWTH_ADX_STORE_MORE
0858
edb6656069 Mart*0859
2383f7d4e9 Mart*0860
edb6656069 Mart*0861
2383f7d4e9 Mart*0862
edb6656069 Mart*0863
2383f7d4e9 Mart*0864 # endif
0865
0866 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0867
0868
0869 DO J=1,sNy
0870 DO I=1,sNx
0871
0872 S_h(I,J) =
0873 & NetExistingIceGrowthRate(I,J) * AREApreTH(I,J)
0874 & + IceGrowthRateOpenWater(I,J) * (ONE - AREApreTH(I,J))
0875 & + IceGrowthRateMixedLayer(I,J)
0876
0877
0878
0879
0880 S_hsnow(I,J) = AREApreTH(I,J) *
0881 & ( SnowAccRateOverIce(I,J) - SnowMeltRateFromSurface(I,J))
0882
0883 ENDDO
0884 ENDDO
2383f7d4e9 Mart*0885 #ifdef ALLOW_AUTODIFF_TAMC
0886
0887
edb6656069 Mart*0888
2383f7d4e9 Mart*0889
0890 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *0891
0892 #ifdef ALLOW_SALT_PLUME
4dd39c50d9 Mart*0893 # ifdef SALT_PLUME_IN_LEADS
0894
0895 tmpscal0 = 5. _d 0 / (ONE - SPinflectionPoint)
0896
0897
dc54d31829 Ian *0898 DO J=1,sNy
0899 DO I=1,sNx
0900
4dd39c50d9 Mart*0901
0902
0903
0904
dc54d31829 Ian *0905
4dd39c50d9 Mart*0906
0907
0908
0909
0910
0911
0912
0913
dc54d31829 Ian *0914
4dd39c50d9 Mart*0915
0916
0917
0918
0919
0920
0921
0922
0923
0924
0925
0926 IF (AREApreTH(I,J) .GT. ZERO .OR. S_h(I,J) .GT. ZERO ) THEN
0927
0928 leadPlumeFraction(I,J) = ONE
0929 & / ( ONE + EXP( ( SPinflectionPoint - AREApreTH(I,J) )
0930 & * tmpscal0 )
0931 & )
0932
0933
0934 IceGrowthRateInLeads(I,J) = max( ZERO,
0935 & (ONE - AREApreTH(I,J)) * IceGrowthRateOpenWater(I,J))
0936
0937 saltPlumeFlux(I,J,bi,bj) = leadPlumeFraction(I,J) *
0938 & HEFFM(I,J,bi,bj)*IceGrowthRateInLeads(I,J)*
0939 & ICE2WATR*rhoConstFresh*
0940 & (salt(I,J,kSurface,bi,bj) - SEAICE_salt0)
0941 ELSE
0942
0943 saltPlumeFlux(I,J,bi,bj) = ZERO
0944
0945 ENDIF
dc54d31829 Ian *0946
0947 ENDDO
0948 ENDDO
0949 #endif /* SALT_PLUME_IN_LEADS */
0950 #endif /* ALLOW_SALT_PLUME */
0951
0952
0953 DO J=1,sNy
0954 DO I=1,sNx
0955
0956 S_a(I,J) = 0. _d 0
0957
4dd39c50d9 Mart*0958
0959
0960
0961
dc54d31829 Ian *0962
4dd39c50d9 Mart*0963
0964
0965
0966
dc54d31829 Ian *0967
4dd39c50d9 Mart*0968 tmpscal0 = 0.5 _d 0 * recip_hiceActual(I,J)
dc54d31829 Ian *0969
0970
0971
0972
0973 S_a_IGROW(I,J) = ZERO
0974
0975
0976 IF ( IceGrowthRateOpenWater(I,J) .GT. ZERO) THEN
4dd39c50d9 Mart*0977 IF ( AREApreTH(I,J) .GT. ZERO .OR.
0978 & S_h(I,J) .GT. ZERO ) THEN
0979
0980
0981 IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN
0982 S_a_IGROW(I,J) = (ONE - AREApreTH(I,J)) *
0983 & IceGrowthRateOpenWater(I,J)*recip_HO_south
0984 ELSE
0985 S_a_IGROW(I,J) = (ONE - AREApreTH(I,J)) *
0986 & IceGrowthRateOpenWater(I,J)*recip_HO
dc54d31829 Ian *0987 ENDIF
4dd39c50d9 Mart*0988 ENDIF
dc54d31829 Ian *0989
0990
0991
0992 ELSE
4dd39c50d9 Mart*0993 S_a_IGROW(I,J) = tmpscal0 *
dc54d31829 Ian *0994 & IceGrowthRateOpenWater(I,J) * (ONE - AREApreTH(I,J))
0995 ENDIF
0996
0997 S_a(I,J) = S_a(I,J) + S_a_IGROW(I,J)
0998
0999
1000
1001
1002 S_a_IGRML(I,J) = ZERO
1003
1004 IF ( IceGrowthRateMixedLayer(I,J) .LE. ZERO) THEN
4dd39c50d9 Mart*1005 S_a_IGRML(I,J) = tmpscal0 * IceGrowthRateMixedLayer(I,J)
dc54d31829 Ian *1006 ENDIF
1007
1008 S_a(I,J) = S_a(I,J) + S_a_IGRML(I,J)
1009
1010
1011
1012
1013
1014 S_a_IGRNE(I,J) = ZERO
4dd39c50d9 Mart*1015 IF ( NetExistingIceGrowthRate(I,J) .LE. ZERO .AND.
1016 & HEFFpreTH(I,J) .GT. ZERO ) THEN
dc54d31829 Ian *1017
4dd39c50d9 Mart*1018 S_a_IGRNE(I,J) =
dc54d31829 Ian *1019 & tmpscal0 * NetExistingIceGrowthRate(I,J) * AREApreTH(I,J)
1020
1021 ENDIF
1022
1023 S_a(I,J) = S_a(I,J) + S_a_IGRNE(I,J)
1024
2383f7d4e9 Mart*1025 ENDDO
1026 ENDDO
dc54d31829 Ian *1027
2383f7d4e9 Mart*1028
dc54d31829 Ian *1029 DO J=1,sNy
1030 DO I=1,sNx
4dd39c50d9 Mart*1031 HEFF(I,J,bi,bj) = HEFFpreTH(I,J) +
6b47d550f4 Mart*1032 & SEAICE_deltaTtherm * S_h(I,J) * HEFFM(I,J,bi,bj)
dc54d31829 Ian *1033
4dd39c50d9 Mart*1034 AREA(I,J,bi,bj) = AREApreTH(I,J) +
6b47d550f4 Mart*1035 & SEAICE_deltaTtherm * S_a(I,J) * HEFFM(I,J,bi,bj)
dc54d31829 Ian *1036
4dd39c50d9 Mart*1037 HSNOW(I,J,bi,bj) = HSNWpreTH(I,J) +
6b47d550f4 Mart*1038 & SEAICE_deltaTtherm * S_hsnow(I,J) * HEFFM(I,J,bi,bj)
dc54d31829 Ian *1039 ENDDO
1040 ENDDO
1041
2383f7d4e9 Mart*1042 #ifdef ALLOW_AUTODIFF_TAMC
1043
edb6656069 Mart*1044
1045
1046
2383f7d4e9 Mart*1047
1048 #endif /* ALLOW_AUTODIFF_TAMC */
dc54d31829 Ian *1049 DO J=1,sNy
4dd39c50d9 Mart*1050 DO I=1,sNx
1051
1052 tmpscal0 = AREA(I,J,bi,bj)
1053 AREA(I,J,bi,bj) = MIN(ONE, tmpscal0)
1054 tmpscal1 = AREA(I,J,bi,bj)
1055 AREA(I,J,bi,bj) = MAX(ZERO, tmpscal1)
1056 tmpscal2 = HEFF(I,J,bi,bj)
1057 HEFF(I,J,bi,bj) = MAX(ZERO, tmpscal2)
1058 tmpscal3 = HSNOW(I,J,bi,bj)
1059 HSNOW(I,J,bi,bj) = MAX(ZERO, tmpscal3)
1060
1061
1062 IF ( HEFF(I,J,bi,bj) .LE. ZERO .OR.
1063 & AREA(I,J,bi,bj) .LE. ZERO ) THEN
1064
1065 AREA(I,J,bi,bj) = 0. _d 0
1066 HEFF(I,J,bi,bj) = 0. _d 0
1067 HSNOW(I,J,bi,bj) = 0. _d 0
dc54d31829 Ian *1068
4dd39c50d9 Mart*1069 ENDIF
dc54d31829 Ian *1070
4dd39c50d9 Mart*1071 ENDDO
1072 ENDDO
dc54d31829 Ian *1073
1074 DO J=1,sNy
4dd39c50d9 Mart*1075 DO I=1,sNx
dc54d31829 Ian *1076
1077
1078 #ifdef SHORTWAVE_HEATING
4dd39c50d9 Mart*1079 QSW(I,J,bi,bj) =
dc54d31829 Ian *1080 & QSWI(I,J) * ( AREApreTH(I,J)) +
1081 & QSWO(I,J) * (ONE - AREApreTH(I,J))
1082 #else
4dd39c50d9 Mart*1083 QSW(I,J,bi,bj) = 0. _d 0
dc54d31829 Ian *1084 #endif
4dd39c50d9 Mart*1085 ENDDO
1086 ENDDO
1087
1088 DO J=1,sNy
1089 DO I=1,sNx
dc54d31829 Ian *1090
4dd39c50d9 Mart*1091
1092 ActualNewTotalVolumeChange(I,J) =
1093 & HEFF(I,J,bi,bj) - HEFFpreTH(I,J)
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103 ActualNewTotalSnowMelt(I,J) =
1104 & HSNWpreTH(I,J) +
1105 & SnowAccOverIce(I,J) -
1106 & HSNOW(I,J,bi,bj)
1107
1108
1109 EnergyInNewTotalIceVolume(I,J) =
1110 & ActualNewTotalVolumeChange(I,J)*recip_QI
dc54d31829 Ian *1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
4dd39c50d9 Mart*1126 NetEnergyFluxOutOfOcean(I,J) = SEAICE_deltaTtherm *
dc54d31829 Ian *1127 & ( AREApreTH(I,J) *
1128 & (F_ia_net(I,J) + F_io_net(I,J) + QSWI(I,J))
1129 & + ( ONE - AREApreTH(I,J)) * F_ao(I,J))
1130
1131
1132
1133
1134
1135
4dd39c50d9 Mart*1136 ResidualEnergyOutOfOcean(I,J) =
dc54d31829 Ian *1137 & NetEnergyFluxOutOfOcean(I,J) -
1138 & EnergyInNewTotalIceVolume(I,J)
1139
1140
1141
1142
1143
4dd39c50d9 Mart*1144 QNET(I,J,bi,bj) =
1145 & ResidualEnergyOutOfOcean(I,J) * recip_deltaTtherm
dc54d31829 Ian *1146
4dd39c50d9 Mart*1147
1148
1149
1150
1151
1152
1153
1154 IF (salt(I,J,kSurface,bi,bj) .GE. SEAICE_salt0 .AND.
1155 & salt(I,J,kSurface,bi,bj) .GT. 0. _d 0) THEN
dc54d31829 Ian *1156
4dd39c50d9 Mart*1157 FreshwaterContribFromIce(I,J) =
dc54d31829 Ian *1158 & - ActualNewTotalVolumeChange(I,J) *
4dd39c50d9 Mart*1159 & rhoIce2rhoFresh
dc54d31829 Ian *1160
1161
4dd39c50d9 Mart*1162 ELSE
1163
1164
1165 FreshwaterContribFromIce(I,J) =
dc54d31829 Ian *1166 & -ActualNewTotalVolumeChange(I,J) *
4dd39c50d9 Mart*1167 & rhoIce2rhoFresh
1168 ENDIF
dc54d31829 Ian *1169
1170 tmpscal3 = max( 0. _d 0,
1171 & min(SEAICE_salt0,salt(I,J,kSurface,bi,bj)) )
4dd39c50d9 Mart*1172
1173 tmpscal2 = (ActualNewTotalVolumeChange(I,J)+
dc54d31829 Ian *1174 & SIheffNeg(I,J,bi,bj)+
1175 & 0.0 )
1176 & * tmpscal3
1177 & * HEFFM(I,J,bi,bj)
4dd39c50d9 Mart*1178 & * recip_deltaTtherm * SEAICE_rhoIce
dc54d31829 Ian *1179
4dd39c50d9 Mart*1180
1181 saltflux(I,J,bi,bj) = tmpscal2
dc54d31829 Ian *1182
1183
4dd39c50d9 Mart*1184
1185
1186
1187
1188 FreshwaterContribFromSnowMelt(I,J) =
1189 & ActualNewTotalSnowMelt(I,J)*rhoSnow2rhoFresh
dc54d31829 Ian *1190
1191
1192
1193
1194
4dd39c50d9 Mart*1195 EmPmR(I,J,bi,bj) = HEFFM(I,J,bi,bj)*(
1196 & ( EVAP(I,J,bi,bj) - PRECIP(I,J,bi,bj) )
1197 & * ( ONE - AREApreTH(I,J) )
1198 & - PrecipRateOverIceSurfaceToSea(I,J)*AREApreTH(I,J)
dc54d31829 Ian *1199 #ifdef ALLOW_RUNOFF
4dd39c50d9 Mart*1200 & - RUNOFF(I,J,bi,bj)
dc54d31829 Ian *1201 #endif
4dd39c50d9 Mart*1202 & - (FreshwaterContribFromIce(I,J) +
1203 & FreshwaterContribFromSnowMelt(I,J))
1204 & *recip_deltaTtherm ) * rhoConstFresh
1205 & +( SIheffNeg(I,J,bi,bj)*SEAICE_rhoIce
1206 & + SIhsnwNeg(I,J,bi,bj)*SEAICE_rhoSnow)
1207 & *recip_deltaTtherm * HEFFM(I,J,bi,bj)
1208
dc54d31829 Ian *1209 ENDDO
1210 ENDDO
1211
1212
1213
d73d15cdef antn*1214
1215 IF(SEAICEuseFlooding) THEN
1216 #ifdef ALLOW_AUTODIFF_TAMC
1217
1218
1219
1220
1221 #endif /* ALLOW_AUTODIFF_TAMC */
1222
1223 DO J=1,sNy
1224 DO I=1,sNx
1225 tmpscal0 = ( HSNOW(I,J,bi,bj)*SEAICE_rhoSnow
1226 & +HEFF(I,J,bi,bj)*SEAICE_rhoIce )*recip_rhoConst
1227 d_HEFFbyFLOODING(I,J) = MAX(0. _d 0,tmpscal0-HEFF(I,J,bi,bj))
1228 HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + d_HEFFbyFLOODING(I,J)
1229 HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)
1230 & - d_HEFFbyFLOODING(I,J)*ICE2SNOW
1231
1232 ENDDO
1233 ENDDO
1234
1235 ENDIF
1236 #ifdef ALLOW_DIAGNOSTICS
1237 IF (useDiagnostics) THEN
1238 tmpscal1=1. _d 0 * recip_deltaTtherm
1239 CALL DIAGNOSTICS_SCALE_FILL(d_HEFFbyFLOODING,
1240 & tmpscal1,1,'SIdHbFLO',0,1,3,bi,bj,myThid)
1241 ENDIF
1242 #endif /* ALLOW_DIAGNOSTICS */
1243
4dd39c50d9 Mart*1244
1245
dc54d31829 Ian *1246 IF ( useRealFreshWaterFlux ) THEN
1247 DO J=1,sNy
1248 DO I=1,sNx
1249 #ifdef SEAICE_CAP_ICELOAD
1250 tmpscal1 = HEFF(I,J,bi,bj)*SEAICE_rhoIce
1251 & + HSNOW(I,J,bi,bj)*SEAICE_rhoSnow
1252 tmpscal2 = MIN(tmpscal1,heffTooHeavy*rhoConst)
1253 #else
1254 tmpscal2 = HEFF(I,J,bi,bj)*SEAICE_rhoIce
1255 & + HSNOW(I,J,bi,bj)*SEAICE_rhoSnow
1256 #endif
1257 sIceLoad(i,j,bi,bj) = tmpscal2
1258 ENDDO
1259 ENDDO
1260 ENDIF
1261
d73d15cdef antn*1262
1263
1264
1265
1266 #ifdef ALLOW_DIAGNOSTICS
1267 IF (useDiagnostics) THEN
1268 DO J=1,sNy
1269 DO I=1,sNx
1270 SItflux(I,J,bi,bj) = 0.0 +
1271
1272
1273
1274
1275 & NetEnergyFluxOutOfOcean(I,J)*recip_deltaTtherm
1276 & *HEFFM(I,J,bi,bj)
1277 & +(SIheffNeg(I,J,bi,bj)*recip_QI
1278 & +( SIhsnwNeg(I,J,bi,bj) - ActualNewTotalSnowMelt(I,J)
1279 & + SnowAccOverIce(I,J) )*recip_QS)
1280 & * recip_deltaTtherm * HEFFM(I,J,bi,bj)
1281
1282 SIatmFW(I,J,bi,bj) = HEFFM(I,J,bi,bj)*(
1283 & EVAP(I,J,bi,bj)*( ONE - AREApreTH(I,J) )
1284 & - PRECIP(I,J,bi,bj)
1285 #ifdef ALLOW_RUNOFF
1286 & - RUNOFF(I,J,bi,bj)
1287 #endif /* ALLOW_RUNOFF */
1288 & )*rhoConstFresh
1289 ENDDO
1290 ENDDO
1291
1292 IF (useRealFreshWaterFlux.AND.(nonlinFreeSurf.NE.0)) THEN
1293 DO J=1,sNy
1294 DO I=1,sNx
1295
1296 SIeprflx(I,J,bi,bj) = -EmPmR(I,J,bi,bj)
1297 & * HeatCapacity_Cp *theta(I,J,kSurface,bi,bj)
1298 ENDDO
1299 ENDDO
1300
1301
1302 ENDIF
1303 ENDIF
1304 #endif /* ALLOW_DIAGNOSTICS */
1305
dc54d31829 Ian *1306 #ifdef SEAICE_DEBUG
4dd39c50d9 Mart*1307 DO j=1,sNy
1308 DO i=1,sNx
1309
1310 IF ( (i .EQ. SEAICE_debugPointI) .and.
1311 & (j .EQ. SEAICE_debugPointJ) ) THEN
1312
1313 print *,'ifice: myTime,myIter:',myTime,myIter
1314
1315 print '(A,2i4,2(1x,1P3E15.4))',
1316 & 'ifice i j -------------- ',i,j
1317
1318 print '(A,2i4,2(1x,1P3E15.4))',
1319 & 'ifice i j F(mi ao), rHIA ',
1320 & i,j, F_mi(i,j), F_ao(i,j),
1321 & recip_hiceActual(i,j)
1322
1323 print '(A,2i4,2(1x,1P3E15.4))',
1324 & 'ifice i j Fi(a,ant2/1 ont)',
1325 & i,j, F_ia(i,j),
1326 & F_ia_net_before_snow(i,j),
1327 & F_ia_net(i,j),
1328 & F_io_net(i,j)
1329
1330 print '(A,2i4,2(1x,1P3E15.4))',
1331 & 'ifice i j AREA2/1 HEFF2/1 ',i,j,
1332 & AREApreTH(I,J),
1333 & AREA(i,j,bi,bj),
1334 & HEFFpreTH(I,J),
1335 & HEFF(i,j,bi,bj)
1336
1337 print '(A,2i4,2(1x,1P3E15.4))',
1338 & 'ifice i j HSNOW2/1 TMX ',i,j,
1339 & HSNWpreTH(I,J),
1340 & HSNOW(I,J,bi,bj),
1341 & theta(I,J,kSurface,bi,bj)
1342
1343 print '(A,2i4,2(1x,1P3E15.4))',
1344 & 'ifice i j TI ATP LWD ',i,j,
1345 & TICES(i,j,1, bi,bj) - celsius2k,
1346 & ATEMP(i,j,bi,bj) - celsius2k,
1347 & LWDOWN(i,j,bi,bj)
1348
1349 print '(A,2i4,2(1x,1P3E15.4))',
1350 & 'ifice i j S_a(tot,OW,ML,NE',i,j,
1351 & S_a(i,j),
1352 & S_a_IGROW(I,J),
1353 & S_a_IGRML(I,J),
1354 & S_a_IGRNE(I,J)
1355
1356 print '(A,2i4,2(1x,1P3E15.4))',
1357 & 'ifice i j S_a S_h S_hsnow ',i,j,
1358 & S_a(i,j),
1359 & S_h(i,j),
1360 & S_hsnow(i,j)
1361
1362 print '(A,2i4,2(1x,1P3E15.4))',
1363 & 'ifice i j IGR(ML OW ICE) ',i,j,
1364 & IceGrowthRateMixedLayer(i,j),
1365 & IceGrowthRateOpenWater(i,j),
1366 & NetExistingIceGrowthRate(i,j)
1367
1368 print '(A,2i4,2(1x,1P3E15.4))',
1369 & 'ifice i j IVC(A ENIN) ',i,j,
1370 & ActualNewTotalVolumeChange(i,j),
1371 & EnergyInNewTotalIceVolume(i,j)
1372
1373
1374 print '(A,2i4,2(1x,1P3E15.4))',
1375 & 'ifice i j EF(NOS RE) QNET ',i,j,
1376 & NetEnergyFluxOutOfOcean(i,j),
1377 & ResidualEnergyOutOfOcean(i,j),
1378 & QNET(I,J,bi,bj)
1379
1380 print '(A,2i4,3(1x,1P3E15.4))',
1381 & 'ifice i j QSW QSWO QSWI ',i,j,
1382 & QSW(i,j,bi,bj),
1383 & QSWO(i,j),
1384 & QSWI(i,j)
dc54d31829 Ian *1385
1386
1387
1388
1389
8e32c48b8f Mart*1390
dc54d31829 Ian *1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
4dd39c50d9 Mart*1408 print '(A,2i4,3(1x,1P3E15.4))',
1409 & 'ifice i j EmPmR EVP PRE RU',i,j,
1410 & EmPmR(I,J,bi,bj),
1411 & EVAP(I,J,bi,bj),
1412 & PRECIP(I,J,bi,bj),
1413 & RUNOFF(I,J,bi,bj)
1414
1415 print '(A,2i4,3(1x,1P3E15.4))',
1416 & 'ifice i j PRROIS,SAOI(R .)',i,j,
1417 & PrecipRateOverIceSurfaceToSea(I,J),
1418 & SnowAccRateOverIce(I,J),
1419 & SnowAccOverIce(I,J)
1420
1421 print '(A,2i4,4(1x,1P3E15.4))',
1422 & 'ifice i j SM(PM PMR . .R) ',i,j,
1423 & PotSnowMeltFromSurf(I,J),
1424 & PotSnowMeltRateFromSurf(I,J),
1425 & SnowMeltFromSurface(I,J),
1426 & SnowMeltRateFromSurface(I,J)
1427
1428 print '(A,2i4,4(1x,1P3E15.4))',
1429 & 'ifice i j TotSnwMlt ',i,j,
1430 & ActualNewTotalSnowMelt(I,J)
dc54d31829 Ian *1431
1432
4dd39c50d9 Mart*1433 print '(A,2i4,4(1x,1P3E15.4))',
1434 & 'ifice i j fw(CFICE, CFSM) ',i,j,
1435 & FreshwaterContribFromIce(I,J),
1436 & FreshwaterContribFromSnowMelt(I,J)
dc54d31829 Ian *1437
4dd39c50d9 Mart*1438 print '(A,2i4,2(1x,1P3E15.4))',
1439 & 'ifice i j -------------- ',i,j
dc54d31829 Ian *1440
4dd39c50d9 Mart*1441 ENDIF
dc54d31829 Ian *1442
4dd39c50d9 Mart*1443 ENDDO
1444 ENDDO
dc54d31829 Ian *1445 #endif /* SEAICE_DEBUG */
1446
1447
1448 ENDDO
1449 ENDDO
1450
1451 #ifdef ALLOW_DIAGNOSTICS
1452 IF ( useDiagnostics ) THEN
1453
1454
1455
4dd39c50d9 Mart*1456 CALL DIAGNOSTICS_FILL(SItflux, 'SItflux ',0,1,0,1,1,myThid)
a4e168e012 antn*1457 CALL DIAGNOSTICS_FILL(SIeprflx,'SIeprflx',0,1,0,1,1,myThid)
dc54d31829 Ian *1458
d73d15cdef antn*1459
4dd39c50d9 Mart*1460 tmpscal1= - 1. _d 0
1461 CALL DIAGNOSTICS_SCALE_FILL(SIatmFW,
1462 & tmpscal1,1,'SIatmFW ',0,1,0,1,1,myThid)
dc54d31829 Ian *1463 ENDIF
1464 #endif /* ALLOW_DIAGNOSTICS */
1465
1466 #else /* ALLOW_EXF and ALLOW_ATM_TEMP */
4dd39c50d9 Mart*1467 STOP 'SEAICE_GROWTH_ADX not compiled with EXF and ALLOW_ATM_TEMP'
dc54d31829 Ian *1468 #endif /* ALLOW_EXF and ALLOW_ATM_TEMP */
5337b47ce7 Jean*1469 #endif /* SEAICE_USE_GROWTH_ADX */
dc54d31829 Ian *1470
1471 RETURN
1472 END