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

Annotation of /MITgcm/pkg/obcs/obcs_apply_uvice.F

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


Revision 1.6 - (hide annotations) (download)
Fri Dec 21 00:39:44 2007 UTC (16 years, 6 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint59m
Changes since 1.5: +1 -9 lines
Moved OBCS_SEAICE_AVOID_CONVERGENCE from obcs_apply_uvice.F
to OBCS_OPTIONS.h and undefined it by default.

1 dimitri 1.6 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_apply_uvice.F,v 1.5 2007/12/21 00:32:38 dimitri Exp $
2 dimitri 1.1 C $Name: $
3    
4     #include "OBCS_OPTIONS.h"
5    
6 dimitri 1.2 SUBROUTINE OBCS_APPLY_UVICE(
7 dimitri 1.4 U uFld, vFld,
8 dimitri 1.1 I myThid )
9     C /==========================================================\
10     C | S/R OBCS_APPLY_UVICE |
11     C \==========================================================/
12     IMPLICIT NONE
13     C == Global variables ==
14     #include "SIZE.h"
15     #include "EEPARAMS.h"
16     #include "PARAMS.h"
17     #include "GRID.h"
18     #include "OBCS.h"
19    
20     C == Routine Arguments ==
21     _RL uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,3,nSx,nSy)
22     _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,3,nSx,nSy)
23     INTEGER myThid
24    
25     #if (defined (ALLOW_OBCS) && defined (ALLOW_SEAICE))
26    
27     C == Local variables ==
28 dimitri 1.2 C I,J,K,bi,bj - Loop counters
29     INTEGER I,J,K,bi,bj
30     K = 1
31 dimitri 1.1
32 dimitri 1.2 DO bj=myByLo(myThid),myByHi(myThid)
33     DO bi=myBxLo(myThid),myBxHi(myThid)
34 dimitri 1.1
35     C Set model variables to OB values on North/South Boundaries
36     #ifdef ALLOW_OBCS_NORTH
37 dimitri 1.5 if ( OBNvicefile .NE. ' ' ) then
38 dimitri 1.1 DO I=1-Olx,sNx+Olx
39 dimitri 1.4 C Northern boundary
40 dimitri 1.1 IF (OB_Jn(I,bi,bj).NE.0) THEN
41 dimitri 1.4 #ifdef OBCS_SEAICE_AVOID_CONVERGENCE
42     vFld(I,OB_Jn(I,bi,bj),1,bi,bj)=
43     & max(OBNvice(I,bi,bj),vFld(I,OB_Jn(I,bi,bj),1,bi,bj))
44     & * _maskS(I,OB_Jn(I,bi,bj),K,bi,bj)
45     #else
46 dimitri 1.1 vFld(I,OB_Jn(I,bi,bj),1,bi,bj)=OBNvice(I,bi,bj)
47     & *_maskS(I,OB_Jn(I,bi,bj),K,bi,bj)
48 dimitri 1.4 #endif
49 dimitri 1.1 uFld(I,OB_Jn(I,bi,bj),1,bi,bj)=OBNuice(I,bi,bj)
50     & *_maskW(I,OB_Jn(I,bi,bj),K,bi,bj)
51     ENDIF
52     ENDDO
53 dimitri 1.5 endif
54 dimitri 1.1 #endif
55     #ifdef ALLOW_OBCS_SOUTH
56 dimitri 1.5 if ( OBSvicefile .NE. ' ' ) then
57 dimitri 1.1 DO I=1-Olx,sNx+Olx
58 dimitri 1.4 C Southern boundary
59 dimitri 1.1 IF (OB_Js(I,bi,bj).NE.0) THEN
60 dimitri 1.4 #ifdef OBCS_SEAICE_AVOID_CONVERGENCE
61     vFld(I,OB_Js(I,bi,bj)+1,1,bi,bj)=
62     & min(OBSvice(I,bi,bj),vFld(I,OB_Js(I,bi,bj)+1,1,bi,bj))
63     & * _maskS(I,OB_Js(I,bi,bj)+1,K,bi,bj)
64     #else
65 dimitri 1.1 vFld(I,OB_Js(I,bi,bj)+1,1,bi,bj)=OBSvice(I,bi,bj)
66     & *_maskS(I,OB_Js(I,bi,bj)+1,K,bi,bj)
67 dimitri 1.4 #endif
68 dimitri 1.1 uFld(I,OB_Js(I,bi,bj),1,bi,bj)=OBSuice(I,bi,bj)
69     & *_maskW(I,OB_Js(I,bi,bj),K,bi,bj)
70     ENDIF
71     ENDDO
72 dimitri 1.5 endif
73 dimitri 1.1 #endif
74    
75     C Set model variables to OB values on East/West Boundaries
76     #ifdef ALLOW_OBCS_EAST
77 dimitri 1.5 if ( OBEuicefile .NE. ' ' ) then
78 dimitri 1.1 DO J=1-Oly,sNy+Oly
79 dimitri 1.4 C Eastern boundary
80 dimitri 1.1 IF (OB_Ie(J,bi,bj).NE.0) THEN
81 dimitri 1.4 #ifdef OBCS_SEAICE_AVOID_CONVERGENCE
82     uFld(OB_Ie(J,bi,bj),J,1,bi,bj)=
83     & max(OBEuice(J,bi,bj),uFld(OB_Ie(J,bi,bj),J,1,bi,bj))
84     & * _maskW(OB_Ie(J,bi,bj),J,K,bi,bj)
85     #else
86 dimitri 1.1 uFld(OB_Ie(J,bi,bj),J,1,bi,bj)=OBEuice(J,bi,bj)
87     & *_maskW(OB_Ie(J,bi,bj),J,K,bi,bj)
88 dimitri 1.4 #endif
89 dimitri 1.1 vFld(OB_Ie(J,bi,bj),J,1,bi,bj)=OBEvice(J,bi,bj)
90     & *_maskS(OB_Ie(J,bi,bj),J,K,bi,bj)
91     ENDIF
92     ENDDO
93 dimitri 1.5 endif
94 dimitri 1.1 #endif
95     #ifdef ALLOW_OBCS_WEST
96 dimitri 1.5 if ( OBWuicefile .NE. ' ' ) then
97 dimitri 1.1 DO J=1-Oly,sNy+Oly
98 dimitri 1.4 C Western boundary
99 dimitri 1.1 IF (OB_Iw(J,bi,bj).NE.0) THEN
100 dimitri 1.4 #ifdef OBCS_SEAICE_AVOID_CONVERGENCE
101     uFld(OB_Iw(J,bi,bj)+1,J,1,bi,bj)=
102     & min(OBWuice(J,bi,bj),uFld(OB_Iw(J,bi,bj)+1,J,1,bi,bj))
103     & * _maskW(OB_Iw(J,bi,bj)+1,J,K,bi,bj)
104     #else
105 dimitri 1.3 uFld(OB_Iw(J,bi,bj)+1,J,1,bi,bj)=OBWuice(J,bi,bj)
106 dimitri 1.1 & *_maskW(OB_Iw(J,bi,bj)+1,J,K,bi,bj)
107 dimitri 1.4 #endif
108 dimitri 1.1 vFld(OB_Iw(J,bi,bj),J,1,bi,bj)=OBWvice(J,bi,bj)
109     & *_maskS(OB_Iw(J,bi,bj),J,K,bi,bj)
110     ENDIF
111     ENDDO
112 dimitri 1.5 endif
113 dimitri 1.1 #endif
114    
115 dimitri 1.2 ENDDO
116     ENDDO
117    
118 dimitri 1.1 #endif /* defined (ALLOW_OBCS) && defined (ALLOW_SEAICE) */
119    
120     RETURN
121     END

  ViewVC Help
Powered by ViewVC 1.1.22