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

Contents of /MITgcm/pkg/obcs/obcs_apply_r_star.F

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


Revision 1.6 - (show annotations) (download)
Tue May 24 14:31:14 2011 UTC (12 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62z, checkpoint62y, checkpoint63, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c
Changes since 1.5: +3 -2 lines
split header file "OBCS.h" into 4 separated files:
  OBCS_PARAMS.h, OBCS_GRID.h, OBCS_FIELDS.h & OBCS_SEAICE.h

1 C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_apply_r_star.F,v 1.5 2011/05/20 01:09:07 jmc Exp $
2 C $Name: $
3
4 #include "OBCS_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: OBCS_APPLY_R_STAR
9
10 C !INTERFACE:
11 SUBROUTINE OBCS_APPLY_R_STAR(
12 I bi, bj, etaFld,
13 U rStarFldC, rStarFldW, rStarFldS,
14 I myTime, myIter, myThid )
15
16 C !DESCRIPTION:
17 C *==========================================================*
18 C | S/R OBCS_APPLY_R_STAR
19 C *==========================================================*
20
21 C !USES:
22 IMPLICIT NONE
23 C == Global variables ==
24 #include "SIZE.h"
25 #include "EEPARAMS.h"
26 #include "PARAMS.h"
27 #include "GRID.h"
28 #include "OBCS_GRID.h"
29 #include "OBCS_FIELDS.h"
30
31 C !INPUT/OUTPUT PARAMETERS:
32 C bi, bj :: tile indices
33 C etaFld :: current eta field used to update the hFactor
34 C rStarFldC :: r* thickness-factor (grid-cell center)
35 C hFac_FldW :: r* thickness-factor (grid-cell Western -Edge)
36 C hFac_FldS :: r* thickness-factor (grid-cell Southern-Edge)
37 C myTime :: current time in simlation
38 C myIter :: current time-step number
39 C myThid :: my Thread Id number
40 INTEGER bi, bj
41 _RL etaFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
42 _RL rStarFldC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43 _RL rStarFldW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44 _RL rStarFldS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45 _RL myTime
46 INTEGER myIter, myThid
47 CEOP
48
49 #ifdef NONLIN_FRSURF
50 #ifndef DISABLE_RSTAR_CODE
51
52 C !LOCAL VARIABLES:
53 INTEGER i,j
54 LOGICAL useOBeta
55
56 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
57
58 C-- Eta OB values corresponding to previous iteration are not available when
59 C calc_r_star is called for the 1rst time (myIter=-1) form initialise_varia.
60 C Use current "etaFld" values instead, only for this 1rst call (myIter=-1).
61 useOBeta = myIter.NE.-1
62
63 C- Set model rStar_Factor to OB values on North/South Boundaries
64 IF ( tileHasOBN(bi,bj) ) THEN
65 C Northern boundary
66 DO i=1-Olx,sNx+Olx
67 j = OB_Jn(i,bi,bj)
68 IF (j.NE.0) THEN
69 IF (kSurfS(i,j,bi,bj).LE.Nr) THEN
70 IF ( useOBeta ) THEN
71 rStarFldS(i,j,bi,bj) = 1. _d 0
72 & + OBNeta( j,bi,bj) / (rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
73 ELSE
74 rStarFldS(i,j,bi,bj) = 1. _d 0
75 & + etaFld(i,j,bi,bj) / (rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
76 ENDIF
77 ENDIF
78 ENDIF
79 ENDDO
80 ENDIF
81 IF ( tileHasOBS(bi,bj) ) THEN
82 C Southern boundary
83 DO i=1-Olx,sNx+Olx
84 j = 1+OB_Js(i,bi,bj)
85 IF (j.NE.1) THEN
86 IF (kSurfS(i,j,bi,bj).LE.Nr) THEN
87 IF ( useOBeta ) THEN
88 rStarFldS(i,j,bi,bj) = 1. _d 0
89 & + OBSeta( j,bi,bj) / (rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
90 ELSE
91 rStarFldS(i,j,bi,bj) = 1. _d 0
92 & + etaFld(i,j-1,bi,bj)/(rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj))
93 ENDIF
94 ENDIF
95 ENDIF
96 ENDDO
97 ENDIF
98
99 C- Set model rStar_Factor to OB values on East/West Boundaries
100 IF ( tileHasOBE(bi,bj) ) THEN
101 C Eastern boundary
102 DO j=1-Oly,sNy+Oly
103 i = OB_Ie(j,bi,bj)
104 IF (i.NE.0) THEN
105 IF (kSurfW(i,j,bi,bj).LE.Nr) THEN
106 IF ( useOBeta ) THEN
107 rStarFldW(i,j,bi,bj) = 1. _d 0
108 & + OBEeta( j,bi,bj) / (rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
109 ELSE
110 rStarFldW(i,j,bi,bj) = 1. _d 0
111 & + etaFld(i,j,bi,bj) / (rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
112 ENDIF
113 ENDIF
114 ENDIF
115 ENDDO
116 ENDIF
117 IF ( tileHasOBW(bi,bj) ) THEN
118 C Western boundary
119 DO j=1-Oly,sNy+Oly
120 i = 1+OB_Iw(j,bi,bj)
121 IF (i.NE.1) THEN
122 IF (kSurfW(i,j,bi,bj).LE.Nr) THEN
123 IF ( useOBeta ) THEN
124 rStarFldW(i,j,bi,bj) = 1. _d 0
125 & + OBWeta( j,bi,bj) / (rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
126 ELSE
127 rStarFldW(i,j,bi,bj) = 1. _d 0
128 & + etaFld(i-1,j,bi,bj)/(rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj))
129 ENDIF
130 ENDIF
131 ENDIF
132 ENDDO
133 ENDIF
134
135 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
136
137 #endif /* DISABLE_RSTAR_CODE */
138 #endif /* NONLIN_FRSURF */
139
140 RETURN
141 END

  ViewVC Help
Powered by ViewVC 1.1.22