15 & ISON, NBROWS, NBCOLS, ROWLIST,
16 & VALSON, PTLUST_S, PTRAST, STEP, PIMASTER,
17 & OPASSW, IWPOSCB, MYID, KEEP,KEEP8, IS_ofType5or6,
25 INTEGER INODE,ISON, IWPOSCB
26 INTEGER NBROWS, NBCOLS, LDA_VALSON
27 INTEGER(8) :: PTRAST(KEEP(28))
28 INTEGER IW(LIW), STEP(N), PIMASTER(KEEP(28)),
29 & ptlust_s(keep(28)), rowlist(nbrows)
30 DOUBLE PRECISION A(LA), VALSON(LDA_VALSON,NBROWS)
31 DOUBLE PRECISION OPASSW
32 LOGICAL,
INTENT(IN) :: IS_ofType5or6
33 INTEGER(8) :: POSELT, POSEL1, APOS, JJ2
34 INTEGER HF,HS, NSLAVES, NFRONT, NASS1,
35 & ioldps, istchk, lstk, nslson,nelim,
36 & npivs,ncols,j1,jj,jj1,nrows,
37 & ldafs_pere, ibeg, diag
38 include 'mumps_headers.h
'
40 IOLDPS = PTLUST_S(STEP(INODE))
41 POSELT = PTRAST(STEP(INODE))
42 NFRONT = IW(IOLDPS+KEEP(IXSZ))
43 NASS1 = iabs(IW(IOLDPS + 2+KEEP(IXSZ)))
44 NSLAVES= IW(IOLDPS+5+KEEP(IXSZ))
45.EQ.
IF (KEEP(50)0) THEN
48.eq.
IF ( NSLAVES 0 ) THEN
54 HF = 6 + NSLAVES + KEEP(IXSZ)
55 POSEL1 = POSELT - int(LDAFS_PERE,8)
56 ISTCHK = PIMASTER(STEP(ISON))
57 LSTK = IW(ISTCHK+KEEP(IXSZ))
58 NSLSON = IW(ISTCHK + 5+KEEP(IXSZ))
59 HS = 6 + NSLSON + KEEP(IXSZ)
60 OPASSW = OPASSW + dble(NBROWS*NBCOLS)
61 NELIM = IW(ISTCHK + 1+KEEP(IXSZ))
62 NPIVS = IW(ISTCHK + 3+KEEP(IXSZ))
63.LT.
IF (NPIVS0) NPIVS = 0
65.LT.
SAME_PROC = (ISTCHKIWPOSCB)
69 NROWS = IW(ISTCHK+2+KEEP(IXSZ))
71 J1 = ISTCHK + NROWS + HS + NPIVS
72.EQ.
IF (KEEP(50)0) THEN
73 IF (IS_ofType5or6) THEN
74 APOS = POSEL1 + int(ROWLIST(1),8) * int(LDAFS_PERE,8)
77 JJ2 = APOS + int(JJ1-1,8)
78 A(JJ2)=A(JJ2)+VALSON(JJ1,JJ)
80 APOS = APOS + int(LDAFS_PERE,8)
84 APOS = POSEL1 + int(ROWLIST(JJ),8) * int(LDAFS_PERE,8)
85 DO 160 JJ1 = 1, NBCOLS
86 JJ2 = APOS + int(IW(J1 + JJ1 - 1) - 1,8)
87 A(JJ2) = A(JJ2) + VALSON(JJ1,JJ)
92 IF (IS_ofType5or6) THEN
93 APOS = POSEL1 + int(ROWLIST(1),8) * int(LDAFS_PERE,8)
97 JJ2 = APOS+int(JJ1-1,8)
98 A(JJ2) = A(JJ2) + VALSON(JJ1,JJ)
101 APOS = APOS + int(LDAFS_PERE,8)
105.LE..and..NOT.
IF (ROWLIST(JJ)NASS1IS_ofType5or6) THEN
106 APOS = POSEL1 + int(ROWLIST(JJ) - 1,8)
108 JJ2 = APOS + int(IW(J1+JJ1-1),8)*int(LDAFS_PERE,8)
109 A(JJ2) = A(JJ2) + VALSON(JJ1,JJ)
115 APOS = POSEL1 + int(ROWLIST(JJ),8) * int(LDAFS_PERE,8)
116 DO JJ1 = IBEG, NBCOLS
117.LT.
IF (ROWLIST(JJ)IW(J1 + JJ1 - 1)) EXIT
118 JJ2 = APOS + int(IW(J1 + JJ1 - 1) - 1,8)
119 A(JJ2) = A(JJ2) + VALSON(JJ1,JJ)
subroutine dmumps_asm_slave_master(n, inode, iw, liw, a, la, ison, nbrows, nbcols, rowlist, valson, ptlust_s, ptrast, step, pimaster, opassw, iwposcb, myid, keep, keep8, is_oftype5or6, lda_valson)