/[MITgcm]/MITgcm/pkg/mom_vecinv/mom_vecinv.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_vecinv/mom_vecinv.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.36 by jmc, Wed Apr 6 18:42:12 2005 UTC revision 1.41 by jmc, Mon Jun 20 23:07:17 2005 UTC
# Line 66  C     myThid - Instance number for this Line 66  C     myThid - Instance number for this
66  #ifdef ALLOW_MOM_VECINV  #ifdef ALLOW_MOM_VECINV
67    
68  C     == Functions ==  C     == Functions ==
69        LOGICAL  DIFF_BASE_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
70        EXTERNAL DIFF_BASE_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
71    
72  C     == Local variables ==  C     == Local variables ==
73        _RL      vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL      vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 114  C--   (at least in part) Line 114  C--   (at least in part)
114        fVerV(1,1,kUp) = fVerV(1,1,kUp)        fVerV(1,1,kUp) = fVerV(1,1,kUp)
115  #endif  #endif
116    
117        writeDiag = DIFF_BASE_MULTIPLE(baseTime, diagFreq,        writeDiag = DIFFERENT_MULTIPLE(diagFreq, myTime, deltaTClock)
      &                               myTime, deltaTClock)  
118    
119  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
120        IF (useMNC .AND. snapshot_mnc .AND. writeDiag) THEN        IF (useMNC .AND. snapshot_mnc .AND. writeDiag) THEN
121          IF ((bi .EQ. 1).AND.(bj .EQ. 1).AND.(k .EQ. 1)) THEN          IF ((bi .EQ. 1).AND.(bj .EQ. 1).AND.(k .EQ. 1)) THEN
122            CALL MNC_CW_SET_UDIM('mom_vi', -1, myThid)            CALL MNC_CW_SET_UDIM('mom_vi', -1, myThid)
123            CALL MNC_CW_I_W_S('I','mom_vi',0,0,'T',myIter,myThid)            CALL MNC_CW_RL_W_S('D','mom_vi',0,0,'T',myTime,myThid)
124            CALL MNC_CW_SET_UDIM('mom_vi', 0, myThid)            CALL MNC_CW_SET_UDIM('mom_vi', 0, myThid)
125              CALL MNC_CW_I_W_S('I','mom_vi',0,0,'iter',myIter,myThid)
126          ENDIF          ENDIF
127          DO i = 1,9          DO i = 1,9
128            offsets(i) = 0            offsets(i) = 0
# Line 370  c      ENDDO Line 370  c      ENDDO
370  c     ENDIF  c     ENDIF
371    
372  C--   Horizontal Coriolis terms  C--   Horizontal Coriolis terms
373        IF (useCoriolis .AND. .NOT.useCDscheme  c     IF (useCoriolis .AND. .NOT.useCDscheme
374       &    .AND. .NOT. useAbsVorticity) THEN  c    &    .AND. .NOT. useAbsVorticity) THEN
375         CALL MOM_VI_CORIOLIS(bi,bj,k,uFld,vFld,hFacZ,r_hFacZ,  C- jmc: change it to keep the Coriolis terms when useAbsVorticity=T & momAdvection=F
376       &                      uCf,vCf,myThid)        IF ( useCoriolis .AND.
377         &     .NOT.( useCDscheme .OR. useAbsVorticity.AND.momAdvection )
378         &   ) THEN
379           IF (useAbsVorticity) THEN
380            CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,hFacZ,r_hFacZ,
381         &                         uCf,myThid)
382            CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,hFacZ,r_hFacZ,
383         &                         vCf,myThid)
384           ELSE
385            CALL MOM_VI_CORIOLIS(bi,bj,k,uFld,vFld,hFacZ,r_hFacZ,
386         &                       uCf,vCf,myThid)
387           ENDIF
388         DO j=jMin,jMax         DO j=jMin,jMax
389          DO i=iMin,iMax          DO i=iMin,iMax
390           gU(i,j,k,bi,bj) = uCf(i,j) - phxFac*dPhiHydX(i,j)           gU(i,j,k,bi,bj) = uCf(i,j) - phxFac*dPhiHydX(i,j)
# Line 404  C--   Horizontal Coriolis terms Line 415  C--   Horizontal Coriolis terms
415        ENDIF        ENDIF
416    
417        IF (momAdvection) THEN        IF (momAdvection) THEN
418  C--   Horizontal advection of relative vorticity  C--   Horizontal advection of relative (or absolute) vorticity
419         IF (useAbsVorticity) THEN         IF (highOrderVorticity.AND.useAbsVorticity) THEN
420            CALL MOM_VI_U_CORIOLIS_C4(bi,bj,k,vFld,omega3,r_hFacZ,
421         &                         uCf,myThid)
422           ELSEIF (highOrderVorticity) THEN
423            CALL MOM_VI_U_CORIOLIS_C4(bi,bj,k,vFld,vort3, r_hFacZ,
424         &                         uCf,myThid)
425           ELSEIF (useAbsVorticity) THEN
426          CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,hFacZ,r_hFacZ,          CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,hFacZ,r_hFacZ,
427       &                         uCf,myThid)       &                         uCf,myThid)
428         ELSE         ELSE
429          CALL MOM_VI_U_CORIOLIS(bi,bj,k,vFld,vort3,hFacZ,r_hFacZ,          CALL MOM_VI_U_CORIOLIS(bi,bj,k,vFld,vort3, hFacZ,r_hFacZ,
430       &                         uCf,myThid)       &                         uCf,myThid)
431         ENDIF         ENDIF
 c      CALL MOM_VI_U_CORIOLIS_C4(bi,bj,K,vFld,vort3,r_hFacZ,uCf,myThid)  
432         DO j=jMin,jMax         DO j=jMin,jMax
433          DO i=iMin,iMax          DO i=iMin,iMax
434           gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)           gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
435          ENDDO          ENDDO
436         ENDDO         ENDDO
437         IF (useAbsVorticity) THEN         IF (highOrderVorticity.AND.useAbsVorticity) THEN
438            CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,omega3,r_hFacZ,
439         &                         vCf,myThid)
440           ELSEIF (highOrderVorticity) THEN
441            CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,vort3, r_hFacZ,
442         &                         vCf,myThid)
443           ELSEIF (useAbsVorticity) THEN
444          CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,hFacZ,r_hFacZ,          CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,hFacZ,r_hFacZ,
445       &                         vCf,myThid)       &                         vCf,myThid)
446         ELSE         ELSE
447          CALL MOM_VI_V_CORIOLIS(bi,bj,k,uFld,vort3,hFacZ,r_hFacZ,          CALL MOM_VI_V_CORIOLIS(bi,bj,k,uFld,vort3, hFacZ,r_hFacZ,
448       &                         vCf,myThid)       &                         vCf,myThid)
449         ENDIF         ENDIF
 c      CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,vort3,r_hFacZ,vCf,myThid)  
450         DO j=jMin,jMax         DO j=jMin,jMax
451          DO i=iMin,iMax          DO i=iMin,iMax
452           gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)           gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
# Line 556  C--   Set du/dt & dv/dt on boundaries to Line 577  C--   Set du/dt & dv/dt on boundaries to
577          ENDIF          ENDIF
578  #endif /*  ALLOW_MNC  */  #endif /*  ALLOW_MNC  */
579        ENDIF        ENDIF
580          
581  #endif /* ALLOW_MOM_VECINV */  #endif /* ALLOW_MOM_VECINV */
582    
583        RETURN        RETURN

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.22