| 48 |
C number of surface interface layer |
C number of surface interface layer |
| 49 |
INTEGER kSurface |
INTEGER kSurface |
| 50 |
|
|
| 51 |
|
_RL mymin_R8, mymax_R8 |
| 52 |
|
external mymin_R8, mymax_R8 |
| 53 |
|
|
| 54 |
if ( buoyancyRelation .eq. 'OCEANICP' ) then |
if ( buoyancyRelation .eq. 'OCEANICP' ) then |
| 55 |
kSurface = Nr |
kSurface = Nr |
| 56 |
else |
else |
| 102 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
| 103 |
DO J=1,sNy |
DO J=1,sNy |
| 104 |
DO I=1,sNx |
DO I=1,sNx |
| 105 |
AR(I,J,bi,bj)=MIN(AREA(I,J,2,bi,bj), |
AR(I,J,bi,bj)=MYMIN_R8(AREA(I,J,2,bi,bj), |
| 106 |
& HEFF(I,J,2,bi,bj)*1.0 _d +04) |
& HEFF(I,J,2,bi,bj)*1.0 _d +04) |
| 107 |
ENDDO |
ENDDO |
| 108 |
ENDDO |
ENDDO |
| 126 |
YNEG(I,J,bi,bj)=(theta(I,J,1,bi,bj)-TBC)*.01 |
YNEG(I,J,bi,bj)=(theta(I,J,1,bi,bj)-TBC)*.01 |
| 127 |
& *dRf(1)/72.0764 _d 0 |
& *dRf(1)/72.0764 _d 0 |
| 128 |
GHEFF(I,J)=HEFF(I,J,1,bi,bj) |
GHEFF(I,J)=HEFF(I,J,1,bi,bj) |
| 129 |
HEFF(I,J,1,bi,bj)=MAX(ZERO,HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj)) |
HEFF(I,J,1,bi,bj)=MYMAX_R8(ZERO,HEFF(I,J,1,bi,bj)-YNEG(I,J,bi,bj)) |
| 130 |
YNEG(I,J,bi,bj)=GHEFF(I,J)-HEFF(I,J,1,bi,bj) |
YNEG(I,J,bi,bj)=GHEFF(I,J)-HEFF(I,J,1,bi,bj) |
| 131 |
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)-YNEG(I,J,bi,bj) |
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)-YNEG(I,J,bi,bj) |
| 132 |
C-- Now convert YNEG back to deg K. |
C-- Now convert YNEG back to deg K. |
| 221 |
DO I=1,sNx |
DO I=1,sNx |
| 222 |
GHEFF(I,J)=-SEAICE_deltaTtherm*FHEFF(I,J,bi,bj)*Q0 |
GHEFF(I,J)=-SEAICE_deltaTtherm*FHEFF(I,J,bi,bj)*Q0 |
| 223 |
GAREA(I,J)=SEAICE_deltaTtherm*FO(I,J,bi,bj)*Q0 |
GAREA(I,J)=SEAICE_deltaTtherm*FO(I,J,bi,bj)*Q0 |
| 224 |
GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J)) |
GHEFF(I,J)=-ONE*MYMIN_R8(HEFF(I,J,1,bi,bj),GHEFF(I,J)) |
| 225 |
GAREA(I,J)=MAX(ZERO,GAREA(I,J)) |
GAREA(I,J)=MYMAX_R8(ZERO,GAREA(I,J)) |
| 226 |
HCORR(I,J,bi,bj)=MIN(ZERO,GHEFF(I,J)) |
HCORR(I,J,bi,bj)=MYMIN_R8(ZERO,GHEFF(I,J)) |
| 227 |
ENDDO |
ENDDO |
| 228 |
ENDDO |
ENDDO |
| 229 |
DO J=1,sNy |
DO J=1,sNy |
| 240 |
DO I=1,sNx |
DO I=1,sNx |
| 241 |
GHEFF(I,J)=-SEAICE_deltaTtherm* |
GHEFF(I,J)=-SEAICE_deltaTtherm* |
| 242 |
& FICE(I,J,bi,bj)*Q0*AR(I,J,bi,bj) |
& FICE(I,J,bi,bj)*Q0*AR(I,J,bi,bj) |
| 243 |
GHEFF(I,J)=-ONE*MIN(HEFF(I,J,1,bi,bj),GHEFF(I,J)) |
GHEFF(I,J)=-ONE*MYMIN_R8(HEFF(I,J,1,bi,bj),GHEFF(I,J)) |
| 244 |
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)+GHEFF(I,J) |
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)+GHEFF(I,J) |
| 245 |
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)+GHEFF(I,J) |
SEAICE_SALT(I,J,bi,bj)=SEAICE_SALT(I,J,bi,bj)+GHEFF(I,J) |
| 246 |
C NOW CALCULATE QNETI UNDER ICE IF ANY |
C NOW CALCULATE QNETI UNDER ICE IF ANY |
| 330 |
DO J=1,sNy |
DO J=1,sNy |
| 331 |
DO I=1,sNx |
DO I=1,sNx |
| 332 |
C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS |
C NOW SET AREA(I,J,1,bi,bj)=0 WHERE NO ICE IS |
| 333 |
AREA(I,J,1,bi,bj)=MIN(AREA(I,J,1,bi,bj) |
AREA(I,J,1,bi,bj)=MYMIN_R8(AREA(I,J,1,bi,bj) |
| 334 |
& ,HEFF(I,J,1,bi,bj)/.0001 _d 0) |
& ,HEFF(I,J,1,bi,bj)/.0001 _d 0) |
| 335 |
ENDDO |
ENDDO |
| 336 |
ENDDO |
ENDDO |
| 342 |
DO I=1,sNx |
DO I=1,sNx |
| 343 |
C NOW TRUNCATE AREA |
C NOW TRUNCATE AREA |
| 344 |
#ifdef DO_WE_NEED_THIS |
#ifdef DO_WE_NEED_THIS |
| 345 |
AREA(I,J,1,bi,bj)=MIN(ONE,AREA(I,J,1,bi,bj)) |
AREA(I,J,1,bi,bj)=MYMIN_R8(ONE,AREA(I,J,1,bi,bj)) |
| 346 |
ENDDO |
ENDDO |
| 347 |
ENDDO |
ENDDO |
| 348 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
| 351 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
| 352 |
DO J=1,sNy |
DO J=1,sNy |
| 353 |
DO I=1,sNx |
DO I=1,sNx |
| 354 |
AREA(I,J,1,bi,bj)=MAX(ZERO,AREA(I,J,1,bi,bj)) |
AREA(I,J,1,bi,bj)=MYMAX_R8(ZERO,AREA(I,J,1,bi,bj)) |
| 355 |
HSNOW(I,J,bi,bj)=MAX(ZERO,HSNOW(I,J,bi,bj)) |
HSNOW(I,J,bi,bj)=MYMAX_R8(ZERO,HSNOW(I,J,bi,bj)) |
| 356 |
#endif |
#endif |
| 357 |
AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)*HEFFM(I,J,bi,bj) |
AREA(I,J,1,bi,bj)=AREA(I,J,1,bi,bj)*HEFFM(I,J,bi,bj) |
| 358 |
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)*HEFFM(I,J,bi,bj) |
HEFF(I,J,1,bi,bj)=HEFF(I,J,1,bi,bj)*HEFFM(I,J,bi,bj) |
| 359 |
#ifdef DO_WE_NEED_THIS |
#ifdef DO_WE_NEED_THIS |
| 360 |
c HEFF(I,J,1,bi,bj)=MIN(MAX_HEFF,HEFF(I,J,1,bi,bj)) |
c HEFF(I,J,1,bi,bj)=MYMIN_R8(MAX_HEFF,HEFF(I,J,1,bi,bj)) |
| 361 |
#endif |
#endif |
| 362 |
HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)*HEFFM(I,J,bi,bj) |
HSNOW(I,J,bi,bj)=HSNOW(I,J,bi,bj)*HEFFM(I,J,bi,bj) |
| 363 |
ENDDO |
ENDDO |