--- MITgcm/pkg/seaice/seaice_tracer_phys.F 2012/02/16 01:28:58 1.6 +++ MITgcm/pkg/seaice/seaice_tracer_phys.F 2014/08/23 20:22:16 1.11 @@ -1,20 +1,21 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/seaice/seaice_tracer_phys.F,v 1.6 2012/02/16 01:28:58 gforget Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/seaice/seaice_tracer_phys.F,v 1.11 2014/08/23 20:22:16 torge Exp $ C $Name: $ #include "SEAICE_OPTIONS.h" CStartOfInterface SUBROUTINE SEAICE_TRACER_PHYS( myTime, myIter, myThid ) -C /=======================================================\ -C | SUBROUTINE seaice_tracer_phys | -C | o Time step SItr/SItrEFF as a result of | -C | seaice thermodynamics and specific tracer physics | -C \=======================================================/ +C *=======================================================* +C | SUBROUTINE seaice_tracer_phys +C | o Time step SItr/SItrEFF as a result of +C | seaice thermodynamics and specific tracer physics +C *=======================================================* IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" +#include "PARAMS.h" #include "FFIELDS.h" #include "DYNVARS.h" #include "SEAICE_SIZE.h" @@ -70,7 +71,7 @@ ENDDO ENDDO c salinity tracer: - if ( (SItrName(iTr).EQ.'salinity').AND. + if ( (SItrName(iTr).EQ.'salinity').AND. & (SItrFromOceanFrac(iTr).GT.ZERO) ) then DO J=1,sNy DO I=1,sNx @@ -89,7 +90,7 @@ DIAGarray(I,J,5+(iTr-1)*5) = & HEFFprev*SItracer(i,j,bi,bj,iTr) + SItrBucket(i,j,bi,bj,iTr) #endif -c apply the sequence of thermodynamics increments to actual traceur +c apply the sequence of thermodynamics increments to actual tracer c (see seaice_growth.F) c (jTh=1 tendency due to ice-ocean interaction) c (jTh=2 tendency due to the atmosphere, over ice covered part) @@ -173,7 +174,6 @@ c "ice concentration" tracer: no specific process elseif (SItrName(iTr).EQ.'ridge') then c simple, made up, ice surface roughness index prototype -#ifndef SEAICE_GROWTH_LEGACY DO J=1,sNy DO I=1,sNx c ridging increases roughness @@ -187,17 +187,16 @@ SItracer(i,j,bi,bj,iTr)=SItracer(i,j,bi,bj,iTr)*tmpscal1 ENDDO ENDDO -#endif endif c 3) ice-ocean tracer exchange/mapping to external variables c ========================================================== #ifdef ALLOW_DIAGNOSTICS - if (SItrMate(iTr).EQ.'HEFF') then - WRITE(diagName,'(A4,I2.2,A2)') 'SItr',iTr,'FX' + IF ( useDiagnostics .AND. SItrMate(iTr).EQ.'HEFF') THEN + WRITE(diagName,'(A4,I2.2,A2)') 'SItr',iTr,'Fx' tmpscal1=-ONE/SEAICE_deltaTtherm*SEAICE_rhoIce - CALL DIAGNOSTICS_SCALE_FILL(SItrBucket(1-oLx,1-oLy,bi,bj,iTr), + CALL DIAGNOSTICS_SCALE_FILL(SItrBucket(1-OLx,1-OLy,bi,bj,iTr), & tmpscal1, 1, diagName,0,1,2,bi,bj,myThid) - endif + ENDIF #endif if ( (SItrName(iTr).EQ.'salinity').AND. @@ -210,13 +209,13 @@ c note: at this point of the time step, that is the correct sign #ifdef ALLOW_SALT_PLUME c should work for both constant and variable ice salinity -- to be tested - saltPlumeFlux(I,J,bi,bj) = MAX(ZERO,saltFlux(I,J,bi,bj)) + saltPlumeFlux(I,J,bi,bj) = MAX(ZERO,saltFlux(I,J,bi,bj)) & *SPsalFRAC*(salt(I,j,ks,bi,bj)-SItrFromOcean(i,j)) #endif ENDDO ENDDO endif - + DO J=1,sNy DO I=1,sNx #ifdef ALLOW_SITRACER_DEBUG_DIAG @@ -224,10 +223,12 @@ & *HEFFM(I,J,bi,bj)/SEAICE_deltaTtherm*SEAICE_rhoIce #endif c empty bucket - SItrBucket(i,j,bi,bj,iTr)=0. _d 0 +c but not for 'grease' (see seaice_growth.F) + if (SItrName(iTr).NE.'grease') + & SItrBucket(i,j,bi,bj,iTr)=0. _d 0 ENDDO ENDDO - + c TAF? elseif (SItrMate(iTr).EQ.'AREA') then c 4) diagnostics