108 |
_RL d_HFRWfromSNW (1:sNx,1:sNy) |
_RL d_HFRWfromSNW (1:sNx,1:sNy) |
109 |
|
|
110 |
C actual ice thickness with upper and lower limit |
C actual ice thickness with upper and lower limit |
111 |
_RL HICE (1:sNx,1:sNy) |
_RL heffActual (1:sNx,1:sNy) |
112 |
C actual snow thickness |
C actual snow thickness |
113 |
_RL hSnwLoc (1:sNx,1:sNy) |
_RL hsnowActual (1:sNx,1:sNy) |
114 |
C wind speed |
C wind speed |
115 |
_RL UG (1:sNx,1:sNy) |
_RL UG (1:sNx,1:sNy) |
116 |
_RL SPEED_SQ |
_RL SPEED_SQ |
117 |
C local copy of AREA |
C temporary variables used to compute/regularize "actual" thicknesses |
118 |
_RL areaLoc |
_RL areaSup,areaMin,hiceMin |
119 |
|
|
120 |
c temporary variables available for the various computations |
c temporary variables available for the various computations |
121 |
_RL tmpscal1, tmpscal2, tmpscal3, tmpscal4 |
_RL tmpscal1, tmpscal2, tmpscal3, tmpscal4 |
129 |
#endif /* ALLOW_SEAICE_FLOODING */ |
#endif /* ALLOW_SEAICE_FLOODING */ |
130 |
|
|
131 |
#ifdef SEAICE_SALINITY |
#ifdef SEAICE_SALINITY |
132 |
_RL saltFluxAdjust(1:sNx,1:sNy) |
_RL saltFluxAdjust (1:sNx,1:sNy) |
133 |
#endif |
#endif |
134 |
|
|
135 |
#ifdef SEAICE_MULTICATEGORY |
#ifdef SEAICE_MULTICATEGORY |
136 |
INTEGER it |
INTEGER it |
137 |
INTEGER ilockey |
INTEGER ilockey |
138 |
_RL RK |
_RL RK |
139 |
_RL HICEP (1:sNx,1:sNy) |
_RL heffActualP (1:sNx,1:sNy) |
140 |
_RL a_QbyATMmult_cover (1:sNx,1:sNy) |
_RL a_QbyATMmult_cover (1:sNx,1:sNy) |
141 |
_RL a_QSWbyATMmult_cover (1:sNx,1:sNy) |
_RL a_QSWbyATMmult_cover(1:sNx,1:sNy) |
142 |
#endif |
#endif |
143 |
|
|
144 |
#ifdef SEAICE_AGE |
#ifdef SEAICE_AGE |
145 |
C old_AREA :: hold sea-ice fraction field before any seaice-thermo update |
C old_AREA :: hold sea-ice fraction field before any seaice-thermo update |
146 |
_RL old_AREA (1:sNx,1:sNy) |
_RL old_AREA (1:sNx,1:sNy) |
147 |
# ifdef SEAICE_AGE_VOL |
# ifdef SEAICE_AGE_VOL |
148 |
C old_HEFF :: hold sea-ice effective thickness field before any seaice-thermo update |
C old_HEFF :: hold sea-ice effective thickness field before any seaice-thermo update |
149 |
_RL old_HEFF (1:sNx,1:sNy) |
_RL old_HEFF (1:sNx,1:sNy) |
150 |
_RL age_actual |
_RL age_actual |
151 |
# endif /* SEAICE_AGE_VOL */ |
# endif /* SEAICE_AGE_VOL */ |
152 |
#endif /* SEAICE_AGE */ |
#endif /* SEAICE_AGE */ |
163 |
kSurface = 1 |
kSurface = 1 |
164 |
ENDIF |
ENDIF |
165 |
|
|
166 |
|
C MINIMUM AREA USED TO REGULARIZE SEAICE_SOLVE4TEMP COMPUTATION |
167 |
|
areaMin=A22 |
168 |
|
C The default of A22 = 0.15 is a common threshold for defining |
169 |
|
C the ice edge. This ice concentration usually does not occur |
170 |
|
C due to thermodynamics but due to advection. |
171 |
|
C MINIMUM THICKNESS USED TO REGULARIZE SEAICE_SOLVE4TEMP COMPUTATION |
172 |
|
hiceMin=0.05 _d +00 |
173 |
|
|
174 |
C FREEZING TEMP. OF SEA WATER (deg C) |
C FREEZING TEMP. OF SEA WATER (deg C) |
175 |
TBC = SEAICE_freeze |
TBC = SEAICE_freeze |
176 |
|
|
293 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
294 |
DO J=1,sNy |
DO J=1,sNy |
295 |
DO I=1,sNx |
DO I=1,sNx |
296 |
C COMPUTE ACTUAL ICE THICKNESS AND PUT MINIMUM/MAXIMUM |
C COMPUTE ACTUAL ICE/SNOW THICKNESS AND PUT MINIMA |
297 |
C ON ICE THICKNESS FOR BUDGET COMPUTATION |
C TO REGULARIZE SEAICE_SOLVE4TEMP COMPUTATION |
298 |
C The default of A22 = 0.15 is a common threshold for defining |
areaSup = MAX(areaMin,AREANm1(I,J,bi,bj)) |
299 |
C the ice edge. This ice concentration usually does not occur |
hsnowActual(I,J) = HSNOW(I,J,bi,bj)/areaSup |
300 |
C due to thermodynamics but due to advection. |
heffActual(I,J) = HEFFNm1(I,J,bi,bj)/areaSup |
301 |
areaLoc = MAX(A22,AREANm1(I,J,bi,bj)) |
heffActual(I,J) = MAX(heffActual(I,J),hiceMin) |
|
HICE(I,J) = HEFFNm1(I,J,bi,bj)/areaLoc |
|
|
C Do we know what this is for? |
|
|
HICE(I,J) = MAX(HICE(I,J),0.05 _d +00) |
|
302 |
C Capping the actual ice thickness effectively enforces a |
C Capping the actual ice thickness effectively enforces a |
303 |
C minimum of heat flux through the ice and helps getting rid of |
C minimum of heat flux through the ice and helps getting rid of |
304 |
C very thick ice. |
C very thick ice. |
305 |
cdm actually, this does exactly the opposite, i.e., ice is thicker |
cdm actually, this does exactly the opposite, i.e., ice is thicker |
306 |
cdm when HICE is capped, so I am commenting out |
cdm when heffActual is capped, so I am commenting out |
307 |
cdm HICE(I,J) = MIN(HICE(I,J),9.0 _d +00) |
cdm heffActual(I,J) = MIN(heffActual(I,J),9.0 _d +00) |
|
hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/areaLoc |
|
308 |
ENDDO |
ENDDO |
309 |
ENDDO |
ENDDO |
310 |
|
|
315 |
C ocean surface/mixed layer temperature |
C ocean surface/mixed layer temperature |
316 |
DO J=1,sNy |
DO J=1,sNy |
317 |
DO I=1,sNx |
DO I=1,sNx |
318 |
TMIX(I,J,bi,bj)=theta(I,J,kSurface,bi,bj)+273.16 _d +00 |
TMIX(I,J,bi,bj)=theta(I,J,kSurface,bi,bj)+celsius2K |
|
#ifdef SEAICE_DEBUG |
|
|
TMIX(I,J,bi,bj)=MAX(TMIX(I,J,bi,bj),271.2 _d +00) |
|
|
#endif |
|
319 |
ENDDO |
ENDDO |
320 |
ENDDO |
ENDDO |
321 |
|
|
376 |
RK=REAL(IT) |
RK=REAL(IT) |
377 |
DO J=1,sNy |
DO J=1,sNy |
378 |
DO I=1,sNx |
DO I=1,sNx |
379 |
HICEP(I,J)=(HICE(I,J)/MULTDIM)*((2.0 _d 0*RK)-1.0 _d 0) |
heffActualP(I,J)= |
380 |
|
& (heffActual(I,J)/MULTDIM)*((2.0 _d 0*RK)-1.0 _d 0) |
381 |
TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj) |
TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj) |
382 |
ENDDO |
ENDDO |
383 |
ENDDO |
ENDDO |
384 |
CALL SEAICE_SOLVE4TEMP( |
CALL SEAICE_SOLVE4TEMP( |
385 |
I UG, HICEP, hSnwLoc, |
I UG, heffActualP, hsnowActual, |
386 |
U TICE, |
U TICE, |
387 |
O a_QbyATMmult_cover, a_QSWbyATMmult_cover, |
O a_QbyATMmult_cover, a_QSWbyATMmult_cover, |
388 |
I bi, bj, myTime, myIter, myThid ) |
I bi, bj, myTime, myIter, myThid ) |
400 |
C-- End loop over multi-categories |
C-- End loop over multi-categories |
401 |
#else /* SEAICE_MULTICATEGORY */ |
#else /* SEAICE_MULTICATEGORY */ |
402 |
CALL SEAICE_SOLVE4TEMP( |
CALL SEAICE_SOLVE4TEMP( |
403 |
I UG, HICE, hSnwLoc, |
I UG, heffActual, hsnowActual, |
404 |
U TICE, |
U TICE, |
405 |
O a_QbyATM_cover, a_QSWbyATM_cover, |
O a_QbyATM_cover, a_QSWbyATM_cover, |
406 |
I bi, bj, myTime, myIter, myThid ) |
I bi, bj, myTime, myIter, myThid ) |
421 |
ENDIF |
ENDIF |
422 |
#endif |
#endif |
423 |
|
|
424 |
|
c switch heat fluxes from W/m2 to 'effective' ice meters |
425 |
|
DO J=1,sNy |
426 |
|
DO I=1,sNx |
427 |
|
a_QbyATM_cover(I,J) = a_QbyATM_cover(I,J) |
428 |
|
& * convertQ2HI * areaNm1(I,J,bi,bj) |
429 |
|
a_QSWbyATM_cover(I,J) = a_QSWbyATM_cover(I,J) |
430 |
|
& * convertQ2HI * areaNm1(I,J,bi,bj) |
431 |
|
a_QbyATM_open(I,J) = a_QbyATM_open(I,J) |
432 |
|
& * convertQ2HI * ( ONE - areaNm1(I,J,bi,bj) ) |
433 |
|
a_QSWbyATM_open(I,J) = a_QSWbyATM_open(I,J) |
434 |
|
& * convertQ2HI * ( ONE - areaNm1(I,J,bi,bj) ) |
435 |
|
ENDDO |
436 |
|
ENDDO |
437 |
|
|
438 |
C determine whether the atmostpheric conditions are prone |
C determine whether the atmostpheric conditions are prone |
439 |
C to generate SNOW (FRWfromSNW=1) or fresh water (FRWfromSNW=2) |
C to generate SNOW (FRWfromSNW=1) or fresh water (FRWfromSNW=2) |
441 |
|
|
442 |
DO J=1,sNy |
DO J=1,sNy |
443 |
DO I=1,sNx |
DO I=1,sNx |
444 |
IF (a_QbyATM_cover(I,J).LT.ZERO.AND. |
IF (a_QbyATM_cover(I,J).GT.ZERO.AND. |
445 |
& AREANm1(I,J,bi,bj).GT.ZERO) THEN |
& AREANm1(I,J,bi,bj).GT.ZERO) THEN |
446 |
FRWfromSNW(I,J)=2 |
FRWfromSNW(I,J)=2 |
447 |
ELSE |
ELSE |
474 |
a_QbyICE(i,j) = SEAICE_availHeatFrac |
a_QbyICE(i,j) = SEAICE_availHeatFrac |
475 |
& * (theta(I,J,kSurface,bi,bj)-TBC) * dRf(kSurface) |
& * (theta(I,J,kSurface,bi,bj)-TBC) * dRf(kSurface) |
476 |
& * hFacC(i,j,kSurface,bi,bj) * |
& * hFacC(i,j,kSurface,bi,bj) * |
477 |
& (- HeatCapacity_Cp*rhoConst/SEAICE_deltaTtherm) |
& (HeatCapacity_Cp*rhoConst/QI) |
478 |
ELSE |
ELSE |
479 |
a_QbyICE(i,j) = SEAICE_availHeatFracFrz |
a_QbyICE(i,j) = SEAICE_availHeatFracFrz |
480 |
& * (theta(I,J,kSurface,bi,bj)-TBC) * dRf(kSurface) |
& * (theta(I,J,kSurface,bi,bj)-TBC) * dRf(kSurface) |
481 |
& * hFacC(i,j,kSurface,bi,bj) * |
& * hFacC(i,j,kSurface,bi,bj) * |
482 |
& (- HeatCapacity_Cp*rhoConst/SEAICE_deltaTtherm) |
& (HeatCapacity_Cp*rhoConst/QI) |
483 |
ENDIF |
ENDIF |
484 |
ELSE |
ELSE |
485 |
a_QbyICE(i,j) = 0. |
a_QbyICE(i,j) = 0. |
494 |
|
|
495 |
DO J=1,sNy |
DO J=1,sNy |
496 |
DO I=1,sNx |
DO I=1,sNx |
|
tmpscal1=a_QbyICE(i,j)*convertQ2HI |
|
497 |
d_HEFFbyICEonOCN(I,J) = |
d_HEFFbyICEonOCN(I,J) = |
498 |
& MAX(ZERO, HEFF(I,J,bi,bj)-tmpscal1)- HEFF(I,J,bi,bj) |
& MAX(ZERO, HEFF(I,J,bi,bj)-a_QbyICE(i,j))- HEFF(I,J,bi,bj) |
499 |
d_QbyICE(I,J)=d_HEFFbyICEonOCN(I,J)*convertHI2Q |
d_QbyICE(I,J)=d_HEFFbyICEonOCN(I,J) |
500 |
c apply tendency |
c apply tendency |
501 |
r_QbyICE(I,J)=a_QbyICE(I,J)+d_QbyICE(I,J) |
r_QbyICE(I,J)=a_QbyICE(I,J)+d_QbyICE(I,J) |
502 |
HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyICEonOCN(I,J) |
HEFF(I,J,bi,bj)=HEFF(I,J,bi,bj) + d_HEFFbyICEonOCN(I,J) |
531 |
DO J=1,sNy |
DO J=1,sNy |
532 |
DO I=1,sNx |
DO I=1,sNx |
533 |
c convert a_QbyATM_cover to m of snow |
c convert a_QbyATM_cover to m of snow |
534 |
tmpscal1=a_QbyATM_cover(I,J)* |
tmpscal1=a_QbyATM_cover(I,J)*(QI/QS) |
|
& convertQ2HI*(QI/QS)*AREANm1(I,J,bi,bj) |
|
535 |
IF ( FRWfromSNW(I,J).EQ.2 ) THEN |
IF ( FRWfromSNW(I,J).EQ.2 ) THEN |
536 |
IF(tmpscal1.LE.HSNOW(I,J,bi,bj)) THEN |
IF(tmpscal1.LE.HSNOW(I,J,bi,bj)) THEN |
537 |
C not enough heat to melt all snow; use up all of a_QbyATM_cover |
C not enough heat to melt all snow; use up all of a_QbyATM_cover |
541 |
d_QbyATMonSNW(I,J)= -a_QbyATM_cover(I,J) |
d_QbyATMonSNW(I,J)= -a_QbyATM_cover(I,J) |
542 |
ELSE |
ELSE |
543 |
C enough heat to melt snow completely; use part of a_QbyATM_cover |
C enough heat to melt snow completely; use part of a_QbyATM_cover |
544 |
d_QbyATMonSNW(I,J)= (tmpscal1-HSNOW(I,J,bi,bj))* |
d_QbyATMonSNW(I,J)= |
545 |
& (QS/QI)*convertHI2Q/AREANm1(I,J,bi,bj)-a_QbyATM_cover(I,J) |
& (tmpscal1-HSNOW(I,J,bi,bj))*(QS/QI) - a_QbyATM_cover(I,J) |
546 |
C convert all snow to melt water (fresh water flux) |
C convert all snow to melt water (fresh water flux) |
547 |
d_HFRWfromSNW(I,J)=-HSNOW(I,J,bi,bj)/ICE2SNOW |
d_HFRWfromSNW(I,J)=-HSNOW(I,J,bi,bj)/ICE2SNOW |
548 |
d_HSNWfromFRW(I,J)=-HSNOW(I,J,bi,bj) |
d_HSNWfromFRW(I,J)=-HSNOW(I,J,bi,bj) |
574 |
|
|
575 |
DO J=1,sNy |
DO J=1,sNy |
576 |
DO I=1,sNx |
DO I=1,sNx |
577 |
a_QbyATM(I,J)= a_QbyATM_cover(I,J) * AREANm1(I,J,bi,bj) |
a_QbyATM(I,J)= a_QbyATM_cover(I,J) + a_QbyATM_open(I,J) |
|
& + a_QbyATM_open(I,J) * (ONE-AREANm1(I,J,bi,bj)) |
|
578 |
ENDDO |
ENDDO |
579 |
ENDDO |
ENDDO |
580 |
|
|
599 |
|
|
600 |
DO J=1,sNy |
DO J=1,sNy |
601 |
DO I=1,sNx |
DO I=1,sNx |
|
tmpscal1 = a_QbyATM(I,J)*convertQ2HI |
|
602 |
c (cannot melt more than all the ice) |
c (cannot melt more than all the ice) |
603 |
tmpscal2 = -ONE*MIN(HEFF(I,J,bi,bj),tmpscal1) |
tmpscal2 = -ONE*MIN(HEFF(I,J,bi,bj),a_QbyATM(I,J)) |
604 |
tmpscal3 = MIN(ZERO,tmpscal2) |
tmpscal3 = MIN(ZERO,tmpscal2) |
605 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
606 |
DIAGarray(I,J) = tmpscal2 |
DIAGarray(I,J) = tmpscal2 |
607 |
#endif |
#endif |
608 |
C gain of new ice over open water (>0 by definition) |
C gain of new ice over open water (>0 by definition) |
609 |
tmpscal4 = MAX(ZERO,-a_QbyATM_open(I,J) |
tmpscal4 = MAX(ZERO,-a_QbyATM_open(I,J)) |
|
& *convertQ2HI*(ONE-AREANm1(I,J,bi,bj))) |
|
610 |
c compute cover fraction tendency |
c compute cover fraction tendency |
611 |
IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN |
IF ( YC(I,J,bi,bj) .LT. ZERO ) THEN |
612 |
d_AREAbyATM(I,J)= |
d_AREAbyATM(I,J)=tmpscal4/HO_south |
|
& tmpscal4/HO_south |
|
613 |
& +HALF*tmpscal3*AREANm1(I,J,bi,bj) |
& +HALF*tmpscal3*AREANm1(I,J,bi,bj) |
614 |
& /(HEFF(I,J,bi,bj)+.00001 _d 0) |
& /(HEFF(I,J,bi,bj)+.00001 _d 0) |
615 |
ELSE |
ELSE |
616 |
d_AREAbyATM(I,J)= |
d_AREAbyATM(I,J)=tmpscal4/HO |
|
& tmpscal4/HO |
|
617 |
& +HALF*tmpscal3*AREANm1(I,J,bi,bj) |
& +HALF*tmpscal3*AREANm1(I,J,bi,bj) |
618 |
& /(HEFF(I,J,bi,bj)+.00001 _d 0) |
& /(HEFF(I,J,bi,bj)+.00001 _d 0) |
619 |
ENDIF |
ENDIF |
648 |
|
|
649 |
DO J=1,sNy |
DO J=1,sNy |
650 |
DO I=1,sNx |
DO I=1,sNx |
|
tmpscal1 = -a_QbyATM_cover(I,J)*convertQ2HI*AREANm1(I,J,bi,bj) |
|
|
if (AREANm1(I,J,bi,bj).GT.0.) then |
|
651 |
C (cannot melt more than all the ice) |
C (cannot melt more than all the ice) |
652 |
tmpscal2 = MAX(-HEFF(I,J,bi,bj),tmpscal1) |
tmpscal2 = MIN(HEFF(I,J,bi,bj),a_QbyATM_cover(I,J)) |
653 |
d_HEFFbyATMonOCN(I,J)=tmpscal2 |
d_HEFFbyATMonOCN(I,J)= -tmpscal2 |
654 |
C compute the r_QbyATM_cover residual as the difference between |
C compute the r_QbyATM_cover residual as the difference between |
655 |
C the available heat tmpscal1 and the used tmpscal2; |
C the available heat tmpscal1 and the used tmpscal2; |
656 |
d_QbyATMonOCN(I,J)=1. _d 0 /AREANm1(I,J,bi,bj)* |
d_QbyATMonOCN(I,J)= |
657 |
& (tmpscal1 - tmpscal2)*convertHI2Q - a_QbyATM_cover(I,J) |
& (tmpscal2-a_QbyATM_cover(I,J)) - a_QbyATM_cover(I,J) |
|
else |
|
|
tmpscal2=0. _d 0 |
|
|
d_HEFFbyATMonOCN(I,J)=0. _d 0 |
|
|
d_QbyATMonOCN(I,J)=0. _d 0 |
|
|
endif |
|
658 |
c apply tendency |
c apply tendency |
659 |
r_QbyATM_cover(I,J) = a_QbyATM_cover(I,J)+d_QbyATMonOCN(I,J) |
r_QbyATM_cover(I,J) = a_QbyATM_cover(I,J)+d_QbyATMonOCN(I,J) |
660 |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + d_HEFFbyATMonOCN(I,J) |
HEFF(I,J,bi,bj) = HEFF(I,J,bi,bj) + d_HEFFbyATMonOCN(I,J) |
661 |
saltWtrIce(I,J,bi,bj) = saltWtrIce(I,J,bi,bj) + tmpscal2 |
saltWtrIce(I,J,bi,bj) = saltWtrIce(I,J,bi,bj) - tmpscal2 |
662 |
cgf heat and water conservation: ok |
cgf heat and water conservation: ok |
663 |
ENDDO |
ENDDO |
664 |
ENDDO |
ENDDO |
700 |
DO J=1,sNy |
DO J=1,sNy |
701 |
DO I=1,sNx |
DO I=1,sNx |
702 |
c convert r_QbyICE to ice meters |
c convert r_QbyICE to ice meters |
703 |
tmpscal1=r_QbyICE(i,j)*convertQ2HI |
IF( r_QbyICE(i,j) .GT. ZERO .AND. |
|
IF( tmpscal1 .GT. ZERO .AND. |
|
704 |
& HSNOW(I,J,bi,bj) .GT. ZERO ) THEN |
& HSNOW(I,J,bi,bj) .GT. ZERO ) THEN |
705 |
tmpscal2=- MIN( HSNOW(I,J,bi,bj)/ICE2SNOW , tmpscal1 ) |
tmpscal2=- MIN( HSNOW(I,J,bi,bj)/ICE2SNOW , r_QbyICE(i,j) ) |
706 |
ELSE |
ELSE |
707 |
tmpscal2= 0. _d 0 |
tmpscal2= 0. _d 0 |
708 |
ENDIF |
ENDIF |
709 |
d_HSNWbyOCNonSNW(I,J) = tmpscal2*ICE2SNOW |
d_HSNWbyOCNonSNW(I,J) = tmpscal2*ICE2SNOW |
710 |
d_QbySNW(I,J)= tmpscal2*convertHI2Q |
d_QbySNW(I,J)= tmpscal2 |
711 |
c apply tendency |
c apply tendency |
712 |
r_QbyICE(I,J)=a_QbyICE(I,J)+d_QbySNW(I,J) |
r_QbyICE(I,J)=a_QbyICE(I,J)+d_QbySNW(I,J) |
713 |
HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)+d_HSNWbyOCNonSNW(I,J) |
HSNOW(I,J,bi,bj) = HSNOW(I,J,bi,bj)+d_HSNWbyOCNonSNW(I,J) |
860 |
|
|
861 |
DO J=1,sNy |
DO J=1,sNy |
862 |
DO I=1,sNx |
DO I=1,sNx |
863 |
QNET(I,J,bi,bj) = r_QbyATM_cover(I,J) * AREANm1(I,J,bi,bj) |
QNET(I,J,bi,bj) = r_QbyATM_cover(I,J) + a_QbyATM_open(I,J) |
864 |
& +a_QbyATM_open(I,J) * (ONE-AREANm1(I,J,bi,bj)) |
QSW(I,J,bi,bj) = a_QSWbyATM_cover(I,J) + a_QSWbyATM_open(I,J) |
|
QSW(I,J,bi,bj) = a_QSWbyATM_cover(I,J) * AREANm1(I,J,bi,bj) |
|
|
& +a_QSWbyATM_open(I,J) * (ONE-AREANm1(I,J,bi,bj)) |
|
865 |
ENDDO |
ENDDO |
866 |
ENDDO |
ENDDO |
867 |
|
|
900 |
ENDDO |
ENDDO |
901 |
ENDDO |
ENDDO |
902 |
|
|
|
#ifdef SEAICE_DEBUG |
|
|
CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid ) |
|
|
CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid ) |
|
|
CALL PLOT_FIELD_XYRL( EmPmR,'Current EmPmR ', myIter, myThid ) |
|
|
#endif /* SEAICE_DEBUG */ |
|
|
|
|
903 |
|
|
904 |
C treat values of ice cover fraction oustide |
C treat values of ice cover fraction oustide |
905 |
C the [0 1] range, and other such issues. |
C the [0 1] range, and other such issues. |
1076 |
# endif /* SEAICE_AGE_VOL */ |
# endif /* SEAICE_AGE_VOL */ |
1077 |
#endif /* SEAICE_AGE */ |
#endif /* SEAICE_AGE */ |
1078 |
|
|
1079 |
|
c switch heat fluxes from 'effective' ice meters to W/m2 |
1080 |
|
|
1081 |
|
DO J=1,sNy |
1082 |
|
DO I=1,sNx |
1083 |
|
QNET(I,J,bi,bj) = QNET(I,J,bi,bj)*convertHI2Q |
1084 |
|
QSW(I,J,bi,bj) = QSW(I,J,bi,bj)*convertHI2Q |
1085 |
|
ENDDO |
1086 |
|
ENDDO |
1087 |
|
|
1088 |
|
#ifdef SEAICE_DEBUG |
1089 |
|
CALL PLOT_FIELD_XYRL( QSW,'Current QSW ', myIter, myThid ) |
1090 |
|
CALL PLOT_FIELD_XYRL( QNET,'Current QNET ', myIter, myThid ) |
1091 |
|
CALL PLOT_FIELD_XYRL( EmPmR,'Current EmPmR ', myIter, myThid ) |
1092 |
|
#endif /* SEAICE_DEBUG */ |
1093 |
|
|
1094 |
|
|
1095 |
ENDDO |
ENDDO |
1096 |
ENDDO |
ENDDO |
1097 |
|
|