|
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. | |
| subroutine | check_constructed (this) |
| A simple class to check if this has been properly constructed. | |
| subroutine | construct (this, threshold, initial_size) |
| Constructs the class. | |
| logical function | check_same_integral (this, integral, idx) |
| A function to check whether the same integral label exists. | |
| subroutine | insert_ijklm_symbol (this, i, j, k, l, m, coeff, check_same_) |
| Insert unpacked integral labels. | |
| subroutine | insert_symbol (this, integral_label, coeff, check_same_) |
| Insert a packed integral symbol into the class. | |
| subroutine | expand_array (this) |
| Array expansion subroutine. | |
| subroutine | add_symbols (this, rhs, alpha_) |
| This inserts one symbolic vector into another scaled by a coefficient. | |
| subroutine | synchronize_symbols (this) |
| logical function | check_bounds (this, i) |
| Range check. | |
| subroutine | remove_symbol_at (this, idx) |
| Removes an integral and coefficient. | |
| logical function | is_empty (this) |
| Emptiness check. | |
| subroutine | clear (this) |
| Clear array. | |
| subroutine | modify_coeff (this, idx, coeff) |
| Update coeff with contribution. | |
| integer(longint) function, dimension(nidx) | get_integral_label (this, idx) |
| Get integral label at specific index. | |
| real(wp) function | get_coefficient (this, idx) |
| Get coefficient at specific index. | |
| subroutine | get_coeff_and_integral (this, idx, coeff, label) |
| Get both label and coeffcient at specific index. | |
| integer function | get_size (this) |
| Returns the number of symbolic elements stored. | |
| subroutine | destroy (this) |
| Cleans up the class by deallocating arrays. | |
| subroutine | print_symbols (this) |
| Print currently stored symbols. | |
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 373 of file Symbolic_Module.f90.
| integer function Symbolic_module::bstree_compare | ( | class(symbolicelementvector), intent(in) | this, |
| integer, intent(in) | i, | ||
| integer, intent(in) | j, | ||
| type(c_ptr), intent(in), optional | data ) |
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 449 of file Symbolic_Module.f90.
|
private |
A simple class to check if this has been properly constructed.
Definition at line 137 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 199 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 512 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 156 of file Symbolic_Module.f90.
| subroutine Symbolic_module::destroy | ( | class(symbolicelementvector) | this | ) |
Cleans up the class by deallocating arrays.
Definition at line 600 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 316 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(nidx), intent(out) | label ) |
Get both label and coeffcient at specific index.
Definition at line 571 of file Symbolic_Module.f90.
| real(wp) function Symbolic_module::get_coefficient | ( | class(symbolicelementvector) | this, |
| integer, intent(in) | idx ) |
| integer(longint) function, dimension(nidx) 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 589 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 225 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 257 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 497 of file Symbolic_Module.f90.
|
private |
Update coeff with contribution.
Add contribution to coeff at given index.
Definition at line 527 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 470 of file Symbolic_Module.f90.
|
private |
Definition at line 393 of file Symbolic_Module.f90.