a vector function cache.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | n | = | 0 |
size of |
|
integer, | private | :: | m | = | 0 |
size of |
|
type(fx), | private, | dimension(:), allocatable | :: | c |
the cache of |
||
integer, | private | :: | chunk_size | = | 100 |
for resizing vectors in the unique function |
Initialize the cache. Must be called first before use.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(function_cache), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | isize |
the size of the hash table |
||
integer, | intent(in) | :: | n |
number of independant variables (x) |
||
integer, | intent(in) | :: | m |
number of functions (f) |
||
integer, | intent(in), | optional | :: | chunk_size |
chunk size to speed up reallocation
of arrays. A good value is a guess for
the actual number of elements of |
Check if the x
vector is in the cache, if so return f
.
Note that only some of the elements may be present, so it will return
the ones there are there, and indicate which ones were found.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(function_cache), | intent(inout) | :: | me | |||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
independant variable vector |
|
integer, | intent(in), | dimension(:) | :: | ifs |
elements of |
|
integer, | intent(out) | :: | i |
index in the hash table |
||
real(kind=wp), | intent(out), | dimension(:) | :: | f |
|
|
logical, | intent(out) | :: | xfound |
if |
||
logical, | intent(out), | dimension(size(ifs)) | :: | ffound |
which |
Put a value into the cache.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(function_cache), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | i |
index in the hash table |
||
real(kind=wp), | intent(in), | dimension(:) | :: | x |
independant variable vector (dimension |
|
real(kind=wp), | intent(in), | dimension(:) | :: | f |
function vector |
|
integer, | intent(in), | dimension(:) | :: | ifs |
elements of |
Destroy a cache.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(function_cache), | intent(out) | :: | me |
Print the contents of the cache. Used for debugging.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(function_cache), | intent(inout) | :: | me | |||
integer, | intent(in) | :: | iunit |
file unit for writing (assumed to be opened) |
type,public :: function_cache !! a vector function cache. private integer :: n = 0 !! size of `x` integer :: m = 0 !! size of `f` type(fx),dimension(:),allocatable :: c !! the cache of `f(x)` integer :: chunk_size = 100 !! for resizing vectors !! in the [[unique]] function contains private procedure,public :: initialize => initialize_cache procedure,public :: get => get_from_cache procedure,public :: put => put_in_cache procedure,public :: destroy => destroy_cache procedure,public :: print => print_cache end type function_cache