double integration class: for 6d integration of f(x,y,z,q,r,s)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(func_6d), | public, | pointer | :: | fxyzqrs | => | null() | function |
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 |
to set up the class
Initialize the 6D integration class. Must be called before integration is performed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
to integrate the function fxyzqrs
Perform the 6D integration.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integration_class_6d), | 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_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