15 & CNTXT_PAR,LOCAL_M,LOCAL_N,MBLOCK,NBLOCK,
16 & IPIV,LPIV,MASTER_ROOT,MYID,COMM,
17 & RHS_SEQ,SIZE_ROOT,A,INFO,MTYPE,LDLT )
20 INTEGER DESCA_PAR( 9 )
21 INTEGER LOCAL_M, LOCAL_N, MBLOCK, NBLOCK
22 INTEGER CNTXT_PAR, MASTER_ROOT, SIZE_ROOT
24 INTEGER LPIV, IPIV( LPIV )
25 INTEGER INFO(80), LDLT
26 COMPLEX(kind=8) RHS_SEQ( SIZE_ROOT *NRHS)
27 COMPLEX(kind=8) A( LOCAL_M, LOCAL_N )
30 COMPLEX(kind=8),
ALLOCATABLE,
DIMENSION( :,: ) ::RHS_PAR
35 local_n_rhs = numroc(nrhs, nblock, mycol, 0, npcol)
36 local_n_rhs =
max(1,local_n_rhs)
37 ALLOCATE(rhs_par(local_m, local_n_rhs),stat=allocok)
38 IF (allocok > 0 )
THEN
39 WRITE(*,*)
' Problem during solve of the root.'
40 WRITE(*,*)
' Reduce number of right hand sides.'
44 & local_m, local_n_rhs,
45 & mblock, nblock, rhs_par, master_root,
46 & nprow, npcol, comm )
48 & a, desca_par, local_m, local_n, local_n_rhs,
49 & ipiv, lpiv, rhs_par, ldlt,
50 & mblock, nblock, cntxt_par,
53 & rhs_seq, local_m, local_n_rhs,
54 & mblock, nblock, rhs_par, master_root,
55 & nprow, npcol, comm )
60 & A, DESCA_PAR, LOCAL_M, LOCAL_N, LOCAL_N_RHS,
61 & IPIV, LPIV, RHS_PAR, LDLT,
62 & MBLOCK, NBLOCK, CNTXT_PAR,
65 INTEGER,
intent (in) :: SIZE_ROOT, NRHS, LDLT, LOCAL_M,
66 & local_n, local_n_rhs,
67 & mblock, nblock, cntxt_par, mtype
68 INTEGER,
intent (in) :: ( 9 )
69 INTEGER,
intent (in) :: LPIV, IPIV( )
70 COMPLEX(kind=8),
intent (in) :: A( LOCAL_M, LOCAL_N )
71 COMPLEX(kind=8),
intent (inout) :: RHS_PAR(LOCAL_M, LOCAL_N_RHS)
72 INTEGER,
intent (out) :
76 & nrhs, mblock, nblock, 0, 0,
77 & cntxt_par, local_m, ierr )
79 WRITE(*,*)
'After DESCINIT, IERR = ', ierr
82 IF ( ldlt .eq. 0 .OR. ldlt .eq. 2 )
THEN
83 IF ( mtype .eq. 1 )
THEN
84 CALL pzgetrs(
'N',size_root,nrhs,a,1,1,desca_par,ipiv,
85 & rhs_par,1,1,descb_par,ierr)
87 CALL pzgetrs(
'T',size_root,nrhs,a,1,1,desca_par,ipiv,
88 & rhs_par, 1, 1, descb_par,ierr)
91 CALL pzpotrs(
'L', size_root, nrhs, a, 1, 1, desca_par,
92 & rhs_par, 1, 1, descb_par, ierr )
94 IF ( ierr .LT. 0 )
THEN
95 WRITE(*,*)
' Problem during solve of the root'
subroutine pzpotrs(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
subroutine pzgetrs(trans, n, nrhs, a, ia, ja, desca, ipiv, b, ib, jb, descb, info)
subroutine descinit(desc, m, n, mb, nb, irsrc, icsrc, ictxt, lld, info)
subroutine blacs_gridinfo(cntxt, nprow, npcol, myrow, mycol)
integer function numroc(n, nb, iproc, isrcproc, nprocs)
subroutine zmumps_root_solve(nrhs, desca_par, cntxt_par, local_m, local_n, mblock, nblock, ipiv, lpiv, master_root, myid, comm, rhs_seq, size_root, a, info, mtype, ldlt)
subroutine zmumps_solve_2d_bcyclic(size_root, nrhs, mtype, a, desca_par, local_m, local_n, local_n_rhs, ipiv, lpiv, rhs_par, ldlt, mblock, nblock, cntxt_par, ierr)
subroutine zmumps_scatter_root(myid, m, n, aseq, local_m, local_n, mblock, nblock, apar, master_root, nprow, npcol, comm)
subroutine zmumps_gather_root(myid, m, n, aseq, local_m, local_n, mblock, nblock, apar, master_root, nprow, npcol, comm)