/[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.6 - (hide annotations) (download)
Wed Mar 14 15:43:43 2007 UTC (17 years, 3 months ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint60, checkpoint61, checkpoint62, checkpoint58x_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62i, checkpoint62h, checkpoint58y_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.5: +6 -6 lines
add a few diagnostics

1 mlosch 1.6 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_v_drag.F,v 1.5 2006/09/01 10:17:17 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     INTEGER myThid
44    
45     C !OUTPUT PARAMETERS: ==================================================
46     C vDragTerms :: drag term
47     _RL vDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48    
49 mlosch 1.3 #ifdef ALLOW_SHELFICE
50 mlosch 1.2 C !LOCAL VARIABLES : ====================================================
51 mlosch 1.1 C i,j :: loop indices
52     C Kp1 :: =k+1 for k<Nr, =Nr for k>=Nr
53     INTEGER I,J,kUp,kUpC,kTop
54 mlosch 1.4 _RL viscFac
55 mlosch 1.1 _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 mlosch 1.4 kUp = max(k-1,kTop)
62     kUpC = k
63 mlosch 1.1 ELSE
64     kTop = Nr
65     kUp = min(k+1,kTop)
66     kUpC = kUp
67     ENDIF
68     rdrckp1=recip_drC(kUpC)
69 mlosch 1.4 CML IF (k.EQ.kTop) rdrckp1=recip_drF(k)
70 mlosch 1.1 viscFac=0.
71     IF (no_slip_shelfice) viscFac=1.
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 mlosch 1.5 & - 2.*KappaRV(i,j,kUpC)*rdrckp1*viscFac
80 mlosch 1.1 & + 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.6 #ifdef ALLOW_DIAGNOSTICS
92     IF (useDiagnostics) THEN
93     CALL DIAGNOSTICS_FILL(vDragTerms,'VSHIDrag',k,1,2,bi,bj,myThid)
94     ENDIF
95     #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