16 & RHSCOMP, LRHSCOMP, POSINRHSCOMP_BWD,
17 & PTRICB, PTRACB, IWCB, LIWW, W2,
19 & FRERE, DAD, FILS, IPOOL, LPOOL, PTRIST, PTRFAC,
20 & MYLEAF, MYROOT, ICNTL, INFO,
22 & SLAVEF, COMM,MYID, BUFR, LBUFR, LBUFR_BYTES,
23 & KEEP,KEEP8, DKEEP, RHS_ROOT, LRHS_ROOT, MTYPE,
25 & ISTEP_TO_INIV2, TAB_POS_IN_PERE, PANEL_POS, LPANEL_POS
26 & , PRUN_BELOW, TO_PROCESS, SIZE_TO_PROCESS
27 & , RHS_BOUNDS, LRHS_BOUNDS, DO_NBSPARSE, FROM_PP
28 & , L0_OMP_MAPPING, LL0_OMP_MAPPING,
29 & L0_OMP_FACTORS, LL0_OMP_FACTORS
36 INTEGER(8),
intent(in) :: LA
37 INTEGER(8),
intent(in) :: LWC
38 INTEGER,
intent(in) :: N,LIW,LIWW,LPOOL
39 INTEGER,
intent(in) :: SLAVEF,MYLEAF,MYROOT,COMM,MYID
42 DOUBLE PRECISION,
INTENT(INOUT) :: DKEEP(230)
43 INTEGER PROCNODE_STEPS(KEEP(28))
44 INTEGER NE_STEPS(KEEP(28))
47 INTEGER PANEL_POS(LPANEL_POS)
48 INTEGER ICNTL(60), INFO(80)
49 INTEGER PTRIST(KEEP(28)),
51 INTEGER(8) :: PTRACB(KEEP(28))
52 INTEGER(8) :: PTRFAC(KEEP(28))
54 COMPLEX(kind=8) A(LA), W(LWC)
55 COMPLEX(kind=8) W2(KEEP(133))
56 INTEGER IW(LIW),IWCB(LIWW)
57 INTEGER STEP(N), FRERE(KEEP(28)),DAD(KEEP(28)),FILS(N)
58 INTEGER LBUFR, LBUFR_BYTES
60 INTEGER ISTEP_TO_INIV2(KEEP(71)),
61 & tab_pos_in_pere(slavef+2,
max(1,keep(56)))
62 INTEGER LRHSCOMP, POSINRHSCOMP_BWD(N)
63 COMPLEX(kind=8) RHSCOMP(LRHSCOMP,NRHS)
64 INTEGER(8),
intent(in) :: LRHS_ROOT
65 COMPLEX(kind=8) RHS_ROOT( LRHS_ROOT )
66 LOGICAL,
INTENT(in) :: PRUN_BELOW
67 INTEGER,
intent(in) :: SIZE_TO_PROCESS
68 LOGICAL,
intent(in) :: TO_PROCESS(SIZE_TO_PROCESS)
69 LOGICAL,
intent(in) :: DO_NBSPARSE
70 INTEGER,
intent(in) :: LRHS_BOUNDS
71 INTEGER,
intent(in) :: RHS_BOUNDS(LRHS_BOUNDS)
72 LOGICAL,
intent(in) :: FROM_PP
73 INTEGER,
INTENT( in ) :: LL0_OMP_MAPPING, LL0_OMP_FACTORS
74 INTEGER,
INTENT( in ) :: L0_OMP_MAPPING( LL0_OMP_MAPPING )
75 TYPE (ZMUMPS_L0OMPFAC_T),
INTENT(IN) ::
76 & l0_omp_factors(ll0_omp_factors)
78 include
'mumps_tags.h'
80 COMPLEX(kind=8),
DIMENSION(:),
POINTER :: A_PTR
83 INTEGER(8) :: POSWCB, PLEFTW
87 INTEGER III,IIPOOL,MYLEAF_LEFT
90 LOGICAL :: ERROR_WAS_BROADCASTED, DO_MCAST2_TERMBWD
91 LOGICAL :: ALLOW_OTHERS_TO_LEAVE
92 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: DEJA_SEND
96 ALLOCATE(deja_send( 0:slavef-1 ), stat=allocok)
98 WRITE(6,*)
' Allocation error of DEJA_SEND in '
99 & //
'routine ZMUMPS_SOL_S '
104 IF ( info(1) .LT.0 )
GOTO 340
112 allow_others_to_leave = ( myleaf_left .EQ. 0 .AND.
114 allow_others_to_leave = allow_others_to_leave .OR.
116 IF (allow_others_to_leave)
THEN
117 CALL zmumps_mcast2(dummy, 1, mpi_integer, myid, comm, termbwd,
120 IF (nbfinf .EQ. 0 .AND. myleaf_left .EQ. 0)
THEN
124 error_was_broadcasted = .false.
125 do_mcast2_termbwd = .false.
126 DO WHILE ( nbfinf .NE. 0 .OR. myleaf_left .NE. 0 )
127 bloq = ( iii .EQ. iipool )
129 & lbufr_bytes, myid, slavef, comm,
130 & n, iwcb, liww, posiwcb,
132 & iipool, nbfinf, ptricb, ptracb, info,
133 & ipool, lpool, panel_pos, lpanel_pos,
134 & step, frere, fils, procnode_steps,
135 & pleftw, keep,keep8, dkeep,
136 & ptrist, ptrfac, iw, liw, a, la, w2, myleaf_left,
138 & rhscomp, lrhscomp, posinrhscomp_bwd
139 & , prun_below, to_process, size_to_process
142 IF ( info(1) .LT. 0 )
GOTO 340
143 IF ( .NOT. flag )
THEN
144 IF (iii .NE. iipool)
THEN
145 inode = ipool(iipool-1)
147 IF (keep(400) .GT. 0 )
THEN
148 underl0map = l0_omp_mapping(step(inode))
152 IF (underl0map .EQ. 0 .OR. keep(201).GT.
THEN
157 a_ptr => l0_omp_factors(underl0map)%A
158 la_ptr = l0_omp_factors(underl0map)%LA
161 & n, ipool, lpool, iipool, nbfinf,
162 & a_ptr(1), la_ptr, iw, liw, w, lwc, nrhs,
163 & poswcb, pleftw, posiwcb,
164 & rhscomp, lrhscomp, posinrhscomp_bwd,
165 & ptricb, ptracb, iwcb, liww, w2,
167 & frere, fils, ptrist, ptrfac,
169 & procnode_steps, deja_send,
170 & slavef, comm, myid, bufr, lbufr, lbufr_bytes,
171 & keep,keep8, dkeep, rhs_root, lrhs_root, mtype,
172 & istep_to_iniv2, tab_pos_in_pere, panel_pos, lpanel_pos,
173 & prun_below, to_process, size_to_process
174 & , rhs_bounds, lrhs_bounds, do_nbsparse, from_pp
175 & , error_was_broadcasted
176 & , do_mcast2_termbwd
178 IF ( info(1) .LT. 0 )
THEN
179 IF (.NOT. error_was_broadcasted)
THEN
180 IF (nbfinf .EQ. 0 )
THEN
185 IF (do_mcast2_termbwd)
THEN
187 & termbwd, slavef, keep )
193 IF (
ALLOCATED(deja_send))
DEALLOCATE(deja_send)
subroutine zmumps_sol_s(n, a, la, iw, liw, w, lwc, nrhs, rhscomp, lrhscomp, posinrhscomp_bwd, ptricb, ptracb, iwcb, liww, w2, ne_steps, step, frere, dad, fils, ipool, lpool, ptrist, ptrfac, myleaf, myroot, icntl, info, procnode_steps, slavef, comm, myid, bufr, lbufr, lbufr_bytes, keep, keep8, dkeep, rhs_root, lrhs_root, mtype, istep_to_iniv2, tab_pos_in_pere, panel_pos, lpanel_pos, prun_below, to_process, size_to_process, rhs_bounds, lrhs_bounds, do_nbsparse, from_pp, l0_omp_mapping, ll0_omp_mapping, l0_omp_factors, ll0_omp_factors)
subroutine zmumps_solve_node_bwd(inode, n, ipool, lpool, iipool, nbfinf, a, la, iw, liw, w, lwc, nrhs, poswcb, pleftw, posiwcb, rhscomp, lrhscomp, posinrhscomp_bwd, ptricb, ptracb, iwcb, liww, w2, ne_steps, step, frere, fils, ptrist, ptrfac, myleaf_left, info, procnode_steps, deja_send, slavef, comm, myid, bufr, lbufr, lbufr_bytes, keep, keep8, dkeep, rhs_root, lrhs_root, mtype, istep_to_iniv2, tab_pos_in_pere, panel_pos, lpanel_pos, prun_below, to_process, size_to_process, rhs_bounds, lrhs_bounds, do_nbsparse, from_pp, error_was_broadcasted, do_mcast2_termbwd)
recursive subroutine zmumps_backslv_recv_and_treat(bloq, flag, bufr, lbufr, lbufr_bytes, myid, slavef, comm, n, iwcb, liww, posiwcb, w, lwc, poswcb, iipool, nbfinf, ptricb, ptracb, info, ipool, lpool, panel_pos, lpanel_pos, step, frere, fils, procnode_steps, pleftw, keep, keep8, dkeep, ptrist, ptrfac, iw, liw, a, la, w2, myleaf_left, nrhs, mtype, rhscomp, lrhscomp, posinrhscomp_bwd, prun_below, to_process, size_to_process, from_pp)