mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-21 19:13:29 +01:00
Added provider for getting the dimensions of AIJpq tensor #143.
This commit is contained in:
parent
0f9c1e6cb3
commit
1a896cf005
@ -44,7 +44,8 @@ via BLAS level 3 operations.
|
|||||||
|
|
||||||
#+begin_src f90 :main no :tangle configurations_sigma_vector.irp.f
|
#+begin_src f90 :main no :tangle configurations_sigma_vector.irp.f
|
||||||
|
|
||||||
BEGIN_PROIDER[ integer, NSOMOMax]
|
BEGIN_PROVIDER [ integer, NSOMOMax]
|
||||||
|
&BEGIN_PROVIDER [ integer, NCSFMax]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Documentation for NSOMOMax
|
! Documentation for NSOMOMax
|
||||||
@ -52,30 +53,64 @@ via BLAS level 3 operations.
|
|||||||
! required for the calculation of prototype arrays.
|
! required for the calculation of prototype arrays.
|
||||||
END_DOC
|
END_DOC
|
||||||
NSOMOMax = 8
|
NSOMOMax = 8
|
||||||
NCSFMAx = 14 ! TODO: NCSFs for MS=0
|
NCSFMax = 14 ! TODO: NCSFs for MS=0
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The prototype matrix AIJpqMatrixList has the following dimensions
|
The prototype matrix AIJpqMatrixList has the following dimensions
|
||||||
,,\(\left(NSOMOMax, NSOMOMax, 4, NSOMOMax, NSOMOMax,NCSFMAx,NCSFMax\right)\) where the first two
|
\(\left(NSOMOMax, NSOMOMax, 4, NSOMOMax, NSOMOMax,NCSFMAx,NCSFMax\right)\) where the first two
|
||||||
indices represent the somos in \(I,J\) followed by the type of excitation and
|
indices represent the somos in \(I,J\) followed by the type of excitation and
|
||||||
finally the two model space orbitals \(p,q\).
|
finally the two model space orbitals \(p,q\).
|
||||||
|
|
||||||
- [ ] Read the transformation matrix based on the number of SOMOs
|
- [ ] Read the transformation matrix based on the number of SOMOs
|
||||||
|
|
||||||
#+begin_src f90 :main no
|
#+begin_src f90 :main no :tangle configurations_sigma_vector.irp.f
|
||||||
BEGIN_PROIDER[ double precision, AIJpqMatrixList, (NSOMOMax,NSOMOMax,4,NSOMOMax,NSOMOMax,NCSFMax,NCSFMax)]
|
BEGIN_PROVIDER [ double precision, AIJpqMatrixDimsList, (NSOMOMax,NSOMOMax,4,NSOMOMax,NSOMOMax,2)]
|
||||||
|
use cfunctions
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Documentation for AIJpqMatrixList
|
! Documentation for AIJpqMatrixList
|
||||||
! The prototype matrix containing the <I|E_{pq}|J>
|
! The prototype matrix containing the <I|E_{pq}|J>
|
||||||
! matrices for each I,J somo pair and orb ids.
|
! matrices for each I,J somo pair and orb ids.
|
||||||
END_DOC
|
END_DOC
|
||||||
do i = 1,NSOMOMax
|
integer i,j,k,l
|
||||||
do j = i-1,i+1
|
integer*8 Isomo, Jsomo
|
||||||
if(j > NSOMOMax || j ==0) then
|
Isomo = 0
|
||||||
continue
|
Jsomo = 0
|
||||||
|
integer*8 rows, cols
|
||||||
|
rows = -1
|
||||||
|
cols = -1
|
||||||
|
integer*8 MS
|
||||||
|
MS = 0
|
||||||
|
print *,"NSOMOMax = ",NSOMOMax
|
||||||
|
!allocate(AIJpqMatrixDimsList(NSOMOMax,NSOMOMax,4,NSOMOMax,NSOMOMax,2))
|
||||||
|
do i = 2, NSOMOMax, 2
|
||||||
|
Isomo = ISHFT(1,i)-1
|
||||||
|
do j = i-2,i+2, 2
|
||||||
|
Jsomo = ISHFT(1,j)-1
|
||||||
|
if(j .GT. NSOMOMax .OR. j .LE. 0) then
|
||||||
|
cycle
|
||||||
end if
|
end if
|
||||||
|
do k = 1,NSOMOMax
|
||||||
|
do l = k,NSOMOMax
|
||||||
|
call getApqIJMatrixDims(Isomo, &
|
||||||
|
Jsomo, &
|
||||||
|
MS, &
|
||||||
|
rows, &
|
||||||
|
cols)
|
||||||
|
print *, i,j,k,l,">",Isomo,Jsomo,">",rows, cols
|
||||||
|
! i -> j
|
||||||
|
AIJpqMatrixDimsList(i,j,1,k,l,1) = rows
|
||||||
|
AIJpqMatrixDimsList(i,j,1,k,l,2) = cols
|
||||||
|
AIJpqMatrixDimsList(i,j,1,l,k,1) = rows
|
||||||
|
AIJpqMatrixDimsList(i,j,1,l,k,2) = cols
|
||||||
|
! j -> i
|
||||||
|
AIJpqMatrixDimsList(j,i,1,k,l,1) = rows
|
||||||
|
AIJpqMatrixDimsList(j,i,1,k,l,2) = cols
|
||||||
|
AIJpqMatrixDimsList(j,i,1,l,k,1) = rows
|
||||||
|
AIJpqMatrixDimsList(j,i,1,l,k,2) = cols
|
||||||
|
end do
|
||||||
|
end do
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
BEGIN_PROIDER[ integer, NSOMOMax]
|
BEGIN_PROVIDER [ integer, NSOMOMax]
|
||||||
|
&BEGIN_PROVIDER [ integer, NCSFMax]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Documentation for NSOMOMax
|
! Documentation for NSOMOMax
|
||||||
@ -6,5 +7,55 @@
|
|||||||
! required for the calculation of prototype arrays.
|
! required for the calculation of prototype arrays.
|
||||||
END_DOC
|
END_DOC
|
||||||
NSOMOMax = 8
|
NSOMOMax = 8
|
||||||
NCSFMAx = 14 ! TODO: NCSFs for MS=0
|
NCSFMax = 14 ! TODO: NCSFs for MS=0
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, AIJpqMatrixDimsList, (NSOMOMax,NSOMOMax,4,NSOMOMax,NSOMOMax,2)]
|
||||||
|
use cfunctions
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Documentation for AIJpqMatrixList
|
||||||
|
! The prototype matrix containing the <I|E_{pq}|J>
|
||||||
|
! matrices for each I,J somo pair and orb ids.
|
||||||
|
END_DOC
|
||||||
|
integer i,j,k,l
|
||||||
|
integer*8 Isomo, Jsomo
|
||||||
|
Isomo = 0
|
||||||
|
Jsomo = 0
|
||||||
|
integer*8 rows, cols
|
||||||
|
rows = -1
|
||||||
|
cols = -1
|
||||||
|
integer*8 MS
|
||||||
|
MS = 0
|
||||||
|
print *,"NSOMOMax = ",NSOMOMax
|
||||||
|
!allocate(AIJpqMatrixDimsList(NSOMOMax,NSOMOMax,4,NSOMOMax,NSOMOMax,2))
|
||||||
|
do i = 2, NSOMOMax, 2
|
||||||
|
Isomo = ISHFT(1,i)-1
|
||||||
|
do j = i-2,i+2, 2
|
||||||
|
Jsomo = ISHFT(1,j)-1
|
||||||
|
if(j .GT. NSOMOMax .OR. j .LE. 0) then
|
||||||
|
cycle
|
||||||
|
end if
|
||||||
|
do k = 1,NSOMOMax
|
||||||
|
do l = k,NSOMOMax
|
||||||
|
call getApqIJMatrixDims(Isomo, &
|
||||||
|
Jsomo, &
|
||||||
|
MS, &
|
||||||
|
rows, &
|
||||||
|
cols)
|
||||||
|
print *, i,j,k,l,">",Isomo,Jsomo,">",rows, cols
|
||||||
|
! i -> j
|
||||||
|
AIJpqMatrixDimsList(i,j,1,k,l,1) = rows
|
||||||
|
AIJpqMatrixDimsList(i,j,1,k,l,2) = cols
|
||||||
|
AIJpqMatrixDimsList(i,j,1,l,k,1) = rows
|
||||||
|
AIJpqMatrixDimsList(i,j,1,l,k,2) = cols
|
||||||
|
! j -> i
|
||||||
|
AIJpqMatrixDimsList(j,i,1,k,l,1) = rows
|
||||||
|
AIJpqMatrixDimsList(j,i,1,k,l,2) = cols
|
||||||
|
AIJpqMatrixDimsList(j,i,1,l,k,1) = rows
|
||||||
|
AIJpqMatrixDimsList(j,i,1,l,k,2) = cols
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
Loading…
Reference in New Issue
Block a user