/[MITgcm]/MITgcm/pkg/exf/exf_interp.F
ViewVC logotype

Diff of /MITgcm/pkg/exf/exf_interp.F

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

revision 1.7 by adcroft, Fri Dec 12 15:13:37 2003 UTC revision 1.13 by heimbach, Sat Jan 14 18:09:45 2006 UTC
# Line 36  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC Line 36  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
36       I   infile,       I   infile,
37       I   filePrec,       I   filePrec,
38       O   arrayout,       O   arrayout,
39       I   irecord, xG, yG,       I   irecord, xG_in, yG,
40       I   lon_0, lon_inc,       I   lon_0, lon_inc,
41       I   lat_0, lat_inc,       I   lat_0, lat_inc,
42       I   nx_in, ny_in, method, mythid)       I   nx_in, ny_in, method, mythid)
# Line 58  C Line 58  C
58    
59  #include "SIZE.h"  #include "SIZE.h"
60  #include "EEPARAMS.h"  #include "EEPARAMS.h"
 #ifdef ALLOW_USE_MPI  
 # include "EESUPPORT.h"  
 #endif /* ALLOW_USE_MPI */  
61  #include "PARAMS.h"  #include "PARAMS.h"
62    
63  C subroutine variables  C subroutine variables
64        character*(*) infile        character*(*) infile
65        integer       filePrec, irecord, nx_in, ny_in        integer       filePrec, irecord, nx_in, ny_in
66        _RL           arrayout(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL           arrayout(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
67        _RS           xG      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS           xG_in      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
68        _RS           yG      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RS           yG      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
69        _RL           lon_0, lon_inc        _RL           lon_0, lon_inc
70        _RL           lat_0, lat_inc(ny_in-1)        _RL           lat_0, lat_inc(ny_in-1)
71        integer       method, mythid        integer       method, mythid
72    
73  C local variables  C local variables
       integer  ierr  
74        real*8   ne_fac,nw_fac,se_fac,sw_fac        real*8   ne_fac,nw_fac,se_fac,sw_fac
75        integer  e_ind(snx,sny),w_ind(snx,sny)        integer  e_ind(snx,sny),w_ind(snx,sny)
76        integer  n_ind(snx,sny),s_ind(snx,sny)        integer  n_ind(snx,sny),s_ind(snx,sny)
# Line 84  C local variables Line 80  C local variables
80        real*4   arrayin(-1:nx_in+2 ,      -1:ny_in+2)        real*4   arrayin(-1:nx_in+2 ,      -1:ny_in+2)
81        real*8   x_in   (-1:nx_in+2), y_in(-1:ny_in+2)        real*8   x_in   (-1:nx_in+2), y_in(-1:ny_in+2)
82        integer  i, j, k, l, js, bi, bj, sp, interp_unit        integer  i, j, k, l, js, bi, bj, sp, interp_unit
83        real*4   global(nx_in,ny_in)        _RS      xG(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
84          _RS      threeSixtyRS
85        _BEGIN_MASTER( myThid )        _RL      threeSixtyRL
86          PARAMETER ( threeSixtyRS = 360. )
87  C check input arguments        PARAMETER ( threeSixtyRL = 360. )
88         if ( .NOT. (filePrec .EQ. 32) )  
89       &     stop 'stop in exf_interp.F: value of filePrec not allowed'  !     nomalize xG
90          do bj=myByLo(myThid),myByHi(myThid)
91  C read in input data         do bi=myBxLo(myThid),myBxHi(myThid)
92  #ifdef ALLOW_USE_MPI          do j=1-OLy,sNy+OLy
93         if (useSingleCPUIO) then           do i=1-OLx,sNx+OLx
94              xG(i,j,bi,bj) = xG_in(i,j,bi,bj)
95  C master thread of process 0, only, opens a global file            xG(i,j,bi,bj) = mod(xG(i,j,bi,bj),threeSixtyRS)
96          IF( mpiMyId .EQ. 0 ) THEN            if ( xG(i,j,bi,bj) .lt. 0. )
97           call mdsfindunit( interp_unit, mythid)       &     xG(i,j,bi,bj) = threeSixtyRS+xG(i,j,bi,bj)
          open(interp_unit,file=infile,status='old',access='direct',  
      &        recl=nx_in*ny_in*4)  
          read(interp_unit,rec=irecord)  
      &        ((global(i,j),i=1,nx_in),j=1,ny_in)  
          close(interp_unit)  
         ENDIF  
   
 C broadcast to all processes  
         call MPI_BCAST(global,nx_in*ny_in,MPI_REAL,  
      &       0,MPI_COMM_MODEL,ierr)  
         do j=1,ny_in  
          do i=1,nx_in  
           arrayin(i,j)=global(i,j)  
98           enddo           enddo
99          enddo          enddo
100           enddo
101          enddo
102    
103         else         call exf_interp_read(
104  #endif /* ALLOW_USE_MPI */       I   infile,
105         I   filePrec,
106         O   arrayin,
107         I   irecord, xG, yG,
108         I   lon_0, lon_inc,
109         I   lat_0, lat_inc,
110         I   nx_in, ny_in, method, mythid)
111          _BARRIER
112    
113          call mdsfindunit( interp_unit, mythid)  C     _BEGIN_MASTER( myThid )
         open(interp_unit,file=infile,status='old',access='direct',  
      &       recl=nx_in*ny_in*4)  
         read(interp_unit,rec=irecord)  
      &       ((arrayin(i,j),i=1,nx_in),j=1,ny_in)  
         close(interp_unit)  
   
 #ifdef ALLOW_USE_MPI  
        endif  
 #endif /* ALLOW_USE_MPI */  
   
 #ifdef _BYTESWAPIO  
        call MDS_BYTESWAPR4((nx_in+4)*(ny_in+4), arrayin )  
 #endif /* _BYTESWAPIO */  
114    
115  C setup input grid  C setup input grid
116         do i=-1,nx_in+2         do i=-1,nx_in+2
117          x_in(i) = lon_0 + (i-1.)*lon_inc          x_in(i) = lon_0 + (i-1.)*lon_inc
118            x_in(i) = mod(x_in(i),threeSixtyRL)
119            if ( x_in(i) .lt. 0. )
120         &   x_in(i) = threeSixtyRL+x_in(i)
121         enddo         enddo
122    
123         y_in(0) = lat_0 - lat_inc(1)         y_in(0) = lat_0 - lat_inc(1)
124         y_in(-1)= lat_0 - 2.*lat_inc(1)         y_in(-1)= lat_0 - 2.*lat_inc(1)
125         y_in(1) = lat_0         y_in(1) = lat_0
# Line 160  C enlarge boundary Line 143  C enlarge boundary
143          arrayin(i,ny_in+2) = arrayin(i,ny_in)          arrayin(i,ny_in+2) = arrayin(i,ny_in)
144         enddo         enddo
145    
146        _END_MASTER( myThid )  C     _END_MASTER( myThid )
147    
148        do bj = mybylo(mythid), mybyhi(mythid)        do bj = mybylo(mythid), mybyhi(mythid)
149         do bi = mybxlo(mythid), mybxhi(mythid)         do bi = mybxlo(mythid), mybxhi(mythid)

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.22