/src/tce/eomccsdt/eomccsdt_density1_5_13_1_1.F
https://github.com/nwchemgit/nwchem · FORTRAN Legacy · 217 lines · 187 code · 0 blank · 30 comment · 0 complexity · 9d86d2b386a3983147d852906bf855d0 MD5 · raw file
- SUBROUTINE eomccsdt_density1_5_13_1_1(d_a,k_a_offset,d_b,k_b_offse
- &t,d_c,k_c_offset)
- C $Id$
- C This is a Fortran77 program generated by Tensor Contraction Engine v.1.0
- C Copyright (c) Battelle & Pacific Northwest National Laboratory (2002)
- C i3 ( h4 h5 p3 p6 )_yx + = 1 * Sum ( h8 p7 ) * x ( p7 h8 )_x * y ( h4 h5 h8 p3 p6 p7 )_y
- IMPLICIT NONE
- #include "global.fh"
- #include "mafdecls.fh"
- #include "sym.fh"
- #include "errquit.fh"
- #include "tce.fh"
- INTEGER d_a
- INTEGER k_a_offset
- INTEGER d_b
- INTEGER k_b_offset
- INTEGER d_c
- INTEGER k_c_offset
- INTEGER NXTASK
- INTEGER next
- INTEGER nprocs
- INTEGER count
- INTEGER h4b
- INTEGER h5b
- INTEGER p3b
- INTEGER p6b
- INTEGER dimc
- INTEGER l_c_sort
- INTEGER k_c_sort
- INTEGER p7b
- INTEGER h8b
- INTEGER p7b_1
- INTEGER h8b_1
- INTEGER h4b_2
- INTEGER h5b_2
- INTEGER h8b_2
- INTEGER p3b_2
- INTEGER p6b_2
- INTEGER p7b_2
- INTEGER dim_common
- INTEGER dima_sort
- INTEGER dima
- INTEGER dimb_sort
- INTEGER dimb
- INTEGER l_a_sort
- INTEGER k_a_sort
- INTEGER l_a
- INTEGER k_a
- INTEGER l_b_sort
- INTEGER k_b_sort
- INTEGER l_b
- INTEGER k_b
- INTEGER l_c
- INTEGER k_c
- EXTERNAL NXTASK
- nprocs = GA_NNODES()
- count = 0
- next = NXTASK(nprocs,1)
- DO h4b = 1,noab
- DO h5b = h4b,noab
- DO p3b = noab+1,noab+nvab
- DO p6b = p3b,noab+nvab
- IF (next.eq.count) THEN
- IF ((.not.restricted).or.(int_mb(k_spin+h4b-1)+int_mb(k_spin+h5b-1
- &)+int_mb(k_spin+p3b-1)+int_mb(k_spin+p6b-1).ne.8)) THEN
- IF (int_mb(k_spin+h4b-1)+int_mb(k_spin+h5b-1) .eq. int_mb(k_spin+p
- &3b-1)+int_mb(k_spin+p6b-1)) THEN
- IF (ieor(int_mb(k_sym+h4b-1),ieor(int_mb(k_sym+h5b-1),ieor(int_mb(
- &k_sym+p3b-1),int_mb(k_sym+p6b-1)))) .eq. ieor(irrep_y,irrep_x)) TH
- &EN
- dimc = int_mb(k_range+h4b-1) * int_mb(k_range+h5b-1) * int_mb(k_ra
- &nge+p3b-1) * int_mb(k_range+p6b-1)
- IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c_sort,k_c_sort)) CALL
- & ERRQUIT('eomccsdt_density1_5_13_1_1',0,MA_ERR)
- CALL DFILL(dimc,0.0d0,dbl_mb(k_c_sort),1)
- DO p7b = noab+1,noab+nvab
- DO h8b = 1,noab
- IF (int_mb(k_spin+p7b-1) .eq. int_mb(k_spin+h8b-1)) THEN
- IF (ieor(int_mb(k_sym+p7b-1),int_mb(k_sym+h8b-1)) .eq. irrep_x) TH
- &EN
- CALL TCE_RESTRICTED_2(p7b,h8b,p7b_1,h8b_1)
- CALL TCE_RESTRICTED_6(h4b,h5b,h8b,p3b,p6b,p7b,h4b_2,h5b_2,h8b_2,p3
- &b_2,p6b_2,p7b_2)
- dim_common = int_mb(k_range+p7b-1) * int_mb(k_range+h8b-1)
- dima_sort = 1
- dima = dim_common * dima_sort
- dimb_sort = int_mb(k_range+h4b-1) * int_mb(k_range+h5b-1) * int_mb
- &(k_range+p3b-1) * int_mb(k_range+p6b-1)
- dimb = dim_common * dimb_sort
- IF ((dima .gt. 0) .and. (dimb .gt. 0)) THEN
- IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a_sort,k_a_sort)) CALL
- & ERRQUIT('eomccsdt_density1_5_13_1_1',1,MA_ERR)
- IF (.not.MA_PUSH_GET(mt_dbl,dima,'noname',l_a,k_a)) CALL ERRQUIT('
- &eomccsdt_density1_5_13_1_1',2,MA_ERR)
- CALL GET_HASH_BLOCK(d_a,dbl_mb(k_a),dima,int_mb(k_a_offset),(h8b_1
- & - 1 + noab * (p7b_1 - noab - 1)))
- CALL TCE_SORT_2(dbl_mb(k_a),dbl_mb(k_a_sort),int_mb(k_range+p7b-1)
- &,int_mb(k_range+h8b-1),2,1,1.0d0)
- IF (.not.MA_POP_STACK(l_a)) CALL ERRQUIT('eomccsdt_density1_5_13_1
- &_1',3,MA_ERR)
- IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b_sort,k_b_sort)) CALL
- & ERRQUIT('eomccsdt_density1_5_13_1_1',4,MA_ERR)
- IF (.not.MA_PUSH_GET(mt_dbl,dimb,'noname',l_b,k_b)) CALL ERRQUIT('
- &eomccsdt_density1_5_13_1_1',5,MA_ERR)
- IF ((h8b .lt. h4b) .and. (p7b .lt. p3b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p6b_2
- & - noab - 1 + nvab * (p3b_2 - noab - 1 + nvab * (p7b_2 - noab - 1
- &+ nvab * (h5b_2 - 1 + noab * (h4b_2 - 1 + noab * (h8b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h8b-1)
- &,int_mb(k_range+h4b-1),int_mb(k_range+h5b-1),int_mb(k_range+p7b-1)
- &,int_mb(k_range+p3b-1),int_mb(k_range+p6b-1),6,5,3,2,1,4,1.0d0)
- END IF
- IF ((h8b .lt. h4b) .and. (p3b .le. p7b) .and. (p7b .lt. p6b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p6b_2
- & - noab - 1 + nvab * (p7b_2 - noab - 1 + nvab * (p3b_2 - noab - 1
- &+ nvab * (h5b_2 - 1 + noab * (h4b_2 - 1 + noab * (h8b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h8b-1)
- &,int_mb(k_range+h4b-1),int_mb(k_range+h5b-1),int_mb(k_range+p3b-1)
- &,int_mb(k_range+p7b-1),int_mb(k_range+p6b-1),6,4,3,2,1,5,-1.0d0)
- END IF
- IF ((h8b .lt. h4b) .and. (p6b .le. p7b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p7b_2
- & - noab - 1 + nvab * (p6b_2 - noab - 1 + nvab * (p3b_2 - noab - 1
- &+ nvab * (h5b_2 - 1 + noab * (h4b_2 - 1 + noab * (h8b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h8b-1)
- &,int_mb(k_range+h4b-1),int_mb(k_range+h5b-1),int_mb(k_range+p3b-1)
- &,int_mb(k_range+p6b-1),int_mb(k_range+p7b-1),5,4,3,2,1,6,1.0d0)
- END IF
- IF ((h4b .le. h8b) .and. (h8b .lt. h5b) .and. (p7b .lt. p3b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p6b_2
- & - noab - 1 + nvab * (p3b_2 - noab - 1 + nvab * (p7b_2 - noab - 1
- &+ nvab * (h5b_2 - 1 + noab * (h8b_2 - 1 + noab * (h4b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
- &,int_mb(k_range+h8b-1),int_mb(k_range+h5b-1),int_mb(k_range+p7b-1)
- &,int_mb(k_range+p3b-1),int_mb(k_range+p6b-1),6,5,3,1,2,4,-1.0d0)
- END IF
- IF ((h4b .le. h8b) .and. (h8b .lt. h5b) .and. (p3b .le. p7b) .and.
- & (p7b .lt. p6b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p6b_2
- & - noab - 1 + nvab * (p7b_2 - noab - 1 + nvab * (p3b_2 - noab - 1
- &+ nvab * (h5b_2 - 1 + noab * (h8b_2 - 1 + noab * (h4b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
- &,int_mb(k_range+h8b-1),int_mb(k_range+h5b-1),int_mb(k_range+p3b-1)
- &,int_mb(k_range+p7b-1),int_mb(k_range+p6b-1),6,4,3,1,2,5,1.0d0)
- END IF
- IF ((h4b .le. h8b) .and. (h8b .lt. h5b) .and. (p6b .le. p7b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p7b_2
- & - noab - 1 + nvab * (p6b_2 - noab - 1 + nvab * (p3b_2 - noab - 1
- &+ nvab * (h5b_2 - 1 + noab * (h8b_2 - 1 + noab * (h4b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
- &,int_mb(k_range+h8b-1),int_mb(k_range+h5b-1),int_mb(k_range+p3b-1)
- &,int_mb(k_range+p6b-1),int_mb(k_range+p7b-1),5,4,3,1,2,6,-1.0d0)
- END IF
- IF ((h5b .le. h8b) .and. (p7b .lt. p3b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p6b_2
- & - noab - 1 + nvab * (p3b_2 - noab - 1 + nvab * (p7b_2 - noab - 1
- &+ nvab * (h8b_2 - 1 + noab * (h5b_2 - 1 + noab * (h4b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
- &,int_mb(k_range+h5b-1),int_mb(k_range+h8b-1),int_mb(k_range+p7b-1)
- &,int_mb(k_range+p3b-1),int_mb(k_range+p6b-1),6,5,2,1,3,4,1.0d0)
- END IF
- IF ((h5b .le. h8b) .and. (p3b .le. p7b) .and. (p7b .lt. p6b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p6b_2
- & - noab - 1 + nvab * (p7b_2 - noab - 1 + nvab * (p3b_2 - noab - 1
- &+ nvab * (h8b_2 - 1 + noab * (h5b_2 - 1 + noab * (h4b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
- &,int_mb(k_range+h5b-1),int_mb(k_range+h8b-1),int_mb(k_range+p3b-1)
- &,int_mb(k_range+p7b-1),int_mb(k_range+p6b-1),6,4,2,1,3,5,-1.0d0)
- END IF
- IF ((h5b .le. h8b) .and. (p6b .le. p7b)) THEN
- CALL GET_HASH_BLOCK(d_b,dbl_mb(k_b),dimb,int_mb(k_b_offset),(p7b_2
- & - noab - 1 + nvab * (p6b_2 - noab - 1 + nvab * (p3b_2 - noab - 1
- &+ nvab * (h8b_2 - 1 + noab * (h5b_2 - 1 + noab * (h4b_2 - 1)))))))
- CALL TCE_SORT_6(dbl_mb(k_b),dbl_mb(k_b_sort),int_mb(k_range+h4b-1)
- &,int_mb(k_range+h5b-1),int_mb(k_range+h8b-1),int_mb(k_range+p3b-1)
- &,int_mb(k_range+p6b-1),int_mb(k_range+p7b-1),5,4,2,1,3,6,1.0d0)
- END IF
- IF (.not.MA_POP_STACK(l_b)) CALL ERRQUIT('eomccsdt_density1_5_13_1
- &_1',6,MA_ERR)
- CALL dgemm('T','N',dima_sort,dimb_sort,dim_common,1.0d0,dbl_mb(k_a
- &_sort),dim_common,dbl_mb(k_b_sort),dim_common,1.0d0,dbl_mb(k_c_sor
- &t),dima_sort)
- IF (.not.MA_POP_STACK(l_b_sort)) CALL ERRQUIT('eomccsdt_density1_5
- &_13_1_1',7,MA_ERR)
- IF (.not.MA_POP_STACK(l_a_sort)) CALL ERRQUIT('eomccsdt_density1_5
- &_13_1_1',8,MA_ERR)
- END IF
- END IF
- END IF
- END DO
- END DO
- IF (.not.MA_PUSH_GET(mt_dbl,dimc,'noname',l_c,k_c)) CALL ERRQUIT('
- &eomccsdt_density1_5_13_1_1',9,MA_ERR)
- CALL TCE_SORT_4(dbl_mb(k_c_sort),dbl_mb(k_c),int_mb(k_range+p6b-1)
- &,int_mb(k_range+p3b-1),int_mb(k_range+h5b-1),int_mb(k_range+h4b-1)
- &,4,3,2,1,1.0d0)
- CALL ADD_HASH_BLOCK(d_c,dbl_mb(k_c),dimc,int_mb(k_c_offset),(p6b -
- & noab - 1 + nvab * (p3b - noab - 1 + nvab * (h5b - 1 + noab * (h4b
- & - 1)))))
- IF (.not.MA_POP_STACK(l_c)) CALL ERRQUIT('eomccsdt_density1_5_13_1
- &_1',10,MA_ERR)
- IF (.not.MA_POP_STACK(l_c_sort)) CALL ERRQUIT('eomccsdt_density1_5
- &_13_1_1',11,MA_ERR)
- END IF
- END IF
- END IF
- next = NXTASK(nprocs,1)
- END IF
- count = count + 1
- END DO
- END DO
- END DO
- END DO
- next = NXTASK(-nprocs,1)
- call GA_SYNC()
- RETURN
- END