25 & ( hbuf_size, nnmax, k227, k50 )
31 INTEGER,
INTENT(IN) :: nnmax, k227, k50
32 INTEGER(8),
INTENT(IN) :: hbuf_size
48 INTEGER effective_size
49 nbcol_max=int(hbuf_size / int(nnmax,8))
60 k227_loc=
max(k227_loc,2)
61 effective_size =
min(nbcol_max-1, k227_loc-1)
65 effective_size =
min(nbcol_max, k227_loc)
67 IF (effective_size.LE.0)
THEN
68 write(6,*)
'Internal buffers too small to store ',
69 &
' ONE col/row of size', nnmax
77 & THE_PANEL, NBROW, NBCOL, KbeforePanel )
107 INTEGER LPIV, ISHIFT, NBROW, NBCOL, KbeforePanel
109 COMPLEX(kind=8) THE_PANEL(NBROW, NBCOL)
122 IF ( i+ishift.NE.iperm)
THEN
124 & the_panel(i+ishift-kbeforepanel,1), nbrow,
125 & the_panel(iperm-kbeforepanel,1), nbrow)
132 & I_PIVPTR, I_PIV, IPOS, IW, LIW)
135 include
'mumps_headers.h'
172 INTEGER,
intent(out) :: NBPANELS, I_PIVPTR, I_PIV
173 INTEGER,
intent(in) :: TYPEF
174 INTEGER,
intent(in) :: LIW, IPOS
177 INTEGER I_NBPANELS, I_NASS
180 i_nbpanels = i_nass + 1
181 nbpanels = iw(i_nbpanels)
182 i_pivptr = i_nbpanels + 1
183 i_piv = i_pivptr + nbpanels
186 i_nbpanels = i_piv+iw(i_nass)
187 nbpanels = iw(i_nbpanels)
188 i_pivptr = i_nbpanels + 1
189 i_piv = i_pivptr + nbpanels
194 & NASS, IPOS, IW, LIW )
211 INTEGER IPOS, NASS, NBPANELS_L, NBPANELS_U, LIW
220 WRITE(*,*)
"Internal error: ZMUMPS_OOC_PP_SET_PTR called"
223 iw(ipos+1)=nbpanels_l
224 iw(ipos+2:ipos+1+nbpanels_l)=nass+1
226 ipos_u=ipos+2+nass+nbpanels_l
227 iw(ipos_u)=nbpanels_u
228 iw(ipos_u+1:ipos_u+nbpanels_u)=nass+1
233 & IWPOS, IOLDPS, IW, LIW, MonBloc, NFRONT, KEEP
237 include
'mumps_headers.h'
251 INTEGER,
INTENT(IN) :: IOLDPS, LIW, NFRONT,
253 INTEGER,
INTENT(INOUT) :: IWPOS, IW(LIW)
254 TYPE(IO_BLOCK),
INTENT(IN):: MonBloc
259 INTEGER :: NBPANELS_L,I_PIVRPTR_L, I_PIVR_L, NBPANELS_U,
260 & i_pivrptr_u, i_pivr_u, xsize, ibegooc
263 IF (KEEP(50).EQ.1) RETURN
267 IF ((ioldps+iw(ioldps+xxi)).NE.iwpos)
RETURN
272 ibegooc = ioldps+2*nfront+6+iw(ioldps+5+xsize)+xsize
275 & i_pivrptr_l, i_pivr_l,
278 & (monbloc%LastPiv.EQ.(iw(i_pivrptr_l)-1))
279 IF (keep(50).EQ.0)
THEN
282 & i_pivrptr_u, i_pivr_u,
284 freespace = freespace .AND.
285 & (monbloc%LastPiv.EQ.(iw(i_pivrptr_u)-1))
294 iw(ioldps+xxi) = ibegooc
302 & NBPANELS_L, NBPANELS_U, LREQ)
317 INTEGER,
intent(IN) :: K50, NBROW_L, NBCOL_U, NASS
318 INTEGER,
intent(OUT) :: NBPANELS_L, NBPANELS_U, LREQ
348 & (iw_location, must_be_permuted)
350 INTEGER,
INTENT(IN) :: IW_LOCATION
351 LOGICAL,
INTENT(INOUT) :: MUST_BE_PERMUTED
360 IF (iw_location .EQ. -7777)
THEN
361 must_be_permuted = .false.
subroutine zswap(n, zx, incx, zy, incy)
ZSWAP
integer function, public zmumps_ooc_panel_size(nnmax)
subroutine zmumps_permute_panel(ipiv, lpiv, ishift, the_panel, nbrow, nbcol, kbeforepanel)
subroutine zmumps_ooc_pp_tryrelease_space(iwpos, ioldps, iw, liw, monbloc, nfront, keep)
subroutine zmumps_ooc_pp_check_perm_freed(iw_location, must_be_permuted)
subroutine zmumps_ooc_get_pp_sizes(k50, nbrow_l, nbcol_u, nass, nbpanels_l, nbpanels_u, lreq)
integer function zmumps_ooc_get_panel_size(hbuf_size, nnmax, k227, k50)
subroutine zmumps_get_ooc_perm_ptr(typef, nbpanels, i_pivptr, i_piv, ipos, iw, liw)
subroutine zmumps_ooc_pp_set_ptr(k50, nbpanels_l, nbpanels_u, nass, ipos, iw, liw)