Class for 2d 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 | :: | kx | = | 0_ip |
The order of spline pieces in |
|
integer(kind=ip), | private | :: | ky | = | 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 |
||
integer(kind=ip), | private | :: | inbvy | = | 1_ip |
internal variable used for efficient processing |
|
integer(kind=ip), | private | :: | iloy | = | 1_ip |
internal variable used for efficient processing |
|
real(kind=wp), | private, | dimension(:), allocatable | :: | work_val_1 |
[[db2val] work array of dimension |
||
real(kind=wp), | private, | dimension(:), allocatable | :: | work_val_2 |
[[db2val] work array of dimension |
Constructor for bspline_2d
It returns an empty bspline_2d 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_2d type (auto knots). This is a wrapper for initialize_2d_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(:,:) | :: | 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) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Constructor for a bspline_2d type (user-specified knots). This is a wrapper for initialize_2d_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(:,:) | :: | 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) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | ty |
The |
|
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Finalizer for bspline_2d class. Just a wrapper for destroy_2d.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(bspline_2d), | 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_2d type (with automatically-computed knots). This is a wrapper for db2ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
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(out) | :: | iflag |
status flag (see db2ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_2d type (with user-specified knots). This is a wrapper for db2ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
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) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | ty |
The |
|
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db2ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_2d type (with automatically-computed knots). This is a wrapper for db2ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
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(out) | :: | iflag |
status flag (see db2ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Initialize a bspline_2d type (with user-specified knots). This is a wrapper for db2ink.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
|
|
real(kind=wp), | intent(in), | dimension(:) | :: | y |
|
|
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) |
||
real(kind=wp), | intent(in), | dimension(:) | :: | tx |
The |
|
real(kind=wp), | intent(in), | dimension(:) | :: | ty |
The |
|
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db2ink) |
||
logical, | intent(in), | optional | :: | extrap |
if true, then extrapolation is allowed (default is false) |
Evaluate a bspline_2d interpolate. This is a wrapper for db2val.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in) | :: | xval |
coordinate of evaluation point. |
||
real(kind=wp), | intent(in) | :: | yval |
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. |
||
real(kind=wp), | intent(out) | :: | f |
interpolated value |
||
integer(kind=ip), | intent(out) | :: | iflag |
status flag (see db2val) |
Destructor for bspline_2d class.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(inout) | :: | me |
Actual size of a bspline_2d structure in bits.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(bspline_2d), | intent(in) | :: | me |
size of the structure in bits
type,extends(bspline_class),public :: bspline_2d !! Class for 2d b-spline interpolation. private integer(ip) :: nx = 0_ip !! Number of \(x\) abcissae integer(ip) :: ny = 0_ip !! Number of \(y\) 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\) 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 integer(ip) :: inbvy = 1_ip !! internal variable used for efficient processing integer(ip) :: iloy = 1_ip !! internal variable used for efficient processing real(wp),dimension(:),allocatable :: work_val_1 !! [[db2val] work array of dimension `ky` real(wp),dimension(:),allocatable :: work_val_2 !! [[db2val] work array of dimension `3_ip*max(kx,ky)` contains private generic,public :: initialize => initialize_2d_auto_knots,initialize_2d_specify_knots procedure :: initialize_2d_auto_knots procedure :: initialize_2d_specify_knots procedure,public :: evaluate => evaluate_2d procedure,public :: destroy => destroy_2d procedure,public :: size_of => size_2d final :: finalize_2d end type bspline_2d