66# if defined TANGENT || defined TL_IOMS
79 integer,
intent(in) :: ng, tile, model, ninp
83 character (len=*),
parameter :: myfile = &
89 CALL wclock_on (ng, model, 34, __line__, myfile)
92 & lbi, ubi, lbj, ubj, &
93 & imins, imaxs, jmins, jmaxs, &
95 &
grid(ng) % rmask_full, &
97 &
grid(ng) % CosAngler, &
98 &
grid(ng) % SinAngler, &
104 CALL wclock_off (ng, model, 34, __line__, myfile)
112 & LBi, UBi, LBj, UBj, &
113 & IminS, ImaxS, JminS, JmaxS, &
117 & CosAngler, SinAngler, &
123 integer,
intent(in) :: ng, tile, model, ninp
124 integer,
intent(in) :: LBi, UBi, LBj, UBj
125 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
128 real(r8),
intent(in) :: CosAngler(LBi:,LBj:)
129 real(r8),
intent(in) :: SinAngler(LBi:,LBj:)
131 real(r8),
intent(in) :: rmask(LBi:,LBj:)
133 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
134 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
136 real(r8),
intent(inout) :: ua(LBi:,LBj:,:)
137 real(r8),
intent(inout) :: va(LBi:,LBj:,:)
139 real(r8),
intent(in) :: CosAngler(LBi:UBi,LBj:UBj)
140 real(r8),
intent(in) :: SinAngler(LBi:UBi,LBj:UBj)
142 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
144 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
145 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
147 real(r8),
intent(inout) :: ua(LBi:UBi,LBj:UBj,N(ng))
148 real(r8),
intent(inout) :: va(LBi:UBi,LBj:UBj,N(ng))
155 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Urho, Vrho
157# include "set_bounds.h"
163 k_loop :
DO k=1,n(ng)
169 urho(i,j)=0.5_r8*(u(i,j,k,ninp)+u(i+1,j,k,ninp))
171 IF (
domain(ng)%Western_Edge(tile))
THEN
172 urho(istr-1,j)=urho(istr,j)
174 IF (
domain(ng)%Eastern_Edge(tile))
THEN
175 urho(iend+1,j)=urho(iend,j)
183 vrho(i,j)=0.5_r8*(v(i,j,k,ninp)+v(i,j+1,k,ninp))
185 IF (
domain(ng)%Southern_Edge(tile))
THEN
186 vrho(i,jstr-1) = vrho(i,jstr)
188 IF (
domain(ng)%Northern_Edge(tile))
THEN
189 vrho(i,jend+1) = vrho(i,jend)
200 ua(i,j,k)=urho(i,j)*cosangler(i,j)- &
201 & vrho(i,j)*sinangler(i,j)
202 va(i,j,k)=vrho(i,j)*cosangler(i,j)+ &
203 & urho(i,j)*sinangler(i,j)
205 ua(i,j,k)=ua(i,j,k)*rmask(i,j)
206 va(i,j,k)=va(i,j,k)*rmask(i,j)
215 & lbi, ubi, lbj, ubj, 1, n(ng), &
232 integer,
intent(in) :: ng, tile, model, nout
236 character (len=*),
parameter :: myfile = &
242 CALL wclock_on (ng, model, 34, __line__, myfile)
245 & lbi, ubi, lbj, ubj, &
246 & imins, imaxs, jmins, jmaxs, &
248 &
grid(ng) % umask_full, &
249 &
grid(ng) % vmask_full, &
251 &
grid(ng) % CosAngler, &
252 &
grid(ng) % SinAngler, &
258 CALL wclock_off (ng, model, 34, __line__, myfile)
266 & LBi, UBi, LBj, UBj, &
267 & IminS, ImaxS, JminS, JmaxS, &
271 & CosAngler, SinAngler, &
277 integer,
intent(in) :: ng, tile, model, nout
278 integer,
intent(in) :: LBi, UBi, LBj, UBj
279 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
282 real(r8),
intent(in) :: CosAngler(LBi:,LBj:)
283 real(r8),
intent(in) :: SinAngler(LBi:,LBj:)
285 real(r8),
intent(in) :: umask(LBi:,LBj:)
286 real(r8),
intent(in) :: vmask(LBi:,LBj:)
288 real(r8),
intent(in) :: ua(LBi:,LBj:,:)
289 real(r8),
intent(in) :: va(LBi:,LBj:,:)
291 real(r8),
intent(inout) :: u(LBi:,LBj:,:,:)
292 real(r8),
intent(inout) :: v(LBi:,LBj:,:,:)
294 real(r8),
intent(in) :: CosAngler(LBi:UBi,LBj:UBj)
295 real(r8),
intent(in) :: SinAngler(LBi:UBi,LBj:UBj)
297 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
298 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
300 real(r8),
intent(in) :: ua(LBi:UBi,LBj:UBj,N(ng))
301 real(r8),
intent(in) :: va(LBi:UBi,LBj:UBj,N(ng))
303 real(r8),
intent(inout) :: u(LBi:UBi,LBj:UBj,N(ng),2)
304 real(r8),
intent(inout) :: v(LBi:UBi,LBj:UBj,N(ng),2)
311 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: Urho, Vrho
313# include "set_bounds.h"
319 k_loop :
DO k=1,n(ng)
325 urho(i,j)=ua(i,j,k)*cosangler(i,j)+ &
326 & va(i,j,k)*sinangler(i,j)
327 vrho(i,j)=va(i,j,k)*cosangler(i,j)- &
328 & ua(i,j,k)*sinangler(i,j)
336 u(i,j,k,nout)=0.5_r8*(urho(i-1,j)+urho(i,j))
338 u(i,j,k,nout)=u(i,j,k,nout)*umask(i,j)
344 v(i,j,k,nout)=0.5_r8*(vrho(i,j-1)+vrho(i,j))
346 v(i,j,k,nout)=v(i,j,k,nout)*vmask(i,j)
357 & lbi, ubi, lbj, ubj, 1, n(ng), &
360 & u(:,:,:,nout), v(:,:,:,nout))
374 integer,
intent(in) :: ng, tile, model, ninp
378 character (len=*),
parameter :: myfile = &
384 CALL wclock_on (ng, model, 34, __line__, myfile)
387 & lbi, ubi, lbj, ubj, &
388 & imins, imaxs, jmins, jmaxs, &
390 &
grid(ng) % rmask_full, &
392 &
grid(ng) % CosAngler, &
393 &
grid(ng) % SinAngler, &
394 &
ocean(ng) % tl_u, &
395 &
ocean(ng) % tl_v, &
396 &
ocean(ng) % tl_ua, &
399 CALL wclock_off (ng, model, 34, __line__, myfile)
407 & LBi, UBi, LBj, UBj, &
408 & IminS, ImaxS, JminS, JmaxS, &
412 & CosAngler, SinAngler, &
413 & tl_u, tl_v, tl_ua, tl_va)
418 integer,
intent(in) :: ng, tile, model, ninp
419 integer,
intent(in) :: LBi, UBi, LBj, UBj
420 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
423 real(r8),
intent(in) :: CosAngler(LBi:,LBj:)
424 real(r8),
intent(in) :: SinAngler(LBi:,LBj:)
426 real(r8),
intent(in) :: rmask(LBi:,LBj:)
428 real(r8),
intent(in) :: tl_u(LBi:,LBj:,:,:)
429 real(r8),
intent(in) :: tl_v(LBi:,LBj:,:,:)
431 real(r8),
intent(inout) :: tl_ua(LBi:,LBj:,:)
432 real(r8),
intent(inout) :: tl_va(LBi:,LBj:,:)
434 real(r8),
intent(in) :: CosAngler(LBi:UBi,LBj:UBj)
435 real(r8),
intent(in) :: SinAngler(LBi:UBi,LBj:UBj)
437 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
439 real(r8),
intent(in) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
440 real(r8),
intent(in) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
442 real(r8),
intent(inout) :: tl_ua(LBi:UBi,LBj:UBj,N(ng))
443 real(r8),
intent(inout) :: tl_va(LBi:UBi,LBj:UBj,N(ng))
450 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Urho, tl_Vrho
452# include "set_bounds.h"
458 k_loop :
DO k=1,n(ng)
466 tl_urho(i,j)=0.5_r8*(tl_u(i,j,k,ninp)+tl_u(i+1,j,k,ninp))
468 IF (
domain(ng)%Western_Edge(tile))
THEN
471 tl_urho(istr-1,j)=tl_urho(istr,j)
473 IF (
domain(ng)%Eastern_Edge(tile))
THEN
476 tl_urho(iend+1,j)=tl_urho(iend,j)
486 tl_vrho(i,j)=0.5_r8*(tl_v(i,j,k,ninp)+tl_v(i,j+1,k,ninp))
488 IF (
domain(ng)%Southern_Edge(tile))
THEN
491 tl_vrho(i,jstr-1) = tl_vrho(i,jstr)
493 IF (
domain(ng)%Northern_Edge(tile))
THEN
496 tl_vrho(i,jend+1) = tl_vrho(i,jend)
510 tl_ua(i,j,k)=tl_urho(i,j)*cosangler(i,j)- &
511 & tl_vrho(i,j)*sinangler(i,j)
515 tl_va(i,j,k)=tl_vrho(i,j)*cosangler(i,j)+ &
516 & tl_urho(i,j)*sinangler(i,j)
520 tl_ua(i,j,k)=tl_ua(i,j,k)*rmask(i,j)
523 tl_va(i,j,k)=tl_va(i,j,k)*rmask(i,j)
540 & lbi, ubi, lbj, ubj, 1, n(ng), &
555 integer,
intent(in) :: ng, tile, model, nout
559 character (len=*),
parameter :: myfile = &
565 CALL wclock_on (ng, model, 34, __line__, myfile)
568 & lbi, ubi, lbj, ubj, &
569 & imins, imaxs, jmins, jmaxs, &
571 &
grid(ng) % umask_full, &
572 &
grid(ng) % vmask_full, &
574 &
grid(ng) % CosAngler, &
575 &
grid(ng) % SinAngler, &
576 &
ocean(ng) % tl_ua, &
577 &
ocean(ng) % tl_va, &
578 &
ocean(ng) % tl_u, &
581 CALL wclock_off (ng, model, 34, __line__, myfile)
589 & LBi, UBi, LBj, UBj, &
590 & IminS, ImaxS, JminS, JmaxS, &
594 & CosAngler, SinAngler, &
595 & tl_ua, tl_va, tl_u, tl_v)
600 integer,
intent(in) :: ng, tile, model, nout
601 integer,
intent(in) :: LBi, UBi, LBj, UBj
602 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
605 real(r8),
intent(in) :: CosAngler(LBi:,LBj:)
606 real(r8),
intent(in) :: SinAngler(LBi:,LBj:)
608 real(r8),
intent(in) :: umask(LBi:,LBj:)
609 real(r8),
intent(in) :: vmask(LBi:,LBj:)
611 real(r8),
intent(in) :: tl_ua(LBi:,LBj:,:)
612 real(r8),
intent(in) :: tl_va(LBi:,LBj:,:)
614 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
615 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
617 real(r8),
intent(in) :: CosAngler(LBi:UBi,LBj:UBj)
618 real(r8),
intent(in) :: SinAngler(LBi:UBi,LBj:UBj)
620 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
621 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
623 real(r8),
intent(in) :: tl_ua(LBi:UBi,LBj:UBj,N(ng))
624 real(r8),
intent(in) :: tl_va(LBi:UBi,LBj:UBj,N(ng))
626 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
627 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
634 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: tl_Urho, tl_Vrho
636# include "set_bounds.h"
642 k_loop :
DO k=1,n(ng)
651 tl_urho(i,j)=tl_ua(i,j,k)*cosangler(i,j)+ &
652 & tl_va(i,j,k)*sinangler(i,j)
656 tl_vrho(i,j)=tl_va(i,j,k)*cosangler(i,j)- &
657 & tl_ua(i,j,k)*sinangler(i,j)
667 tl_u(i,j,k,nout)=0.5_r8*(tl_urho(i-1,j)+tl_urho(i,j))
671 tl_u(i,j,k,nout)=tl_u(i,j,k,nout)*umask(i,j)
680 tl_v(i,j,k,nout)=0.5_r8*(tl_vrho(i,j-1)+tl_vrho(i,j))
684 tl_v(i,j,k,nout)=tl_v(i,j,k,nout)*vmask(i,j)
701 & lbi, ubi, lbj, ubj, 1, n(ng), &
704 & tl_u(:,:,:,nout), tl_v(:,:,:,nout))
719 integer,
intent(in) :: ng, tile, model, ninp
723 character (len=*),
parameter :: myfile = &
729 CALL wclock_on (ng, model, 34, __line__, myfile)
732 & lbi, ubi, lbj, ubj, &
733 & imins, imaxs, jmins, jmaxs, &
735 &
grid(ng) % rmask_full, &
737 &
grid(ng) % CosAngler, &
738 &
grid(ng) % SinAngler, &
739 &
ocean(ng) % ad_u, &
740 &
ocean(ng) % ad_v, &
741 &
ocean(ng) % ad_ua, &
744 CALL wclock_off (ng, model, 34, __line__, myfile)
752 & LBi, UBi, LBj, UBj, &
753 & IminS, ImaxS, JminS, JmaxS, &
757 & CosAngler, SinAngler, &
758 & ad_u, ad_v, ad_ua, ad_va)
763 integer,
intent(in) :: ng, tile, model, ninp
764 integer,
intent(in) :: LBi, UBi, LBj, UBj
765 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
768 real(r8),
intent(in) :: CosAngler(LBi:,LBj:)
769 real(r8),
intent(in) :: SinAngler(LBi:,LBj:)
771 real(r8),
intent(in) :: rmask(LBi:,LBj:)
773 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
774 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
776 real(r8),
intent(inout) :: ad_ua(LBi:,LBj:,:)
777 real(r8),
intent(inout) :: ad_va(LBi:,LBj:,:)
779 real(r8),
intent(in) :: CosAngler(LBi:UBi,LBj:UBj)
780 real(r8),
intent(in) :: SinAngler(LBi:UBi,LBj:UBj)
782 real(r8),
intent(in) :: rmask(LBi:UBi,LBj:UBj)
784 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
785 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
787 real(r8),
intent(inout) :: ad_ua(LBi:UBi,LBj:UBj,N(ng))
788 real(r8),
intent(inout) :: tl_va(LBi:UBi,LBj:UBj,N(ng))
795 real(r8) :: adfac, adfac1, adfac2
796 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_Urho, ad_Vrho
798# include "set_bounds.h"
823 & lbi, ubi, lbj, ubj, 1, n(ng), &
831 k_loop :
DO k=1,n(ng)
841 ad_va(i,j,k)=ad_va(i,j,k)*rmask(i,j)
844 ad_ua(i,j,k)=ad_ua(i,j,k)*rmask(i,j)
849 adfac1=cosangler(i,j)*ad_va(i,j,k)
850 adfac2=sinangler(i,j)*ad_va(i,j,k)
851 ad_vrho(i,j)=ad_vrho(i,j)+adfac1
852 ad_urho(i,j)=ad_urho(i,j)+adfac2
857 adfac1=cosangler(i,j)*ad_ua(i,j,k)
858 adfac2=sinangler(i,j)*ad_ua(i,j,k)
859 ad_urho=ad_urho+adfac1
860 ad_vrho=ad_vrho-adfac2
870 IF (
domain(ng)%Northern_Edge(tile))
THEN
873 ad_vrho(i,jend )=ad_vrho(i,jend)+ad_vrho(i,jend+1)
874 ad_vrho(i,jend+1)=0.0_r8
876 IF (
domain(ng)%Southern_Edge(tile))
THEN
879 ad_vrho(i,jstr )=ad_vrho(i,jstr)+ad_vrho(i,jstr-1)
880 ad_vrho(i,jstr-1)=0.0_r8
885 adfac=0.5_r8*ad_vrho(i,j)
886 ad_v(i,j ,k,ninp)=ad_v(i,j ,k,ninp)+adfac
887 ad_v(i,j+1,k,ninp)=ad_v(i,j+1,k,ninp)+adfac
895 IF (
domain(ng)%Eastern_Edge(tile))
THEN
898 ad_urho(iend ,j)=ad_urho(iend,j)+ad_urho(iend+1,j)
899 ad_urho(iend+1,j)=0.0_r8
901 IF (
domain(ng)%Western_Edge(tile))
THEN
904 ad_urho(istr ,j)=ad_urho(istr,j)+ad_urho(istr-1,j)
905 ad_urho(istr-1,j)=0.0_r8
910 adfac=0.5_r8*ad_urho(i,j)
911 ad_u(i ,j,k,ninp)=ad_u(i ,j,k,ninp)+adfac
912 ad_u(i+1,j,k,ninp)=ad_u(i+1,j,k,ninp)+adfac
927 integer,
intent(in) :: ng, tile, model, nout
931 character (len=*),
parameter :: myfile = &
937 CALL wclock_on (ng, model, 34, __line__, myfile)
940 & lbi, ubi, lbj, ubj, &
941 & imins, imaxs, jmins, jmaxs, &
943 &
grid(ng) % umask, &
944 &
grid(ng) % vmask, &
946 &
grid(ng) % CosAngler, &
947 &
grid(ng) % SinAngler, &
948 &
ocean(ng) % ad_ua, &
949 &
ocean(ng) % ad_va, &
950 &
ocean(ng) % ad_u, &
953 CALL wclock_off (ng, model, 34, __line__, myfile)
961 & LBi, UBi, LBj, UBj, &
962 & IminS, ImaxS, JminS, JmaxS, &
966 & CosAngler, SinAngler, &
967 & ad_ua, ad_va, ad_u, ad_v)
972 integer,
intent(in) :: ng, tile, model, nout
973 integer,
intent(in) :: LBi, UBi, LBj, UBj
974 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
977 real(r8),
intent(in) :: CosAngler(LBi:,LBj:)
978 real(r8),
intent(in) :: SinAngler(LBi:,LBj:)
980 real(r8),
intent(in) :: umask(LBi:,LBj:)
981 real(r8),
intent(in) :: vmask(LBi:,LBj:)
983 real(r8),
intent(inout) :: ad_ua(LBi:,LBj:,:)
984 real(r8),
intent(inout) :: ad_va(LBi:,LBj:,:)
986 real(r8),
intent(inout) :: ad_u(LBi:,LBj:,:,:)
987 real(r8),
intent(inout) :: ad_v(LBi:,LBj:,:,:)
989 real(r8),
intent(in) :: CosAngler(LBi:UBi,LBj:UBj)
990 real(r8),
intent(in) :: SinAngler(LBi:UBi,LBj:UBj)
992 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
993 real(r8),
intent(in) :: vmask(LBi:UBi,LBj:UBj)
995 real(r8),
intent(inout) :: ad_ua(LBi:UBi,LBj:UBj,N(ng))
996 real(r8),
intent(inout) :: ad_va(LBi:UBi,LBj:UBj,N(ng))
998 real(r8),
intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
999 real(r8),
intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
1006 real(r8) :: adfac, adfac1, adfac2
1008 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: ad_Urho, ad_Vrho
1010# include "set_bounds.h"
1035 & lbi, ubi, lbj, ubj, 1, n(ng), &
1038 & ad_u(:,:,:,nout), ad_v(:,:,:,nout))
1043 k_loop :
DO k=1,n(ng)
1052 ad_v(i,j,k,nout)=ad_v(i,j,k,nout)*vmask(i,j)
1056 adfac=0.5_r8*ad_v(i,j,k,nout)
1057 ad_vrho(i,j-1)=ad_vrho(i,j-1)+adfac
1058 ad_vrho(i,j )=ad_vrho(i,j )+adfac
1059 ad_v(i,j,k,nout)=0.0_r8
1068 ad_u(i,j,k,nout)=ad_u(i,j,k,nout)*umask(i,j)
1072 adfac=0.5_r8*ad_u(i,j,k,nout)
1073 ad_urho(i-1,j)=ad_urho(i-1,j)+adfac
1074 ad_urho(i ,j)=ad_urho(i ,j)+adfac
1075 ad_u(i,j,k,nout)=0.0_r8
1087 adfac1=cosangler(i,j)*ad_vrho(i,j)
1088 adfac2=sinangler(i,j)*ad_vrho(i,j)
1089 ad_va(i,j,k)=ad_va(i,j,k)+adfac1
1090 ad_ua(i,j,k)=ad_ua(i,j,k)-adfac2
1095 adfac1=cosangler(i,j)*ad_urho(i,j)
1096 adfac2=sinangler(i,j)*ad_urho(i,j)
1097 ad_ua(i,j,k)=ad_ua(i,j,k)+adfac1
1098 ad_va(i,j,k)=ad_va(i,j,k)+adfac2
type(t_grid), dimension(:), allocatable grid
type(t_ocean), dimension(:), allocatable ocean
type(t_domain), dimension(:), allocatable domain
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
subroutine ad_mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, ad_a, ad_b, ad_c, ad_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 tl_uv_a2c_grid(ng, tile, model, nout)
subroutine tl_uv_c2a_grid_tile(ng, tile, model, ninp, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, rmask, cosangler, sinangler, tl_u, tl_v, tl_ua, tl_va)
subroutine, public uv_c2a_grid(ng, tile, model, ninp)
subroutine ad_uv_a2c_grid_tile(ng, tile, model, nout, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, umask, vmask, cosangler, sinangler, ad_ua, ad_va, ad_u, ad_v)
subroutine, public ad_uv_a2c_grid(ng, tile, model, nout)
subroutine, public ad_uv_c2a_grid(ng, tile, model, ninp)
subroutine tl_uv_a2c_grid_tile(ng, tile, model, nout, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, umask, vmask, cosangler, sinangler, tl_ua, tl_va, tl_u, tl_v)
subroutine, public uv_a2c_grid(ng, tile, model, nout)
subroutine uv_c2a_grid_tile(ng, tile, model, ninp, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, rmask, cosangler, sinangler, u, v, ua, va)
subroutine, public tl_uv_c2a_grid(ng, tile, model, ninp)
subroutine ad_uv_c2a_grid_tile(ng, tile, model, ninp, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, rmask, cosangler, sinangler, ad_u, ad_v, ad_ua, ad_va)
subroutine uv_a2c_grid_tile(ng, tile, model, nout, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, umask, vmask, cosangler, sinangler, ua, va, u, v)
recursive subroutine wclock_off(ng, model, region, line, routine)
recursive subroutine wclock_on(ng, model, region, line, routine)