integration_class_6d Derived Type

type, public, extends(integration_class) :: integration_class_6d

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


Inherits

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

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
procedure(func_6d), public, pointer:: fxyzqrs=> null()

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

type(integration_class_1d), public :: is

for the ds integration

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_6d

to set up the class

  • private subroutine initialize_integration_class_6d(me, fxyzqrs, xl, xu, yl, yu, zl, zu, ql, qu, rl, ru, sl, su, tolx, toly, tolz, tolq, tolr, tols, methodx, methody, methodz, methodq, methodr, methods)

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

    Arguments

    TypeIntentOptionalAttributesName
    class(integration_class_6d), intent(inout) :: me
    procedure(func_6d) :: fxyzqrs

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

    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) :: sl

    s integration lower bound

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

    s 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

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

    error tolerance for ds 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

    integer, intent(in) :: methods

    quadrature method to use for s

procedure, public :: integrate => integrate_6d

to integrate the function fxyzqrs

  • private subroutine integrate_6d(me, ans, ierr, err)

    Perform the 6D integration.

    Arguments

    TypeIntentOptionalAttributesName
    class(integration_class_6d), 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_6d
        !! double integration class: for 6d integration of `f(x,y,z,q,r,s)`
        private
        procedure(func_6d),pointer :: fxyzqrs => null()   !! function `f(x,y,z,q,r,s)` to be integrated
        type(integration_class_1d) :: is     !! for the ds integration
        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_6d !! to set up the class
        procedure,public :: integrate  => integrate_6d !! to integrate the function `fxyzqrs`
    end type integration_class_6d