29 & LBi, UBi, LBj, UBj, &
30 & CosAngler, SinAngler, &
34 & Uinp, Vinp, Uout, Vout)
47 logical,
intent(in) :: add, lboundary
49 integer,
intent(in) :: ng, tile
50 integer,
intent(in) :: lbi, ubi, lbj, ubj
53 real(r8),
intent(in) :: cosangler(lbi:,lbj:)
54 real(r8),
intent(in) :: sinangler(lbi:,lbj:)
56 real(r8),
intent(in) :: rmask_full(lbi:,lbj:)
58 real(r8),
intent(in) :: uinp(lbi:,lbj:)
59 real(r8),
intent(in) :: vinp(lbi:,lbj:)
61 real(r8),
intent(inout) :: uout(lbi:,lbj:)
62 real(r8),
intent(inout) :: vout(lbi:,lbj:)
64 real(r8),
intent(in) :: cosangler(lbi:ubi,lbj:ubj)
65 real(r8),
intent(in) :: sinangler(lbi:ubi,lbj:ubj)
67 real(r8),
intent(in) :: rmask_full(lbi:ubi,lbj:ubj)
69 real(r8),
intent(in) :: uinp(lbi:ubi,lbj:ubj)
70 real(r8),
intent(in) :: vinp(lbi:ubi,lbj:ubj)
72 real(r8),
intent(inout) :: uout(lbi:ubi,lbj:ubj)
73 real(r8),
intent(inout) :: vout(lbi:ubi,lbj:ubj)
80 real(r8) :: urho, vrho
82# include "set_bounds.h"
91 urho=0.5_r8*(uinp(i,j)+uinp(i+1,j))
92 vrho=0.5_r8*(vinp(i,j)+vinp(i,j+1))
93 uout(i,j)=uout(i,j)+ &
94 & urho*cosangler(i,j)- &
96 vout(i,j)=vout(i,j)+ &
97 & vrho*cosangler(i,j)+ &
100 uout(i,j)=uout(i,j)*rmask_full(i,j)
101 vout(i,j)=vout(i,j)*rmask_full(i,j)
108 urho=0.5_r8*(uinp(i,j)+uinp(i+1,j))
109 vrho=0.5_r8*(vinp(i,j)+vinp(i,j+1))
110 uout(i,j)=urho*cosangler(i,j)- &
111 & vrho*sinangler(i,j)
112 vout(i,j)=vrho*cosangler(i,j)+ &
113 & urho*sinangler(i,j)
115 uout(i,j)=uout(i,j)*rmask_full(i,j)
116 vout(i,j)=vout(i,j)*rmask_full(i,j)
127 & lbi, ubi, lbj, ubj, &
130 & lbi, ubi, lbj, ubj, &
134 & lbi, ubi, lbj, ubj, &
149 & LBi, UBi, LBj, UBj, LBk, UBk, &
150 & CosAngler, SinAngler, &
154 & Uinp, Vinp, Uout, Vout)
167 logical,
intent(in) :: add, lboundary
169 integer,
intent(in) :: ng, tile
170 integer,
intent(in) :: lbi, ubi, lbj, ubj, lbk, ubk
173 real(r8),
intent(in) :: cosangler(lbi:,lbj:)
174 real(r8),
intent(in) :: sinangler(lbi:,lbj:)
176 real(r8),
intent(in) :: rmask_full(lbi:,lbj:)
178 real(r8),
intent(in) :: uinp(lbi:,lbj:,lbk:)
179 real(r8),
intent(in) :: vinp(lbi:,lbj:,lbk:)
181 real(r8),
intent(inout) :: uout(lbi:,lbj:,lbk:)
182 real(r8),
intent(inout) :: vout(lbi:,lbj:,lbk:)
184 real(r8),
intent(in) :: cosangler(lbi:ubi,lbj:ubj)
185 real(r8),
intent(in) :: sinangler(lbi:ubi,lbj:ubj)
187 real(r8),
intent(in) :: rmask_full(lbi:ubi,lbj:ubj)
189 real(r8),
intent(in) :: uinp(lbi:ubi,lbj:ubj,lbk:ubk)
190 real(r8),
intent(in) :: vinp(lbi:ubi,lbj:ubj,lbk:ubk)
192 real(r8),
intent(inout) :: uout(lbi:ubi,lbj:ubj,lbk:ubk)
193 real(r8),
intent(inout) :: vout(lbi:ubi,lbj:ubj,lbk:ubk)
200 real(r8) :: urho, vrho
202# include "set_bounds.h"
212 urho=0.5_r8*(uinp(i,j,k)+uinp(i+1,j,k))
213 vrho=0.5_r8*(vinp(i,j,k)+vinp(i,j+1,k))
214 uout(i,j,k)=uout(i,j,k)+ &
215 & urho*cosangler(i,j)- &
216 & vrho*sinangler(i,j)
217 vout(i,j,k)=vout(i,j,k)+ &
218 & vrho*cosangler(i,j)+ &
219 & urho*sinangler(i,j)
221 uout(i,j,k)=uout(i,j,k)*rmask_full(i,j)
222 vout(i,j,k)=vout(i,j,k)*rmask_full(i,j)
231 urho=0.5_r8*(uinp(i,j,k)+uinp(i+1,j,k))
232 vrho=0.5_r8*(vinp(i,j,k)+vinp(i,j+1,k))
233 uout(i,j,k)=urho*cosangler(i,j)- &
234 & vrho*sinangler(i,j)
235 vout(i,j,k)=vrho*cosangler(i,j)+ &
236 & urho*sinangler(i,j)
238 uout(i,j,k)=uout(i,j,k)*rmask_full(i,j)
239 vout(i,j,k)=vout(i,j,k)*rmask_full(i,j)
251 & lbi, ubi, lbj, ubj, lbk, ubk, &
254 & lbi, ubi, lbj, ubj, lbk, ubk, &
258 & lbi, ubi, lbj, ubj, lbk, ubk, &
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine, public uv_rotate3d(ng, tile, add, lboundary, lbi, ubi, lbj, ubj, lbk, ubk, cosangler, sinangler, rmask_full, uinp, vinp, uout, vout)
subroutine, public uv_rotate2d(ng, tile, add, lboundary, lbi, ubi, lbj, ubj, cosangler, sinangler, rmask_full, uinp, vinp, uout, vout)