C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/salt_plume/salt_plume_forcing_surf.F,v 1.3 2009/06/15 23:42:46 dimitri Exp $ C $Name: checkpoint61q $ #include "SALT_PLUME_OPTIONS.h" CBOP C !ROUTINE: SALT_PLUME_FORCING_SURF C !INTERFACE: SUBROUTINE SALT_PLUME_FORCING_SURF( I bi, bj, iMin, iMax, jMin, jMax, I myTime,myIter,myThid ) C !DESCRIPTION: \bv C *==========================================================* C | S/R SALT_PLUME_FORCING_SURF C | o saltPlume is the amount of salt rejected by ice while freezing; C | it is here subtracted from surfaceForcingS and will be redistributed C | to multiple vertical levels later on as per Duffy et al. (GRL 1999) C *==========================================================* C \ev C !USES: IMPLICIT NONE C == Global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "FFIELDS.h" #include "DYNVARS.h" #include "SALT_PLUME.h" C !INPUT PARAMETERS: C bi,bj :: tile indices C myTime :: model time C myIter :: time-step number C myThid :: thread number INTEGER bi, bj, iMin, iMax, jMin, jMax _RL myTime INTEGER myIter INTEGER myThid CEOP #ifdef ALLOW_SALT_PLUME C !LOCAL VARIABLES: C i,j :: loop indices C ks :: surface level index INTEGER i, j, ks IF ( usingPCoords ) THEN ks = Nr ELSE ks = 1 ENDIF DO j = jMin, jMax DO i = iMin, iMax surfaceForcingS(i,j,bi,bj) = surfaceForcingS(i,j,bi,bj) & - saltPlumeFlux(i,j,bi,bj) * mass2rUnit ENDDO ENDDO IF ( .NOT. SaltPlumeSouthernOcean ) THEN DO j = jMin, jMax DO i = iMin, iMax IF ( YC(I,J,bi,bj) .LT. 0.0 _d 0 ) & saltPlumeFlux(i,j,bi,bj) = 0.0 _d 0 ENDDO ENDDO ENDIF #endif /* ALLOW_SALT_PLUME */ RETURN END