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

Annotation of /MITgcm/pkg/shelfice/shelfice_u_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: +7 -7 lines
add a few diagnostics

1 mlosch 1.6 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_u_drag.F,v 1.5 2006/09/01 10:17:17 mlosch Exp $
2 mlosch 1.1 C $Name: $
3    
4     #include "SHELFICE.h"
5     #include "MOM_COMMON_OPTIONS.h"
6    
7     CBOP
8     C !ROUTINE: SHELFICE_U_DRAG
9    
10     C !INTERFACE: ==========================================================
11     SUBROUTINE SHELFICE_U_DRAG(
12     I bi,bj,k,
13     I uFld, KE, KappaRU,
14     O uDragTerms,
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^u_{drag} = - ( r_b + C_D |v| + \frac{2}{\Delta r_c} ) u
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 uFld :: zonal flow
36     C KE :: Kinetic energy
37     C KappaRU :: vertical viscosity
38     C myThid :: thread number
39     INTEGER bi,bj,k
40     _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41     _RL KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42     _RL KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
43     INTEGER myThid
44    
45     C !OUTPUT PARAMETERS: ==================================================
46     C uDragTerms :: drag term
47     _RL uDragTerms(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     _RL viscFac
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 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,sNy+Oly-1
73     DO i=1-Olx+1,sNx+Olx-1
74     maskUp=_maskW(i,j,kUp,bi,bj)
75     CML IF (k.EQ.kTop) maskUp=0.
76     uDragTerms(i,j)=
77     & -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
78     & *(
79 mlosch 1.5 & - 2.*KappaRU(i,j,kUpC)*rdrckp1*viscFac
80 mlosch 1.1 & + SHELFICEDragLinear
81     & )*(1.-maskUp)*uFld(i,j)
82     IF ( (KE(i,j)+KE(i-1,j)) .NE. 0. ) THEN
83     uDragTerms(i,j)=uDragTerms(i,j)
84     & -_recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
85     & *SHELFICEDragQuadratic*sqrt(KE(i,j)+KE(i-1,j))
86     & *(1.-maskUp)*uFld(i,j)
87     ENDIF
88     ENDDO
89     ENDDO
90    
91 mlosch 1.6 #ifdef ALLOW_DIAGNOSTICS
92     IF (useDiagnostics) THEN
93     CALL DIAGNOSTICS_FILL(uDragTerms,'USHIDrag',k,1,2,bi,bj,
94     & myThid)
95     ENDIF
96     #endif /* ALLOW_DIAGNOSTICS */
97 mlosch 1.3 #endif /* ALLOW_SHELFICE */
98 mlosch 1.1
99     RETURN
100     END

  ViewVC Help
Powered by ViewVC 1.1.22