/[MITgcm]/MITgcm/model/src/taueddy_external_forcing.F
ViewVC logotype

Annotation of /MITgcm/model/src/taueddy_external_forcing.F

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


Revision 1.1 - (hide annotations) (download)
Wed Feb 15 03:52:53 2006 UTC (18 years, 3 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58a_post
Adding/updating eddy stress control code

1 heimbach 1.1 C $Header: /u/gcmpack/MITgcm/model/src/external_forcing.F,v 1.28 2004/10/19 02:39:58 jmc Exp $
2     C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_OPTIONS.h"
6     #ifdef ALLOW_GMREDI
7     # include "GMREDI_OPTIONS.h"
8     #endif
9    
10     CBOP
11     C !ROUTINE: TAUEDDY_EXTERNAL_FORCING_U
12     C !INTERFACE:
13     SUBROUTINE TAUEDDY_EXTERNAL_FORCING_U(
14     I iMin, iMax, jMin, jMax,bi,bj,kLev,
15     I myCurrentTime,myThid)
16     C !DESCRIPTION: \bv
17     C *==========================================================*
18     C | S/R TAUEDDY_EXTERNAL_FORCING_U
19     C | o Contains problem specific forcing for zonal velocity.
20     C *==========================================================*
21     C | Adds terms to gU for forcing by external sources
22     C | e.g. wind stress, bottom friction etc..................
23     C *==========================================================*
24     C \ev
25    
26     C !USES:
27     IMPLICIT NONE
28     C == Global data ==
29     #include "SIZE.h"
30     #include "EEPARAMS.h"
31     #include "PARAMS.h"
32     #include "GRID.h"
33     #include "DYNVARS.h"
34     #include "FFIELDS.h"
35     #ifdef ALLOW_GMREDI
36     # ifdef GM_BOLUS_ADVEC
37     # include "GMREDI.h"
38     # endif
39     #endif
40    
41     C !INPUT/OUTPUT PARAMETERS:
42     C == Routine arguments ==
43     C iMin - Working range of tile for applying forcing.
44     C iMax
45     C jMin
46     C jMax
47     C kLev
48     INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
49     _RL myCurrentTime
50     INTEGER myThid
51    
52     C !LOCAL VARIABLES:
53     C == Local variables ==
54     C Loop counters
55     INTEGER I, J
56     C number of surface interface layer
57     INTEGER kSurface, Kp1
58     _RL maskm1, maskp1
59     CEOP
60    
61     IF ( fluidIsAir ) THEN
62     kSurface = 0
63     ELSEIF ( usingPCoords ) THEN
64     kSurface = Nr
65     ELSE
66     kSurface = 1
67     ENDIF
68    
69     #if (defined (ALLOW_TAU_EDDY))
70     C Add zonal eddy momentum impulse into the layer
71     Kp1=min(klev+1,Nr)
72     maskp1=1.
73     maskm1=1.
74     IF (klev.EQ.Nr) maskp1=0.
75     IF (klev.EQ.1) maskm1=0.
76     DO j=jMin,jMax
77     DO i=iMin,iMax
78     gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
79     & +foFacMom*
80     & (maskm1*_maskW(i,j,klev,bi,bj)*eddyTauX(i,j,klev,bi,bj)
81     & -maskp1*_maskW(i,j,kp1,bi,bj)*eddyTauX(i,j,kp1,bi,bj))
82     & *recip_drF(klev)*_recip_hFacW(i,j,klev,bi,bj)
83     ENDDO
84     ENDDO
85     #endif
86    
87     RETURN
88     END
89     CBOP
90     C !ROUTINE: TAUEDDY_EXTERNAL_FORCING_V
91     C !INTERFACE:
92     SUBROUTINE TAUEDDY_EXTERNAL_FORCING_V(
93     I iMin, iMax, jMin, jMax,bi,bj,kLev,
94     I myCurrentTime,myThid)
95     C !DESCRIPTION: \bv
96     C *==========================================================*
97     C | S/R TAUEDDY_EXTERNAL_FORCING_V
98     C | o Contains problem specific forcing for merid velocity.
99     C *==========================================================*
100     C | Adds terms to gV for forcing by external sources
101     C | e.g. wind stress, bottom friction etc..................
102     C *==========================================================*
103     C \ev
104    
105     C !USES:
106     IMPLICIT NONE
107     C == Global data ==
108     #include "SIZE.h"
109     #include "EEPARAMS.h"
110     #include "PARAMS.h"
111     #include "GRID.h"
112     #include "DYNVARS.h"
113     #include "FFIELDS.h"
114     #ifdef ALLOW_GMREDI
115     # ifdef GM_BOLUS_ADVEC
116     # include "GMREDI.h"
117     # endif
118     #endif
119    
120     C !INPUT/OUTPUT PARAMETERS:
121     C == Routine arguments ==
122     C iMin - Working range of tile for applying forcing.
123     C iMax
124     C jMin
125     C jMax
126     C kLev
127     INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
128     _RL myCurrentTime
129     INTEGER myThid
130    
131     C !LOCAL VARIABLES:
132     C == Local variables ==
133     C Loop counters
134     INTEGER I, J
135     C number of surface interface layer
136     INTEGER kSurface, Kp1
137     _RL maskm1, maskp1
138     CEOP
139    
140     IF ( fluidIsAir ) THEN
141     kSurface = 0
142     ELSEIF ( usingPCoords ) THEN
143     kSurface = Nr
144     ELSE
145     kSurface = 1
146     ENDIF
147    
148     #ifdef ALLOW_TAU_EDDY
149     C Add meridional eddy momentum impulse into the layer
150     Kp1=min(klev+1,Nr)
151     maskp1=1.
152     maskm1=1.
153     IF (klev.EQ.Nr) maskp1=0.
154     IF (klev.EQ.1) maskm1=0.
155     DO j=jMin,jMax
156     DO i=iMin,iMax
157     gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
158     & +foFacMom*
159     & (maskm1*_maskS(i,j,klev,bi,bj)*eddyTauY(i,j,klev,bi,bj)
160     & -maskp1*_maskS(i,j,kp1,bi,bj)*eddyTauY(i,j,kp1,bi,bj))
161     & *recip_drF(klev)*_recip_hFacS(i,j,klev,bi,bj)
162     ENDDO
163     ENDDO
164     #endif
165    
166     RETURN
167     END

  ViewVC Help
Powered by ViewVC 1.1.22