/[MITgcm]/MITgcm/pkg/flt/flt_mapping.F
ViewVC logotype

Annotation of /MITgcm/pkg/flt/flt_mapping.F

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


Revision 1.3 - (hide annotations) (download)
Fri Feb 13 04:22:22 2009 UTC (15 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62p, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.2: +1 -5 lines
remove unnecessary lines of code

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/pkg/flt/flt_mapping.F,v 1.2 2009/02/10 17:29:32 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "FLT_OPTIONS.h"
5    
6     C-- Contents
7     C-- o FLT_MAP_XY2IJLOCAL
8     C-- o FLT_MAP_IJLOCAL2XY
9     C-- o FLT_MAP_R2K (Function)
10     C-- o FLT_MAP_K2R (Function)
11    
12     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
13    
14     SUBROUTINE FLT_MAP_XY2IJLOCAL(
15     O ix, jy,
16     I xx, yy, bi, bj, myThid )
17    
18     C ==================================================================
19     C SUBROUTINE FLT_MAP_XY2IJLOCAL
20     C ==================================================================
21     C o Converts global x,y-coordinates (grid) to corresponding
22     C local fractional horizontal indices for specific tile
23     C Range: [1/2 , sNx+1/2] , [1/2 , sNy+1/2]
24     C Center (Tracer Pt) <-> integer , integer
25     C U-velocity Pt <-> half integer , integer
26     C V-velocity Pt <-> integer , half integer
27     C Vorticity Pt <-> half integer , half integer
28     C ==================================================================
29    
30     C !USES:
31     IMPLICIT NONE
32    
33     C == global variables ==
34     #include "SIZE.h"
35     #include "EEPARAMS.h"
36     #include "GRID.h"
37     #include "PARAMS.h"
38    
39     C == routine arguments ==
40     _RL ix, jy
41     _RL xx, yy
42     INTEGER bi, bj, myThid
43    
44     C == local variables ==
45     _RL fm, dist
46     INTEGER i, j
47    
48     C == end of interface ==
49    
50     IF ( usingCartesianGrid .OR.
51     & usingSphericalPolarGrid .AND. .NOT.rotateGrid
52     & ) THEN
53    
54     ix = -1. _d 0
55     jy = -1. _d 0
56    
57     j = 1
58     DO i=0,sNx+1
59     IF ( ix.EQ.-1. _d 0 ) THEN
60     IF ( xG(i,j,bi,bj).LE.xx .AND. xx.LT.xG(i+1,j,bi,bj) ) THEN
61     dist = xG(i+1,j,bi,bj) - xG(i,j,bi,bj)
62 jmc 1.2 fm = ( xx - xG(i,j,bi,bj) ) / dist
63 jmc 1.1 ix = DFLOAT(i)+fm-0.5 _d 0
64     ENDIF
65     ENDIF
66     ENDDO
67    
68     i = 1
69     DO j=0,sNy+1
70     IF ( jy.EQ.-1. _d 0 ) THEN
71     IF ( yG(i,j,bi,bj).LE.yy .AND. yy.LT.yG(i,j+1,bi,bj) ) THEN
72     dist = yG(i,j+1,bi,bj) - yG(i,j,bi,bj)
73 jmc 1.2 fm = ( yy - yG(i,j,bi,bj) ) / dist
74 jmc 1.1 jy = DFLOAT(j)+fm-0.5 _d 0
75     ENDIF
76     ENDIF
77     ENDDO
78    
79     ELSE
80     STOP 'FLT_MAP_XY2IJLOCAL: not yet coded for this grid'
81     ENDIF
82    
83     RETURN
84     END
85    
86     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
87    
88     SUBROUTINE FLT_MAP_IJLOCAL2XY(
89     O xx, yy,
90     I ix, jy, bi, bj, myThid )
91    
92     C ==================================================================
93     C SUBROUTINE FLT_MAP_IJLOCAL2XY
94     C ==================================================================
95     C o Converts local fractional horizontal indices for specific tile
96     C to corresponding global x,y-coordinates (grid)
97     C Range: [1/2 , sNx+1/2] , [1/2 , sNy+1/2]
98     C Center (Tracer Pt) <-> integer , integer
99     C U-velocity Pt <-> half integer , integer
100     C V-velocity Pt <-> integer , half integer
101     C Vorticity Pt <-> half integer , half integer
102     C ==================================================================
103    
104     C !USES:
105     IMPLICIT NONE
106    
107     C == global variables ==
108     #include "SIZE.h"
109     #include "EEPARAMS.h"
110     #include "GRID.h"
111     #include "PARAMS.h"
112    
113     C == routine arguments ==
114     _RL xx, yy
115     _RL ix, jy
116     INTEGER bi, bj, myThid
117    
118     C == local variables ==
119     _RL ddx, ddy
120     INTEGER i, j
121    
122     C == end of interface ==
123    
124     IF ( usingCartesianGrid .OR.
125     & usingSphericalPolarGrid .AND. .NOT.rotateGrid
126     & ) THEN
127    
128     i = NINT(ix)
129     j = NINT(jy)
130     ddx = 0.5 _d 0 + ix - DFLOAT(i)
131     ddy = 0.5 _d 0 + jy - DFLOAT(j)
132    
133     xx = xG(i,j,bi,bj) + ddx*( xG(i+1,j,bi,bj) - xG(i,j,bi,bj) )
134     yy = yG(i,j,bi,bj) + ddy*( yG(i,j+1,bi,bj) - yG(i,j,bi,bj) )
135    
136     ELSE
137     STOP 'FLT_MAP_IJLOCAL2XY: not yet coded for this grid'
138     ENDIF
139    
140     RETURN
141     END
142    
143     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
144    
145     _RL FUNCTION FLT_MAP_R2K(
146     I rr, bi, bj, myThid )
147    
148     C ==================================================================
149     C FUNCTION FLT_MAP_R2K
150     C ==================================================================
151     C o Converts r-coordinate (grid) to corresponding
152     C fractional vertical index
153     C Range: [1/2 , Nr+1/2],
154     C Center (Tracer Pt) <-> integer
155     C Interface (wVel Pt) <-> half integer
156     C ==================================================================
157    
158     C !USES:
159     IMPLICIT NONE
160    
161     C == global variables ==
162     #include "SIZE.h"
163     #include "EEPARAMS.h"
164     #include "GRID.h"
165    
166     C == routine arguments ==
167     _RL rr
168     INTEGER bi, bj, myThid
169    
170     C == local variables ==
171     _RL fm
172     INTEGER k
173    
174     C == end of interface ==
175    
176     FLT_MAP_R2K = 0. _d 0
177     DO k=1,Nr
178     IF ( FLT_MAP_R2K .EQ. 0. _d 0 ) THEN
179     C- r decreases when k increases (rkSign < 0):
180     IF ( rF(k) .GE. rr .AND. rr.GT.rF(k+1) ) THEN
181     fm = ( rr - rF(k) ) * recip_drF(k)*rkSign
182     FLT_MAP_R2K = DFLOAT(k)+fm-0.5 _d 0
183     ENDIF
184     ENDIF
185     ENDDO
186    
187     RETURN
188     END
189    
190     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
191    
192     _RL FUNCTION FLT_MAP_K2R(
193     I kr, bi, bj, myThid )
194    
195     C ==================================================================
196     C FUNCTION FLT_MAP_K2R
197     C ==================================================================
198     C o Converts fractional vertical index to corresponding
199     C r-coordinate (grid)
200     C Range: [1/2 , Nr+1/2],
201     C Center (Tracer Pt) <-> integer
202     C Interface (wVel Pt) <-> half integer
203     C ==================================================================
204    
205     C !USES:
206     IMPLICIT NONE
207    
208     C == global variables ==
209     #include "SIZE.h"
210     #include "EEPARAMS.h"
211     #include "GRID.h"
212    
213     C == routine arguments ==
214     _RL kr
215     INTEGER bi, bj, myThid
216    
217     C == local variables ==
218     _RL ddz
219     INTEGER k
220    
221     C == end of interface ==
222    
223     k = NINT(kr)
224     IF ( k.LT.1 ) THEN
225     FLT_MAP_K2R = rF(1)
226     ELSEIF ( k.GT.Nr ) THEN
227     FLT_MAP_K2R = rF(Nr+1)
228     ELSE
229     ddz = 0.5 _d 0 + kr - DFLOAT(k)
230     FLT_MAP_K2R = rF(k) + ddz*drF(k)*rkSign
231     ENDIF
232    
233     RETURN
234     END

  ViewVC Help
Powered by ViewVC 1.1.22