--- MITgcm/pkg/thsice/thsice_main.F 2003/11/23 01:20:13 1.1 +++ MITgcm/pkg/thsice/thsice_main.F 2004/04/07 23:40:34 1.2 @@ -1,14 +1,16 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/thsice/thsice_main.F,v 1.1 2003/11/23 01:20:13 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/thsice/thsice_main.F,v 1.2 2004/04/07 23:40:34 jmc Exp $ C $Name: $ #include "THSICE_OPTIONS.h" +CBOP C !ROUTINE: THSICE_MAIN C !INTERFACE: SUBROUTINE THSICE_MAIN( I myTime, myIter, myThid ) +C !DESCRIPTION: \bv C *==========================================================* -C | SUBROUTINE THSICE_MAIN +C | S/R THSICE_MAIN C | o Therm_SeaIce main routine. C | step forward Thermodynamic_SeaIce variables and modify C | ocean surface forcing accordingly. @@ -16,13 +18,19 @@ C !USES: IMPLICIT NONE + C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" +#include "GRID.h" +#include "DYNVARS.h" #include "FFIELDS.h" #include "THSICE_PARAMS.h" -#include "THSICE.h" +#include "THSICE_VARS.h" +#ifdef ALLOW_BULK_FORCE +#include "BULKF.h" +#endif C !INPUT/OUTPUT PARAMETERS: C === Routine arguments === @@ -32,6 +40,7 @@ _RL myTime INTEGER myIter INTEGER myThid +CEOP #ifdef ALLOW_THSICE C !LOCAL VARIABLES: @@ -40,6 +49,9 @@ INTEGER bi,bj INTEGER iMin, iMax INTEGER jMin, jMax + _RL prcAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) + _RL evpAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy) + _RL flxSW (1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL tauFac @@ -59,11 +71,43 @@ DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) + + DO j = jMin, jMax + DO i = iMin, iMax + hOceMxL(i,j,bi,bj) = hfacC(i,j,1,bi,bj)*drF(1) + tOceMxL(i,j,bi,bj) = theta(i,j,1,bi,bj) + sOceMxL(i,j,bi,bj) = salt (i,j,1,bi,bj) + v2ocMxL(i,j,bi,bj) = + & ( uvel(i,j,1,bi,bj)*uvel(i,j,1,bi,bj) + & + uvel(i+1,j,1,bi,bj)*uvel(i+1,j,1,bi,bj) + & + vvel(i,j+1,1,bi,bj)*vvel(i,j+1,1,bi,bj) + & + vvel(i,j,1,bi,bj)*vvel(i,j,1,bi,bj) + & )*0.5 _d 0 + prcAtm(i,j) = 0. + evpAtm(i,j) = 0. + flxSW (i,j) = 0. + snowPrc(i,j,bi,bj) = 0. _d 0 +#ifdef ALLOW_BULK_FORCE + prcAtm(i,j) = ( rain(i,j,bi,bj)+runoff(i,j,bi,bj) )*rhofw + flxSW (i,j) = solar(i,j,bi,bj) + IF ( iceMask(i,j,bi,bj).GT.0. _d 0 + & .AND. Tair(i,j,bi,bj).LE.Tf0kel ) THEN + snowPrc(i,j,bi,bj) = rain(i,j,bi,bj)*rhofw + ENDIF +#endif + ENDDO + ENDDO + CALL THSICE_STEP_FWD( I bi, bj, iMin, iMax, jMin, jMax, + I prcAtm, + U evpAtm, flxSW, I myTime, myIter, myThid ) - IF ( thSIce_taveFreq .GT. 0. _d 0 ) - & CALL THSICE_AVE( bi,bj, mythid ) + + CALL THSICE_AVE( + I evpAtm, flxSW, + I bi,bj, myTime, myIter, myThid ) + c ENDDO c ENDDO