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

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

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


Revision 1.2 - (hide 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 adcroft 1.2 C $Header: /u/gcmpack/models/MITgcmUV/model/src/ini_masks_etc.F,v 1.1 1998/07/02 14:17:11 adcroft Exp $
2 adcroft 1.1
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 adcroft 1.2
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 adcroft 1.1
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