double integration class: for 5d integration of f(x,y,z,q,r)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(func_5d), | public, | pointer | :: | fxyzqr | => | null() | function |
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 |
to set up the class
Initialize the 5D integration class. Must be called before integration is performed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
to integrate the function fxyzqr
Perform the 5D integration.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integration_class_5d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(out) | :: | ans | |||
integer, | intent(out) | :: | ierr | |||
real(kind=wp), | intent(out) | :: | err |
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