C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/src/correction_step.F,v 1.10 1998/11/06 22:44:45 cnh Exp $ #include "CPP_OPTIONS.h" C /==========================================================\ C | S/R CORRECTION_STEP | C | o Corrects the horizontal flow fields with the surface | C | slope. | C \==========================================================/ SUBROUTINE CORRECTION_STEP( bi, bj, iMin, iMax, jMin, jMax, I K, etaSurfX, etaSurfY, I myCurrentTime, myThid ) IMPLICIT NONE ! Common #include "SIZE.h" #include "DYNVARS.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "CG2D.h" C == Routine Arguments == C etaSurfX, etaSurfY - Surface slope C bi,bj,iMin,iMax,jMin,jMax, K - Loop counters C myThid - Instance number for C this call to S/R CORRECTION_STEP C myCurrentTime - Current simulation time for this instance. _RL etaSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy) _RL etaSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy) INTEGER bi,bj,iMin,iMax,jMin,jMax INTEGER K INTEGER myThid _RL myCurrentTime C == Local variables == INTEGER i,j _RL hxFac,hyFac,rRhoNil C On/off scaling paramters hxFac = pfFacMom hyFac = pfFacMom C Step forward zonal velocity DO j=jMin,jMax DO i=iMin,iMax uVel(i,j,k,bi,bj)=( gUNm1(i,j,k,bi,bj) & -deltaTmom*hxFac*gBaro*etaSurfX(i,j) & )*_maskW(i,j,k,bi,bj) gUNm1(i,j,k,bi,bj)=gU(i,j,k,bi,bj) ENDDO ENDDO C Step forward meridional velocity DO j=jMin,jMax DO i=iMin,iMax vVel(i,j,k,bi,bj)=( gVNm1(i,j,k,bi,bj) & -deltaTmom*hyFac*gBaro*etaSurfY(i,j) & )*_maskS(i,j,k,bi,bj) gVNm1(i,j,k,bi,bj)=gV(i,j,k,bi,bj) ENDDO ENDDO C Rotate theta/gT/gTnm1 IF ( tempStepping ) THEN DO j=jMin,jMax DO i=iMin,iMax theta(i,j,k,bi,bj)=gTNm1(i,j,k,bi,bj) gTNm1(i,j,k,bi,bj)=gT(i,j,k,bi,bj) ENDDO ENDDO ENDIF C Rotate salt/gS/gSnm1 IF ( saltStepping ) THEN DO j=jMin,jMax DO i=iMin,iMax salt(i,j,k,bi,bj)=gSNm1(i,j,k,bi,bj) gSNm1(i,j,k,bi,bj)=gS(i,j,k,bi,bj) ENDDO ENDDO ENDIF RETURN END