Module providing datatypes and routines for a fast transformation of Legendre expansion to point values.
This function provides the test for equality of two projections.
Two projections are considered to be equal, if their kind, nodes_kind, maxPolyDegree and oversampling are equal.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is equal??
This function provides the test for unequality of two projections.
Two projections are considered to be unequal, if their kind, nodes_kind, maxpolydegree or factor are not equal.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is unequal??
This function provides a < comparison of two projections.
Sorting of projections is given by maxPolyDegree, kind, nodes_kind and last by factor.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is smaller??
This function provides a <= comparison of two projections.
Sorting of projections is given by maxPolyDegree, kind, nodes_kind and last by factor.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is smaller??
This function provides a > comparison of two projections.
Sorting of projections is given by maxPolyDegree, kind, nodes_kind and last by factor.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is greater??
This function provides a >= comparison of two projections.
Sorting of projections is given by maxPolyDegree, kind, nodes_kind and last by factor.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is greater??
initialize the dynamic array
initialization of a dynamic array
before a dynamic array can be used, it has to be initialized with this routine. the initial length provided here, can avoid reallocations and memory copying, if approximated correctly enough. if none is specified, the provided container initially will be of size 0.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
append a value to the dynamic array and return its position.
appending a value to the dynamic array
with this subroutine, a given value can be added to the dynamic array. the actual position of this value in the dynamic array will be returned, so it can be found again easily later. with the wasadded flag, it is indicated,\n wasadded = true, if this entry had to be added,\n wasadded = false, if this was already found in the array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me | ||||
type(ply_prj_init_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
|
integer, | intent(out), | optional | :: | pos |
position in the array, if the value is found |
|
logical, | intent(out), | optional | :: | wasadded |
flag to indicate, if val was newly added |
appending a sorted list of values to the dynamic array
with this subroutine, a given list of sorted values can be added to the dynamic array. the actual positions of these values in the dynamic array will be returned, so it can be found again easily later. with the wasadded flag, it is indicated,\n wasadded = true, if this entry had to be added,\n wasadded = false, if this was already found in the array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me | ||||
type(ply_prj_init_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
|
integer, | intent(out), | optional | :: | pos(:) |
position in the array, the values are found at. |
|
logical, | intent(out), | optional | :: | wasadded(:) |
flag to indicate, if val was newly added |
truncate the array, meaning cut off the trailing empty entries
truncate the array after the last valid entry and hence cut off the empty trailing empty entries
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me |
empty the array, reset nvals to be 0
empty all contents of the array without changing the size or status of any array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me |
fix the dynamic array, meaning: store the array in the sorted order and cut off the trailing empty entries
fixing the dynamic array
truncate the array after the last valid entry and hence cut off the empty trailing empty entries store the array in the sorted order according to the sorted( ) array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me |
return the position of a given value in the array val, which is what you usually want to know. it is the index of a given value
the actual position of a given value in the dynamic array
most likely this is what you need in codes, using this data structure, it first does the binary search on the sorted values with sortposofval_projection and then returns the looked up position in the original unsorted array, which corresponds to the position returned by the append routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(in) | :: | me | |||
type(ply_prj_init_type), | intent(in) | :: | val | |||
logical, | intent(in), | optional | :: | nextifnotfound |
flag to indicate, if the position of the next entry in the sorted list should be returned instead, if val is not found. |
|
integer, | intent(in), | optional | :: | lower | ||
integer, | intent(in), | optional | :: | upper |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(out) | :: | left |
fpt to copy to |
||
type(ply_prj_init_type), | intent(in) | :: | right |
fpt to copy from |
destroy the dynamic array
destruction of a dynamic array
this subroutine takes care of a proper destruction of a dynamic array, it frees the allocated memory and resets the internal counts to 0.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(inout) | :: | me |
increase the size of the container for the array.
expanding the dynamic array
this is a helping subroutine, which doubles the container of the given dynamic array. as the container might be initially 0-sized, a module variable minlength has been introduced, which is used here, to at least create a container of this size.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me | ||||
integer, | optional | :: | increment | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
return the position of a given value in the list 'sorted'. this is mainly for internal usage. the sorted list is only a pointer list to the actual values thus, in order to get the index of a given value, you need to look up the entry in the sorted list. this is done by the positionofval routine
return the sorted position of a value in the given dynamic array
if the value was not found, - return 0 if nextifnotfound = .false. - return position at the end if nextifnotfound = .true.
binary search on sorted list
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(in) | :: | me | |||
type(ply_prj_init_type), | intent(in) | :: | val | |||
logical, | intent(in), | optional | :: | nextifnotfound |
flag to indicate, if the next entry in the list should be returned, if the searched one is not found. |
|
integer, | intent(in), | optional | :: | lower | ||
integer, | intent(in), | optional | :: | upper |
Projection definition.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | basisType |
Polynomial basis type. |
|||
integer, | public | :: | maxPolyDegree |
The maximal polynomial degree per spatial direction. |
|||
type(ply_prj_header_type), | public | :: | header |
projection header consits of general information like which kind of projection is used |
dynamic array (da) type for type(ply_prj_init_type)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | nvals | = | 0 | ||
integer, | public | :: | containersize | = | 0 | ||
type(ply_prj_init_type), | public, | allocatable | :: | val(:) | |||
integer, | public, | allocatable | :: | sorted(:) |
return the sorted position of a value in the given dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(in) | :: | me | |||
type(ply_prj_init_type), | intent(in) | :: | val | |||
logical, | intent(in), | optional | :: | nextifnotfound |
flag to indicate, if the next entry in the list should be returned, if the searched one is not found. |
|
integer, | intent(in), | optional | :: | lower | ||
integer, | intent(in), | optional | :: | upper |
the actual position of a given value in the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(in) | :: | me | |||
type(ply_prj_init_type), | intent(in) | :: | val | |||
logical, | intent(in), | optional | :: | nextifnotfound |
flag to indicate, if the position of the next entry in the sorted list should be returned instead, if val is not found. |
|
integer, | intent(in), | optional | :: | lower | ||
integer, | intent(in), | optional | :: | upper |
This function provides the test for equality of two projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is equal??
This function provides the test for unequality of two projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is unequal??
This function provides a < comparison of two projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is smaller??
This function provides a <= comparison of two projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is smaller??
This function provides a > comparison of two projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is greater??
This function provides a >= comparison of two projections.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(in) | :: | left |
projection to compare |
||
type(ply_prj_init_type), | intent(in) | :: | right |
projection to compare against |
is greater??
Define a projection, without filling its body.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(inout) | :: | me | |||
type(ply_prj_header_type), | intent(in) | :: | header | |||
integer, | intent(in) | :: | maxPolyDegree | |||
integer, | intent(in) | :: | basisType |
Load settings to describe a projection method from a Lua table.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(inout) | :: | proj_pos | |||
type(dyn_projectionarray_type), | intent(inout) | :: | dyn_projectionArray | |||
integer, | intent(in) | :: | basisType | |||
integer, | intent(in) | :: | maxPolyDegree | |||
type(flu_State), | intent(in) | :: | conf | |||
integer, | intent(in) | :: | parent |
initialization of a dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
destruction of a dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type), | intent(inout) | :: | me |
appending a value to the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me | ||||
type(ply_prj_init_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
|
integer, | intent(out), | optional | :: | pos |
position in the array, if the value is found |
|
logical, | intent(out), | optional | :: | wasadded |
flag to indicate, if val was newly added |
appending a sorted list of values to the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me | ||||
type(ply_prj_init_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
|
integer, | intent(out), | optional | :: | pos(:) |
position in the array, the values are found at. |
|
logical, | intent(out), | optional | :: | wasadded(:) |
flag to indicate, if val was newly added |
truncate the array after the last valid entry and hence cut off the empty trailing empty entries
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me |
empty all contents of the array without changing the size or status of any array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me |
fixing the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me |
expanding the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dyn_projectionarray_type) | :: | me | ||||
integer, | optional | :: | increment | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ply_prj_init_type), | intent(out) | :: | left |
fpt to copy to |
||
type(ply_prj_init_type), | intent(in) | :: | right |
fpt to copy from |