NTPoly
|
A Module For Storing Lists of triplets. More...
Data Types | |
type | tripletlist_t |
A data type for a list of triplets. As this is related to matrix multiplication, the referencing indices are rows and columns. More... | |
Functions/Subroutines | |
pure subroutine, public | constructtripletlist (this, size_in) |
Construct a triplet list. More... | |
pure subroutine, public | destructtripletlist (this) |
Destructs a triplet list. More... | |
pure subroutine, public | resizetripletlist (this, size) |
Increase the size of a triplet list. More... | |
pure subroutine, public | appendtotripletlist (this, triplet_value) |
Add a value to the end of the triplet list. More... | |
pure subroutine, public | settripletat (this, index, triplet_value) |
Set the value of a triplet at a particular index. More... | |
pure subroutine, public | gettripletat (this, index, triplet_value) |
Get the value of a triplet at a particular index. More... | |
pure subroutine, public | sorttripletlist (input_list, matrix_columns, sorted_list, bubble_in) |
Sorts a triplet list by index values. Implementation is based on bucket sort. This is why it needs the number of matrix columns. Bubble sort is used within a bucket. More... | |
subroutine, public | symmetrizetripletlist (triplet_list, pattern_type) |
Symmetrizes an unsymmetric triplet list according to the specified symmetry type. More... | |
pure integer function, public | gettripletlistsize (triplet_list) |
Get the number of entries in a triplet list. More... | |
subroutine, public | redistributetripletlists (triplet_lists, comm, local_data_out) |
Redistribute some triplet lists amongst a set of processors. Takes in a list of triplet lists, one list for each processor. Then the all to all redistribution is performed along the given communicator. More... | |
pure subroutine, public | shifttripletlist (triplet_list, row_shift, column_shift) |
Shift the rows and columns of a triplet list by set values. Frequently, we have a triplet list that comes from the global matrix which we would like to shift into a local matrix. In that case, just pass the negative of the starting row and column (plus 1) to this routine. | |
A Module For Storing Lists of triplets.
pure subroutine, public tripletlistmodule::appendtotripletlist | ( | type(tripletlist_t), intent(inout) | this, |
type(triplet_t), intent(in) | triplet_value | ||
) |
Add a value to the end of the triplet list.
[in,out] | this | the triplet list to append to. |
[in] | triplet_value | the value to append. |
pure subroutine, public tripletlistmodule::constructtripletlist | ( | type(tripletlist_t), intent(inout) | this, |
integer(kind=c_int), intent(in), optional | size_in | ||
) |
Construct a triplet list.
[in,out] | this | the triplet list to construct. |
[in] | size_in | the length of the triplet list (optional, default=0). |
pure subroutine, public tripletlistmodule::destructtripletlist | ( | type(tripletlist_t), intent(inout) | this | ) |
Destructs a triplet list.
[in,out] | this | the triplet list to destruct. |
pure subroutine, public tripletlistmodule::gettripletat | ( | type(tripletlist_t), intent(in) | this, |
integer(kind=c_int), intent(in) | index, | ||
type(triplet_t), intent(out) | triplet_value | ||
) |
Get the value of a triplet at a particular index.
[in] | this | the triplet list to get the value from. |
[in] | index | the index from which to get the triplet. |
[out] | triplet_value | the extracted triplet value. |
pure integer function, public tripletlistmodule::gettripletlistsize | ( | type(tripletlist_t), intent(in) | triplet_list | ) |
Get the number of entries in a triplet list.
[in] | triplet_list | list to get the size of. |
subroutine, public tripletlistmodule::redistributetripletlists | ( | type(tripletlist_t), dimension(:), intent(in) | triplet_lists, |
integer, intent(inout) | comm, | ||
type(tripletlist_t), intent(inout) | local_data_out | ||
) |
Redistribute some triplet lists amongst a set of processors. Takes in a list of triplet lists, one list for each processor. Then the all to all redistribution is performed along the given communicator.
[in] | triplet_lists | a list of triplet lists, one for each process. |
[in,out] | comm | the mpi communicator to redistribute along. |
[out] | local_data_out | the resulting local triplet list. |
pure subroutine, public tripletlistmodule::resizetripletlist | ( | type(tripletlist_t), intent(inout) | this, |
integer(kind=c_int), intent(in) | size | ||
) |
Increase the size of a triplet list.
[in,out] | this | the triplet list to resize. |
[in] | size | to resize to. |
pure subroutine, public tripletlistmodule::settripletat | ( | type(tripletlist_t), intent(inout) | this, |
integer(kind=c_int), intent(in) | index, | ||
type(triplet_t), intent(in) | triplet_value | ||
) |
Set the value of a triplet at a particular index.
[in,out] | this | the triplet list to set. |
[in] | index | the index at which to set the triplet. |
[in] | triplet_value | the value of the triplet to set. |
pure subroutine, public tripletlistmodule::sorttripletlist | ( | type(tripletlist_t), intent(in) | input_list, |
integer, intent(in) | matrix_columns, | ||
type(tripletlist_t), intent(out) | sorted_list, | ||
logical, intent(in), optional | bubble_in | ||
) |
Sorts a triplet list by index values. Implementation is based on bucket sort. This is why it needs the number of matrix columns. Bubble sort is used within a bucket.
[in] | input_list | list to be sorted. |
[in] | matrix_columns | this is the highest column value in the list. |
[in] | bubble_in | false if you don't need the final bubble sort. |
[out] | sorted_list | a now sorted version of the list. This routine will allocate it. |
subroutine, public tripletlistmodule::symmetrizetripletlist | ( | type(tripletlist_t), intent(inout) | triplet_list, |
integer, intent(in) | pattern_type | ||
) |
Symmetrizes an unsymmetric triplet list according to the specified symmetry type.
[in,out] | triplet_list | list to be symmetrized. |
[in] | pattern_type | type of symmetry. |