linear_interp_4d Derived Type

type, public, extends(linear_interp_class) :: linear_interp_4d

Class for 4d linear interpolation.


Inherits

type~~linear_interp_4d~~InheritsGraph type~linear_interp_4d linear_interp_4d type~linear_interp_class linear_interp_class type~linear_interp_4d->type~linear_interp_class

Inherited by

type~~linear_interp_4d~~InheritedByGraph type~linear_interp_4d linear_interp_4d type~nearest_interp_4d nearest_interp_4d type~nearest_interp_4d->type~linear_interp_4d

Components

Type Visibility Attributes Name Initial
real(kind=wp), private, dimension(:,:,:,:), allocatable :: f
real(kind=wp), private, dimension(:), allocatable :: x
real(kind=wp), private, dimension(:), allocatable :: y
real(kind=wp), private, dimension(:), allocatable :: z
real(kind=wp), private, dimension(:), allocatable :: q
integer, private :: ilox = 1
integer, private :: iloy = 1
integer, private :: iloz = 1
integer, private :: iloq = 1

Finalization Procedures

final :: finalize_4d


Type-Bound Procedures

procedure, public :: initialize => initialize_4d

  • private pure subroutine initialize_4d(me, x, y, z, q, f, istat)

    Constructor for a linear_interp_4d class.

    Arguments

    Type IntentOptional Attributes Name
    class(linear_interp_4d), 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(:,:,:,:) :: f
    integer, intent(out) :: istat

    0 : no problems, 1 : x is not strictly increasing, 2 : y is not strictly increasing, 3 : z is not strictly increasing, 4 : q is not strictly increasing, 10 : x is not equal to size(f,1), 20 : y is not equal to size(f,2), 30 : z is not equal to size(f,3), 40 : q is not equal to size(f,4), 100 : cannot use linear interpolation for only one point.

procedure, public :: evaluate => interp_4d

  • private pure subroutine interp_4d(me, x, y, z, q, f, istat)

    4D linear interpolation routine.

    Arguments

    Type IntentOptional Attributes Name
    class(linear_interp_4d), intent(inout) :: me
    real(kind=wp), intent(in) :: x
    real(kind=wp), intent(in) :: y
    real(kind=wp), intent(in) :: z
    real(kind=wp), intent(in) :: q
    real(kind=wp), intent(out) :: f

    Interpolated

    integer, intent(out), optional :: istat

    0 : no problems, -1 : class has not been initialized

procedure, public :: destroy => destroy_4d

Source Code

    type,extends(linear_interp_class),public :: linear_interp_4d
        !! Class for 4d linear interpolation.
        private
        real(wp),dimension(:,:,:,:),allocatable :: f
        real(wp),dimension(:),allocatable :: x
        real(wp),dimension(:),allocatable :: y
        real(wp),dimension(:),allocatable :: z
        real(wp),dimension(:),allocatable :: q
        integer :: ilox  = 1
        integer :: iloy  = 1
        integer :: iloz  = 1
        integer :: iloq  = 1
        contains
        private
        procedure,public :: initialize => initialize_4d
        procedure,public :: evaluate   => interp_4d
        procedure,public :: destroy    => destroy_4d
        final :: finalize_4d
    end type linear_interp_4d