mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-22 19:43:32 +01:00
mat to vec index
This commit is contained in:
parent
ebd0cf1d9a
commit
0f6572bde1
@ -174,9 +174,6 @@ BEGIN_PROVIDER [integer, n_core_inact_act_orb ]
|
|||||||
n_core_inact_act_orb = (n_core_orb + n_inact_orb + n_act_orb)
|
n_core_inact_act_orb = (n_core_orb + n_inact_orb + n_act_orb)
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer(bit_kind), core_bitmask , (N_int,2) ]
|
BEGIN_PROVIDER [ integer(bit_kind), core_bitmask , (N_int,2) ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -444,4 +441,3 @@ BEGIN_PROVIDER [integer, list_all_but_del_orb, (n_all_but_del_orb)]
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
61
src/utils_trust_region/mat_to_vec_index.irp.f
Normal file
61
src/utils_trust_region/mat_to_vec_index.irp.f
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
! Matrix to vector index
|
||||||
|
|
||||||
|
! *Compute the index i of a vector element from the indexes p,q of a
|
||||||
|
! matrix element*
|
||||||
|
|
||||||
|
! Lower diagonal matrix (p,q), p > q -> vector (i)
|
||||||
|
|
||||||
|
! If a matrix is antisymmetric it can be reshaped as a vector. And the
|
||||||
|
! vector can be reshaped as an antisymmetric matrix
|
||||||
|
|
||||||
|
! \begin{align*}
|
||||||
|
! \begin{pmatrix}
|
||||||
|
! 0 & -1 & -2 & -4 \\
|
||||||
|
! 1 & 0 & -3 & -5 \\
|
||||||
|
! 2 & 3 & 0 & -6 \\
|
||||||
|
! 4 & 5 & 6 & 0
|
||||||
|
! \end{pmatrix}
|
||||||
|
! \Leftrightarrow
|
||||||
|
! \begin{pmatrix}
|
||||||
|
! 1 & 2 & 3 & 4 & 5 & 6
|
||||||
|
! \end{pmatrix}
|
||||||
|
! \end{align*}
|
||||||
|
|
||||||
|
! !!! Here the algorithm only work for the lower diagonal !!!
|
||||||
|
|
||||||
|
! Input:
|
||||||
|
! | p,q | integer | indexes of a matrix element in the lower diagonal |
|
||||||
|
! | | | p > q, q -> column |
|
||||||
|
! | | | p -> row, |
|
||||||
|
! | | | q -> column |
|
||||||
|
|
||||||
|
! Input:
|
||||||
|
! | i | integer | corresponding index in the vector |
|
||||||
|
|
||||||
|
|
||||||
|
subroutine mat_to_vec_index(p,q,i)
|
||||||
|
|
||||||
|
include 'pi.h'
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
! Variables
|
||||||
|
|
||||||
|
! in
|
||||||
|
integer, intent(in) :: p,q
|
||||||
|
|
||||||
|
! out
|
||||||
|
integer, intent(out) :: i
|
||||||
|
|
||||||
|
! internal
|
||||||
|
integer :: a,b
|
||||||
|
double precision :: da
|
||||||
|
|
||||||
|
! Calculation
|
||||||
|
|
||||||
|
a = p-1
|
||||||
|
b = a*(a-1)/2
|
||||||
|
|
||||||
|
i = q+b
|
||||||
|
|
||||||
|
end subroutine
|
Loading…
Reference in New Issue
Block a user