I just wonder that is there anybody who used the ICE model without BULK_FLUX option? In the source file "ice_mk.h", stflx(:,:,items) variable is recalculated base on the ice coverage and the stflx argument is defined as intent(out). Maybe, i am wrong but it seems that the net heat flux is not conserved inside of the ice model. Right? If this is the case, net heat flux defined in the forcing file will not same with the output file (shflux variable). If i put a ifdef construct into the following part of the "ice_mk.h"
Code: Select all
...
...
#ifdef BULK_FLUXES <--- ADD
#ifdef ICESHELF
IF (zice(i,j).eq.0.0_r8) THEN
#endif
IF(ai(i,j,linew).LE.min_a(ng)) THEN
stflx(i,j,itemp) = qao_n(i,j)*fac_shflx
ELSE
#ifdef ICE_SHOREFAST
hh = h(i,j)+Zt_avg1(i,j)
clear = hh-0.9_r8*hi(i,j,liold)
clear = MAX(clear,0.0_r8)
IF (clear.lt.1.5_r8) THEN
fac_sf = MAX(clear-0.5_r8,0.0_r8)/1.0_r8
ELSE
fac_sf = 1.0_r8
END IF
stflx(i,j,itemp) = (1.0_r8-ai(i,j,linew))*qao_n(i,j) &
& *fac_shflx &
& +(ai(i,j,linew)*qio(i,j) &
& -xtot*hfus1(i,j))*fac_sf
#else
stflx(i,j,itemp) = (1.0_r8-ai(i,j,linew))*qao_n(i,j) &
& +ai(i,j,linew)*qio(i,j) &
& -xtot*hfus1(i,j)
#endif
#if defined WET_DRY && defined CAS
stflx(i,j,itemp) = stflx(i,j,itemp)*rmask_wet(i,j)
#endif
END IF
! Change stflx(i,j,itemp) back to ROMS convention
stflx(i,j,itemp) = -stflx(i,j,itemp) * rhocpr
#ifdef MASKING
stflx(i,j,itemp) = stflx(i,j,itemp)*rmask(i,j)
#endif
#ifdef WET_DRY
! stflx(i,j,itemp) = stflx(i,j,itemp)*rmask_wet(i,j)
#endif
...
...
#endif <--- ADD
Regards,
--ufuk