MPI-AMRVAC
3.1
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
|
A Fortran 90 module for creating 1D and 2D lookup tables. These tables can be used to efficiently interpolate one or more values. More...
Functions/Subroutines | |
pure integer function, public | find_index_linear (list, val) |
Linear search of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1. More... | |
pure integer function, public | find_index_bsearch (list, val) |
Binary search of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1. More... | |
pure integer function, public | find_index_adaptive (list, val) |
Adaptive search (combination of linear and binary search) of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1. More... | |
type(lt_t) function, public | lt_create (x_min, x_max, n_points, n_cols) |
This function returns a new lookup table. More... | |
type(lt_t) function, public | lt_create_from_data (x_min, x_max, spaced_data) |
This function returns a new lookup table from regularly spaced data. More... | |
pure real(dp) function, dimension(n_points), public | lt_get_xdata (x_min, dx, n_points) |
Returns the x-coordinates of the lookup table. More... | |
pure real(dp) function, dimension(size(new_x)), public | lt_get_spaced_data (in_x, in_y, new_x) |
Linearly interpolate the (x, y) input data to the new_x coordinates. More... | |
pure subroutine, public | lt_set_col (my_lt, col_ix, x, y) |
Fill the column with index col_ix using the linearly interpolated (x, y) data. More... | |
pure subroutine, public | lt_add_col (my_lt, x, y) |
Add a new column by linearly interpolating the (x, y) data. More... | |
elemental type(lt_loc_t) function, public | lt_get_loc (my_lt, x) |
Get a location in the lookup table. More... | |
pure real(dp) function, dimension(my_lt%n_cols), public | lt_get_mcol (my_lt, x) |
Get the values of all columns at x. More... | |
elemental real(dp) function, public | lt_get_col (my_lt, col_ix, x) |
Get the value of a single column at x. More... | |
pure real(dp) function, dimension(my_lt%n_cols), public | lt_get_mcol_at_loc (my_lt, loc) |
Get the values of all columns at a location. More... | |
elemental real(dp) function, public | lt_get_col_at_loc (my_lt, col_ix, loc) |
Get the value of a single column at a location. More... | |
pure subroutine, public | lt_get_data (my_lt, x_data, cols_rows) |
Get the x-coordinates and the columns of the lookup table. More... | |
pure subroutine, public | lt_lin_interp_list (x_list, y_list, x_value, y_value) |
Compute by use of linear interpolation the value in the middle. More... | |
subroutine, public | lt_to_file (my_lt, filename) |
Write the lookup table to file (in binary, potentially unportable) More... | |
subroutine, public | lt_from_file (my_lt, filename) |
Read the lookup table from file (in binary, potentially unportable) More... | |
type(lt2_t) function, public | lt2_create (x_min, x_max, n_points, n_cols) |
This function returns a new lookup table. More... | |
type(lt2_t) function, public | lt2_create_from_data (x_min, x_max, spaced_data) |
This function returns a new lookup table from regularly spaced data. More... | |
pure subroutine, public | lt2_set_col (my_lt, col_ix, x1, x2, y) |
Fill the column with index col_ix using linearly interpolated data. More... | |
elemental type(lt2_loc_t) function, public | lt2_get_loc (my_lt, x1, x2) |
Get a location in the lookup table. More... | |
elemental real(dp) function, public | lt2_get_col (my_lt, col_ix, x1, x2) |
Get the value of a single column at x. More... | |
elemental real(dp) function, public | lt2_get_col_at_loc (my_lt, col_ix, loc) |
Get the value of a single column at a location. More... | |
type(lt3_t) function, public | lt3_create (x_min, x_max, n_points, n_cols) |
This function returns a new lookup table. More... | |
type(lt3_t) function, public | lt3_create_from_data (x_min, x_max, spaced_data) |
This function returns a new lookup table from regularly spaced data. More... | |
elemental type(lt3_loc_t) function, public | lt3_get_loc (my_lt, x1, x2, x3) |
Get a location in the lookup table. More... | |
elemental real(dp) function, public | lt3_get_col (my_lt, col_ix, x1, x2, x3) |
Get the value of a single column at x. More... | |
elemental real(dp) function, public | lt3_get_col_at_loc (my_lt, col_ix, loc) |
Get the value of a single column at a location. More... | |
A Fortran 90 module for creating 1D and 2D lookup tables. These tables can be used to efficiently interpolate one or more values.
Author: Jannis Teunissen
pure integer function, public mod_lookup_table::find_index_adaptive | ( | real(dp), dimension(:), intent(in) | list, |
real(dp), intent(in) | val | ||
) |
Adaptive search (combination of linear and binary search) of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1.
[in] | list | Sorted list |
[in] | val | Value to search for |
Definition at line 163 of file mod_lookup_table.t.
pure integer function, public mod_lookup_table::find_index_bsearch | ( | real(dp), dimension(:), intent(in) | list, |
real(dp), intent(in) | val | ||
) |
Binary search of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1.
[in] | list | Sorted list |
[in] | val | Value to search for |
Definition at line 137 of file mod_lookup_table.t.
pure integer function, public mod_lookup_table::find_index_linear | ( | real(dp), dimension(:), intent(in) | list, |
real(dp), intent(in) | val | ||
) |
Linear search of sorted list for the smallest ix such that list(ix) >= val. On failure, returns size(list)+1.
[in] | list | Sorted list |
[in] | val | Value to search for |
Definition at line 125 of file mod_lookup_table.t.
type(lt2_t) function, public mod_lookup_table::lt2_create | ( | real(dp), dimension(2), intent(in) | x_min, |
real(dp), dimension(2), intent(in) | x_max, | ||
integer, dimension(2), intent(in) | n_points, | ||
integer, intent(in) | n_cols | ||
) |
This function returns a new lookup table.
[in] | x_min | Minimum coordinate |
[in] | x_max | Maximum coordinate |
[in] | n_points | How many values to store |
[in] | n_cols | Number of variables that will be looked up |
Definition at line 418 of file mod_lookup_table.t.
type(lt2_t) function, public mod_lookup_table::lt2_create_from_data | ( | real(dp), dimension(2), intent(in) | x_min, |
real(dp), dimension(2), intent(in) | x_max, | ||
real(dp), dimension(:, :, :), intent(in) | spaced_data | ||
) |
This function returns a new lookup table from regularly spaced data.
[in] | x_min | Minimum coordinate |
[in] | x_max | Maximum coordinate |
[in] | spaced_data | Input data of shape (nx, ny, n_cols) |
Definition at line 439 of file mod_lookup_table.t.
elemental real(dp) function, public mod_lookup_table::lt2_get_col | ( | type(lt2_t), intent(in) | my_lt, |
integer, intent(in) | col_ix, | ||
real(dp), intent(in) | x1, | ||
real(dp), intent(in) | x2 | ||
) |
Get the value of a single column at x.
Definition at line 512 of file mod_lookup_table.t.
elemental real(dp) function, public mod_lookup_table::lt2_get_col_at_loc | ( | type(lt2_t), intent(in) | my_lt, |
integer, intent(in) | col_ix, | ||
type(lt2_loc_t), intent(in) | loc | ||
) |
Get the value of a single column at a location.
Definition at line 524 of file mod_lookup_table.t.
elemental type(lt2_loc_t) function, public mod_lookup_table::lt2_get_loc | ( | type(lt2_t), intent(in) | my_lt, |
real(dp), intent(in) | x1, | ||
real(dp), intent(in) | x2 | ||
) |
Get a location in the lookup table.
Definition at line 489 of file mod_lookup_table.t.
pure subroutine, public mod_lookup_table::lt2_set_col | ( | type(lt2_t), intent(inout) | my_lt, |
integer, intent(in) | col_ix, | ||
real(dp), dimension(:), intent(in) | x1, | ||
real(dp), dimension(:), intent(in) | x2, | ||
real(dp), dimension(:, :), intent(in) | y | ||
) |
Fill the column with index col_ix using linearly interpolated data.
Definition at line 463 of file mod_lookup_table.t.
type(lt3_t) function, public mod_lookup_table::lt3_create | ( | real(dp), dimension(3), intent(in) | x_min, |
real(dp), dimension(3), intent(in) | x_max, | ||
integer, dimension(3), intent(in) | n_points, | ||
integer, intent(in) | n_cols | ||
) |
This function returns a new lookup table.
[in] | x_min | Minimum coordinate |
[in] | x_max | Maximum coordinate |
[in] | n_points | How many values to store |
[in] | n_cols | Number of variables that will be looked up |
Definition at line 546 of file mod_lookup_table.t.
type(lt3_t) function, public mod_lookup_table::lt3_create_from_data | ( | real(dp), dimension(3), intent(in) | x_min, |
real(dp), dimension(3), intent(in) | x_max, | ||
real(dp), dimension(:, :, :, :), intent(in) | spaced_data | ||
) |
This function returns a new lookup table from regularly spaced data.
[in] | x_min | Minimum coordinate |
[in] | x_max | Maximum coordinate |
[in] | spaced_data | Input data of shape (nx, ny, nz, n_cols) |
Definition at line 567 of file mod_lookup_table.t.
elemental real(dp) function, public mod_lookup_table::lt3_get_col | ( | type(lt3_t), intent(in) | my_lt, |
integer, intent(in) | col_ix, | ||
real(dp), intent(in) | x1, | ||
real(dp), intent(in) | x2, | ||
real(dp), intent(in) | x3 | ||
) |
Get the value of a single column at x.
Definition at line 616 of file mod_lookup_table.t.
elemental real(dp) function, public mod_lookup_table::lt3_get_col_at_loc | ( | type(lt3_t), intent(in) | my_lt, |
integer, intent(in) | col_ix, | ||
type(lt3_loc_t), intent(in) | loc | ||
) |
Get the value of a single column at a location.
Definition at line 628 of file mod_lookup_table.t.
elemental type(lt3_loc_t) function, public mod_lookup_table::lt3_get_loc | ( | type(lt3_t), intent(in) | my_lt, |
real(dp), intent(in) | x1, | ||
real(dp), intent(in) | x2, | ||
real(dp), intent(in) | x3 | ||
) |
Get a location in the lookup table.
Definition at line 593 of file mod_lookup_table.t.
pure subroutine, public mod_lookup_table::lt_add_col | ( | type(lt_t), intent(inout) | my_lt, |
real(dp), dimension(:), intent(in) | x, | ||
real(dp), dimension(:), intent(in) | y | ||
) |
Add a new column by linearly interpolating the (x, y) data.
Definition at line 260 of file mod_lookup_table.t.
type(lt_t) function, public mod_lookup_table::lt_create | ( | real(dp), intent(in) | x_min, |
real(dp), intent(in) | x_max, | ||
integer, intent(in) | n_points, | ||
integer, intent(in) | n_cols | ||
) |
This function returns a new lookup table.
[in] | x_min | Minimum x-coordinate |
[in] | x_max | Maximum x-coordinate |
[in] | n_points | How many x-values to store |
[in] | n_cols | Number of variables that will be looked up |
Definition at line 179 of file mod_lookup_table.t.
type(lt_t) function, public mod_lookup_table::lt_create_from_data | ( | real(dp), intent(in) | x_min, |
real(dp), intent(in) | x_max, | ||
real(dp), dimension(:, :), intent(in) | spaced_data | ||
) |
This function returns a new lookup table from regularly spaced data.
[in] | x_min | Minimum coordinate |
[in] | x_max | Maximum coordinate |
[in] | spaced_data | Input data of shape (n_points, n_cols) |
Definition at line 202 of file mod_lookup_table.t.
subroutine, public mod_lookup_table::lt_from_file | ( | type(lt_t), intent(inout) | my_lt, |
character(len=*), intent(in) | filename | ||
) |
Read the lookup table from file (in binary, potentially unportable)
Definition at line 396 of file mod_lookup_table.t.
elemental real(dp) function, public mod_lookup_table::lt_get_col | ( | type(lt_t), intent(in) | my_lt, |
integer, intent(in) | col_ix, | ||
real(dp), intent(in) | x | ||
) |
Get the value of a single column at x.
Definition at line 312 of file mod_lookup_table.t.
elemental real(dp) function, public mod_lookup_table::lt_get_col_at_loc | ( | type(lt_t), intent(in) | my_lt, |
integer, intent(in) | col_ix, | ||
type(lt_loc_t), intent(in) | loc | ||
) |
Get the value of a single column at a location.
Definition at line 334 of file mod_lookup_table.t.
pure subroutine, public mod_lookup_table::lt_get_data | ( | type(lt_t), intent(in) | my_lt, |
real(dp), dimension(:), intent(out) | x_data, | ||
real(dp), dimension(:, :), intent(out) | cols_rows | ||
) |
Get the x-coordinates and the columns of the lookup table.
Definition at line 345 of file mod_lookup_table.t.
elemental type(lt_loc_t) function, public mod_lookup_table::lt_get_loc | ( | type(lt_t), intent(in) | my_lt, |
real(dp), intent(in) | x | ||
) |
Get a location in the lookup table.
Definition at line 280 of file mod_lookup_table.t.
pure real(dp) function, dimension(my_lt%n_cols), public mod_lookup_table::lt_get_mcol | ( | type(lt_t), intent(in) | my_lt, |
real(dp), intent(in) | x | ||
) |
Get the values of all columns at x.
Definition at line 301 of file mod_lookup_table.t.
pure real(dp) function, dimension(my_lt%n_cols), public mod_lookup_table::lt_get_mcol_at_loc | ( | type(lt_t), intent(in) | my_lt, |
type(lt_loc_t), intent(in) | loc | ||
) |
Get the values of all columns at a location.
Definition at line 324 of file mod_lookup_table.t.
pure real(dp) function, dimension(size(new_x)), public mod_lookup_table::lt_get_spaced_data | ( | real(dp), dimension(:), intent(in) | in_x, |
real(dp), dimension(:), intent(in) | in_y, | ||
real(dp), dimension(:), intent(in) | new_x | ||
) |
Linearly interpolate the (x, y) input data to the new_x coordinates.
Definition at line 238 of file mod_lookup_table.t.
pure real(dp) function, dimension(n_points), public mod_lookup_table::lt_get_xdata | ( | real(dp), intent(in) | x_min, |
real(dp), intent(in) | dx, | ||
integer, intent(in) | n_points | ||
) |
Returns the x-coordinates of the lookup table.
Definition at line 226 of file mod_lookup_table.t.
pure subroutine, public mod_lookup_table::lt_lin_interp_list | ( | real(dp), dimension(:), intent(in) | x_list, |
real(dp), dimension(:), intent(in) | y_list, | ||
real(dp), intent(in) | x_value, | ||
real(dp), intent(out) | y_value | ||
) |
Compute by use of linear interpolation the value in the middle.
Definition at line 359 of file mod_lookup_table.t.
pure subroutine, public mod_lookup_table::lt_set_col | ( | type(lt_t), intent(inout) | my_lt, |
integer, intent(in) | col_ix, | ||
real(dp), dimension(:), intent(in) | x, | ||
real(dp), dimension(:), intent(in) | y | ||
) |
Fill the column with index col_ix using the linearly interpolated (x, y) data.
Definition at line 250 of file mod_lookup_table.t.
subroutine, public mod_lookup_table::lt_to_file | ( | type(lt_t), intent(in) | my_lt, |
character(len=*), intent(in) | filename | ||
) |
Write the lookup table to file (in binary, potentially unportable)
Definition at line 382 of file mod_lookup_table.t.