get_area_square_second Module Function

pure module function get_area_square_second(self) result(area)

Arguments

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

Return Value real(kind=real64)


Calls

proc~~get_area_square_second~~CallsGraph proc~get_area_square_second get_area_square_second interface~jacobian_det_square_second type_square_second%jacobian_det_square_second proc~get_area_square_second->interface~jacobian_det_square_second proc~jacobian_det_square_second jacobian_det_square_second interface~jacobian_det_square_second->proc~jacobian_det_square_second interface~jacobian_square_second type_square_second%jacobian_square_second proc~jacobian_det_square_second->interface~jacobian_square_second proc~jacobian_square_second jacobian_square_second interface~jacobian_square_second->proc~jacobian_square_second interface~dpsi_square_second type_square_second%dpsi_square_second proc~jacobian_square_second->interface~dpsi_square_second proc~get_coordinate abst_mesh%get_coordinate proc~jacobian_square_second->proc~get_coordinate proc~get_num_nodes~3 abst_mesh%get_num_nodes proc~jacobian_square_second->proc~get_num_nodes~3 proc~dpsi_square_second dpsi_square_second interface~dpsi_square_second->proc~dpsi_square_second

Called by

proc~~get_area_square_second~~CalledByGraph proc~get_area_square_second get_area_square_second interface~get_area_square_second type_square_second%get_area_square_second interface~get_area_square_second->proc~get_area_square_second

Source Code

    pure module function get_area_square_second(self) result(area)
        implicit none
        class(type_square_second), intent(in) :: self
        real(real64) :: area
        type(type_dp_vector_3d) :: r

        ! 初期化
        area = 0.0d0
        r%z = 0.0d0

        ! ガウス点 1
        r%x = -sqrt(3.0d0 / 5.0d0)
        r%y = -sqrt(3.0d0 / 5.0d0)
        area = area + 25.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 2
        r%x = 0.0d0
        r%y = -sqrt(3.0d0 / 5.0d0)
        area = area + 40.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 3
        r%x = sqrt(3.0d0 / 5.0d0)
        r%y = -sqrt(3.0d0 / 5.0d0)
        area = area + 25.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 4
        r%x = -sqrt(3.0d0 / 5.0d0)
        r%y = 0.0d0
        area = area + 40.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 5
        r%x = 0.0d0
        r%y = 0.0d0
        area = area + 64.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 6
        r%x = sqrt(3.0d0 / 5.0d0)
        r%y = 0.0d0
        area = area + 40.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 7
        r%x = -sqrt(3.0d0 / 5.0d0)
        r%y = sqrt(3.0d0 / 5.0d0)
        area = area + 25.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 8
        r%x = 0.0d0
        r%y = sqrt(3.0d0 / 5.0d0)
        area = area + 40.0d0 / 81.0d0 * self%jacobian_det(r)

        ! ガウス点 9
        r%x = sqrt(3.0d0 / 5.0d0)
        r%y = sqrt(3.0d0 / 5.0d0)
        area = area + 25.0d0 / 81.0d0 * self%jacobian_det(r)

    end function get_area_square_second