integration_class_5d Derived Type

type, public, extends(integration_class) :: integration_class_5d

double integration class: for 5d integration of f(x,y,z,q,r)


Inherits

type~~integration_class_5d~~InheritsGraph type~integration_class_5d integration_class_5d type~integration_class_1d integration_class_1d type~integration_class_5d->type~integration_class_1d ir, iq, iz, iy, ix type~integration_class integration_class type~integration_class_5d->type~integration_class type~integration_class_1d->type~integration_class

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
procedure(func_5d), public, pointer:: fxyzqr=> null()

function f(x,y,z,q,r) to be integrated

type(integration_class_1d), public :: ir

for the dr integration

type(integration_class_1d), public :: iq

for the dq integration

type(integration_class_1d), public :: iz

for the dz integration

type(integration_class_1d), public :: iy

for the dy integration

type(integration_class_1d), public :: ix

for the dx integration


Type-Bound Procedures

procedure, public :: initialize => initialize_integration_class_5d

to set up the class

  • private subroutine initialize_integration_class_5d(me, fxyzqr, xl, xu, yl, yu, zl, zu, ql, qu, rl, ru, tolx, toly, tolz, tolq, tolr, methodx, methody, methodz, methodq, methodr)

    Initialize the 5D integration class. Must be called before integration is performed.

    Arguments

    TypeIntentOptionalAttributesName
    class(integration_class_5d), intent(inout) :: me
    procedure(func_5d) :: fxyzqr

    5d function: f(x,y,z,q,r)

    real(kind=wp), intent(in) :: xl

    x integration lower bound

    real(kind=wp), intent(in) :: xu

    x integration upper bound

    real(kind=wp), intent(in) :: yl

    y integration lower bound

    real(kind=wp), intent(in) :: yu

    y integration upper bound

    real(kind=wp), intent(in) :: zl

    z integration lower bound

    real(kind=wp), intent(in) :: zu

    z integration upper bound

    real(kind=wp), intent(in) :: ql

    q integration lower bound

    real(kind=wp), intent(in) :: qu

    q integration upper bound

    real(kind=wp), intent(in) :: rl

    r integration lower bound

    real(kind=wp), intent(in) :: ru

    r integration upper bound

    real(kind=wp), intent(in) :: tolx

    error tolerance for dx integration

    real(kind=wp), intent(in) :: toly

    error tolerance for dy integration

    real(kind=wp), intent(in) :: tolz

    error tolerance for dz integration

    real(kind=wp), intent(in) :: tolq

    error tolerance for dq integration

    real(kind=wp), intent(in) :: tolr

    error tolerance for dr integration

    integer, intent(in) :: methodx

    quadrature method to use for x

    integer, intent(in) :: methody

    quadrature method to use for y

    integer, intent(in) :: methodz

    quadrature method to use for z

    integer, intent(in) :: methodq

    quadrature method to use for q

    integer, intent(in) :: methodr

    quadrature method to use for r

procedure, public :: integrate => integrate_5d

to integrate the function fxyzqr

  • 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

Source Code

    type,extends(integration_class),public :: integration_class_5d
        !! double integration class: for 5d integration of `f(x,y,z,q,r)`
        private
        procedure(func_5d),pointer :: fxyzqr => null()   !! function `f(x,y,z,q,r)` to be integrated
        type(integration_class_1d) :: ir     !! for the dr integration
        type(integration_class_1d) :: iq     !! for the dq integration
        type(integration_class_1d) :: iz     !! for the dz integration
        type(integration_class_1d) :: iy     !! for the dy integration
        type(integration_class_1d) :: ix     !! for the dx integration
        contains
        private
        procedure,public :: initialize => initialize_integration_class_5d !! to set up the class
        procedure,public :: integrate  => integrate_5d !! to integrate the function `fxyzqr`
    end type integration_class_5d