/[MITgcm]/MITgcm/pkg/obcs/orlanski_west.F
ViewVC logotype

Diff of /MITgcm/pkg/obcs/orlanski_west.F

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

revision 1.4 by jmc, Thu Jul 11 16:22:30 2002 UTC revision 1.5 by adcroft, Tue Jul 6 18:25:52 2004 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    cc
4    
5  #include "OBCS_OPTIONS.h"  #include "OBCS_OPTIONS.h"
6    
# Line 64  C              duration of the singular Line 65  C              duration of the singular
65  C              for a plane wave cvelTimeScale might be the time take for the  C              for a plane wave cvelTimeScale might be the time take for the
66  C              wave to travel a distance DX, where DX is the width of the region  C              wave to travel a distance DX, where DX is the width of the region
67  C              near which d(phi)/dx is small.  C              near which d(phi)/dx is small.
68    C
69    C JBG 3/24/03: Fixed phase speed at western boundary (as suggested by
70    C              Dale Durran's MWR paper). Fixed value (in m/s) is
71    C              passed in as variable CFIX in data.obcs.
72    C
73    C JBG 4/10/03: allow choice of Orlanski or fixed wavespeed (by means of new
74    C              booleans useFixedCEast and useFixedCWest) without
75    C              having to recompile each time
76    c SAL 1/7/03:  Fixed bug: implementation for salinity was incomplete
77    C
78    
79  C     == Routine arguments ==  C     == Routine arguments ==
80        INTEGER bi, bj        INTEGER bi, bj
# Line 108  C              uVel (to be applied at I_ Line 119  C              uVel (to be applied at I_
119                 ELSEIF (CL.gt.CMAX) THEN                 ELSEIF (CL.gt.CMAX) THEN
120                    CL=CMAX                    CL=CMAX
121                 ENDIF                 ENDIF
122                 CVEL_UW(J,K,bi,bj) = f1*(CL*dxF(I_obc+2,J,bi,bj)/deltaT)+                 IF (useFixedCWest) THEN
123    C                Fixed phase speed (ignoring all of that painstakingly
124    C                 saved data...)
125                     CVEL_UW(J,K,bi,bj) = CFIX
126                   ELSE
127                     CVEL_UW(J,K,bi,bj) = f1*(CL*dxF(I_obc+2,J,bi,bj)/deltaT)+
128       &                f2*CVEL_UW(J,K,bi,bj)       &                f2*CVEL_UW(J,K,bi,bj)
129                   ENDIF
130  C              update OBC to next timestep  C              update OBC to next timestep
131                 OBWu(J,K,bi,bj)=uVel(I_obc+1,J,K,bi,bj)+                 OBWu(J,K,bi,bj)=uVel(I_obc+1,J,K,bi,bj)+
132       &          CVEL_UW(J,K,bi,bj)*deltaT*recip_dxF(I_obc+1,J,bi,bj)*       &          CVEL_UW(J,K,bi,bj)*(deltaT/dxF(I_obc+1,J,bi,bj))*
133       &          (ab1*(uVel(I_obc+2,J,K,bi,bj)-uVel(I_obc+1,J,K,bi,bj))+       &          (ab1*(uVel(I_obc+2,J,K,bi,bj)-uVel(I_obc+1,J,K,bi,bj))+
134       &          ab2*(UW_STORE_1(J,K,bi,bj)-UW_STORE_4(J,K,bi,bj)))       &          ab2*(UW_STORE_1(J,K,bi,bj)-UW_STORE_4(J,K,bi,bj)))
135  C              vVel  C              vVel
# Line 128  C              vVel Line 145  C              vVel
145                 ELSEIF (CL.gt.CMAX) THEN                 ELSEIF (CL.gt.CMAX) THEN
146                    CL=CMAX                    CL=CMAX
147                 ENDIF                 ENDIF
148                 CVEL_VW(J,K,bi,bj) = f1*(CL*dxV(I_obc+2,J,bi,bj)/deltaT)+                 IF (useFixedCWest) THEN
149    C                Fixed phase speed (ignoring all of that painstakingly
150    C                 saved data...)
151                     CVEL_VW(J,K,bi,bj) = CFIX
152                   ELSE
153                     CVEL_VW(J,K,bi,bj) = f1*(CL*dxV(I_obc+2,J,bi,bj)/deltaT)+
154       &                f2*CVEL_VW(J,K,bi,bj)       &                f2*CVEL_VW(J,K,bi,bj)
155                   ENDIF
156  C              update OBC to next timestep  C              update OBC to next timestep
157                 OBWv(J,K,bi,bj)=vVel(I_obc,J,K,bi,bj)+                 OBWv(J,K,bi,bj)=vVel(I_obc,J,K,bi,bj)+
158       &           CVEL_VW(J,K,bi,bj)*deltaT*recip_dxV(I_obc+1,J,bi,bj)*       &           CVEL_VW(J,K,bi,bj)*(deltaT/dxV(I_obc+1,J,bi,bj))*
159       &           (ab1*(vVel(I_obc+1,J,K,bi,bj)-vVel(I_obc,J,K,bi,bj))+       &           (ab1*(vVel(I_obc+1,J,K,bi,bj)-vVel(I_obc,J,K,bi,bj))+
160       &           ab2*(VW_STORE_1(J,K,bi,bj)-VW_STORE_4(J,K,bi,bj)))       &           ab2*(VW_STORE_1(J,K,bi,bj)-VW_STORE_4(J,K,bi,bj)))
161  C              Temperature  C              Temperature
# Line 148  C              Temperature Line 171  C              Temperature
171                 ELSEIF (CL.gt.CMAX) THEN                 ELSEIF (CL.gt.CMAX) THEN
172                    CL=CMAX                    CL=CMAX
173                 ENDIF                 ENDIF
174                 CVEL_TW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT)+                 IF (useFixedCWest) THEN
175    C                Fixed phase speed (ignoring all of that painstakingly
176    C                 saved data...)
177                     CVEL_TW(J,K,bi,bj) = CFIX
178                   ELSE
179                     CVEL_TW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT)+
180       &                f2*CVEL_TW(J,K,bi,bj)       &                f2*CVEL_TW(J,K,bi,bj)
181                   ENDIF
182  C              update OBC to next timestep  C              update OBC to next timestep
183                 OBWt(J,K,bi,bj)=theta(I_obc,J,K,bi,bj)+                 OBWt(J,K,bi,bj)=theta(I_obc,J,K,bi,bj)+
184       &          CVEL_TW(J,K,bi,bj)*deltaT*recip_dxC(I_obc+1,J,bi,bj)*       &          CVEL_TW(J,K,bi,bj)*(deltaT/dxC(I_obc+1,J,bi,bj))*
185       &          (ab1*(theta(I_obc+1,J,K,bi,bj)-theta(I_obc,J,K,bi,bj))+       &          (ab1*(theta(I_obc+1,J,K,bi,bj)-theta(I_obc,J,K,bi,bj))+
186       &          ab2*(TW_STORE_1(J,K,bi,bj)-TW_STORE_4(J,K,bi,bj)))       &          ab2*(TW_STORE_1(J,K,bi,bj)-TW_STORE_4(J,K,bi,bj)))
187  C              Salinity  C              Salinity
# Line 168  C              Salinity Line 197  C              Salinity
197                 ELSEIF (CL.gt.CMAX) THEN                 ELSEIF (CL.gt.CMAX) THEN
198                    CL=CMAX                    CL=CMAX
199                 ENDIF                 ENDIF
200                 CVEL_SW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT)+                 IF (useFixedCWest) THEN
201    C                Fixed phase speed (ignoring all of that painstakingly
202    C                 saved data...)
203                     CVEL_SW(J,K,bi,bj) = CFIX
204                   ELSE
205                     CVEL_SW(J,K,bi,bj) = f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT)+
206       &                f2*CVEL_SW(J,K,bi,bj)       &                f2*CVEL_SW(J,K,bi,bj)
207                   ENDIF
208  C              update OBC to next timestep  C              update OBC to next timestep
209                 OBWs(J,K,bi,bj)=salt(I_obc,J,K,bi,bj)+                 OBWs(J,K,bi,bj)=salt(I_obc,J,K,bi,bj)+
210       &           CVEL_SW(J,K,bi,bj)*deltaT*recip_dxC(I_obc+1,J,bi,bj)*       &           CVEL_SW(J,K,bi,bj)*(deltaT/dxC(I_obc+1,J,bi,bj))*
211       &           (ab1*(salt(I_obc+1,J,K,bi,bj)-salt(I_obc,J,K,bi,bj))+       &           (ab1*(salt(I_obc+1,J,K,bi,bj)-salt(I_obc,J,K,bi,bj))+
212       &           ab2*(SW_STORE_1(J,K,bi,bj)-SW_STORE_4(J,K,bi,bj)))       &           ab2*(SW_STORE_1(J,K,bi,bj)-SW_STORE_4(J,K,bi,bj)))
213  C              wVel  C              wVel
# Line 189  C              wVel Line 224  C              wVel
224                    ELSEIF (CL.gt.CMAX) THEN                    ELSEIF (CL.gt.CMAX) THEN
225                       CL=CMAX                       CL=CMAX
226                    ENDIF                    ENDIF
227                    CVEL_WW(J,K,bi,bj)=f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT)                 IF (useFixedCWest) THEN
228    C                Fixed phase speed (ignoring all of that painstakingly
229    C                 saved data...)
230                     CVEL_WW(J,K,bi,bj) = CFIX
231                   ELSE
232                     CVEL_WW(J,K,bi,bj)=f1*(CL*dxC(I_obc+2,J,bi,bj)/deltaT)
233       &                   + f2*CVEL_WW(J,K,bi,bj)       &                   + f2*CVEL_WW(J,K,bi,bj)
234                   ENDIF
235  C                 update OBC to next timestep  C                 update OBC to next timestep
236                    OBWw(J,K,bi,bj)=wVel(I_obc,J,K,bi,bj)+                    OBWw(J,K,bi,bj)=wVel(I_obc,J,K,bi,bj)+
237       &            CVEL_WW(J,K,bi,bj)*deltaT*recip_dxC(I_obc+1,J,bi,bj)*       &             CVEL_WW(J,K,bi,bj)*(deltaT/dxC(I_obc+1,J,bi,bj))*
238       &            (ab1*(wVel(I_obc+1,J,K,bi,bj)-wVel(I_obc,J,K,bi,bj))+       &            (ab1*(wVel(I_obc+1,J,K,bi,bj)-wVel(I_obc,J,K,bi,bj))+
239       &            ab2*(WW_STORE_1(J,K,bi,bj)-WW_STORE_4(J,K,bi,bj)))       &            ab2*(WW_STORE_1(J,K,bi,bj)-WW_STORE_4(J,K,bi,bj)))
240  #endif  #endif
# Line 222  C              copy (current time) t to Line 263  C              copy (current time) t to
263       &         theta(I_obc+1,J,K,bi,bj)       &         theta(I_obc+1,J,K,bi,bj)
264                 TW_STORE_1(J,K,bi,bj)=theta(I_obc+1,J,K,bi,bj)                 TW_STORE_1(J,K,bi,bj)=theta(I_obc+1,J,K,bi,bj)
265                 TW_STORE_4(J,K,bi,bj)=theta(I_obc,J,K,bi,bj)                 TW_STORE_4(J,K,bi,bj)=theta(I_obc,J,K,bi,bj)
266    c              Salinity
267    C              copy t-1 to t-2 array
268                   SW_STORE_3(J,K,bi,bj)=SW_STORE_2(J,K,bi,bj)
269    C              copy (current time) t to t-1 arrays
270                   SW_STORE_2(J,K,bi,bj)=salt(I_obc+2,J,K,bi,bj) -
271         &         salt(I_obc+1,J,K,bi,bj)
272                   SW_STORE_1(J,K,bi,bj)=salt(I_obc+1,J,K,bi,bj)
273                   SW_STORE_4(J,K,bi,bj)=salt(I_obc,J,K,bi,bj)
274  C              wVel  C              wVel
275  #ifdef ALLOW_NONHYDROSTATIC  #ifdef ALLOW_NONHYDROSTATIC
276  C              copy t-1 to t-2 array  C              copy t-1 to t-2 array

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22