/[MITgcm]/MITgcm/pkg/mom_common/mom_hdissip.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_common/mom_hdissip.F

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

revision 1.1 by adcroft, Fri May 14 17:43:11 2004 UTC revision 1.2 by baylor, Thu Mar 10 03:45:11 2005 UTC
# Line 17  C       Dv = d/dx As Strain  - d/dy At T Line 17  C       Dv = d/dx As Strain  - d/dy At T
17    
18  C     == Global variables ==  C     == Global variables ==
19  #include "SIZE.h"  #include "SIZE.h"
20    #include "EEPARAMS.h"
21  #include "GRID.h"  #include "GRID.h"
22    #include "PARAMS.h"
23    
24  C     == Routine arguments ==  C     == Routine arguments ==
25        INTEGER bi,bj,k        INTEGER bi,bj,k
# Line 32  C     == Routine arguments == Line 34  C     == Routine arguments ==
34    
35  C     == Local variables ==  C     == Local variables ==
36        INTEGER I,J        INTEGER I,J
37          _RL viscA_t(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
38          _RL viscA_s(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
39          _RL ASmag, smagfac
40          _RL vg2Min, vg2Max, AlinMax, AlinMin
41    
42          IF (deltaTmom.NE.0.) THEN
43           vg2Min=viscAhGridMin/deltaTmom
44           vg2Max=viscAhGridMax/deltaTmom
45          ELSE
46           vg2Min=0.
47           vg2Max=0.
48          ENDIF
49    
50    C     - Calculate Smagorinsky Coefficients
51          smagfac=(viscC2smag/pi)**2
52          DO j=2-Oly,sNy+Oly-1
53           DO i=2-Olx,sNx+Olx-1
54            IF (viscC2smag.NE.0.) THEN
55             Asmag=smagfac*rA(i,j,bi,bj)
56         &    *sqrt(tension(i,j)**2
57         &          +0.25*(strain(i+1, j )**2+strain( i ,j+1)**2
58         &                +strain(i-1, j )**2+strain( i ,j-1)**2))
59             viscA_t(i,j)=min(viscAhMax,max(viscAt,Asmag))
60    
61             IF (vg2Max.GT.0.) THEN
62                AlinMax=vg2Max*(rA ( i , j ,bi,bj))
63                viscA_t(i,j)=min(AlinMax,viscA_t(i,j))
64             ENDIF
65             AlinMin=vg2Min*(rA ( i , j ,bi,bj))
66             viscA_t(i,j)=max(AlinMin,viscA_t(i,j))
67    
68             Asmag=smagfac*rAz(i,j,bi,bj)
69         &    *sqrt(strain(i,j)**2
70         &          +0.25*(tension( i , j )**2+tension( i ,j+1)**2
71         &                +tension(i+1, j )**2+tension(i+1,j+1)**2))
72             viscA_s(i,j)=min(viscAhMax,max(viscAs,Asmag))
73    
74             IF (vg2Max.GT.0.) THEN
75                AlinMax=vg2Max*(rAz( i , j ,bi,bj))
76                viscA_s(i,j)=min(AlinMax,viscA_s(i,j))
77             ENDIF
78             AlinMin=vg2Min*(rAz( i , j ,bi,bj))
79             viscA_s(i,j)=max(AlinMin,viscA_s(i,j))
80    
81            ELSE
82             viscA_t(i,j)=viscAt
83             viscA_s(i,j)=viscAs
84            ENDIF
85           ENDDO
86          ENDDO
87    
88  C     - Laplacian  and bi-harmonic terms  C     - Laplacian  and bi-harmonic terms
89        DO j=2-Oly,sNy+Oly-1        DO j=2-Oly,sNy+Oly-1
90         DO i=2-Olx,sNx+Olx-1         DO i=2-Olx,sNx+Olx-1
91    
92          uDissip(i,j) =          uDissip(i,j) =
93       &    viscAt       &   recip_dyg(i,j,bi,bj)*recip_dyg(i,j,bi,bj)
      &   *recip_dyg(i,j,bi,bj)*recip_dyg(i,j,bi,bj)  
94       &   *recip_dxc(i,j,bi,bj)       &   *recip_dxc(i,j,bi,bj)
95       &   *(       &   *(
96       &      dyf( i , j ,bi,bj)*dyf( i , j ,bi,bj)*tension( i , j )       &      dyf( i , j ,bi,bj)*dyf( i , j ,bi,bj)
97       &     -dyf(i-1, j ,bi,bj)*dyf(i-1, j ,bi,bj)*tension(i-1, j )       &        *viscA_t( i , j )*tension( i , j )
98         &     -dyf(i-1, j ,bi,bj)*dyf(i-1, j ,bi,bj)
99         &        *viscA_t(i-1, j )*tension(i-1, j )
100       &    )       &    )
101       &   +viscAs       &   +recip_dxc(i,j,bi,bj)*recip_dxc(i,j,bi,bj)
      &   *recip_dxc(i,j,bi,bj)*recip_dxc(i,j,bi,bj)  
102       &   *recip_dyg(i,j,bi,bj)       &   *recip_dyg(i,j,bi,bj)
103       &   *(       &   *(
104       &      dxv( i ,j+1,bi,bj)*dxv( i ,j+1,bi,bj)*strain( i ,j+1)       &      dxv( i ,j+1,bi,bj)*dxv( i ,j+1,bi,bj)
105       &     -dxv( i , j ,bi,bj)*dxv( i , j ,bi,bj)*strain( i , j )       &        *viscA_s(i,j+1)*strain( i ,j+1)
106         &     -dxv( i , j ,bi,bj)*dxv( i , j ,bi,bj)
107         &        *viscA_s(i, j )*strain( i , j )
108       &    )       &    )
109    
110          vDissip(i,j) =          vDissip(i,j) =
111       &    viscAs       &   recip_dyc(i,j,bi,bj)*recip_dyc(i,j,bi,bj)
      &   *recip_dyc(i,j,bi,bj)*recip_dyc(i,j,bi,bj)  
112       &   *recip_dxg(i,j,bi,bj)       &   *recip_dxg(i,j,bi,bj)
113       &   *(       &   *(
114       &      dyu(i+1, j ,bi,bj)*dyu(i+1, j ,bi,bj)*strain(i+1, j )       &      dyu(i+1, j ,bi,bj)*dyu(i+1, j ,bi,bj)
115       &     -dyu( i , j ,bi,bj)*dyu( i , j ,bi,bj)*strain( i , j )       &        *viscA_s(i+1,j)*strain(i+1,j)
116         &     -dyu( i , j ,bi,bj)*dyu( i , j ,bi,bj)
117         &        *viscA_s( i ,j)*strain( i ,j)
118       &    )       &    )
119       &   -viscAt       &   -recip_dxg(i,j,bi,bj)*recip_dxg(i,j,bi,bj)
      &   *recip_dxg(i,j,bi,bj)*recip_dxg(i,j,bi,bj)  
120       &   *recip_dyc(i,j,bi,bj)       &   *recip_dyc(i,j,bi,bj)
121       &   *(       &   *(
122       &      dxf( i , j ,bi,bj)*dxf( i , j ,bi,bj)*tension( i , j )       &      dxf( i , j ,bi,bj)*dxf( i , j ,bi,bj)
123       &     -dxf( i ,j-1,bi,bj)*dxf( i ,j-1,bi,bj)*tension( i ,j-1)       &        *viscA_t(i, j )*tension(i, j )
124         &     -dxf( i ,j-1,bi,bj)*dxf( i ,j-1,bi,bj)
125         &        *viscA_t(i,j-1)*tension(i,j-1)
126       &    )       &    )
127    
128         ENDDO         ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22