double integration class: for 4d integration of f(x,y,z,q)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(func_4d), | public, | pointer | :: | fxyzq | => | null() | function |
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 4D integration class. Must be called before integration is performed.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
to integrate the function fxyzq
Perform the 4D integration.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integration_class_4d), | 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_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