C====================================================================== C V E C T O R H A N D L I N G (grid-oriented operations) C====================================================================== C---------------------------------------------------------------------- c nullv0: V(.,.) <-- 0.0d0 ; C---------------------------------------------------------------------- subroutine nullv(V, N1,N2) IMPLICIT none double precision V integer*4 i,j,N1,N2 dimension V(N1,N2) do j=1,N2 do i=1,N1 V(i,j) = 0.0d0 enddo enddo return end C---------------------------------------------------------------------- c nullvi: P(.,.) <-- 0 ; integer zeroing C---------------------------------------------------------------------- subroutine nullvi(P, N1, N2) IMPLICIT none integer*4 i,j,N1,N2,P DIMENSION P(N1,N2) do j=1,N2 do i=1,N1 P(i,j) = 0 enddo enddo return end C---------------------------------------------------------------------- c vvsub: V1(.,.) <-- V2(.,.) - V3(.,.) ; C---------------------------------------------------------------------- subroutine vvsub(V1, V2, V3, N1, N2) IMPLICIT none double precision V1, V2, V3 integer*4 i,j, N1,N2 DIMENSION V1(N1,N2), V2(N1,N2), V3(N1,N2) C do j=1,N2 do i=1,N1 V1(i,j) = V2(i,j) - V3(i,j) enddo enddo return end C----------------------------------------------------------------------- c vminv: V(.,.) = - W(.,.) C----------------------------------------------------------------------- subroutine vminv(V, W, N1,N2) IMPLICIT none double precision V,W integer*4 i,j,N1,N2 DIMENSION V(N1,N2), W(N1,N2) do j=1,N2 do i=1,N1 V(i,j) = - W(i,j) enddo enddo return end C----------------------------------------------------------------------- c vvcopy: V(.,.) = W(.,.) C----------------------------------------------------------------------- subroutine vvcopy(V, W, N1,N2) IMPLICIT none double precision V,W integer*4 i,j,N1,N2 DIMENSION V(N1,N2), W(N1,N2) do j=1,N2 do i=1,N1 V(i,j) = W(i,j) enddo enddo return end C----------------------------------------------------------------------- c vimbed: V(.,.) <-- W(.,.) C----------------------------------------------------------------------- subroutine vimbed(V, W, N1,N2) IMPLICIT none double precision V,W integer*4 i,j,N1,N2 DIMENSION V(0:N1+1,0:N2+1), W(N1,N2) call nullv(V,N1+2,N2+2) do j=1,N2 do i=1,N1 V(i,j) = W(i,j) enddo enddo return end C----------------------------------------------------------------------- c vimbedi: P(.,.) <-- O(.,.) C----------------------------------------------------------------------- subroutine vimbedi(P, O, N1,N2) IMPLICIT none integer O,P integer*4 i,j,N1,N2 DIMENSION P(0:N1+1,0:N2+1), O(N1,N2) call nullvi(P,N1+2,N2+2) do j=1,N2 do i=1,N1 P(i,j) = O(i,j) enddo enddo return end C----------------------------------------------------------------------- c vpabsv: V(.,.) <--- V(.,.) + a*W(.,.) C----------------------------------------------------------------------- subroutine vpabsv(V, a, W, N1,N2) IMPLICIT none double precision V,W,a integer*4 i,j,N1,N2 DIMENSION V(N1,N2), W(N1,N2) do j=1,N2 do i=1,N1 V(i,j) = V(i,j) + a*W(i,j) enddo enddo return end C----------------------------------------------------------------------- C vminsv: Z(.,.) = -X(.,.) + a * Y(.,.) C----------------------------------------------------------------------- subroutine vminsv(Z, X, a, Y, N1, N2) IMPLICIT none DOUBLE PRECISION X,Y,Z,a integer*4 i,j,N1,N2 DIMENSION Z(N1,N2), X(N1,N2), Y(N1,N2) do j=1,N2 do i=1,N1 Z(i,j) = -X(i,j) + a*Y(i,j) enddo enddo return end