linear_interp_2d Derived Type

type, public, extends(linear_interp_class) :: linear_interp_2d

Class for 2d linear interpolation.


Inherits

type~~linear_interp_2d~~InheritsGraph type~linear_interp_2d linear_interp_2d type~linear_interp_class linear_interp_class type~linear_interp_2d->type~linear_interp_class

Inherited by

type~~linear_interp_2d~~InheritedByGraph type~linear_interp_2d linear_interp_2d type~nearest_interp_2d nearest_interp_2d type~nearest_interp_2d->type~linear_interp_2d

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
integer, private :: ilox = 1
integer, private :: iloy = 1

Finalization Procedures

final :: finalize_2d


Type-Bound Procedures

procedure, public :: initialize => initialize_2d

  • private pure subroutine initialize_2d(me, x, y, f, istat)

    Constructor for a linear_interp_2d class.

    Arguments

    Type IntentOptional Attributes Name
    class(linear_interp_2d), intent(inout) :: me
    real(kind=wp), intent(in), dimension(:) :: x
    real(kind=wp), intent(in), dimension(:) :: y
    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, 10 : x is not equal to size(f,1), 20 : y is not equal to size(f,2), 100 : cannot use linear interpolation for only one point.

procedure, public :: evaluate => interp_2d

  • private pure subroutine interp_2d(me, x, y, f, istat)

    2D linear interpolation routine.

    Arguments

    Type IntentOptional Attributes Name
    class(linear_interp_2d), intent(inout) :: me
    real(kind=wp), intent(in) :: x
    real(kind=wp), intent(in) :: y
    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_2d

Source Code

    type,extends(linear_interp_class),public :: linear_interp_2d
        !! Class for 2d linear interpolation.
        private
        real(wp),dimension(:,:),allocatable :: f
        real(wp),dimension(:),allocatable :: x
        real(wp),dimension(:),allocatable :: y
        integer :: ilox = 1
        integer :: iloy = 1
        contains
        private
        procedure,public :: initialize => initialize_2d
        procedure,public :: evaluate   => interp_2d
        procedure,public :: destroy    => destroy_2d
        final :: finalize_2d
    end type linear_interp_2d