/[MITgcm]/MITgcm/pkg/mom_fluxform/mom_v_del2v.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_fluxform/mom_v_del2v.F

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

revision 1.2 by adcroft, Tue May 29 14:01:38 2001 UTC revision 1.9 by jmc, Tue May 3 19:50:30 2011 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4  #include "CPP_OPTIONS.h"  #include "MOM_FLUXFORM_OPTIONS.h"
5    
6    CBOP
7    C !ROUTINE: MOM_V_DEL2V
8    
9    C !INTERFACE: ==========================================================
10        SUBROUTINE MOM_V_DEL2V(        SUBROUTINE MOM_V_DEL2V(
11       I        bi,bj,k,       I        bi,bj,k,
12       I        vFld, hFacZ,       I        vFld, hFacZ,
13       O        del2v,       O        del2v,
14       I        myThid)       I        myThid)
       IMPLICIT NONE  
 C  
 C     Calculate horizontal del^2 of vFld  
 C       - is not vector invariant ...  
 C  
15    
16  C     == Global variables ==  C !DESCRIPTION:
17    C Calculates the Laplacian of meridional flow
18    
19    C !USES: ===============================================================
20          IMPLICIT NONE
21  #include "SIZE.h"  #include "SIZE.h"
22  #include "EEPARAMS.h"  #include "EEPARAMS.h"
23  #include "PARAMS.h"  #include "PARAMS.h"
24  #include "GRID.h"  #include "GRID.h"
25    #include "SURFACE.h"
26    
27  C     == Routine arguments ==  C !INPUT PARAMETERS: ===================================================
28    C  bi,bj                :: tile indices
29    C  k                    :: vertical level
30    C  vFld                 :: meridional flow
31    C  hFacZ                :: fractional thickness at vorticity points
32    C  myThid               :: thread number`
33        INTEGER bi,bj,k        INTEGER bi,bj,k
34        _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
35        _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
       _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
36        INTEGER myThid        INTEGER myThid
37    C !OUTPUT PARAMETERS: ==================================================
38    C  del2v                :: Laplacian
39          _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
40    
41  C     == Local variables ==  C !LOCAL VARIABLES: ====================================================
42    C  i,j                  :: loop indices
43        INTEGER I,J        INTEGER I,J
44        _RL fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45        _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
46        _RS hFacZClosedE,hFacZClosedW        _RS hFacZClosedE,hFacZClosedW
47    CEOP
48    
49  C     Zonal flux d/dx V  C     Zonal flux d/dx V
50        DO j=1-Oly,sNy+Oly        DO j=1-Oly+1,sNy+Oly-1
51         DO i=1-Olx+1,sNx+Olx         DO i=1-Olx+1,sNx+Olx
52          fZon(i,j) = drF(k)*hFacZ(i,j)          fZon(i,j) = drF(k)*hFacZ(i,j)
53       &   *_dyU(i,j,bi,bj)       &   *_dyU(i,j,bi,bj)
54       &   *_recip_dxV(i,j,bi,bj)       &   *_recip_dxV(i,j,bi,bj)
55       &   *(vFld(i,j)-vFld(i-1,j))       &   *(vFld(i,j)-vFld(i-1,j))
56  #ifdef COSINEMETH_III  #ifdef COSINEMETH_III
57       &   *sqcosFacV(J,bi,bj)       &   *sqCosFacV(J,bi,bj)
58  #endif  #endif
59    c    &   *deepFacC(k)        ! dyU scaling factor
60    c    &   *recip_deepFacC(k)  ! recip_dxV scaling factor
61         ENDDO         ENDDO
62        ENDDO        ENDDO
63    
64  C     Meridional flux d/dy V  C     Meridional flux d/dy V
65        DO j=1-Oly,sNy+Oly-1        DO j=1-Oly,sNy+Oly-1
66         DO i=1-Olx,sNx+Olx         DO i=1-Olx+1,sNx+Olx-1
67          fMer(i,j) = drF(k)*_hFacC(i,j,k,bi,bj)          fMer(i,j) = drF(k)*_hFacC(i,j,k,bi,bj)
68       &   *_dxF(i,j,bi,bj)       &   *_dxF(i,j,bi,bj)
69       &   *_recip_dyF(i,j,bi,bj)       &   *_recip_dyF(i,j,bi,bj)
70       &   *(vFld(i,j+1)-vFld(i,j))       &   *(vFld(i,j+1)-vFld(i,j))
71    #if (defined (ISOTROPIC_COS_SCALING) && defined (COSINEMETH_III))
72         &   *sqCosFacU(J,bi,bj)
73    #endif
74    #ifdef ALLOW_OBCS
75         &   *maskInC(i,j,bi,bj)
76    #endif
77    c    &   *deepFacC(k)        ! dxF scaling factor
78    c    &   *recip_deepFacC(k)  ! recip_dyF scaling factor
79         ENDDO         ENDDO
80        ENDDO        ENDDO
81    
82  C     del^2 U  C     del^2 V
83        DO j=0,sNy+2        DO j=1-Oly+1,sNy+Oly-1
84         DO i=0,sNx+1         DO i=1-Olx+1,sNx+Olx-1
85          del2v(i,j) = recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)          del2v(i,j) =
86       &  *recip_rAs(i,j,bi,bj)       &   recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
87         &  *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
88       &  *( fZon(i+1,j)    - fZon(i, j )       &  *( fZon(i+1,j)    - fZon(i, j )
89       &    +fMer( i ,j)    - fMer(i,j-1)       &    +fMer( i ,j)    - fMer(i,j-1)
90       &   )*_maskS(i,j,k,bi,bj)       &   )*_maskS(i,j,k,bi,bj)
91    #ifdef ALLOW_OBCS
92         &    *maskInS(i,j,bi,bj)
93    #endif
94         ENDDO         ENDDO
95        ENDDO        ENDDO
96    
97        IF (no_slip_sides) THEN        IF (no_slip_sides) THEN
98  C-- No-slip BCs impose a drag at walls...  C-- No-slip BCs impose a drag at walls...
99        DO j=0,sNy+2         DO j=1-Oly+1,sNy+Oly-1
100         DO i=0,sNx+1          DO i=1-Olx+1,sNx+Olx-1
101          hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)  #ifdef NONLIN_FRSURF
102          hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)  C-    this will not give any side-drag along thin wall.
103          del2v(i,j) = del2v(i,j)  C     (but this might just be what we want ...)
104       &  -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k)           hFacZClosedW = h0FacS(i,j,k,bi,bj) - h0FacS(i-1,j,k,bi,bj)
105       &  *recip_rAs(i,j,bi,bj)           hFacZClosedE = h0FacS(i,j,k,bi,bj) - h0FacS(i+1,j,k,bi,bj)
106       &   *( hFacZClosedW*dyU( i ,j,bi,bj)           hFacZClosedW = MAX( 0. _d 0, hFacZClosedW )
107       &      *_recip_dxV( i ,j,bi,bj)           hFacZClosedE = MAX( 0. _d 0, hFacZClosedE )
108       &     +hFacZClosedE*dyU(i+1,j,bi,bj)  #else
109       &      *_recip_dxV(i+1,j,bi,bj)           hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
110       &    )*drF(k)*2.*vFld(i,j)           hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
111       &      *_maskS(i,j,k,bi,bj)  #endif
112             del2v(i,j) = del2v(i,j)
113         &    -_recip_hFacS(i,j,k,bi,bj)
114         &       *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
115         &       *( hFacZClosedW*dyU( i ,j,bi,bj)
116         &                      *_recip_dxV( i ,j,bi,bj)
117         &         +hFacZClosedE*dyU(i+1,j,bi,bj)
118         &                      *_recip_dxV(i+1,j,bi,bj)
119         &        )*vFld(i,j)*sideDragFactor
120         &         *_maskS(i,j,k,bi,bj)
121            ENDDO
122         ENDDO         ENDDO
       ENDDO  
123        ENDIF        ENDIF
124    
125        RETURN        RETURN

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22