4 ! gfortran generated a mismatching tree ("type mismatch in binary expression")
5 ! for array bounds (mixing integer kind=4/kind=8 without fold_convert).
12 TYPE distributed_vector
13 REAL, pointer :: local(:)
14 INTEGER(4) :: global_length
,local_start
15 INTEGER(8) :: local_end
16 END TYPE distributed_vector
18 INTERFACE ASSIGNMENT (=)
19 MODULE PROCEDURE assign_ar_dv
22 INTERFACE OPERATOR (*)
23 MODULE PROCEDURE multiply_dv_dv
28 SUBROUTINE assign_ar_dv (handle
,pvec
)
30 ! copy array to the distributed_vector
32 REAL, INTENT(IN
) :: pvec(:)
33 TYPE (distributed_vector
), INTENT(INOUT
) :: handle
35 handle
%local(:) = pvec(:)
38 END SUBROUTINE assign_ar_dv
40 FUNCTION multiply_dv_dv (handle1
,handle2
)
42 ! multiply two distributed_vectors
44 TYPE (distributed_vector
), INTENT(IN
) :: handle2
45 TYPE (distributed_vector
), INTENT(IN
) :: handle1
46 REAL :: multiply_dv_dv(handle1
%local_start
:handle1
%local_end
)
48 multiply_dv_dv
= handle1
%local(:) * handle2
%local(:)
51 END FUNCTION multiply_dv_dv
54 SUBROUTINE CAININAD_SCALE_DISTVEC ()
55 TYPE (distributed_vector
) :: PVAZG
56 TYPE (distributed_vector
) :: ZTEMP
57 TYPE (distributed_vector
) :: SCALP_DV
59 ZTEMP
= PVAZG
* SCALP_DV
60 END SUBROUTINE CAININAD_SCALE_DISTVEC