15 & NPIV, LIELL, IPOS, IW, LIW, PTRIST, STEP, N )
17 INTEGER,
INTENT(IN) :: ISTEP, LIW, KEEP(500), N
18 INTEGER,
INTENT(IN) :: IW( LIW )
19 INTEGER,
INTENT(IN) :: STEP( N ), PTRIST( KEEP(28) )
20 INTEGER,
INTENT(OUT) :: NPIV, LIELL, IPOS
21 include
'mumps_headers.h'
23 IF (keep(38) .NE. 0)
THEN
24 sroot = step(keep(38))
25 ELSE IF (keep(20) .NE. 0)
THEN
26 sroot = step(keep(20))
32 WRITE(*,*)
"Internal error 1 in MUMPS_SOL_GET_NPIV_LIELL_IPOS",
36 npiv = iw(ipos+3+keep(ixsz))
37 IF ( istep.EQ.sroot )
THEN
39 liell = iw(ipos+3+keep(ixsz))
41 ipos= ptrist(istep)+5+keep(ixsz)
43 ipos = ptrist(istep) + 2+ keep(ixsz)
44 liell = iw(ipos-2)+iw(ipos+1)
48 ipos= ipos+1+iw( ptrist(istep) + 5 +keep(ixsz))
53 & PTRIST, KEEP,KEEP8, IW, LIW, STEP, PROCNODE_STEPS,
54 & IRHS_loc, ROW_OR_COL_INDICES)
56 INTEGER,
INTENT(IN) :: KEEP(500)
57 INTEGER(8),
INTENT(IN) :: KEEP8(150)
58 INTEGER,
INTENT(IN) :: MYID_NODES, NSLAVES, N, LIW
59 INTEGER,
INTENT(IN) :: PTRIST(KEEP(28))
60 INTEGER,
INTENT(IN) :: IW(LIW), STEP(N)
61 INTEGER,
INTENT(IN) :: PROCNODE_STEPS(KEEP(28))
62 INTEGER,
INTENT(OUT) :: IRHS_loc(KEEP(89))
63 INTEGER,
INTENT(IN) :: ROW_OR_COL_INDICES
65 INTEGER :: NPIV, LIELL, IPOS
68 include
'mumps_headers.h'
69 INTEGER,
EXTERNAL :: MUMPS_PROCNODE
71 DO istep = 1, keep(28)
72 IF (myid_nodes == mumps_procnode(procnode_steps(istep),
75 & npiv, liell, ipos, iw, liw, ptrist, step, n )
76 IF ( row_or_col_indices .EQ. 0 .OR. keep(50).NE.0 )
THEN
78 ELSE IF (row_or_col_indices .EQ. 1 )
THEN
81 WRITE(*,*)
"Internal error 1 in MUMPS_BUILD_IRHS_loc",
85 IF (iirhs_loc+npiv .GT. keep(89))
THEN
86 WRITE(*,*)
"Internal error 2 in MUMPS_BUILD_IRHS_loc",
90 irhs_loc(iirhs_loc+1:iirhs_loc+npiv)=iw(j1:j1+npiv-1)
91 iirhs_loc=iirhs_loc+npiv
94 IF (iirhs_loc .NE. keep(89))
THEN
95 WRITE(*,*)
"Internal error 3 in MUMPS_BUILD_IRHS_loc",
102 & IRHS_loc, MAP_RHS_loc,
104 & NSLAVES, MYID_NODES, COMM_NODES,
107 INTEGER,
INTENT(IN) :: N, Nloc_RHS
108 INTEGER,
INTENT(IN) :: INFO23
109 INTEGER,
INTENT(IN) :: IRHS_loc (max(1,Nloc_RHS))
110 INTEGER,
INTENT(OUT) :: MAP_RHS_loc(max(1,Nloc_RHS))
111 INTEGER,
INTENT(IN) :: (N)
112 INTEGER,
INTENT(IN) :: NSLAVES, MYID_NODES, COMM_NODES
113 INTEGER,
INTENT(INOUT) :: INFO(80)
114 INTEGER,
INTENT(IN) :: ICNTL(60)
116 INTEGER :: I, NFS_LOC, NFS_TOT, IERR_MPI, allocok
117 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: GLOBAL_MAPPING
118 ALLOCATE(global_mapping(n), stat=allocok)
119 IF (allocok .GT. 0)
THEN
124 & mpi_integer, mpi_sum,
125 & comm_nodes, ierr_mpi)
126 IF (allocok .NE. 0)
RETURN
130 IF (posinrhscomp_fwd(i) .LE. 0)
THEN
131 global_mapping(i) = 0
133 global_mapping(i) = myid_nodes
134 nfs_loc = nfs_loc + 1
137 IF (nfs_loc .NE. info23)
THEN
138 WRITE(*,*)
"Internal error 1 in MUMPS_SOL_RHSMAPINFO",
143 & mpi_sum, comm_nodes, ierr_mpi)
144 IF (nfs_tot .NE. n)
THEN
145 WRITE(*,*)
"Internal error 1 in MUMPS_SOL_RHSMAPINFO",
146 & nfs_loc, nfs_tot, n
149 CALL mpi_allreduce(mpi_in_place, global_mapping, n, mpi_integer,
150 & mpi_sum, comm_nodes, ierr_mpi)
152 IF (irhs_loc(i) .GE.1 .AND. irhs_loc(i) .LE. n)
THEN
153 map_rhs_loc(i) = global_mapping(irhs_loc(i))
155 map_rhs_loc(i) = -87878787
158 DEALLOCATE(global_mapping)
162 &MTYPE, KEEP, IW, LIW, N, STEP, PTRIST, FILS, FRERE )
164 INTEGER,
INTENT(IN) :: INODE
165 INTEGER,
INTENT(OUT) :: LASTFSSBTR_DYN
166 INTEGER,
INTENT(IN) :: N, MTYPE, LIW, KEEP(500)
167 INTEGER,
INTENT(IN) :: IW(LIW), STEP( N ), ( KEEP(28) )
168 INTEGER,
INTENT(IN) :: FILS(N), FRERE( KEEP(28) )
169 INTEGER :: NPIV, LIELL, IPOS, INODE_CUR, IN
173 & npiv, liell, ipos, iw, liw, ptrist, step, n )
174 IF ( npiv .NE. 0 )
THEN
175 IF (mtype .EQ. 1 .OR. keep(50) .NE. 0)
THEN
176 lastfssbtr_dyn = iw( ipos + npiv )
178 lastfssbtr_dyn = iw( ipos+npiv+liell )
190 IF (inode_cur .EQ. inode)
THEN
194 inode_cur = frere(step(inode_cur))
195 IF (inode_cur .GT. 0)
THEN
198 inode_cur = -inode_cur
subroutine mpi_allreduce(sendbuf, recvbuf, cnt, datatype, operation, comm, ierr)
subroutine mumps_sol_rhsmapinfo(n, nloc_rhs, info23, irhs_loc, map_rhs_loc, posinrhscomp_fwd, nslaves, myid_nodes, comm_nodes, icntl, info)
subroutine mumps_compute_lastfs_dyn(inode, lastfssbtr_dyn, mtype, keep, iw, liw, n, step, ptrist, fils, frere)
subroutine mumps_build_irhs_loc(myid_nodes, nslaves, n, ptrist, keep, keep8, iw, liw, step, procnode_steps, irhs_loc, row_or_col_indices)
subroutine mumps_sol_get_npiv_liell_ipos(istep, keep, npiv, liell, ipos, iw, liw, ptrist, step, n)