elliptic_vertices Subroutine

private subroutine elliptic_vertices(self)

120 vertices (every 3 degrees), cone angle a b / sqrt(b^2 cos^2 + a^2 sin^2) (OpenFrames' createEllipticCone).

Arguments

Type IntentOptional Attributes Name
type(EllipticCone), intent(inout) :: self

Calls

proc~~elliptic_vertices~~CallsGraph proc~elliptic_vertices elliptic_vertices clock clock proc~elliptic_vertices->clock cone cone proc~elliptic_vertices->cone

Called by

proc~~elliptic_vertices~~CalledByGraph proc~elliptic_vertices elliptic_vertices proc~elliptic_set_primary_angles EllipticCone%elliptic_set_primary_angles proc~elliptic_set_primary_angles->proc~elliptic_vertices proc~new_elliptic_cone new_elliptic_cone proc~new_elliptic_cone->proc~elliptic_vertices interface~ellipticcone EllipticCone interface~ellipticcone->proc~new_elliptic_cone

Source Code

    subroutine elliptic_vertices(self)
        type(EllipticCone), intent(inout) :: self
        integer, parameter :: n = 120
        integer :: i
        real(wp) :: t
        if (allocated(self%clock)) deallocate(self%clock, self%cone)
        allocate(self%clock(n), self%cone(n))
        do i = 1, n
            t = 2.0_wp * pi * (i - 1) / n
            self%clock(i) = t
            self%cone(i) = self%a * self%b / sqrt(self%b**2 * cos(t)**2 + self%a**2 * sin(t)**2)
        end do
    end subroutine elliptic_vertices