Skip to content

Commit e309203

Browse files
authored
fixed forts error 11 (#873)
1 parent b263cf3 commit e309203

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

src/pre_process/m_model.fpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,7 @@ contains
950950
tri(k, 2) = model%trs(i)%v(k, 2)
951951
tri(k, 3) = model%trs(i)%v(k, 3)
952952
end do
953-
tri_area = f_tri_area(tri)
953+
call f_tri_area(tri, tri_area)
954954

955955
if (tri_area > threshold_bary*cell_area_min) then
956956
num_inner_vertices = Ifactor_bary_3D*ceiling(tri_area/cell_area_min)
@@ -1012,7 +1012,7 @@ contains
10121012
tri(k, 2) = model%trs(i)%v(k, 2)
10131013
tri(k, 3) = model%trs(i)%v(k, 3)
10141014
end do
1015-
tri_area = f_tri_area(tri)
1015+
call f_tri_area(tri, tri_area)
10161016

10171017
if (tri_area > threshold_bary*cell_area_min) then
10181018
num_inner_vertices = Ifactor_bary_3D*ceiling(tri_area/cell_area_min)
@@ -1168,6 +1168,25 @@ contains
11681168

11691169
end subroutine f_normals
11701170

1171+
!> This procedure calculates the barycentric facet area
1172+
pure subroutine f_tri_area(tri, tri_area)
1173+
real(wp), dimension(1:3, 1:3), intent(in) :: tri
1174+
real(wp), intent(out) :: tri_area
1175+
t_vec3 :: AB, AC, cross
1176+
integer :: i !< Loop iterator
1177+
1178+
do i = 1, 3
1179+
AB(i) = tri(2, i) - tri(1, i)
1180+
AC(i) = tri(3, i) - tri(1, i)
1181+
end do
1182+
1183+
cross(1) = AB(2)*AC(3) - AB(3)*AC(2)
1184+
cross(2) = AB(3)*AC(1) - AB(1)*AC(3)
1185+
cross(3) = AB(1)*AC(2) - AB(2)*AC(1)
1186+
tri_area = 0.5_wp*sqrt(cross(1)**2 + cross(2)**2 + cross(3)**2)
1187+
1188+
end subroutine f_tri_area
1189+
11711190
!> This procedure determines the levelset of interpolated 2D models.
11721191
!! @param interpolated_boundary_v Group of all the boundary vertices of the interpolated 2D model
11731192
!! @param total_vertices Total number of vertices after interpolation
@@ -1200,23 +1219,4 @@ contains
12001219

12011220
end function f_interpolated_distance
12021221

1203-
!> This procedure calculates the barycentric facet area
1204-
pure function f_tri_area(tri) result(tri_area)
1205-
real(wp), dimension(1:3, 1:3), intent(in) :: tri
1206-
t_vec3 :: AB, AC, cross
1207-
real(wp) :: tri_area
1208-
integer :: i !< Loop iterator
1209-
1210-
do i = 1, 3
1211-
AB(i) = tri(2, i) - tri(1, i)
1212-
AC(i) = tri(3, i) - tri(1, i)
1213-
end do
1214-
1215-
cross(1) = AB(2)*AC(3) - AB(3)*AC(2)
1216-
cross(2) = AB(3)*AC(1) - AB(1)*AC(3)
1217-
cross(3) = AB(1)*AC(2) - AB(2)*AC(1)
1218-
tri_area = 0.5_wp*sqrt(cross(1)**2 + cross(2)**2 + cross(3)**2)
1219-
1220-
end function f_tri_area
1221-
12221222
end module m_model

0 commit comments

Comments
 (0)