integration_class_4d Derived Type

type, public, extends(integration_class) :: integration_class_4d

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


Inherits

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

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
procedure(func_4d), public, pointer:: fxyzq=> null()

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

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_4d

to set up the class

  • private subroutine initialize_integration_class_4d(me, fxyzq, xl, xu, yl, yu, zl, zu, ql, qu, tolx, toly, tolz, tolq, methodx, methody, methodz, methodq)

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

    Arguments

    TypeIntentOptionalAttributesName
    class(integration_class_4d), intent(inout) :: me
    procedure(func_4d) :: fxyzq

    4d function: f(x,y,z,q)

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

    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

procedure, public :: integrate => integrate_4d

to integrate the function fxyzq

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

    Perform the 4D integration.

    Arguments

    TypeIntentOptionalAttributesName
    class(integration_class_4d), 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_4d
        !! double integration class: for 4d integration of `f(x,y,z,q)`
        private
        procedure(func_4d),pointer :: fxyzq => null()   !! function `f(x,y,z,q)` to be integrated
        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_4d !! to set up the class
        procedure,public :: integrate  => integrate_4d !! to integrate the function `fxyzq`
    end type integration_class_4d