integrate_5d Subroutine

private subroutine integrate_5d(me, ans, ierr, err)

Perform the 5D integration.

Arguments

TypeIntentOptionalAttributesName
class(integration_class_5d), intent(inout) :: me
real(kind=wp), intent(out) :: ans
integer, intent(out) :: ierr
real(kind=wp), intent(out) :: err

Contents

Source Code


Source Code

    subroutine integrate_5d (me, ans, ierr, err)

    implicit none

    class(integration_class_5d),intent(inout)  :: me
    real(wp),intent(out)  :: ans
    integer,intent(out)   :: ierr
    real(wp),intent(out)  :: err

    ! set the functions to the contained wrappers:
    me%ir%fun => f_of_r
    me%iq%fun => f_of_q
    me%iz%fun => f_of_z
    me%iy%fun => f_of_y
    me%ix%fun => f_of_x

    ! call the low-level routine:
    call me%ir%integrate(ans, ierr, err)

    contains

        function f_of_x(ix,x) result(f)
            class(integration_class_1d),intent(inout) :: ix
            real(wp), intent(in) :: x
            real(wp)             :: f
            f = me%fxyzqr(x,me%iy%val,me%iz%val,me%iq%val,me%ir%val)
        end function f_of_x

        function f_of_y(iy,y) result(f)
            class(integration_class_1d),intent(inout)  :: iy
            real(wp), intent(in) :: y
            real(wp)             :: f
            iy%val = y
            call me%ix%integrate(f, ierr, err)
        end function f_of_y

        function f_of_z(iz,z) result(f)
            class(integration_class_1d),intent(inout)  :: iz
            real(wp), intent(in) :: z
            real(wp)             :: f
            iz%val = z
            call me%iy%integrate(f, ierr, err)
        end function f_of_z

        function f_of_q(iq,q) result(f)
            class(integration_class_1d),intent(inout)  :: iq
            real(wp), intent(in) :: q
            real(wp)             :: f
            iq%val = q
            call me%iz%integrate(f, ierr, err)
        end function f_of_q

        function f_of_r(ir,r) result(f)
            class(integration_class_1d),intent(inout)  :: ir
            real(wp), intent(in) :: r
            real(wp)             :: f
            ir%val = r
            call me%iq%integrate(f, ierr, err)
        end function f_of_r

    end subroutine integrate_5d