1 subroutine ga_conjg(g_a, g_b) 2c Takes the complex conjugate of g_a and store it in g_b 3 implicit none 4#include "mafdecls.fh" 5#include "global.fh" 6#include "stdio.fh" 7c 8 integer g_a, g_b 9c 10 integer dtypea, da1, da2 11 integer dtypeb, db1, db2 12 integer iloa, ihia, jloa, jhia 13 integer ilob, ihib, jlob, jhib 14 integer iA, lda 15 integer iB, ldb 16c 17 call ga_inquire(g_a, dtypea, da1, da2) 18 call ga_inquire(g_b, dtypeb, db1, db2) 19 if(dtypea .ne. mt_dcpl .or. dtypeb .ne. mt_dcpl) then 20 call ga_error('ga_conj: arrays must be complex') 21 end if 22 call ga_zero(g_b) 23c 24 call ga_distribution(g_a, ga_nodeid(), iloa, ihia, jloa, jhia) 25 call ga_distribution(g_b, ga_nodeid(), ilob, ihib, jlob, jhib) 26c write(luout,*) "nodeid:", ga_nodeid() 27 call ga_access(g_a, iloa, ihia, jloa, jhia, iA, lda) 28 call ga_access(g_b, ilob, ihib, jlob, jhib, iB, ldb) 29c write(luout,*) "access" 30c write(luout,*) "lo:", ilo, jlo 31c write(luout,*) "hi:", ihi, jhi 32 call conjGA(dcpl_mb(iA), ihia-iloa+1, jhia-jloa+1, 33 $ dcpl_mb(iB), ihib-ilob+1, jhib-jlob+1) 34c write(luout,*) "conjugated" 35 call ga_release_update(g_a, iloa, ihia, jloa, jhia) 36 call ga_release_update(g_b, ilob, ihib, jlob, jhib) 37c write(luout,*) "released" 38 call ga_sync() 39 40 end subroutine ga_conjg 41 42 subroutine conjGA(A, arows, acols, B, brows, bcols) 43 implicit none 44#include "stdio.fh" 45c 46 integer arows, acols 47 complex*16 A(arows, acols) 48 integer brows, bcols 49 complex*16 B(brows, bcols) 50c write(luout,*) A 51 B = conjg(A) 52 end subroutine conjGA 53