get_area_triangle_second Module Function

pure module function get_area_triangle_second(self) result(area)

Arguments

Type IntentOptional Attributes Name
class(type_triangle_second), intent(in) :: self

Return Value real(kind=real64)


Calls

proc~~get_area_triangle_second~~CallsGraph proc~get_area_triangle_second get_area_triangle_second interface~jacobian_det_triangle_second type_triangle_second%jacobian_det_triangle_second proc~get_area_triangle_second->interface~jacobian_det_triangle_second proc~jacobian_det_triangle_second jacobian_det_triangle_second interface~jacobian_det_triangle_second->proc~jacobian_det_triangle_second interface~jacobian_triangle_second type_triangle_second%jacobian_triangle_second proc~jacobian_det_triangle_second->interface~jacobian_triangle_second proc~jacobian_triangle_second jacobian_triangle_second interface~jacobian_triangle_second->proc~jacobian_triangle_second interface~dpsi_triangle_second type_triangle_second%dpsi_triangle_second proc~jacobian_triangle_second->interface~dpsi_triangle_second proc~get_coordinate abst_mesh%get_coordinate proc~jacobian_triangle_second->proc~get_coordinate proc~get_num_nodes~3 abst_mesh%get_num_nodes proc~jacobian_triangle_second->proc~get_num_nodes~3 proc~dpsi_triangle_second dpsi_triangle_second interface~dpsi_triangle_second->proc~dpsi_triangle_second

Called by

proc~~get_area_triangle_second~~CalledByGraph proc~get_area_triangle_second get_area_triangle_second interface~get_area_triangle_second type_triangle_second%get_area_triangle_second interface~get_area_triangle_second->proc~get_area_triangle_second

Source Code

    pure module function get_area_triangle_second(self) result(area)
        implicit none
        class(type_triangle_second), intent(in) :: self
        real(real64) :: area
        real(real64) :: det1, det2, det3
        type(type_dp_vector_3d) :: r

        ! --- ガウスポイントでのヤコビアンを計算 ---
        r%x = 1.0d0 / 6.0d0
        r%y = 1.0d0 / 6.0d0
        r%z = 0.0d0
        det1 = self%jacobian_det(r)
        r%x = 2.0d0 / 3.0d0
        r%y = 1.0d0 / 6.0d0
        det2 = self%jacobian_det(r)
        r%x = 1.0d0 / 6.0d0
        r%y = 2.0d0 / 3.0d0
        det3 = self%jacobian_det(r)

        ! --- 面積の加重平均 ---
        area = (det1 + det2 + det3) / 6.0d0

    end function get_area_triangle_second