--- MITgcm/pkg/ptracers/ptracers_integrate.F 2002/05/23 15:17:20 1.2 +++ MITgcm/pkg/ptracers/ptracers_integrate.F 2002/06/24 18:47:10 1.5 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/ptracers/ptracers_integrate.F,v 1.2 2002/05/23 15:17:20 adcroft Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/ptracers/ptracers_integrate.F,v 1.5 2002/06/24 18:47:10 adcroft Exp $ C $Name: $ #include "PTRACERS_OPTIONS.h" @@ -21,6 +21,7 @@ IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" +#include "PARAMS.h" #include "PTRACERS.h" #include "GAD.h" @@ -68,6 +69,7 @@ INTEGER iMin,iMax,jMin,jMax INTEGER kUp,kDown,km1 _RL rFlx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,PTRACERS_num) + LOGICAL calcAdvection CEOP C Loop over tracers @@ -95,6 +97,10 @@ C Calculate active tracer tendencies (gPtr) due to internal processes C (advection, [explicit] diffusion, parameterizations,...) + calcAdvection = .NOT.multiDimAdvection + & .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND + & .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD + & .OR. PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH CALL GAD_CALC_RHS( I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown, I xA,yA,uTrans,vTrans,rTrans,maskUp, @@ -103,13 +109,14 @@ I KappaRtr, I pTracer(1-Olx,1-Oly,1,1,1,iTracer), I GAD_TR1, - I PTRACERS_advScheme(iTracer), + I PTRACERS_advScheme(iTracer),calcAdvection, U rFlx(1-Olx,1-Oly,1,iTracer), U gPtr(1-Olx,1-Oly,1,1,1,iTracer), I myThid ) C External forcing term(s) - CALL PTRACERS_FORCING( + IF ( forcing_In_AB ) + & CALL PTRACERS_FORCING( I bi,bj,k,iTracer, U gPtr(1-Olx,1-Oly,1,1,1,iTracer), I myIter,myTime,myThid) @@ -125,6 +132,13 @@ I myIter,myThid ) ENDIF +C External forcing term(s) + IF ( .NOT.forcing_In_AB ) + & CALL PTRACERS_FORCING( + I bi,bj,k,iTracer, + U gPtr(1-Olx,1-Oly,1,1,1,iTracer), + I myIter,myTime,myThid) + #ifdef NONLIN_FRSURF C Account for change in level thickness IF (nonlinFreeSurf.GT.0) THEN @@ -132,6 +146,13 @@ I bi,bj,K, U gPtr(1-Olx,1-Oly,1,1,1,iTracer), I myThid ) + IF ( PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND + & .OR.PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD + & .OR.PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH ) + & CALL FREESURF_RESCALE_G( + I bi,bj,K, + U gPtrNm1(1-Olx,1-Oly,1,1,1,iTracer), + I myThid ) ENDIF #endif /* NONLIN_FRSURF */