@@ -950,7 +950,7 @@ contains
950
950
tri(k, 2 ) = model%trs(i)%v(k, 2 )
951
951
tri(k, 3 ) = model%trs(i)%v(k, 3 )
952
952
end do
953
- tri_area = f_tri_area(tri)
953
+ call f_tri_area(tri, tri_area )
954
954
955
955
if (tri_area > threshold_bary* cell_area_min) then
956
956
num_inner_vertices = Ifactor_bary_3D* ceiling(tri_area/ cell_area_min)
@@ -1012,7 +1012,7 @@ contains
1012
1012
tri(k, 2 ) = model%trs(i)%v(k, 2 )
1013
1013
tri(k, 3 ) = model%trs(i)%v(k, 3 )
1014
1014
end do
1015
- tri_area = f_tri_area(tri)
1015
+ call f_tri_area(tri, tri_area )
1016
1016
1017
1017
if (tri_area > threshold_bary* cell_area_min) then
1018
1018
num_inner_vertices = Ifactor_bary_3D* ceiling(tri_area/ cell_area_min)
@@ -1168,6 +1168,25 @@ contains
1168
1168
1169
1169
end subroutine f_normals
1170
1170
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
+
1171
1190
!> This procedure determines the levelset of interpolated 2D models.
1172
1191
!! @param interpolated_boundary_v Group of all the boundary vertices of the interpolated 2D model
1173
1192
!! @param total_vertices Total number of vertices after interpolation
@@ -1200,23 +1219,4 @@ contains
1200
1219
1201
1220
end function f_interpolated_distance
1202
1221
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
-
1222
1222
end module m_model
0 commit comments