1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
module mod_vector3
TYPE vector3d
real*8 x
real*8 y
real*8 z
END TYPE
! Surcharge des operateur "+"
! -----------------------------------
interface operator(+)
module procedure add_vector3d
end interface
contains
function add_vector3d(a,b)
TYPE(vector3d),intent(in) :: a,b
TYPE(vector3d),intent(out) :: add_vector3d
add_vector3d%x=a%x+b%x
add_vector3d%y=a%y+b%y
add_vector3d%z=a%z+b%z
end function add_vector3d
end module mod_vector3
program test
implicit none
use mod_vector3
integer j
TYPE(vector3D) AB
TYPE(vector3D) CD
TYPE(vector3D) EF
write (*,'(A)') " "
write (*,'(A)') " Test"
write (*,'(A)') " "
do j=2,5
!Test operateur + sur vector3
AB%x=j
AB%y=j
AB%z=j
CD%x=2
CD%y=2
CD%z=2
write (*,*) " AB " , AB%x, " ", AB%y, " ", AB%z, " "
EF = AB+CD
write (*,*) " add EF " , EF%x, " ", EF%y, " ", EF%z, " "
end do
write (*,'(A)') "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
end program test |
Partager