get_length_side_second Module Function

pure module function get_length_side_second(self) result(length)

Arguments

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

Return Value real(kind=real64)


Calls

proc~~get_length_side_second~~CallsGraph proc~get_length_side_second get_length_side_second interface~jacobian_det_side_second type_side_second%jacobian_det_side_second proc~get_length_side_second->interface~jacobian_det_side_second proc~jacobian_det_side_second jacobian_det_side_second interface~jacobian_det_side_second->proc~jacobian_det_side_second interface~jacobian_side_second type_side_second%jacobian_side_second proc~jacobian_det_side_second->interface~jacobian_side_second proc~jacobian_side_second jacobian_side_second interface~jacobian_side_second->proc~jacobian_side_second interface~dpsi_side_second type_side_second%dpsi_side_second proc~jacobian_side_second->interface~dpsi_side_second proc~get_coordinate abst_mesh%get_coordinate proc~jacobian_side_second->proc~get_coordinate proc~get_num_nodes~3 abst_mesh%get_num_nodes proc~jacobian_side_second->proc~get_num_nodes~3 proc~dpsi_side_second dpsi_side_second interface~dpsi_side_second->proc~dpsi_side_second

Called by

proc~~get_length_side_second~~CalledByGraph proc~get_length_side_second get_length_side_second interface~get_length_side_second type_side_second%get_length_side_second interface~get_length_side_second->proc~get_length_side_second

Source Code

    module pure function get_length_side_second(self) result(length)
        implicit none
        class(type_side_second), intent(in) :: self
        real(real64) :: length

        real(real64), parameter :: xi1 = -1.0d0 / sqrt(3.0d0)
        real(real64), parameter :: xi2 = 1.0d0 / sqrt(3.0d0)
        ! -----------------------------------------------

        type(type_dp_vector_3d) :: r1, r2
        real(real64) :: det1, det2

        r1 = type_dp_vector_3d(-1.0d0 / sqrt(3.0d0), 0.0d0, 0.0d0)
        r2 = type_dp_vector_3d(1.0d0 / sqrt(3.0d0), 0.0d0, 0.0d0)

        ! 各ガウス積分点でのヤコビ行列式 det(J) = ds/dξ を計算
        det1 = self%jacobian_det(r1)
        det2 = self%jacobian_det(r2)

        ! ガウス求積法で長さを計算: Length ≈ w1*det(J(ξ1)) + w2*det(J(ξ2))
        length = det1 + det2

    end function get_length_side_second