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

Contents of /MITgcm/model/src/ini_masks_etc.F

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


Revision 1.2 - (show annotations) (download)
Thu Jul 2 15:46:21 1998 UTC (25 years, 11 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint11, checkpoint13, checkpoint12, branch-point-rdot
Branch point for: branch-rdot
Changes since 1.1: +26 -16 lines
Forgot this changes to ini_mask_etc() and ini_depths() in the
previous "rearrangement" of initialise().

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/ini_masks_etc.F,v 1.1 1998/07/02 14:17:11 adcroft Exp $
2
3 #include "CPP_EEOPTIONS.h"
4
5 CStartOfInterface
6 SUBROUTINE INI_MASKS_ETC( myThid )
7 C /==========================================================\
8 C | SUBROUTINE INI_MASKS_ETC |
9 C | o Initialise masks and topography factors |
10 C |==========================================================|
11 C | These arrays are used throughout the code and describe |
12 C | the topography of the domain through masks (0s and 1s) |
13 C | and fractional height factors (0<hFac<1). The latter |
14 C | distinguish between the lopped-cell and full-step |
15 C | topographic representations. |
16 C \==========================================================/
17
18 C === Global variables ===
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "GRID.h"
23
24 C == Routine arguments ==
25 C myThid - Number of this instance of INI_CARTESIAN_GRID
26 INTEGER myThid
27 CEndOfInterface
28
29 C == Local variables ==
30 C bi,bj - Loop counters
31 C I,J,K
32 INTEGER bi, bj
33 INTEGER I, J, K
34
35 C Calculate quantities derived from XY depth map
36 DO bj = myByLo(myThid), myByHi(myThid)
37 DO bi = myBxLo(myThid), myBxHi(myThid)
38 DO J=1,sNy
39 DO I=1,sNx
40 C Inverse of depth
41 IF ( h(i,j,bi,bj) .EQ. 0. _d 0 ) THEN
42 rH(i,j,bi,bj) = 0. _d 0
43 ELSE
44 rH(i,j,bi,bj) = 1. _d 0 / H(i,j,bi,bj)
45 ENDIF
46 ENDDO
47 ENDDO
48 ENDDO
49 ENDDO
50 _EXCH_XY_R4( rH, myThid )
51
52 C Calculate lopping factor hFacC
53 DO bj=myByLo(myThid), myByHi(myThid)
54 DO bi=myBxLo(myThid), myBxHi(myThid)
55 DO K=1, Nz
56 DO J=1,sNy
57 DO I=1,sNx
58 IF ( H(I,J,bi,bj) .LE. zFace(K) ) THEN
59 C Below base of domain
60 hFacC(I,J,K,bi,bj) = 0.
61 ELSEIF ( H(I,J,bi,bj) .GT. zFace(K+1) ) THEN
62 C Base of domain is below this cell
63 hFacC(I,J,K,bi,bj) = 1.
64 ELSE
65 C Base of domain is in this cell
66 C Set hFac tp the fraction of the cell that is open.
67 hFacC(I,J,K,bi,bj) =
68 & (zFace(K)-H(I,J,bi,bj))/(zFace(K)-zFace(K+1))
69 ENDIF
70 ENDDO
71 ENDDO
72 ENDDO
73 ENDDO
74 ENDDO
75 _EXCH_XYZ_R4(hFacC , myThid )
76
77 C hFacW and hFacS (at U and V points)
78 DO bj=myByLo(myThid), myByHi(myThid)
79 DO bi=myBxLo(myThid), myBxHi(myThid)
80 DO K=1, Nz
81 DO J=1,sNy
82 DO I=1,sNx
83 hFacW(I,J,K,bi,bj)=
84 & MIN(hFacC(I,J,K,bi,bj),hFacC(I-1,J,K,bi,bj))
85 hFacS(I,J,K,bi,bj)=
86 & MIN(hFacC(I,J,K,bi,bj),hFacC(I,J-1,K,bi,bj))
87 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91 ENDDO
92 _EXCH_XYZ_R4(hFacW , myThid )
93 _EXCH_XYZ_R4(hFacS , myThid )
94
95 C Masks and reciprocals of hFac[CWS]
96 DO bj = myByLo(myThid), myByHi(myThid)
97 DO bi = myBxLo(myThid), myBxHi(myThid)
98 DO K=1,Nz
99 DO J=1,sNy
100 DO I=1,sNx
101 IF (HFacC(I,J,K,bi,bj) .NE. 0. D0 ) THEN
102 rHFacC(I,J,K,bi,bj) = 1. D0 / HFacC(I,J,K,bi,bj)
103 ELSE
104 rHFacC(I,J,K,bi,bj) = 0. D0
105 ENDIF
106 IF (HFacW(I,J,K,bi,bj) .NE. 0. D0 ) THEN
107 rHFacW(I,J,K,bi,bj) = 1. D0 / HFacW(I,J,K,bi,bj)
108 maskW(I,J,K,bi,bj) = 1. D0
109 ELSE
110 rHFacW(I,J,K,bi,bj) = 0. D0
111 maskW(I,J,K,bi,bj) = 0.0 D0
112 ENDIF
113 IF (HFacS(I,J,K,bi,bj) .NE. 0. D0 ) THEN
114 rHFacS(I,J,K,bi,bj) = 1. D0 / HFacS(I,J,K,bi,bj)
115 maskS(I,J,K,bi,bj) = 1. D0
116 ELSE
117 rHFacS(I,J,K,bi,bj) = 0. D0
118 maskS(I,J,K,bi,bj) = 0. D0
119 ENDIF
120 ENDDO
121 ENDDO
122 ENDDO
123 ENDDO
124 ENDDO
125 _EXCH_XYZ_R4(rHFacC , myThid )
126 _EXCH_XYZ_R4(rHFacW , myThid )
127 _EXCH_XYZ_R4(rHFacS , myThid )
128 _EXCH_XYZ_R4(maskW , myThid )
129 _EXCH_XYZ_R4(maskS , myThid )
130
131 C Calculate recipricols grid lengths
132 DO bj = myByLo(myThid), myByHi(myThid)
133 DO bi = myBxLo(myThid), myBxHi(myThid)
134 DO J=1,sNy
135 DO I=1,sNx
136 rDxG(I,J,bi,bj)=1.d0/dxG(I,J,bi,bj)
137 rDyG(I,J,bi,bj)=1.d0/dyG(I,J,bi,bj)
138 rDxC(I,J,bi,bj)=1.d0/dxC(I,J,bi,bj)
139 rDyC(I,J,bi,bj)=1.d0/dyC(I,J,bi,bj)
140 rDxF(I,J,bi,bj)=1.d0/dxF(I,J,bi,bj)
141 rDyF(I,J,bi,bj)=1.d0/dyF(I,J,bi,bj)
142 rDxV(I,J,bi,bj)=1.d0/dxV(I,J,bi,bj)
143 rDyU(I,J,bi,bj)=1.d0/dyU(I,J,bi,bj)
144 ENDDO
145 ENDDO
146 ENDDO
147 ENDDO
148 _EXCH_XY_R4(rDxG, myThid )
149 _EXCH_XY_R4(rDyG, myThid )
150 _EXCH_XY_R4(rDxC, myThid )
151 _EXCH_XY_R4(rDyC, myThid )
152 _EXCH_XY_R4(rDxF, myThid )
153 _EXCH_XY_R4(rDyF, myThid )
154 _EXCH_XY_R4(rDxV, myThid )
155 _EXCH_XY_R4(rDyU, myThid )
156
157 C
158 RETURN
159 END

  ViewVC Help
Powered by ViewVC 1.1.22