program finite_element_mesh
implicit none
real :: a, b
integer :: m, n, i, j, node_num, element_num, elem
real, allocatable :: x(:,:), y(:,:)
integer, allocatable :: element(:,:)
a = 10.0 ! 矩形长度
b = 5.0 ! 矩形宽度
m = 4 ! x方向分段数
n = 2 ! y方向分段数
node_num = (m + 1) * (n + 1)
element_num = 2 * m * n
allocate(x(m+1, n+1))
allocate(y(m+1, n+1))
allocate(element(3, element_num))
do i = 1, m + 1
do j = 1, n + 1
x(i,j) = (i - 1) * a / m
y(i,j) = (j - 1) * b / n
end do
end do
elem = 1
do i = 1, m
do j = 1, n
element(1, elem) = (j - 1) * (m + 1) + i
element(2, elem) = (j - 1) * (m + 1) + i + 1
element(3, elem) = j * (m + 1) + i
elem = elem + 1
element(1, elem) = (j - 1) * (m + 1) + i + 1
element(2, elem) = j * (m + 1) + i + 1
element(3, elem) = j * (m + 1) + i
elem = elem + 1
end do
end do
print *, "节点坐标:"
do i = 1, m + 1
do j = 1, n + 1
print *, "节点", (j-1)*(m+1)+i, ": (", x(i,j), ",", y(i,j), ")"
end do
end do
print *, "单元连接信息:"
do i = 1, element_num
print *, "单元", i, ": ", element(1,i), element(2,i), element(3,i)
end do
deallocate(x)
deallocate(y)
deallocate(element)
end program finite_element_mesh