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, , SIZE_ROOT
24 INTEGER LPIV, IPIV( LPIV )
25 INTEGER INFO(80), LDLT
26 COMPLEX RHS_SEQ( SIZE_ROOT *NRHS)
27 COMPLEX A( LOCAL_M, LOCAL_N )
28 INTEGER IERR, NPROW, NPCOL, MYROW, MYCOL
30 COMPLEX,
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) :: DESCA_PAR( 9 )
69 INTEGER,
intent (in) :: LPIV, IPIV( LPIV )
70 COMPLEX,
intent (in) :: A( LOCAL_M, LOCAL_N )
71 COMPLEX,
intent (inout) :: RHS_PAR(LOCAL_M, LOCAL_N_RHS)
72 INTEGER,
intent (out) :: IERR
73 INTEGER :: DESCB_PAR( 9 )
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 pcgetrs(
'N',size_root,nrhs,a,1,1,desca_par,ipiv,
87 CALL pcgetrs(
'T',size_root,nrhs,a,1,1,desca_par,ipiv,
88 & rhs_par, 1, 1, descb_par,ierr)
91 CALL pcpotrs(
'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 cmumps_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 cmumps_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 cmumps_scatter_root(myid, m, n, aseq, local_m, local_n, mblock, nblock, apar, master_root, nprow, npcol, comm)
subroutine cmumps_gather_root(myid, m, n, aseq, local_m, local_n, mblock, nblock, apar, master_root, nprow, npcol, comm)
subroutine pcpotrs(uplo, n, nrhs, a, ia, ja, desca, b, ib, jb, descb, info)
subroutine descinit(desc, m, n, mb, nb, irsrc, icsrc, ictxt, lld, info)
subroutine pcgetrs(trans, n, nrhs, a, ia, ja, desca, ipiv, b, ib, jb, descb, info)
subroutine blacs_gridinfo(cntxt, nprow, npcol, myrow, mycol)
integer function numroc(n, nb, iproc, isrcproc, nprocs)