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

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

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

revision 1.11 by dimitri, Mon Jun 5 19:23:31 2006 UTC revision 1.12 by dimitri, Tue Jun 6 03:36:14 2006 UTC
# Line 93  c     == local variables == Line 93  c     == local variables ==
93        _RL     fac, x1, x2, x3, x4, y1, y2, y3, y4, dx, dy        _RL     fac, x1, x2, x3, x4, y1, y2, y3, y4, dx, dy
94        _RL     tmp_u (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)        _RL     tmp_u (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
95        _RL     tmp_v (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)        _RL     tmp_v (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
96        integer count0, count1        integer count0, count1, offset
97        integer i, j, bi, bj        integer i, j, bi, bj
98        integer   il, interp_method        integer   il, interp_method
99        parameter(interp_method=2)        parameter(interp_method=2)
# Line 171  c     vector rotation Line 171  c     vector rotation
171                    do bi = mybxlo(mythid),mybxhi(mythid)                    do bi = mybxlo(mythid),mybxhi(mythid)
172                       do j = 1,sny                       do j = 1,sny
173                          do i = 1,snx                          do i = 1,snx
174                             x1=xG(i,j,bi,bj)  C     if yc is within dyc of North Pole then find direction from adjacent values
175                             x2=xG(i+1,j,bi,bj)                             offset=0
176                             x3=xG(i,j+1,bi,bj)                             if ( yC(i,j,bi,bj) .gt.
177                             x4=xG(i+1,j+1,bi,bj)       &                          (90-dyC(i,j,bi,bj)*8.9946e-06) )
178         &                          offset=2
179                               x1=xG(i-offset,j-offset,bi,bj)
180                               x2=xG(i-offset+1,j-offset,bi,bj)
181                               x3=xG(i-offset,j-offset+1,bi,bj)
182                               x4=xG(i-offset+1,j-offset+1,bi,bj)
183                             if ((x2-x1).gt.180) x2=x2-360                             if ((x2-x1).gt.180) x2=x2-360
184                             if ((x1-x2).gt.180) x2=x2+360                             if ((x1-x2).gt.180) x2=x2+360
185                             if ((x3-x1).gt.180) x3=x3-360                             if ((x3-x1).gt.180) x3=x3-360
186                             if ((x1-x3).gt.180) x3=x3+360                             if ((x1-x3).gt.180) x3=x3+360
187                             if ((x4-x1).gt.180) x4=x4-360                             if ((x4-x1).gt.180) x4=x4-360
188                             if ((x1-x4).gt.180) x4=x4+360                             if ((x1-x4).gt.180) x4=x4+360
189                             y1=yG(i,j,bi,bj)                             y1=yG(i-offset,j-offset,bi,bj)
190                             y2=yG(i+1,j,bi,bj)                             y2=yG(i-offset+1,j-offset,bi,bj)
191                             y3=yG(i,j+1,bi,bj)                             y3=yG(i-offset,j-offset+1,bi,bj)
192                             y4=yG(i+1,j+1,bi,bj)                             y4=yG(i-offset+1,j-offset+1,bi,bj)
193                             dx=0.5*(x3+x4-x1-x2)                             dx=0.5*(x3+x4-x1-x2)
194                             dx=dx*cos(deg2rad*yC(i,j,bi,bj))                             dx=dx*cos(deg2rad*yC(i-offset,j-offset,bi,bj))
195                             dy=0.5*(y3+y4-y1-y2)                             dy=0.5*(y3+y4-y1-y2)
196                             vvec1(i,j,bi,bj)=(tmp_u(i,j,bi,bj)*dx+                             vvec1(i,j,bi,bj)=
197       &                          tmp_v(i,j,bi,bj)*dy)/sqrt(dx*dx+dy*dy)       &                          (tmp_u(i-offset,j-offset,bi,bj)*dx+
198         &                          tmp_v(i-offset,j-offset,bi,bj)*dy)/
199         &                          sqrt(dx*dx+dy*dy)
200                             dx=0.5*(x2+x4-x1-x3)                             dx=0.5*(x2+x4-x1-x3)
201                             dx=dx*cos(deg2rad*yC(i,j,bi,bj))                             dx=dx*cos(deg2rad*yC(i-offset,j-offset,bi,bj))
202                             dy=0.5*(y2+y4-y1-y3)                             dy=0.5*(y2+y4-y1-y3)
203                             uvec1(i,j,bi,bj)=(tmp_u(i,j,bi,bj)*dx+                             uvec1(i,j,bi,bj)=
204       &                          tmp_v(i,j,bi,bj)*dy)/sqrt(dx*dx+dy*dy)       &                          (tmp_u(i-offset,j-offset,bi,bj)*dx+
205         &                          tmp_v(i-offset,j-offset,bi,bj)*dy)/
206         &                          sqrt(dx*dx+dy*dy)
207                          enddo                          enddo
208                       enddo                       enddo
209                    enddo                    enddo
# Line 262  c     vector rotation Line 271  c     vector rotation
271                    do bi = mybxlo(mythid),mybxhi(mythid)                    do bi = mybxlo(mythid),mybxhi(mythid)
272                       do j = 1,sny                       do j = 1,sny
273                          do i = 1,snx                          do i = 1,snx
274                             x1=xG(i,j,bi,bj)  C     if yc is within dyc of North Pole then find direction from adjacent values
275                             x2=xG(i+1,j,bi,bj)                             offset=0
276                             x3=xG(i,j+1,bi,bj)                             if ( yC(i,j,bi,bj) .gt.
277                             x4=xG(i+1,j+1,bi,bj)       &                          (90-dyC(i,j,bi,bj)*8.9946e-06) )
278         &                          offset=2
279                               x1=xG(i-offset,j-offset,bi,bj)
280                               x2=xG(i-offset+1,j-offset,bi,bj)
281                               x3=xG(i-offset,j-offset+1,bi,bj)
282                               x4=xG(i-offset+1,j-offset+1,bi,bj)
283                             if ((x2-x1).gt.180) x2=x2-360                             if ((x2-x1).gt.180) x2=x2-360
284                             if ((x1-x2).gt.180) x2=x2+360                             if ((x1-x2).gt.180) x2=x2+360
285                             if ((x3-x1).gt.180) x3=x3-360                             if ((x3-x1).gt.180) x3=x3-360
286                             if ((x1-x3).gt.180) x3=x3+360                             if ((x1-x3).gt.180) x3=x3+360
287                             if ((x4-x1).gt.180) x4=x4-360                             if ((x4-x1).gt.180) x4=x4-360
288                             if ((x1-x4).gt.180) x4=x4+360                             if ((x1-x4).gt.180) x4=x4+360
289                             y1=yG(i,j,bi,bj)                             y1=yG(i-offset,j-offset,bi,bj)
290                             y2=yG(i+1,j,bi,bj)                             y2=yG(i-offset+1,j-offset,bi,bj)
291                             y3=yG(i,j+1,bi,bj)                             y3=yG(i-offset,j-offset+1,bi,bj)
292                             y4=yG(i+1,j+1,bi,bj)                             y4=yG(i-offset+1,j-offset+1,bi,bj)
293                             dx=0.5*(x3+x4-x1-x2)                             dx=0.5*(x3+x4-x1-x2)
294                             dx=dx*cos(deg2rad*yC(i,j,bi,bj))                             dx=dx*cos(deg2rad*yC(i-offset,j-offset,bi,bj))
295                             dy=0.5*(y3+y4-y1-y2)                             dy=0.5*(y3+y4-y1-y2)
296                             vvec1(i,j,bi,bj)=(tmp_u(i,j,bi,bj)*dx+                             vvec1(i,j,bi,bj)=
297       &                          tmp_v(i,j,bi,bj)*dy)/sqrt(dx*dx+dy*dy)       &                          (tmp_u(i-offset,j-offset,bi,bj)*dx+
298         &                          tmp_v(i-offset,j-offset,bi,bj)*dy)/
299         &                          sqrt(dx*dx+dy*dy)
300                             dx=0.5*(x2+x4-x1-x3)                             dx=0.5*(x2+x4-x1-x3)
301                             dx=dx*cos(deg2rad*yC(i,j,bi,bj))                             dx=dx*cos(deg2rad*yC(i-offset,j-offset,bi,bj))
302                             dy=0.5*(y2+y4-y1-y3)                             dy=0.5*(y2+y4-y1-y3)
303                             uvec1(i,j,bi,bj)=(tmp_u(i,j,bi,bj)*dx+                             uvec1(i,j,bi,bj)=
304       &                          tmp_v(i,j,bi,bj)*dy)/sqrt(dx*dx+dy*dy)       &                          (tmp_u(i-offset,j-offset,bi,bj)*dx+
305         &                          tmp_v(i-offset,j-offset,bi,bj)*dy)/
306         &                          sqrt(dx*dx+dy*dy)
307                          enddo                          enddo
308                       enddo                       enddo
309                    enddo                    enddo

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22