LT3_get_col_at_loc Function

public elemental function LT3_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(LT3_t), intent(in) :: my_lt
integer, intent(in) :: col_ix
type(LT3_loc_t), intent(in) :: loc

Return Value real(kind=dp)


Called by

proc~~lt3_get_col_at_loc~~CalledByGraph proc~lt3_get_col_at_loc LT3_get_col_at_loc proc~lt3_get_col LT3_get_col proc~lt3_get_col->proc~lt3_get_col_at_loc proc~bc_data_get_3d bc_data_get_3d proc~bc_data_get_3d->proc~lt3_get_col proc~read_data_get_3d read_data_get_3d proc~read_data_get_3d->proc~lt3_get_col proc~bc_data_set bc_data_set proc~bc_data_set->proc~bc_data_get_3d proc~read_data_set read_data_set proc~read_data_set->proc~read_data_get_3d

Source Code

  elemental function LT3_get_col_at_loc(my_lt, col_ix, loc) result(col_value)
    type(LT3_t), intent(in)     :: my_lt
    integer, intent(in)         :: col_ix
    type(LT3_loc_t), intent(in) :: loc
    integer                     :: ix(3)
    real(dp)                    :: w(2, 2, 2)
    real(dp)                    :: col_value

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

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