A module for representing different excitations.
There is one abstract base class excitation_t that represents an arbitrary excitation. Possible excitations are the non trivial excitations Excite_{1,2,3}_t and the trivial excitations Excite_0_t and Excite_Further_t.
The non trivial excitations can “know” only some indices and leave the rest UNKNOWN, which is an arbitrary integer constant.
The procedures create_excitation, get_excitation, and get_bit_excitation can be used, to create excitations from nIs, or iluts at runtime.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | UNKNOWN | = | huge(UNKNOWN) |
Arbitrary non occuring (?!) orbital index. |
Additional constructors for the excitation types from integers instead of an integer array.
The non trivial excitations are initialized by passing the respective integer arrays into the type. Alternatively one can use integer arguments to initialize. Omitted indices are set to UNKNOWN.
\code{.unparsed} Excite_t([1, 2]) == Excite_t(src=1, tgt=2) ! If the target should be UNKNOWN, just omit it Excite_t(src=1) \endcode
The signature is (src_1, tgt_1, src_2, tgt_2, ...)
.
depending on the actual type.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | src | ||
integer, | intent(in), | optional | :: | tgt |
Additional constructors for the excitation types from integers instead of an integer array.
The non trivial excitations are initialized by passing the respective integer arrays into the type. Alternatively one can use integer arguments to initialize. Omitted indices are set to UNKNOWN.
\code{.unparsed} Excite_t([1, 2]) == Excite_t(src=1, tgt=2) ! If the target should be UNKNOWN, just omit it Excite_t(src=1) \endcode
The signature is (src_1, tgt_1, src_2, tgt_2, ...)
.
depending on the actual type.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | src1 | ||
integer, | intent(in), | optional | :: | tgt1 | ||
integer, | intent(in), | optional | :: | src2 | ||
integer, | intent(in), | optional | :: | tgt2 |
Additional constructors for the excitation types from integers instead of an integer array.
The non trivial excitations are initialized by passing the respective integer arrays into the type. Alternatively one can use integer arguments to initialize. Omitted indices are set to UNKNOWN.
\code{.unparsed} Excite_t([1, 2]) == Excite_t(src=1, tgt=2) ! If the target should be UNKNOWN, just omit it Excite_t(src=1) \endcode
The signature is (src_1, tgt_1, src_2, tgt_2, ...)
.
depending on the actual type.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | src1 | ||
integer, | intent(in), | optional | :: | tgt1 | ||
integer, | intent(in), | optional | :: | src2 | ||
integer, | intent(in), | optional | :: | tgt2 | ||
integer, | intent(in), | optional | :: | src3 | ||
integer, | intent(in), | optional | :: | tgt3 |
Return true if all sources and targets are not UNKNOWN.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Return true if all sources and targets are not UNKNOWN.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Return true if the excitation is canonical
Canonical means: 1. that the excitation is defined, i.e. it has no UNKNOWN, 2. the sources and the targets are sets, i.e. they are unique and ordered, 3. the sources and the targets are disjoint,
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Return true if the excitation preserves the overall spin-projection
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Return true if the excitation is allowed by occupation of the starting determinant
The input excitation has to be canonical.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_3_t), | intent(in) | :: | exc |
Canonicalize an excitation
Canonical means that the excitation is defined, i.e. it has no UNKNOWN, the sources and the targets are sets, i.e. they are unique and ordered, and the sources and the targets are disjoint.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Canonicalize an excitation and count the necessary swaps
Canonical means that the excitation is defined, i.e. it has no UNKNOWN, the sources and the targets are sets, i.e. they are unique and ordered, and the sources and the targets are disjoint.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Get the last target of a non trivial excitation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Set the last target of a non trivial excitation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(inout) | :: | exc | |||
integer, | intent(in) | :: | tgt |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(inout) | :: | exc | |||
integer, | intent(in) | :: | tgt |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(inout) | :: | exc | |||
integer, | intent(in) | :: | tgt |
Perform the excitation on a given determinant.
It is assumed that the excitations are non trivial. I.e. for single excitations source /= target and for double excitations the set of sources and targets has to be disjoint.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(nEl) | |||
integer, | intent(in) | :: | nJ(nEl) | |||
integer, | intent(in) | :: | IC | |||
integer, | intent(out) | :: | exc(2,maxExcit) | |||
logical, | intent(out) | :: | tParity |
Create an excitation from nI to nJ where the excitation level is already known.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(nEl) |
Two Slater determinants in nI format. |
||
integer, | intent(in) | :: | nJ(nEl) |
Two Slater determinants in nI format. |
||
integer, | intent(in) | :: | IC |
The excitation level. (1=Excite_1_t, 2=Excite_2_t, …) |
||
class(Excitation_t), | intent(out), | allocatable | :: | exc |
An excitation of type excitation_t. By using select type(exc) one can select the actual type at runtime and statically dispatch as much as possible at compile time. |
|
logical, | intent(out) | :: | tParity |
The parity of the excitation. |
Abstract base class for excitations.
Represents the orbital indices of a 0-order excitation The array is sorted like: [srcs, tgts]
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | val(2,0) | = | UNKNOWN |
Represents the orbital indices of a 1-order excitation The array is sorted like: [srcs, tgts]
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | val(2,1) | = | UNKNOWN |
Additional constructors for the excitation types from integers instead of an integer array.
private pure function from_integer_Excite_1_t (src, tgt) |
Represents the orbital indices of a 2-order excitation The array is sorted like: [srcs, tgts]
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | val(2,2) | = | UNKNOWN |
Additional constructors for the excitation types from integers instead of an integer array.
private pure function from_integer_Excite_2_t (src1, tgt1, src2, tgt2) |
Represents the orbital indices of a 3-order excitation The array is sorted like: [srcs, tgts]
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | val(2,3) | = | UNKNOWN |
Additional constructors for the excitation types from integers instead of an integer array.
private pure function from_integer_Excite_3_t (src1, tgt1, src2, tgt2, src3, tgt3) |
Represents an excitation with so many different indices, it has to be zero
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | val(2,0) | = | UNKNOWN |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(:) | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Excitation_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | src | ||
integer, | intent(in), | optional | :: | tgt |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | src1 | ||
integer, | intent(in), | optional | :: | tgt1 | ||
integer, | intent(in), | optional | :: | src2 | ||
integer, | intent(in), | optional | :: | tgt2 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | :: | src1 | ||
integer, | intent(in), | optional | :: | tgt1 | ||
integer, | intent(in), | optional | :: | src2 | ||
integer, | intent(in), | optional | :: | tgt2 | ||
integer, | intent(in), | optional | :: | src3 | ||
integer, | intent(in), | optional | :: | tgt3 |
Create an excitation from an excitation matrix and excitation level IC
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | IC |
The excitation level. (1=Excite_1_t, 2=Excite_2_t, …) |
||
integer, | intent(in), | optional | :: | ex(2,ic) |
An excitation matrix as in the %val component of the excitation types. |
An excitation of type excitation_t. By using select type(exc) one can select the actual type at runtime and statically dispatch as much as possible at runtime.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_0_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_1_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_2_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | ilut_I(:) | |||
type(Excite_3_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SpinOrbIdx_t), | intent(in) | :: | det_I | |||
class(Excitation_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | det_I(:) | |||
class(Excitation_t), | intent(in) | :: | exc |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_0_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(inout) | :: | exc | |||
logical, | intent(out) | :: | even_swaps |
Create an excitation from nI to nJ where the excitation level is already known.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(nEl) |
Two Slater determinants in nI format. |
||
integer, | intent(in) | :: | nJ(nEl) |
Two Slater determinants in nI format. |
||
integer, | intent(in) | :: | IC |
The excitation level. (1=Excite_1_t, 2=Excite_2_t, …) |
||
class(Excitation_t), | intent(out), | allocatable | :: | exc |
An excitation of type excitation_t. By using select type(exc) one can select the actual type at runtime and statically dispatch as much as possible at compile time. |
|
logical, | intent(out) | :: | tParity |
The parity of the excitation. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nI(nEl) | |||
integer, | intent(in) | :: | nJ(nEl) | |||
integer, | intent(in) | :: | IC | |||
integer, | intent(out) | :: | exc(2,maxExcit) | |||
logical, | intent(out) | :: | tParity |
Create canonical excitation from ilutI to ilutJ where the excitation level is already known.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=n_int), | intent(in) | :: | iLutI(0:NIfTot) |
Two Slater determinants in bitmask format. |
||
integer(kind=n_int), | intent(in) | :: | iLutJ(0:NIfTot) |
Two Slater determinants in bitmask format. |
||
integer, | intent(in) | :: | IC |
The excitation level. (1=Excite_1_t, 2=Excite_2_t, …) |
||
class(Excitation_t), | intent(out), | allocatable | :: | exc |
The parity of the excitation. |
|
logical, | intent(out) | :: | tParity |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_1_t), | intent(inout) | :: | exc | |||
integer, | intent(in) | :: | tgt |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_2_t), | intent(inout) | :: | exc | |||
integer, | intent(in) | :: | tgt |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Excite_3_t), | intent(inout) | :: | exc | |||
integer, | intent(in) | :: | tgt |