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

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

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


Revision 1.10 - (show annotations) (download)
Sun Feb 9 18:51:46 2014 UTC (10 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65o, checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64u, checkpoint64w, checkpoint64v, HEAD
Changes since 1.9: +23 -25 lines
fix sideDrag option for thin-walls with Non-Lin Free-Surf
using 2nd hFacZ that is computed from initial (fix domain) hFac

1 C $Header: /u/gcmpack/MITgcm/pkg/mom_fluxform/mom_v_del2v.F,v 1.9 2011/05/03 19:50:30 jmc Exp $
2 C $Name: $
3
4 #include "MOM_FLUXFORM_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: MOM_V_DEL2V
8
9 C !INTERFACE: ==========================================================
10 SUBROUTINE MOM_V_DEL2V(
11 I bi, bj, k,
12 I vFld, hFacZ, h0FacZ,
13 O del2v,
14 I myThid )
15
16 C !DESCRIPTION:
17 C Calculates the Laplacian of meridional flow
18
19 C !USES: ===============================================================
20 IMPLICIT NONE
21 #include "SIZE.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #include "GRID.h"
25 #include "SURFACE.h"
26
27 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 h0FacZ :: fixed fractional thickness at vorticity points
33 C myThid :: my Thread Id number
34 INTEGER bi, bj, k
35 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
36 _RS hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
37 _RS h0FacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
38 INTEGER myThid
39 C !OUTPUT PARAMETERS: ==================================================
40 C del2v :: Laplacian
41 _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42
43 C !LOCAL VARIABLES: ====================================================
44 C i,j :: loop indices
45 INTEGER I,J
46 _RL fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
47 _RL fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48 _RS hFacZClosedE, hFacZClosedW
49 CEOP
50
51 C Zonal flux d/dx V
52 DO j=1-OLy+1,sNy+OLy-1
53 DO i=1-OLx+1,sNx+OLx
54 fZon(i,j) = drF(k)*hFacZ(i,j)
55 & *_dyU(i,j,bi,bj)
56 & *_recip_dxV(i,j,bi,bj)
57 & *(vFld(i,j)-vFld(i-1,j))
58 #ifdef COSINEMETH_III
59 & *sqCosFacV(J,bi,bj)
60 #endif
61 c & *deepFacC(k) ! dyU scaling factor
62 c & *recip_deepFacC(k) ! recip_dxV scaling factor
63 ENDDO
64 ENDDO
65
66 C Meridional flux d/dy V
67 DO j=1-OLy,sNy+OLy-1
68 DO i=1-OLx+1,sNx+OLx-1
69 fMer(i,j) = drF(k)*_hFacC(i,j,k,bi,bj)
70 & *_dxF(i,j,bi,bj)
71 & *_recip_dyF(i,j,bi,bj)
72 & *(vFld(i,j+1)-vFld(i,j))
73 #if (defined (ISOTROPIC_COS_SCALING) && defined (COSINEMETH_III))
74 & *sqCosFacU(J,bi,bj)
75 #endif
76 #ifdef ALLOW_OBCS
77 & *maskInC(i,j,bi,bj)
78 #endif
79 c & *deepFacC(k) ! dxF scaling factor
80 c & *recip_deepFacC(k) ! recip_dyF scaling factor
81 ENDDO
82 ENDDO
83
84 C del^2 V
85 DO j=1-OLy+1,sNy+OLy-1
86 DO i=1-OLx+1,sNx+OLx-1
87 del2v(i,j) =
88 & recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
89 & *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
90 & *( fZon(i+1,j) - fZon(i, j )
91 & +fMer( i ,j) - fMer(i,j-1)
92 & )*_maskS(i,j,k,bi,bj)
93 #ifdef ALLOW_OBCS
94 & *maskInS(i,j,bi,bj)
95 #endif
96 ENDDO
97 ENDDO
98
99 IF (no_slip_sides) THEN
100 C-- No-slip BCs impose a drag at walls...
101 DO j=1-OLy+1,sNy+OLy-1
102 DO i=1-OLx+1,sNx+OLx-1
103 #ifdef NONLIN_FRSURF
104 hFacZClosedW = h0FacS(i,j,k,bi,bj) - h0FacZ(i,j)
105 hFacZClosedE = h0FacS(i,j,k,bi,bj) - h0FacZ(i+1,j)
106 #else
107 hFacZClosedW = _hFacS(i,j,k,bi,bj) - h0FacZ(i,j)
108 hFacZClosedE = _hFacS(i,j,k,bi,bj) - h0FacZ(i+1,j)
109 #endif
110 del2v(i,j) = del2v(i,j)
111 & -_recip_hFacS(i,j,k,bi,bj)
112 & *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
113 & *( hFacZClosedW*dyU( i ,j,bi,bj)
114 & *_recip_dxV( i ,j,bi,bj)
115 & +hFacZClosedE*dyU(i+1,j,bi,bj)
116 & *_recip_dxV(i+1,j,bi,bj)
117 & )*vFld(i,j)*sideDragFactor
118 & *_maskS(i,j,k,bi,bj)
119 ENDDO
120 ENDDO
121 ENDIF
122
123 RETURN
124 END

  ViewVC Help
Powered by ViewVC 1.1.22