LT_add_col Subroutine

public pure subroutine LT_add_col(my_lt, x, y)

Add a new column by linearly interpolating the (x, y) data

Arguments

Type IntentOptional Attributes Name
type(LT_t), intent(inout) :: my_lt
real(kind=dp), intent(in) :: x(:)
real(kind=dp), intent(in) :: y(:)

Calls

proc~~lt_add_col~~CallsGraph proc~lt_add_col LT_add_col proc~lt_get_spaced_data LT_get_spaced_data proc~lt_add_col->proc~lt_get_spaced_data proc~lt_get_xdata LT_get_xdata proc~lt_add_col->proc~lt_get_xdata proc~lt_lin_interp_list LT_lin_interp_list proc~lt_get_spaced_data->proc~lt_lin_interp_list proc~find_index_adaptive find_index_adaptive proc~lt_lin_interp_list->proc~find_index_adaptive proc~find_index_bsearch find_index_bsearch proc~find_index_adaptive->proc~find_index_bsearch proc~find_index_linear find_index_linear proc~find_index_adaptive->proc~find_index_linear

Source Code

  pure subroutine LT_add_col(my_lt, x, y)
    type(LT_t), intent(inout) :: my_lt
    real(dp), intent(in)      :: x(:), y(:)
    type(LT_t)                :: temp_lt

    temp_lt = my_lt
    deallocate(my_lt%cols_rows)
    deallocate(my_lt%rows_cols)
    allocate(my_lt%cols_rows(my_lt%n_cols+1, my_lt%n_points))
    allocate(my_lt%rows_cols(my_lt%n_points, my_lt%n_cols+1))

    my_lt%cols_rows(1:my_lt%n_cols, :) = temp_lt%cols_rows
    my_lt%rows_cols(:, 1:my_lt%n_cols) = temp_lt%rows_cols
    my_lt%n_cols                       = my_lt%n_cols + 1
    my_lt%cols_rows(my_lt%n_cols, :)   = LT_get_spaced_data(x, y,&
        LT_get_xdata(my_lt%x_min, my_lt%dx, my_lt%n_points))
    my_lt%rows_cols(:, my_lt%n_cols)   = my_lt%cols_rows(my_lt%n_cols, :)
  end subroutine LT_add_col