Class for 5d b-spline interpolation.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=ip), | private | :: | nx | = | 0_ip |
Number of abcissae |
|
integer(kind=ip), | private | :: | ny | = | 0_ip |
Number of abcissae |
|
integer(kind=ip), | private | :: | nz | = | 0_ip |
Number of abcissae |
|
integer(kind=ip), | private | :: | nq | = | 0_ip |
Number of abcissae |
|
integer(kind=ip), | private | :: | nr | = | 0_ip |
Number of abcissae |
|
integer(kind=ip), | private | :: | kx | = | 0_ip |
The order of spline pieces in |
|
integer(kind=ip), | private | :: | ky | = | 0_ip |
The order of spline pieces in |
|
integer(kind=ip), | private | :: | kz | = | 0_ip |
The order of spline pieces in |
|
integer(kind=ip), | private | :: | kq | = | 0_ip |
The order of spline pieces in |
|
integer(kind=ip), | private | :: | kr | = | 0_ip |
The order of spline pieces in |
|
real(kind=wp), | private, | dimension(:,:,:,:,:), allocatable | :: | bcoef |
array of coefficients of the b-spline interpolant |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | tx |
The knots in the direction for the spline interpolant |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | ty |
The knots in the direction for the spline interpolant |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | tz |
The knots in the direction for the spline interpolant |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | tq |
The knots in the direction for the spline interpolant |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | tr |
The knots in the direction for the spline interpolant |
||
integer(kind=ip), | private | :: | inbvy | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | inbvz | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | inbvq | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | inbvr | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | iloy | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | iloz | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | iloq | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | ilor | = | 1_ip |
internal variable used for efficient processing |
|
real(kind=wp), | private, | dimension(:,:,:,:), allocatable | :: | work_val_1 |
db5val work array of dimension |
||
real(kind=wp), | private, | dimension(:,:,:), allocatable | :: | work_val_2 |
db5val work array of dimension |
||
real(kind=wp), | private, | dimension(:,:), allocatable | :: | work_val_3 |
db5val work array of dimension |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | work_val_4 |
db5val work array of dimension |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | work_val_5 |
db5val work array of dimension |
Constructor for bspline_5d
It returns an empty bspline_5d type. Note that INITIALIZE still needs to be called before it can be used. Not really that useful except perhaps in some OpenMP applications.
Constructor for a bspline_5d type (auto knots). This is a wrapper for initialize_5d_auto_knots.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | z |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | q |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | r |
|
|
real(kind=wp), | intent(in), | dimension(:,:,:,:,:) | :: | fcn |
|
|
integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kz |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kq |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kr |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Constructor for a bspline_5d type (user-specified knots). This is a wrapper for initialize_5d_specify_knots.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | z |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | q |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | r |
|
|
real(kind=wp), | intent(in), | dimension(:,:,:,:,:) | :: | fcn |
|
|
integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kz |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kq |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kr |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | ty |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tz |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tq |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tr |
The |
|
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Finalizer for bspline_5d class. Just a wrapper for destroy_5d.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(bspline_5d), | intent(inout) | :: | me |
returns true if the last iflag
status code was =0
.
This routines returns true if the iflag
code from the last
routine called was =0
. Maybe of the routines have output iflag
variables, so they can be checked explicitly, or this routine
can be used.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_class), | intent(in) | :: | me |
retrieve the last status message
Get the status message from a bspline_class routine call.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_class), | intent(in) | :: | me | |||
integer(kind=ip), | intent(in), | optional | :: | iflag |
the corresponding status code |
status message associated with the flag
to reset the iflag
saved in the class.
This sets the iflag
variable in the class to 0
(which indicates that everything is OK). It can be used
after an error is encountered.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_class), | intent(inout) | :: | me |
Initialize a bspline_5d type (with automatically-computed knots). This is a wrapper for db5ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | z |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | q |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | r |
|
|
real(kind=wp), | intent(in), | dimension(:,:,:,:,:) | :: | fcn |
|
|
integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kz |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kq |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kr |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db5ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_5d type (with user-specified knots). This is a wrapper for db5ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | z |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | q |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | r |
|
|
real(kind=wp), | intent(in), | dimension(:,:,:,:,:) | :: | fcn |
|
|
integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kz |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kq |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kr |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | ty |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tz |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tq |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tr |
The |
|
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db5ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_5d type (with automatically-computed knots). This is a wrapper for db5ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | z |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | q |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | r |
|
|
real(kind=wp), | intent(in), | dimension(:,:,:,:,:) | :: | fcn |
|
|
integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kz |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kq |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kr |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db5ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_5d type (with user-specified knots). This is a wrapper for db5ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | z |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | q |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | r |
|
|
real(kind=wp), | intent(in), | dimension(:,:,:,:,:) | :: | fcn |
|
|
integer(kind=ip), | intent(in) | :: | kx |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | ky |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kz |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kq |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
integer(kind=ip), | intent(in) | :: | kr |
The order of spline pieces in ( ) (order = polynomial degree + 1) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | ty |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tz |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tq |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | tr |
The |
|
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db5ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Evaluate a bspline_5d interpolate. This is a wrapper for db5val.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in) | :: | xval |
coordinate of evaluation point. |
||
real(kind=wp), | intent(in) | :: | yval |
coordinate of evaluation point. |
||
real(kind=wp), | intent(in) | :: | zval |
coordinate of evaluation point. |
||
real(kind=wp), | intent(in) | :: | qval |
coordinate of evaluation point. |
||
real(kind=wp), | intent(in) | :: | rval |
coordinate of evaluation point. |
||
integer(kind=ip), | intent(in) | :: | idx |
derivative of piecewise polynomial to evaluate. |
||
integer(kind=ip), | intent(in) | :: | idy |
derivative of piecewise polynomial to evaluate. |
||
integer(kind=ip), | intent(in) | :: | idz |
derivative of piecewise polynomial to evaluate. |
||
integer(kind=ip), | intent(in) | :: | idq |
derivative of piecewise polynomial to evaluate. |
||
integer(kind=ip), | intent(in) | :: | idr |
derivative of piecewise polynomial to evaluate. |
||
real(kind=wp), | intent(out) | :: | f |
interpolated value |
||
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db5val) |
Destructor for bspline_5d class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(inout) | :: | me |
Actual size of a bspline_5d structure in bits.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_5d), | intent(in) | :: | me |
size of the structure in bits
type,extends(bspline_class),public :: bspline_5d !! Class for 5d b-spline interpolation. private integer(ip) :: nx = 0_ip !! Number of \(x\) abcissae integer(ip) :: ny = 0_ip !! Number of \(y\) abcissae integer(ip) :: nz = 0_ip !! Number of \(z\) abcissae integer(ip) :: nq = 0_ip !! Number of \(q\) abcissae integer(ip) :: nr = 0_ip !! Number of \(r\) abcissae integer(ip) :: kx = 0_ip !! The order of spline pieces in \(x\) integer(ip) :: ky = 0_ip !! The order of spline pieces in \(y\) integer(ip) :: kz = 0_ip !! The order of spline pieces in \(z\) integer(ip) :: kq = 0_ip !! The order of spline pieces in \(q\) integer(ip) :: kr = 0_ip !! The order of spline pieces in \(r\) real(wp),dimension(:,:,:,:,:),allocatable :: bcoef !! array of coefficients of the b-spline interpolant real(wp),dimension(:),allocatable :: tx !! The knots in the \(x\) direction for the spline interpolant real(wp),dimension(:),allocatable :: ty !! The knots in the \(y\) direction for the spline interpolant real(wp),dimension(:),allocatable :: tz !! The knots in the \(z\) direction for the spline interpolant real(wp),dimension(:),allocatable :: tq !! The knots in the \(q\) direction for the spline interpolant real(wp),dimension(:),allocatable :: tr !! The knots in the \(r\) direction for the spline interpolant integer(ip) :: inbvy = 1_ip !! internal variable used for efficient processing integer(ip) :: inbvz = 1_ip !! internal variable used for efficient processing integer(ip) :: inbvq = 1_ip !! internal variable used for efficient processing integer(ip) :: inbvr = 1_ip !! internal variable used for efficient processing integer(ip) :: iloy = 1_ip !! internal variable used for efficient processing integer(ip) :: iloz = 1_ip !! internal variable used for efficient processing integer(ip) :: iloq = 1_ip !! internal variable used for efficient processing integer(ip) :: ilor = 1_ip !! internal variable used for efficient processing real(wp),dimension(:,:,:,:),allocatable :: work_val_1 !! [[db5val]] work array of dimension `ky,kz,kq,kr` real(wp),dimension(:,:,:),allocatable :: work_val_2 !! [[db5val]] work array of dimension `kz,kq,kr` real(wp),dimension(:,:),allocatable :: work_val_3 !! [[db5val]] work array of dimension `kq,kr` real(wp),dimension(:),allocatable :: work_val_4 !! [[db5val]] work array of dimension `kr` real(wp),dimension(:),allocatable :: work_val_5 !! [[db5val]] work array of dimension `3_ip*max(kx,ky,kz,kq,kr)` contains private generic,public :: initialize => initialize_5d_auto_knots,initialize_5d_specify_knots procedure :: initialize_5d_auto_knots procedure :: initialize_5d_specify_knots procedure,public :: evaluate => evaluate_5d procedure,public :: destroy => destroy_5d procedure,public :: size_of => size_5d final :: finalize_5d end type bspline_5d