program ArrayTest
implicit none
integer i
real :: p(4,2)
integer :: t(2,3)
data p/ 0.,0.,2.,2., &
0.,2.,2.,0. /
data t/ 1,2, &
4,4, &
2,3 /
write(*,'(2f8.3)') (p(i,:),i=1,4)
write(*,'(2I3)') (t(i,:),i=1,2)
write(*,'(2f8.3)') triarea(p,t)
contains
function triarea(p,t) result(A)
!**************************************************************************
! TRIAREA: Area of triangles assuming counter-clockwise (CCW) node
! ordering.
!
! P : Nx2 array of XY node co-ordinates
! T : Mx3 array of triangles as indices into P
! A : Mx1 array of triangle areas
!**************************************************************************
!
real, dimension(:,:) :: p
integer,dimension(:,:) :: t
real,dimension(size(t,1)) :: A
!--------------------------------
real,dimension(size(t,1),2) :: d12, d13
d12 = p(t(:,2),:) - p(t(:,1),:)
d13 = p(t(:,3),:) - p(t(:,1),:)
A = (d12(:,1)*d13(:,2)-d12(:,2)*d13(:,1))
end function triarea
end program ArrayTest
matlab中triarea函数的fortran版
最新推荐文章于 2024-04-24 14:22:03 发布