LT2_get_col_at_loc Function

public elemental function LT2_get_col_at_loc(my_lt, col_ix, loc) result(col_value)

Get the value of a single column at a location

Arguments

Type IntentOptional Attributes Name
type(LT2_t), intent(in) :: my_lt
integer, intent(in) :: col_ix
type(LT2_loc_t), intent(in) :: loc

Return Value real(kind=dp)


Called by

proc~~lt2_get_col_at_loc~~CalledByGraph proc~lt2_get_col_at_loc LT2_get_col_at_loc proc~lt2_get_col LT2_get_col proc~lt2_get_col->proc~lt2_get_col_at_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_col_at_loc(my_lt, col_ix, loc) result(col_value)
    type(LT2_t), intent(in)     :: my_lt
    integer, intent(in)         :: col_ix
    type(LT2_loc_t), intent(in) :: loc
    integer                     :: ix(2)
    real(dp)                    :: w(2, 2)
    real(dp)                    :: col_value

    ! Bilinear interpolation
    w(1, 1) = loc%low_frac(1) * loc%low_frac(2)
    w(2, 1) = (1 - loc%low_frac(1)) * loc%low_frac(2)
    w(1, 2) = loc%low_frac(1) * (1 - loc%low_frac(2))
    w(2, 2) = (1 - loc%low_frac(1)) * (1 - loc%low_frac(2))
    ix = loc%low_ix

    col_value = sum(w * my_lt%rows_cols(ix(1):ix(1)+1, ix(2):ix(2)+1, col_ix))
  end function LT2_get_col_at_loc