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

Annotation of /MITgcm/pkg/mom_vecinv/mom_vi_del2uv.F

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


Revision 1.17 - (hide annotations) (download)
Thu Sep 10 18:08:51 2015 UTC (8 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65o, HEAD
Changes since 1.16: +9 -10 lines
- add anelastic and deep-atmosphere geometry factor in pkg/mom_vecinv ; this
  allows to use Vector-Invariant form in deep atmos and anelastic formulation

1 jmc 1.17 C $Header: /u/gcmpack/MITgcm/pkg/mom_vecinv/mom_vi_del2uv.F,v 1.16 2011/05/03 19:36:11 jmc Exp $
2 jmc 1.3 C $Name: $
3 adcroft 1.2
4 adcroft 1.8 #include "MOM_VECINV_OPTIONS.h"
5 adcroft 1.2
6     SUBROUTINE MOM_VI_DEL2UV(
7     I bi,bj,k,
8     I hDiv,vort3,hFacZ,
9     O del2u,del2v,
10     I myThid)
11     IMPLICIT NONE
12     C
13     C Calculate del^2 of (u,v) in terms of hDiv and vort3
14     C
15    
16     C == Global variables ==
17     #include "SIZE.h"
18     #include "GRID.h"
19 adcroft 1.5 #include "EEPARAMS.h"
20 adcroft 1.2
21     C == Routine arguments ==
22     INTEGER bi,bj,k
23     _RL hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
24     _RL vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
25     _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
26     _RL del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
27     _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
28     INTEGER myThid
29    
30     C == Local variables ==
31 jmc 1.10 INTEGER i,j
32     c _RL Zip,Zij,Zpj,Dim,Dij,Dmj,uDij
33 afe 1.4
34 jmc 1.10 C - bi-harmonic viscosity :
35 adcroft 1.2
36 jmc 1.17 c DO j=2-OLy,sNy+OLy-1
37     c DO i=2-OLx,sNx+OLx-1
38 adcroft 1.2
39     c Dim=dyF( i ,j-1,bi,bj)*hFacC( i ,j-1,k,bi,bj)*hDiv( i ,j-1)
40     c Dij=dyF( i , j ,bi,bj)*hFacC( i , j ,k,bi,bj)*hDiv( i , j )
41     c Dmj=dyF(i-1, j ,bi,bj)*hFacC(i-1, j ,k,bi,bj)*hDiv(i-1, j )
42     c Dim=dyF( i ,j-1,bi,bj)* hDiv( i ,j-1)
43     c Dij=dyF( i , j ,bi,bj)* hDiv( i , j )
44     c Dmj=dyF(i-1, j ,bi,bj)* hDiv(i-1, j )
45 jmc 1.10 c Dim= hDiv( i ,j-1)
46     c Dij= hDiv( i , j )
47     c Dmj= hDiv(i-1, j )
48 adcroft 1.2
49     c Zip=dxV( i ,j+1,bi,bj)*hFacZ( i ,j+1)*vort3( i ,j+1)
50     c Zij=dxV( i , j ,bi,bj)*hFacZ( i , j )*vort3( i , j )
51     c Zpj=dxV(i+1, j ,bi,bj)*hFacZ(i+1, j )*vort3(i+1, j )
52 jmc 1.10 c Zip= hFacZ( i ,j+1)*vort3( i ,j+1)
53     c Zij= hFacZ( i , j )*vort3( i , j )
54     c Zpj= hFacZ(i+1, j )*vort3(i+1, j )
55    
56 adcroft 1.2 c del2u(i,j) = recip_rAw(i,j,bi,bj)*(
57     c & +recip_hFacW(i,j,k,bi,bj)*( Dij-Dmj )
58     c & -recip_hFacW(i,j,k,bi,bj)*( Zip-Zij ) )
59     c del2u(i,j) = recip_rAw(i,j,bi,bj)*(
60     c & + ( Dij-Dmj )
61     c & -recip_hFacW(i,j,k,bi,bj)*( Zip-Zij ) )
62 jmc 1.10 c del2u(i,j) =
63     c & + ( Dij-Dmj )*recip_DXC(i,j,bi,bj)
64     c & -recip_hFacW(i,j,k,bi,bj)*( Zip-Zij )*recip_DYG(i,j,bi,bj)
65 adcroft 1.2
66     c del2v(i,j) = recip_rAs(i,j,bi,bj)*(
67     c & recip_hFacS(i,j,k,bi,bj)*( Zpj-Zij )
68     c & +recip_hFacS(i,j,k,bi,bj)*( Dij-Dim ) )
69     c del2v(i,j) = recip_rAs(i,j,bi,bj)*(
70     c & recip_hFacS(i,j,k,bi,bj)*( Zpj-Zij )
71     c & + ( Dij-Dim ) )
72 jmc 1.10 c del2v(i,j) =
73     c & recip_hFacS(i,j,k,bi,bj)*( Zpj-Zij )*recip_DXG(i,j,bi,bj)
74     c & + ( Dij-Dim )*recip_DYC(i,j,bi,bj)
75    
76     c ENDDO
77     c ENDDO
78    
79     C - bi-harmonic viscosity : del^2(U_component)
80    
81 heimbach 1.12 cph-exch2#ifndef ALLOW_AUTODIFF_TAMC
82 jmc 1.10 IF (useCubedSphereExchange) THEN
83     C to compute d/dx(hDiv), fill corners with appropriate values:
84 jmc 1.14 CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
85 jmc 1.13 & hDiv, bi,bj, myThid )
86 jmc 1.10 ENDIF
87 heimbach 1.12 cph-exch2#endif
88 jmc 1.10 c DO j=1,sNy
89     c DO i=1,sNx+1
90 jmc 1.17 DO j=2-OLy,sNy+OLy-1
91     DO i=2-OLx,sNx+OLx-1
92 jmc 1.10 del2u(i,j) =
93 jmc 1.15 & ( ( hDiv(i,j) - hDiv(i-1,j) )*recip_dxC(i,j,bi,bj)
94     & -_recip_hFacW(i,j,k,bi,bj)*
95 jmc 1.10 & ( hFacZ(i,j+1)*vort3(i,j+1) - hFacZ(i,j)*vort3(i,j) )
96 jmc 1.15 & *recip_dyG(i,j,bi,bj)
97 jmc 1.17 & )*maskW(i,j,k,bi,bj)*recip_deepFacC(k)
98 jmc 1.16 #ifdef ALLOW_OBCS
99     & *maskInW(i,j,bi,bj)
100     #endif
101 jmc 1.10 ENDDO
102     ENDDO
103    
104     C - bi-harmonic viscosity : del^2(V_component)
105    
106 heimbach 1.12 cph-exch2#ifndef ALLOW_AUTODIFF_TAMC
107 jmc 1.10 IF (useCubedSphereExchange) THEN
108     C to compute d/dy(hDiv), fill corners with appropriate values:
109 jmc 1.14 CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
110 jmc 1.13 & hDiv, bi,bj, myThid )
111 jmc 1.10 ENDIF
112 heimbach 1.12 cph-exch2#endif
113 jmc 1.10 c DO j=1,sNy+1
114     c DO i=1,sNx
115 jmc 1.17 DO j=2-OLy,sNy+OLy-1
116     DO i=2-OLx,sNx+OLx-1
117 adcroft 1.2 del2v(i,j) =
118 jmc 1.15 & ( ( hDiv(i,j) - hDiv(i,j-1) )*recip_dyC(i,j,bi,bj)
119     & +_recip_hFacS(i,j,k,bi,bj)*
120 jmc 1.10 & ( hFacZ(i+1,j)*vort3(i+1,j) - hFacZ(i,j)*vort3(i,j) )
121 jmc 1.15 & *recip_dxG(i,j,bi,bj)
122 jmc 1.17 & )*maskS(i,j,k,bi,bj)*recip_deepFacC(k)
123 jmc 1.16 #ifdef ALLOW_OBCS
124     & *maskInS(i,j,bi,bj)
125     #endif
126 adcroft 1.2 ENDDO
127     ENDDO
128    
129     RETURN
130     END

  ViewVC Help
Powered by ViewVC 1.1.22