C $Header: /u/gcmpack/MITgcm/model/src/freeze_surface.F,v 1.7 2006/06/07 01:55:13 heimbach Exp $ C $Name: $ #include "PACKAGES_CONFIG.h" #include "CPP_OPTIONS.h" CBOP C !ROUTINE: FREEZE_SURFACE C !INTERFACE: SUBROUTINE FREEZE_SURFACE( myTime, myIter, myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R FREEZE_SURFACE C | o Check water temperature and limit range of temperature C | appropriately. C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DYNVARS.h" #include "GRID.h" #include "FFIELDS.h" C !INPUT/OUTPUT PARAMETERS: C == Routine Arguments == C myTime - Current time in simulation C myIter - Current iteration number in simulation C myThid :: Thread no. that called this routine. _RL myTime INTEGER myIter INTEGER myThid C !LOCAL VARIABLES: C == Local variables == C Tfreezing :: Freezing threshold temperature. INTEGER bi,bj,i,j,k _RL Tfreezing CEOP IF ( usingPCoords ) THEN k = Nr ELSE k = 1 ENDIF Tfreezing = -1.9 _d 0 C Check for water that should have frozen DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx IF (theta(i,j,k,bi,bj) .LT. Tfreezing) THEN surfaceForcingTice(i,j,bi,bj) = & ( Tfreezing - theta(i,j,k,bi,bj) ) & *drF(k)*_hFacC(i,j,k,bi,bj) / dTtracerLev(k) theta(i,j,k,bi,bj) = Tfreezing ELSE surfaceForcingTice(i,j,bi,bj) = 0. _d 0 ENDIF ENDDO ENDDO ENDDO ENDDO RETURN END