MPI-AMRVAC 3.2
The MPI - Adaptive Mesh Refinement - Versatile Advection Code (development version)
Loading...
Searching...
No Matches
mod_lookup_table Module Reference

A Fortran 90 module for creating 1D and 2D lookup tables. These tables can be used to efficiently interpolate one or more values. More...

Data Types

type  lt_t
 The lookup table type. There can be one or more columns, for which values can be looked up for a given 'x-coordinate'. More...
type  lt2_t
 The 2D lookup table type. More...
type  lt3_t
 The 3D lookup table type. More...
type  lt_loc_t
 Type to indicate a location in the lookup table, which can be used to speed up multiple lookups of different columns. More...
type  lt2_loc_t
 Type to indicate a location in a 2D lookup table. More...
type  lt3_loc_t
 Type to indicate a location in a 3D lookup table. 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.
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.
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.
type(lt_t) function, public lt_create (x_min, x_max, n_points, n_cols)
 This function returns a new lookup table.
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.
pure real(dp) function, dimension(n_points), public lt_get_xdata (x_min, dx, n_points)
 Returns the x-coordinates of the lookup table.
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.
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.
pure subroutine, public lt_add_col (my_lt, x, y)
 Add a new column by linearly interpolating the (x, y) data.
elemental type(lt_loc_t) function, public lt_get_loc (my_lt, x)
 Get a location in the lookup table.
pure real(dp) function, dimension(my_lt%n_cols), public lt_get_mcol (my_lt, x)
 Get the values of all columns at x.
elemental real(dp) function, public lt_get_col (my_lt, col_ix, x)
 Get the value of a single column at x.
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.
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.
pure subroutine, public lt_get_data (my_lt, x_data, cols_rows)
 Get the x-coordinates and the columns of the lookup table.
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.
subroutine, public lt_to_file (my_lt, filename)
 Write the lookup table to file (in binary, potentially unportable).
subroutine, public lt_from_file (my_lt, filename)
 Read the lookup table from file (in binary, potentially unportable).
type(lt2_t) function, public lt2_create (x_min, x_max, n_points, n_cols)
 This function returns a new lookup table.
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.
pure subroutine, public lt2_set_col (my_lt, col_ix, x1, x2, y)
 Fill the column with index col_ix using linearly interpolated data.
elemental type(lt2_loc_t) function, public lt2_get_loc (my_lt, x1, x2)
 Get a location in the lookup table.
elemental real(dp) function, public lt2_get_col (my_lt, col_ix, x1, x2)
 Get the value of a single column at x.
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.
type(lt3_t) function, public lt3_create (x_min, x_max, n_points, n_cols)
 This function returns a new lookup table.
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.
elemental type(lt3_loc_t) function, public lt3_get_loc (my_lt, x1, x2, x3)
 Get a location in the lookup table.
elemental real(dp) function, public lt3_get_col (my_lt, col_ix, x1, x2, x3)
 Get the value of a single column at x.
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.

Detailed Description

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

Function/Subroutine Documentation

◆ find_index_adaptive()

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.

Parameters
[in]listSorted list
[in]valValue to search for

Definition at line 163 of file mod_lookup_table.t.

Here is the call graph for this function:

◆ find_index_bsearch()

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.

Parameters
[in]listSorted list
[in]valValue to search for

Definition at line 137 of file mod_lookup_table.t.

◆ find_index_linear()

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.

Parameters
[in]listSorted list
[in]valValue to search for

Definition at line 125 of file mod_lookup_table.t.

◆ lt2_create()

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.

Parameters
[in]x_minMinimum coordinate
[in]x_maxMaximum coordinate
[in]n_pointsHow many values to store
[in]n_colsNumber of variables that will be looked up

Definition at line 418 of file mod_lookup_table.t.

◆ lt2_create_from_data()

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.

Parameters
[in]x_minMinimum coordinate
[in]x_maxMaximum coordinate
[in]spaced_dataInput data of shape (nx, ny, n_cols)

Definition at line 439 of file mod_lookup_table.t.

◆ lt2_get_col()

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.

Here is the call graph for this function:

◆ lt2_get_col_at_loc()

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.

◆ lt2_get_loc()

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.

◆ lt2_set_col()

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.

Here is the call graph for this function:

◆ lt3_create()

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.

Parameters
[in]x_minMinimum coordinate
[in]x_maxMaximum coordinate
[in]n_pointsHow many values to store
[in]n_colsNumber of variables that will be looked up

Definition at line 546 of file mod_lookup_table.t.

◆ lt3_create_from_data()

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.

Parameters
[in]x_minMinimum coordinate
[in]x_maxMaximum coordinate
[in]spaced_dataInput data of shape (nx, ny, nz, n_cols)

Definition at line 567 of file mod_lookup_table.t.

◆ lt3_get_col()

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.

Here is the call graph for this function:

◆ lt3_get_col_at_loc()

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.

◆ lt3_get_loc()

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.

◆ lt_add_col()

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.

Here is the call graph for this function:

◆ lt_create()

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.

Parameters
[in]x_minMinimum x-coordinate
[in]x_maxMaximum x-coordinate
[in]n_pointsHow many x-values to store
[in]n_colsNumber of variables that will be looked up

Definition at line 179 of file mod_lookup_table.t.

◆ lt_create_from_data()

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.

Parameters
[in]x_minMinimum coordinate
[in]x_maxMaximum coordinate
[in]spaced_dataInput data of shape (n_points, n_cols)

Definition at line 202 of file mod_lookup_table.t.

◆ lt_from_file()

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.

◆ lt_get_col()

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.

Here is the call graph for this function:

◆ lt_get_col_at_loc()

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.

◆ lt_get_data()

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.

Here is the call graph for this function:

◆ lt_get_loc()

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.

◆ lt_get_mcol()

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.

Here is the call graph for this function:

◆ lt_get_mcol_at_loc()

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.

◆ lt_get_spaced_data()

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.

Here is the call graph for this function:

◆ lt_get_xdata()

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.

◆ lt_lin_interp_list()

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.

Here is the call graph for this function:

◆ lt_set_col()

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.

Here is the call graph for this function:

◆ lt_to_file()

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.