initialize_2d Subroutine

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

Constructor for a linear_interp_2d class.

Type Bound

linear_interp_2d

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.


Calls

proc~~initialize_2d~~CallsGraph proc~initialize_2d linear_interpolation_module::linear_interp_2d%initialize_2d proc~check_inputs linear_interpolation_module::linear_interp_class%check_inputs proc~initialize_2d->proc~check_inputs proc~destroy_2d linear_interpolation_module::linear_interp_2d%destroy_2d proc~initialize_2d->proc~destroy_2d

Source Code

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

    implicit none

    class(linear_interp_2d),intent(inout) :: me
    real(wp),dimension(:),intent(in)      :: x
    real(wp),dimension(:),intent(in)      :: y
    real(wp),dimension(:,:),intent(in)    :: 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.

    call me%destroy()

    istat = 0

    if (istat==0 .and. size(x)/=size(f,1)) istat = 10
    if (istat==0 .and. size(y)/=size(f,2)) istat = 20

    if (istat==0) then
        call me%check_inputs(x=x,y=y,ierr=istat)
        if (istat==0) then
            allocate(me%f(size(x),size(y))); me%f = f
            allocate(me%x(size(x))); me%x = x
            allocate(me%y(size(y))); me%y = y
            me%initialized = .true.
        end if
    end if

    end subroutine initialize_2d