LT2_get_loc Function

public elemental function LT2_get_loc(my_lt, x1, x2) result(my_loc)

Get a location in the lookup table

Arguments

Type IntentOptional Attributes Name
type(LT2_t), intent(in) :: my_lt
real(kind=dp), intent(in) :: x1
real(kind=dp), intent(in) :: x2

Return Value type(LT2_loc_t)


Called by

proc~~lt2_get_loc~~CalledByGraph proc~lt2_get_loc LT2_get_loc proc~lt2_get_col LT2_get_col proc~lt2_get_col->proc~lt2_get_loc proc~bc_data_get_2d bc_data_get_2d proc~bc_data_get_2d->proc~lt2_get_col proc~bc_data_get_3d bc_data_get_3d proc~bc_data_get_3d->proc~lt2_get_col proc~read_data_get_2d read_data_get_2d proc~read_data_get_2d->proc~lt2_get_col proc~bc_data_set bc_data_set proc~bc_data_set->proc~bc_data_get_3d

Source Code

  elemental function LT2_get_loc(my_lt, x1, x2) result(my_loc)
    type(LT2_t), intent(in) :: my_lt
    real(dp), intent(in)    :: x1, x2
    type(LT2_loc_t)         :: my_loc
    real(dp)                :: frac(2)

    frac            = ([x1, x2] - my_lt%x_min) * my_lt%inv_dx
    my_loc%low_ix   = ceiling(frac)
    my_loc%low_frac = my_loc%low_ix - frac

    ! Check bounds
    where (my_loc%low_ix < 1)
       my_loc%low_ix   = 1
       my_loc%low_frac = 1
    end where

    where (my_loc%low_ix >= my_lt%n_points)
       my_loc%low_ix   = my_lt%n_points - 1
       my_loc%low_frac = 0
    end where
  end function LT2_get_loc