/[MITgcm]/MITgcm/pkg/shelfice/shelfice_v_drag.F
ViewVC logotype

Annotation of /MITgcm/pkg/shelfice/shelfice_v_drag.F

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


Revision 1.3 - (hide annotations) (download)
Mon Aug 14 17:16:10 2006 UTC (18 years, 1 month ago) by mlosch
Branch: MAIN
Changes since 1.2: +4 -2 lines
put routine body within #ifdef ALLOW_SHELFICE/#endif

1 mlosch 1.3 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_v_drag.F,v 1.2 2006/02/13 12:49:21 mlosch Exp $
2 mlosch 1.1 C $Name: $
3    
4     #include "SHELFICE_OPTIONS.h"
5     #include "MOM_COMMON_OPTIONS.h"
6    
7     CBOP
8     C !ROUTINE: SHELFICE_V_DRAG
9    
10     C !INTERFACE: ==========================================================
11     SUBROUTINE SHELFICE_V_DRAG(
12     I bi,bj,k,
13     I vFld, KE, KappaRV,
14     O vDragTerms,
15     I myThid)
16    
17     C !DESCRIPTION:
18     C Calculates the drag due to friction and the no-slip condition at the
19     C bottom of the shelf-ice (in analogy to bottom drag)
20     C \begin{equation*}
21     C G^v_{drag} = - ( r_b + C_D |v| + \frac{2}{\Delta r_c} ) v
22     C \end{equation*}
23    
24     C !USES: ===============================================================
25     IMPLICIT NONE
26     #include "SIZE.h"
27     #include "EEPARAMS.h"
28     #include "PARAMS.h"
29     #include "GRID.h"
30     #include "SHELFICE.h"
31    
32     C !INPUT PARAMETERS: ===================================================
33     C bi,bj :: tile indices
34     C k :: vertical level
35     C vFld :: meridional flow
36     C KE :: Kinetic energy
37     C KappaRV :: vertical viscosity
38     C myThid :: thread number
39     INTEGER bi,bj,k
40     _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41     _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42     _RL KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
43     _RL viscFac
44     INTEGER myThid
45    
46     C !OUTPUT PARAMETERS: ==================================================
47     C vDragTerms :: drag term
48     _RL vDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
49    
50 mlosch 1.3 #ifdef ALLOW_SHELFICE
51 mlosch 1.2 C !LOCAL VARIABLES : ====================================================
52 mlosch 1.1 C i,j :: loop indices
53     C Kp1 :: =k+1 for k<Nr, =Nr for k>=Nr
54     INTEGER I,J,kUp,kUpC,kTop
55     _RL rdrckp1,maskUp
56     CEOP
57    
58 mlosch 1.3 C- No-slip BCs impose a drag at top
59 mlosch 1.1 IF ( usingZCoords ) THEN
60     kTop = 1
61     kUp = k
62     kUpC = kUp
63     ELSE
64     kTop = Nr
65     kUp = min(k+1,kTop)
66     kUpC = kUp
67     ENDIF
68     rdrckp1=recip_drC(kUpC)
69     viscFac=0.
70     IF (no_slip_shelfice) viscFac=1.
71     IF (k.EQ.kUp) rdrckp1=recip_drF(k)
72     DO j=1-Oly+1,sNy+Oly-1
73     DO i=1-Olx,sNx+Olx-1
74     maskUp=_maskS(i,j,kUp,bi,bj)
75     CML IF (k.EQ.kTop) maskUp=0.
76     vDragTerms(i,j)=
77     & -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
78     & *(
79     & 2.*KappaRV(i,j,kUpC)*rdrckp1*viscFac
80     & + bottomDragLinear
81     & )*(1.-maskUp)*vFld(i,j)
82     IF ( (KE(i,j)+KE(i,j-1)) .NE. 0. ) THEN
83     vDragTerms(i,j)=vDragTerms(i,j)
84     & -_recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
85     & *bottomDragQuadratic*sqrt(KE(i,j)+KE(i,j-1))
86     & *(1.-maskUp)*vFld(i,j)
87     ENDIF
88     ENDDO
89     ENDDO
90    
91 mlosch 1.2 CML#ifdef ALLOW_DIAGNOSTICS
92     CML IF (useDiagnostics) THEN
93     CML CALL DIAGNOSTICS_FILL(vDragTerms,'VBotDrag',k,1,2,bi,bj,myThid)
94     CML ENDIF
95     CML#endif /* ALLOW_DIAGNOSTICS */
96 mlosch 1.3 #endif /* ALLOW_SHELFICE */
97 mlosch 1.1
98     RETURN
99     END

  ViewVC Help
Powered by ViewVC 1.1.22