10
1
mirror of https://github.com/pfloos/quack synced 2025-04-02 06:51:37 +02:00

Merge branch 'master' of github.com:pfloos/QuAcK

This commit is contained in:
Antoine Marie 2025-03-17 14:57:18 +01:00
commit 5dce53b5df
2 changed files with 104 additions and 98 deletions

View File

@ -4,10 +4,11 @@
**Contributors:** **Contributors:**
- [Pierre-Francois Loos](https://pfloos.github.io/WEB_LOOS) - [Pierre-Francois Loos](https://pfloos.github.io/WEB_LOOS)
- [Anthony Scemama](https://scemama.github.io)
- [Enzo Monino](https://enzomonino.github.io) - [Enzo Monino](https://enzomonino.github.io)
- [Antoine Marie](https://antoine-marie.github.io) - [Antoine Marie](https://antoine-marie.github.io)
- [Abdallah Ammar](https://scholar.google.com/citations?user=y437T5sAAAAJ&hl=en) - [Abdallah Ammar](https://scholar.google.com/citations?user=y437T5sAAAAJ&hl=en)
- [Anthony Scemama](https://scemama.github.io) - [Mauricio Rodriguez-Mayorga](https://scholar.google.com/citations?user=OLGOgQgAAAAJ&hl=es)
# What is it? # What is it?
@ -67,6 +68,12 @@ The two most important files are:
- `$QUACK_ROOT/input/methods` that gathers the methods you want to use. - `$QUACK_ROOT/input/methods` that gathers the methods you want to use.
- `$QUACK_ROOT/input/options` that gathers the different options associated these methods. - `$QUACK_ROOT/input/options` that gathers the different options associated these methods.
Copy the files `methods.default` and `options.default` to `methods.default` `options.default`
```
cp $QUACK_ROOT/input/methods.default $QUACK_ROOT/input/methods
cp $QUACK_ROOT/input/options.default $QUACK_ROOT/input/options
```
You can then edit these files to run the methods you'd like with specific options.
These files look like this These files look like this
``` ```
QuAcK 💩 % cat input/methods QuAcK 💩 % cat input/methods

View File

@ -30,19 +30,19 @@ subroutine EE_EOM_CCD_1h1p(nC,nO,nV,nR,eO,eV,OOVV,OVVO,t)
double precision,allocatable :: Om(:) double precision,allocatable :: Om(:)
double precision,allocatable :: VL(:,:) double precision,allocatable :: VL(:,:)
double precision,allocatable :: VR(:,:) double precision,allocatable :: VR(:,:)
double precision,allocatable :: Leom(:,:,:) ! double precision,allocatable :: Leom(:,:,:)
double precision,allocatable :: Reom(:,:,:) ! double precision,allocatable :: Reom(:,:,:)
integer :: nstate,m ! integer :: nstate,m
double precision :: Ex,tmp ! double precision :: Ex,tmp
integer,allocatable :: order(:) integer,allocatable :: order(:)
double precision,allocatable :: rdm1_oo(:,:) ! double precision,allocatable :: rdm1_oo(:,:)
double precision,allocatable :: rdm1_vv(:,:) ! double precision,allocatable :: rdm1_vv(:,:)
double precision,allocatable :: rdm2_oovv(:,:,:,:) ! double precision,allocatable :: rdm2_oovv(:,:,:,:)
double precision,allocatable :: rdm2_ovvo(:,:,:,:) ! double precision,allocatable :: rdm2_ovvo(:,:,:,:)
! Hello world ! Hello world
@ -165,120 +165,119 @@ subroutine EE_EOM_CCD_1h1p(nC,nO,nV,nR,eO,eV,OOVV,OVVO,t)
end if end if
allocate(Leom(nO,nV,nS),Reom(nO,nV,nS)) ! allocate(Leom(nO,nV,nS),Reom(nO,nV,nS))
do m=1,nS ! do m=1,nS
ia = 0 ! ia = 0
do i=1,nO ! do i=1,nO
do a=1,nV ! do a=1,nV
ia = ia + 1 ! ia = ia + 1
Leom(i,a,m) = VL(ia,m) ! Leom(i,a,m) = VL(ia,m)
Reom(i,a,m) = VR(ia,m) ! Reom(i,a,m) = VR(ia,m)
end do ! end do
end do ! end do
end do ! end do
deallocate(VL,VR) ! deallocate(VL,VR)
!------------------------------------------------------------------------ !------------------------------------------------------------------------
! EOM section ! EOM section
!------------------------------------------------------------------------ !------------------------------------------------------------------------
allocate(rdm1_oo(nO,nO),rdm1_vv(nV,nV)) ! allocate(rdm1_oo(nO,nO),rdm1_vv(nV,nV))
allocate(rdm2_oovv(nO,nO,nV,nV),rdm2_ovvo(nO,nV,nV,nO)) ! allocate(rdm2_oovv(nO,nO,nV,nV),rdm2_ovvo(nO,nV,nV,nO))
nstate = 1 ! nstate = 1
tmp = 0d0 ! tmp = 0d0
do i=1,nO ! do i=1,nO
do a=1,nV ! do a=1,nV
tmp = tmp + Leom(i,a,nstate)*Reom(i,a,nstate) ! tmp = tmp + Leom(i,a,nstate)*Reom(i,a,nstate)
end do ! end do
end do ! end do
print*,tmp ! print*,tmp
rdm1_oo(:,:) = 0d0 ! rdm1_oo(:,:) = 0d0
do i=1,nO ! do i=1,nO
do j=1,nO ! do j=1,nO
do c=1,nV ! do c=1,nV
rdm1_oo(i,j) = rdm1_oo(i,j) - Reom(i,c,nstate)*Leom(j,c,nstate) ! rdm1_oo(i,j) = rdm1_oo(i,j) - Reom(i,c,nstate)*Leom(j,c,nstate)
end do ! end do
end do ! end do
end do ! end do
rdm1_vv(:,:) = 0d0 ! rdm1_vv(:,:) = 0d0
do a=1,nV ! do a=1,nV
do b=1,nV ! do b=1,nV
do k=1,nO ! do k=1,nO
rdm1_vv(a,b) = rdm1_vv(a,b) + Reom(k,b,nstate)*Leom(k,a,nstate) ! rdm1_vv(a,b) = rdm1_vv(a,b) + Reom(k,b,nstate)*Leom(k,a,nstate)
end do ! end do
end do ! end do
end do ! end do
rdm2_ovvo(:,:,:,:) = 0d0 ! rdm2_ovvo(:,:,:,:) = 0d0
do i=1,nO ! do i=1,nO
do a=1,nV ! do a=1,nV
do b=1,nV ! do b=1,nV
do j=1,nO ! do j=1,nO
!
rdm2_ovvo(i,a,b,j) = Reom(i,b,nstate)*Leom(j,a,nstate) ! rdm2_ovvo(i,a,b,j) = Reom(i,b,nstate)*Leom(j,a,nstate)
end do ! end do
end do ! end do
end do ! end do
end do ! end do
rdm2_oovv(:,:,:,:) = 0d0 ! rdm2_oovv(:,:,:,:) = 0d0
do i=1,nO ! do i=1,nO
do j=1,nO ! do j=1,nO
do a=1,nV ! do a=1,nV
do b=1,nV ! do b=1,nV
do k=1,nO ! do k=1,nO
do c=1,nV ! do c=1,nV
!
rdm2_oovv(i,j,a,b) = rdm2_oovv(i,j,a,b) & ! rdm2_oovv(i,j,a,b) = rdm2_oovv(i,j,a,b) &
+ Reom(j,b,nstate)*t(k,i,c,a)*Leom(k,c,nstate) & ! + Reom(j,b,nstate)*t(k,i,c,a)*Leom(k,c,nstate) &
- Reom(i,b,nstate)*t(k,j,c,a)*Leom(k,c,nstate) & ! - Reom(i,b,nstate)*t(k,j,c,a)*Leom(k,c,nstate) &
- Reom(j,a,nstate)*t(k,i,c,b)*Leom(k,c,nstate) & ! - Reom(j,a,nstate)*t(k,i,c,b)*Leom(k,c,nstate) &
+ Reom(i,a,nstate)*t(k,j,c,b)*Leom(k,c,nstate) ! + Reom(i,a,nstate)*t(k,j,c,b)*Leom(k,c,nstate)
end do ! end do
end do ! end do
end do ! end do
end do ! end do
end do ! end do
end do ! end do
Ex = 0d0 ! Ex = 0d0
do i=1,nO ! do i=1,nO
Ex = Ex + rdm1_oo(i,i)*eO(i) ! Ex = Ex + rdm1_oo(i,i)*eO(i)
end do ! end do
do a=1,nV ! do a=1,nV
Ex = Ex + rdm1_vv(a,a)*eV(a) ! Ex = Ex + rdm1_vv(a,a)*eV(a)
end do ! end do
do i=1,nO ! do i=1,nO
do a=1,nV ! do a=1,nV
do b=1,nV ! do b=1,nV
do j=1,nO ! do j=1,nO
!
Ex = Ex + rdm2_ovvo(i,a,b,j)*OVVO(i,a,b,j) + 0.25d0*rdm2_oovv(i,j,a,b)*OOVV(i,j,a,b) ! Ex = Ex + rdm2_ovvo(i,a,b,j)*OVVO(i,a,b,j) + 0.25d0*rdm2_oovv(i,j,a,b)*OOVV(i,j,a,b)
!
end do ! end do
end do ! end do
end do ! end do
end do ! end do
print*,'Ex = ',Ex
print*,'Om = ',Om(nstate)
! print*,'Ex = ',Ex
! print*,'Om = ',Om(nstate)
end subroutine end subroutine