C $Header: /u/gcmpack/MITgcm/pkg/flt/flt_functions.F,v 1.2 2003/10/28 22:21:27 jmc Exp $
C $Name: $
#include "FLT_CPPOPTIONS.h"
_RL function global2local_i(
I rG,
I bi,
I bj,
I mythid
& )
c ==================================================================
c FUNCTION global2local_i
c ==================================================================
c
c o Converts global x-coordinates (grid) to local index for specific
c tile
c
c ==================================================================
c FUNCTION global2local_i
c ==================================================================
c == global variables ==
#include "EEPARAMS.h"
#include "SIZE.h"
#include "GRID.h"
#include "PARAMS.h"
c == routine arguments ==
integer mythid, bi, bj
_RL rG, fp, fm, dist, xlo, xhi
INTEGER i, iG
c == local variables ==
c == end of interface ==
do i=0,sNx
iG = myXGlobalLo + (bi-1)*sNx
xlo = xc(i, 1,bi,bj)
if (i.eq.0) xlo = xc(i,1,bi,bj)-delX(iG)
xhi = xc(i+1,1,bi,bj)
if (i.eq.sNx) xhi = xc(i,1,bi,bj)+delX(iG+i-1)
if (xlo .le. rG .and. xhi .gt. rG) then
dist = xhi - xlo
fp = (xhi - rG) / dist
fm = (rG - xlo) / dist
global2local_i = fp*i + fm*(i+1)
goto 100
endif
enddo
100 continue
return
end
_RL function global2local_j(
I rG,
I bi,
I bj,
I mythid
& )
c ==================================================================
c FUNCTION global2local_j
c ==================================================================
c
c o Converts global y-coordinates (grid) to local index for specific
c tile
c
c
c started: Arne Biastoch abiastoch@ucsd.edu 07-AUG-2000
c
c
c ==================================================================
c FUNCTION global2local_j
c ==================================================================
c == global variables ==
#include "EEPARAMS.h"
#include "SIZE.h"
#include "GRID.h"
#include "PARAMS.h"
c == routine arguments ==
integer mythid, bi, bj
_RL rG, fp, fm, dist, ylo, yhi
INTEGER j, jG
c == local variables ==
c == end of interface ==
do j=0,sNy
jG = myYGlobalLo + (bj-1)*sNy
ylo = yc(1,j, bi,bj)
if (j.eq.0) ylo = yc(1,j,bi,bj)-delY(jG)
yhi = yc(1,j+1,bi,bj)
if (j.eq.sNy) yhi = yc(1,j,bi,bj)+delY(jG+j-1)
if (ylo .le. rG .and. yhi .gt. rG) then
dist = yhi - ylo
fp = (yhi - rG) / dist
fm = (rG - ylo) / dist
global2local_j = fp*j + fm*(j+1)
goto 100
endif
enddo
100 continue
return
end
_RL function global2local_k(
I rG,
I bi,
I bj,
I mythid
& )
c ==================================================================
c FUNCTION global2local_k
c ==================================================================
c
c o Converts global z-coordinates (grid) to local index for specific
c tile
c
c
c started: Arne Biastoch abiastoch@ucsd.edu 07-AUG-2000
c
c
c ==================================================================
c FUNCTION global2local_k
c ==================================================================
c == global variables ==
#include "EEPARAMS.h"
#include "SIZE.h"
#include "GRID.h"
#include "PARAMS.h"
c == routine arguments ==
integer mythid, bi, bj
_RL rG, fp, fm, dist, zlo, zhi
INTEGER k
c == local variables ==
c == end of interface ==
do k=0,Nr
zlo = rC(k)
if (k.eq.0) zlo = rC(k)-drF(1)*0.5
zhi = rC(k+1)
if (k.eq.Nr) zhi = rC(k)+drF(Nr)*0.5
if (zlo .le. rG .and. zhi .gt. rG) then
dist = zhi - zlo
fp = (zhi - rG) / dist
fm = (rG - zlo) / dist
global2local_k = fp*k + fm*(k+1)
goto 100
endif
enddo
100 continue
return
end