35 IMPLICIT NONE
36 INTEGER MTYPE
37 INTEGER(8), INTENT(IN) :: LA, LWCB
38 INTEGER, INTENT(IN) :: N, LIW, LPOOL,
39 INTEGER, INTENT(IN) :: SLAVEF, MYLEAF, MYROOT, COMM, MYID
40 INTEGER INFO( 80 ), KEEP(500)
41 INTEGER(8) KEEP8(150)
42 REAL, INTENT(INOUT) :: DKEEP(230)
43 INTEGER PROCNODE_STEPS( KEEP(28) )
44 INTEGER NRHS
45 COMPLEX A( LA ), WCB( LWCB )
46 INTEGER(8), intent(in) :: LRHS_ROOT
47 COMPLEX RHS_ROOT( LRHS_ROOT )
48 INTEGER LBUFR, LBUFR_BYTES
49 INTEGER BUFR( LBUFR )
50 INTEGER STEP( N ), FRERE( KEEP(28) ), FILS( N ),
51 & DAD( KEEP(28) )
52 INTEGER NSTK(KEEP(28)), IPOOL( LPOOL )
53 INTEGER PTRIST(KEEP(28))
54 INTEGER(8) :: PTRFAC(KEEP(28))
55 INTEGER PTRICB( KEEP(28) )
56 LOGICAL, intent(in) :: DO_NBSPARSE
57 INTEGER, intent(in) ::
58 INTEGER, intent(in) :: RHS_BOUNDS(LRHS_BOUNDS)
59 INTEGER IW( LIW ), IWCB( LIWCB )
60 INTEGER ISTEP_TO_INIV2(KEEP(71)),
61 & TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
62 INTEGER, intent(in) :: POSINRHSCOMP_FWD(N), LRHSCOMP
63 COMPLEX, intent(inout) :: RHSCOMP(,NRHS)
64 LOGICAL, intent(in) :: FROM_PP
65 INTEGER, INTENT( in ) :: LL0_OMP_MAPPING, LL0_OMP_FACTORS
66 INTEGER, INTENT( in ) :: L0_OMP_MAPPING( LL0_OMP_MAPPING )
67 TYPE (CMUMPS_L0OMPFAC_T), INTENT(IN) ::
68 & L0_OMP_FACTORS(LL0_OMP_FACTORS)
69 include 'mpif.h'
70 include 'mumps_tags.h'
71 INTEGER DUMMY(1)
72 LOGICAL FLAG
73 COMPLEX, DIMENSION(:), POINTER :: A_PTR
74 INTEGER(8) :: LA_PTR
75 INTEGER :: UNDERL0MAP
76 INTEGER NBFIN, MYROOT_LEFT
77 INTEGER POSIWCB
78 INTEGER(8) :: POSWCB, PLEFTWCB
79 INTEGER INODE, IFATH
80 INTEGER III, LEAF
81 LOGICAL BLOQ
83 INTEGER MUMPS_PROCNODE
84 LOGICAL ERROR_WAS_BROADCASTED
85 dummy(1) = 1
86 keep(266)=0
87 posiwcb = liwcb
88 poswcb = lwcb
89 pleftwcb= 1_8
90 ptricb = 0
91 leaf = myleaf + 1
92 iii = 1
93 nbfin = slavef
94 myroot_left = myroot
95 IF ( myroot_left .EQ. 0 ) THEN
96 nbfin = nbfin - 1
98 & racine_solve, slavef, keep)
99 IF (nbfin.EQ.0) GOTO 260
100 END IF
101 50 CONTINUE
102 IF (slavef .EQ. 1) THEN
104 & ( ipool(1), lpool, iii, leaf, inode,
105 & keep(208) )
106 GOTO 60
107 ENDIF
108 bloq = ( ( iii .EQ. leaf )
109 & )
111 & bufr, lbufr, lbufr_bytes,
112 & myid, slavef, comm,
113 & n, nrhs, ipool, lpool, leaf,
114 & nbfin, nstk, iw, liw, a, la, ptrist, ptrfac,
115 & iwcb, liwcb,
116 & wcb, lwcb, poswcb,
117 & pleftwcb, posiwcb,
118 & ptricb, info, keep,keep8, dkeep, step,
119 & procnode_steps,
120 & rhscomp, lrhscomp, posinrhscomp_fwd
121 & , from_pp
122 & )
123 IF ( info( 1 ) .LT. 0 .OR. nbfin .EQ. 0 ) GOTO 260
124 IF (.not. flag) THEN
125 IF (iii .NE. leaf) THEN
127 & (ipool(1), lpool, iii, leaf, inode,
128 & keep(208) )
129 GOTO 60
130 ENDIF
131 ENDIF
132 GOTO 50
133 60 CONTINUE
134 IF (keep(400) .GT. 0 ) THEN
135 underl0map = l0_omp_mapping(step(inode))
136 ELSE
137 underl0map = 0
138 ENDIF
139 IF (underl0map .EQ. 0 .OR. keep(201).GT.0) THEN
142 la_ptr = la
143 ELSE
144 a_ptr => l0_omp_factors(underl0map)%A
145 la_ptr = l0_omp_factors(underl0map)%LA
146 ENDIF
148 & huge(inode), huge(inode),
149 & bufr, lbufr, lbufr_bytes,
150 & myid, slavef, comm, n,
151 & ipool, lpool, leaf, nbfin, nstk,
152 & iwcb, liwcb, wcb, lwcb, a_ptr(1), la_ptr,
153 & iw, liw, nrhs,
154 & poswcb, pleftwcb, posiwcb,
155 & ptricb, ptrist, ptrfac, procnode_steps,
156 & fils, step, frere, dad,
157 & info, keep,keep8, dkeep, rhs_root, lrhs_root, mtype,
158 & rhscomp, lrhscomp, posinrhscomp_fwd,
159 & istep_to_iniv2, tab_pos_in_pere
160 & , rhs_bounds, lrhs_bounds, do_nbsparse
161 & , from_pp
162 & , error_was_broadcasted
163 & )
164 IF ( info(1) .LT. 0 ) THEN
165 IF (.NOT. error_was_broadcasted) THEN
167 ENDIF
168 GOTO 260
169 ENDIF
170 ifath = dad(step(inode))
171 IF ( ifath .EQ. 0 ) THEN
172 myroot_left = myroot_left - 1
173 IF (myroot_left .EQ. 0) THEN
174 nbfin = nbfin - 1
175 IF (slavef .GT. 1) THEN
177 & comm, racine_solve, slavef, keep)
178 ENDIF
179 END IF
180 ELSE
182 & .EQ. myid ) THEN
183 IF ( ptricb(step(inode)) .EQ. 1 .OR.
184 & ptricb(step(inode)) .EQ. -1 ) THEN
185 nstk(step(ifath)) = nstk(step(ifath)) - 1
186 IF (nstk(step(ifath)) .EQ. 0) THEN
187 ipool(leaf) = ifath
188 leaf = leaf + 1
189 IF (leaf .GT. lpool) THEN
190 WRITE(*,*)
191 & 'Internal error CMUMPS_TRAITER_MESSAGE_SOLVE',
192 & leaf, lpool
194 ENDIF
195 ENDIF
196 ptricb(step(inode)) = 0
197 ENDIF
198 ENDIF
199 ENDIF
200 IF ( nbfin .EQ. 0 ) GOTO 260
201 GOTO 50
202 260 CONTINUE
204 & comm, dummy(1),
205 & slavef, .true., .false.)
206 RETURN
subroutine cmumps_bdc_error(myid, slavef, comm, keep)
subroutine cmumps_mcast2(data, ldata, mpitype, root, commw, tag, slavef, keep)
subroutine cmumps_clean_pending(info1, keep, bufr, lbufr, lbufr_bytes, comm_nodes, comm_load, slavef, clean_comm_nodes, clean_comm_load)
subroutine cmumps_get_inode_from_pool(ipool, lpool, iii, leaf, inode, strategie)
subroutine cmumps_solve_node_fwd(inode, lastfsl0sta, lastfsl0dyn, bufr, lbufr, lbufr_bytes, myid, slavef, comm, n, ipool, lpool, leaf, nbfin, nstk_s, iwcb, liwcb, wcb, lwcb, a, la, iw, liw, nrhs, poswcb, pleftwcb, posiwcb, ptricb, ptrist, ptrfac, procnode_steps, fils, step, frere, dad, info, keep, keep8, dkeep, rhs_root, lrhs_root, mtype, rhscomp, lrhscomp, posinrhscomp_fwd istep_to_iniv2, tab_pos_in_pere, rhs_bounds, lrhs_bounds, do_nbsparse, from_pp, error_was_broadcasted)
recursive subroutine cmumps_solve_recv_and_treat(bloq, flag, bufr, lbufr, lbufr_bytes, myid, slavef, comm, n, nrhs, ipool, lpool, leaf, nbfin, nstk_s, iw, liw, a, la, ptrist, ptrfac, iwcb, liwcb, wcb, lwcb, poswcb, pleftwcb, posiwcb, ptricb, info, keep, keep8, dkeep, step, procnode_steps, rhscomp, lrhscomp, posinrhscomp_fwd, from_pp)
subroutine, public cmumps_get_tmp_ptr(ptr)
subroutine cmumps_set_static_ptr(array)