13 module procedure cpl2g_real, cpl2g_dreal, cpl2g_complex, cpl2g_dcomplex
14 module procedure cpl2g_int
18 module procedure cpg2l_real, cpg2l_dreal, cpg2l_complex, cpg2l_dcomplex
19 module procedure cpg2l_int
23 module procedure addl2g_real, addl2g_dreal, addl2g_complex, addl2g_dcomplex
24 module procedure addl2g_int
28 module procedure addg2l_real, addg2l_dreal, addg2l_complex, addg2l_dcomplex
29 module procedure addg2l_int
33 module procedure writearray_master_int
34 module procedure writearray_master_real, writearray_master_dreal
35 module procedure writearray_master_complex, writearray_master_dcomplex
39 module procedure writearray_slave_int
40 module procedure writearray_slave_real, writearray_slave_dreal
41 module procedure writearray_slave_complex, writearray_slave_dcomplex
45 module procedure readarray_master_int
46 module procedure readarray_master_real, readarray_master_dreal
47 module procedure readarray_master_complex, readarray_master_dcomplex
51 module procedure readarray_slave_int
52 module procedure readarray_slave_real, readarray_slave_dreal
53 module procedure readarray_slave_complex, readarray_slave_dcomplex
117 type(blacsgrid),
intent(in) :: mygrid
118 integer,
intent(in) :: desc(DLEN_)
119 character,
intent(in) :: rowcol
121 integer :: nblockall, nextrablock, mydist,mysize
123 if (rowcol ==
"c" .or. rowcol ==
"C")
then 126 self%nproc = mygrid%ncol
127 self%myproc = mygrid%mycol
128 self%srcproc = desc(csrc_)
132 self%nproc = mygrid%nrow
133 self%myproc = mygrid%myrow
134 self%srcproc = desc(rsrc_)
136 nblockall = self%nn / self%nb
137 self%nblock = nblockall / self%nproc
138 nextrablock = mod(nblockall, self%nproc)
139 mydist = mod(self%nproc + self%myproc - self%srcproc, self%nproc)
140 if (mydist < nextrablock)
then 141 self%nblock = self%nblock + 1
142 elseif (mydist == nextrablock .and. mod(self%nn, self%nb) > 0)
then 143 self%nblock = self%nblock +1
168 integer,
intent(in) :: iblock
169 integer,
intent(out) :: iglob, iloc, bsize
173 if (iblock >= 1 .and. iblock <= self%nblock)
then 174 mydist = mod(self%nproc + self%myproc - self%srcproc, self%nproc)
175 iglob = ((iblock - 1) * self%nproc + mydist) * self%nb + 1
176 iloc = (iblock - 1) * self%nb + mod(iglob - 1, self%nb) + 1
177 bsize = min(self%nb, self%nn - iglob + 1)