MPI-SCATCI
2.0
An MPI version of SCATCI
|
Symbolic module. More...
Data Types | |
type | symbolicelementvector |
This class handles the storage symbolic elements. More... | |
Functions/Subroutines | |
integer function | bstree_compare (this, i, j, data) |
Compare two integral index sets. More... | |
subroutine | check_constructed (this) |
A simple class to check if this has been properly constructed. More... | |
subroutine | construct (this, threshold, initial_size) |
Constructs the class. More... | |
logical function | check_same_integral (this, integral, idx) |
A function to check whether the same integral label exists. More... | |
subroutine | insert_ijklm_symbol (this, i, j, k, l, m, coeff, check_same_) |
Insert unpacked integral labels. More... | |
subroutine | insert_symbol (this, integral_label, coeff, check_same_) |
Insert a packed integral symbol into the class. More... | |
subroutine | expand_array (this) |
Array expansion subroutine. More... | |
subroutine | add_symbols (this, rhs, alpha_) |
This inserts one symbolic vector into another scaled by a coefficient. More... | |
subroutine | synchronize_symbols (this) |
logical function | check_bounds (this, i) |
Range check. More... | |
subroutine | remove_symbol_at (this, idx) |
Removes an integral and coefficient. More... | |
logical function | is_empty (this) |
Emptiness check. More... | |
subroutine | clear (this) |
Clear array. More... | |
subroutine | modify_coeff (this, idx, coeff) |
Update coeff with contribution. More... | |
integer(longint) function, dimension(2) | get_integral_label (this, idx) |
Get integral label at specific index. More... | |
real(wp) function | get_coefficient (this, idx) |
Get coefficient at specific index. More... | |
subroutine | get_coeff_and_integral (this, idx, coeff, label) |
Get both label and coeffcient at specific index. More... | |
integer function | get_size (this) |
Returns the number of symbolic elements stored. More... | |
subroutine | destroy (this) |
Cleans up the class by deallocating arrays. More... | |
subroutine | print_symbols (this) |
Print currently stored symbols. More... | |
Symbolic module.
This module handles the storage of symbolic elements produced from slater rules when integrating configuration state functions
|
private |
This inserts one symbolic vector into another scaled by a coefficient.
[in,out] | this | The symbolic vector to modify. |
[in] | rhs | The symbolic vector to add into this class. |
[in] | alpha_ | The scaling value to be applied to each coefficient. |
Definition at line 385 of file Symbolic_Module.f90.
|
private |
Compare two integral index sets.
This is the predicate (order-defining function) used by the binary search tree. Given two pointers into the electron integral array, it returns 0 when the corresponding integral index sets are equal, -1 when the first one is (lexicographically) less, and +1 when the first one is (lexicographically) greater.
When either of the indices is non-positive, the dummy value pointed to by the optional argument is used instead.
[in] | this | Symbolic vector containing the electron_integral storage. |
[in] | i | Position of the first integral index set. |
[in] | j | Position of the first integral index set. |
[in] | data | Integral index set used for comparing with sets being processed. |
Definition at line 111 of file Symbolic_Module.f90.
|
private |
Range check.
Simply checks the index and wheter it exists within the array.
[in,out] | this | Vector object to query. |
[in] | i | The index we wish to access |
Definition at line 462 of file Symbolic_Module.f90.
|
private |
A simple class to check if this has been properly constructed.
Definition at line 147 of file Symbolic_Module.f90.
|
private |
A function to check whether the same integral label exists.
[in,out] | this | Vector object to query. |
[in] | integral | Packed integral label |
[out] | idx | The index to the electron integral array, -1 if not found, positive otherwise |
Definition at line 209 of file Symbolic_Module.f90.
subroutine symbolic_module::clear | ( | class(symbolicelementvector) | this | ) |
Clear array.
Clears our array (not really but it essential resets the symbol counter to zero, which is way quicker).
Definition at line 526 of file Symbolic_Module.f90.
|
private |
Constructs the class.
Constructs the class by allocating space for the electron integrals.
[in,out] | this | Vector object to initialize. |
[in] | threshold | The mininum integral coefficient threshold we should store |
[in] | initial_size | Deprecated, doesnt do anything |
Definition at line 166 of file Symbolic_Module.f90.
subroutine symbolic_module::destroy | ( | class(symbolicelementvector) | this | ) |
Cleans up the class by deallocating arrays.
Definition at line 614 of file Symbolic_Module.f90.
|
private |
Array expansion subroutine.
It simply copies the coeffcieint and integral array into a temporary one, reallocates a new array increased by expand_size and then recopies the elements and updates max capacity.
Definition at line 326 of file Symbolic_Module.f90.
subroutine symbolic_module::get_coeff_and_integral | ( | class(symbolicelementvector), intent(in) | this, |
integer, intent(in) | idx, | ||
real(wp), intent(out) | coeff, | ||
integer(longint), dimension(2), intent(out) | label | ||
) |
Get both label and coeffcient at specific index.
Definition at line 585 of file Symbolic_Module.f90.
real(wp) function symbolic_module::get_coefficient | ( | class(symbolicelementvector) | this, |
integer, intent(in) | idx | ||
) |
integer(longint) function, dimension(2) symbolic_module::get_integral_label | ( | class(symbolicelementvector) | this, |
integer, intent(in) | idx | ||
) |
integer function symbolic_module::get_size | ( | class(symbolicelementvector) | this | ) |
Returns the number of symbolic elements stored.
Definition at line 603 of file Symbolic_Module.f90.
|
private |
Insert unpacked integral labels.
This subroutine is used to insert unpacked integral labels. Wraps insert_symbol by automatically packing.
[in,out] | this | Vector object to update. |
[in] | i,j,k,l | The integral labels |
[in] | m | Positron label |
[in] | coeff | The integral coefficient |
[in] | check_same_ | Deprecated, orginally used to debug but now does nothing |
Definition at line 235 of file Symbolic_Module.f90.
|
private |
Insert a packed integral symbol into the class.
This subroutine is used to insert the integral into the class, it performs a check to see if it exists, if not then it will insert (and expand if needed) into the integral array. Otherwise it will simply add the coefficients to found integral index.
[in,out] | this | Vector object to update. |
[in] | integral_label | Packed integral label |
[in] | coeff | The integral coefficient |
[in] | check_same_ | Deprecated, orginally used to debug but now does nothing |
Definition at line 267 of file Symbolic_Module.f90.
logical function symbolic_module::is_empty | ( | class(symbolicelementvector) | this | ) |
Emptiness check.
Simply returns whether we are storing integrals and coeffs or not.
Definition at line 511 of file Symbolic_Module.f90.
|
private |
Update coeff with contribution.
Add contribution to coeff at given index.
Definition at line 541 of file Symbolic_Module.f90.
subroutine symbolic_module::print_symbols | ( | class(symbolicelementvector) | this | ) |
|
private |
Removes an integral and coefficient.
Never been used and pretty much useless.
Definition at line 483 of file Symbolic_Module.f90.
|
private |
Definition at line 405 of file Symbolic_Module.f90.