OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dfac_process_rtnelind.F File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine dmumps_process_rtnelind (root, inode, nelim, nslaves, row_list, col_list, slave_list, procnode_steps, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, itloc, rhs_mumps, comp, iflag, ierror, ipool, lpool, leaf, myid, slavef, keep, keep8, dkeep, comm, comm_load, fils, dad, nd)

Function/Subroutine Documentation

◆ dmumps_process_rtnelind()

subroutine dmumps_process_rtnelind ( type (dmumps_root_struc) root,
integer inode,
integer nelim,
integer nslaves,
integer, dimension(*) row_list,
integer, dimension(*) col_list,
integer, dimension(*) slave_list,
integer, dimension( keep(28) ) procnode_steps,
integer iwpos,
integer iwposcb,
integer(8) iptrlu,
integer(8) lrlu,
integer(8) lrlus,
integer n,
integer, dimension( liw ) iw,
integer liw,
double precision, dimension( la ) a,
integer(8) la,
integer, dimension( keep(28) ) ptrist,
integer, dimension(keep(28)) ptlust_s,
integer(8), dimension(keep(28)) ptrfac,
integer(8), dimension(keep(28)) ptrast,
integer, dimension(n) step,
integer, dimension(keep(28)) pimaster,
integer(8), dimension(keep(28)) pamaster,
integer, dimension(keep(28)) nstk_s,
integer, dimension( n + keep(253) ) itloc,
double precision, dimension(keep(255)) rhs_mumps,
integer comp,
integer iflag,
integer ierror,
integer, dimension( lpool ) ipool,
integer lpool,
integer leaf,
integer myid,
integer slavef,
integer, dimension( 500 ) keep,
integer(8), dimension(150) keep8,
double precision, dimension(230) dkeep,
integer comm,
integer comm_load,
integer, dimension(n) fils,
integer, dimension(keep(28)) dad,
integer, dimension(keep(28)) nd )

Definition at line 14 of file dfac_process_rtnelind.F.

27 USE dmumps_load
28 USE dmumps_struc_def, ONLY : dmumps_root_struc
29 IMPLICIT NONE
30 TYPE (DMUMPS_ROOT_STRUC) :: ROOT
31 INTEGER INODE, NELIM, NSLAVES
32 INTEGER KEEP( 500 )
33 INTEGER(8) KEEP8(150)
34 DOUBLE PRECISION DKEEP(230)
35 INTEGER ROW_LIST(*), COL_LIST(*),
36 & SLAVE_LIST(*)
37 INTEGER(8) :: IPTRLU, LRLU, LRLUS, LA
38 INTEGER IWPOS, IWPOSCB
39 INTEGER N, LIW
40 INTEGER IW( LIW )
41 DOUBLE PRECISION A( LA )
42 INTEGER PTRIST( KEEP(28) ), PTLUST_S(KEEP(28))
43 INTEGER(8) :: PTRFAC(KEEP(28))
44 INTEGER(8) :: PTRAST(KEEP(28))
45 INTEGER(8) :: PAMASTER(KEEP(28))
46 INTEGER STEP(N), PIMASTER(KEEP(28))
47 INTEGER COMP
48 INTEGER NSTK_S(KEEP(28)), ITLOC( N + KEEP(253) )
49 DOUBLE PRECISION :: RHS_MUMPS(KEEP(255))
50 INTEGER PROCNODE_STEPS( KEEP(28) )
51 INTEGER IFLAG, IERROR
52 INTEGER LPOOL, LEAF
53 INTEGER IPOOL( LPOOL )
54 INTEGER MYID, SLAVEF
55 INTEGER COMM, COMM_LOAD, ND(KEEP(28)), FILS(N), DAD(KEEP(28))
56 INTEGER IROOT, TYPE_INODE, DEB_ROW, DEB_COL,
57 & NOINT
58 INTEGER(8) :: NOREAL
59 include 'mumps_headers.h'
60 include 'mumps_tags.h'
61 INTEGER MUMPS_TYPENODE
62 EXTERNAL mumps_typenode
63 iroot = keep(38)
64 nstk_s(step(iroot))= nstk_s(step(iroot)) - 1
65 keep(42) = keep(42) + nelim
66 type_inode= mumps_typenode( procnode_steps(step(inode)),
67 & keep(199) )
68 IF (type_inode.EQ.1) THEN
69 IF (nelim.EQ.0) THEN
70 keep(41) = keep(41) + 1
71 ELSE
72 keep(41) = keep(41) + 3
73 ENDIF
74 ELSE
75 IF (nelim.EQ.0) THEN
76 keep(41) = keep(41) + nslaves
77 ELSE
78 keep(41) = keep(41) + 2*nslaves + 1
79 ENDIF
80 ENDIF
81 IF (nelim.EQ.0) THEN
82 pimaster(step(inode)) = 0
83 ELSE
84 noint = 6 + nslaves + nelim + nelim + keep(ixsz)
85 noreal= 0_8
86 CALL dmumps_alloc_cb(.false.,0_8,.false.,.false.,
87 & myid,n,keep,keep8,dkeep,iw,liw, a, la,
88 & lrlu, iptrlu,iwpos,iwposcb, slavef, procnode_steps, dad,
89 & ptrist,ptrast,step, pimaster, pamaster,
90 & noint, noreal, inode, s_notfree, .true.,
91 & comp, lrlus, keep8(67), iflag, ierror
92 & )
93 IF ( iflag .LT. 0 ) THEN
94 WRITE(*,*) ' Failure in int space allocation in CB area ',
95 & ' during assembly of root : DMUMPS_PROCESS_RTNELIND',
96 & ' size required was :', noint,
97 & 'INODE=',inode,' NELIM=',nelim, ' NSLAVES=', nslaves
98 RETURN
99 ENDIF
100 pimaster(step( inode )) = iwposcb + 1
101 pamaster(step( inode )) = iptrlu + 1_8
102 iw( iwposcb + 1+keep(ixsz) ) = 2*nelim
103 iw( iwposcb + 2+keep(ixsz) ) = nelim
104 iw( iwposcb + 3+keep(ixsz) ) = 0
105 iw( iwposcb + 4+keep(ixsz) ) = 0
106 iw( iwposcb + 5+keep(ixsz) ) = 1
107 iw( iwposcb + 6+keep(ixsz) ) = nslaves
108 IF (nslaves.GT.0) THEN
109 iw( iwposcb+7+keep(ixsz):iwposcb+7+keep(ixsz)+nslaves-1) =
110 & slave_list(1:nslaves)
111 ENDIF
112 deb_row = iwposcb+7+nslaves+keep(ixsz)
113 iw(deb_row : deb_row+nelim -1) = row_list(1:nelim)
114 deb_col = deb_row + nelim
115 iw(deb_col : deb_col+nelim -1) = col_list(1:nelim)
116 ENDIF
117 IF (nstk_s(step(iroot)) .EQ. 0 ) THEN
118 CALL dmumps_insert_pool_n(n, ipool, lpool, procnode_steps,
119 & slavef, keep(199),
120 & keep(28), keep(76), keep(80), keep(47),
121 & step, iroot )
122 IF (keep(47) .GE. 3) THEN
124 & ipool, lpool,
125 & procnode_steps, keep,keep8, slavef, comm_load,
126 & myid, step, n, nd, fils )
127 ENDIF
128 END IF
129 RETURN
subroutine dmumps_alloc_cb(inplace, min_space_in_place, ssarbr, process_bande, myid, n, keep, keep8, dkeep, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, lreq, lreqcb, node_arg, state_arg, set_header, comp, lrlus, lrlusm, iflag, ierror)
subroutine dmumps_insert_pool_n(n, pool, lpool, procnode, slavef, keep199, k28, k76, k80, k47, step, inode)
subroutine, public dmumps_load_pool_upd_new_pool(pool, lpool, procnode, keep, keep8, slavef, comm, myid, step, n, nd, fils)
integer, save, private myid
Definition dmumps_load.F:57
int comp(int a, int b)
integer function mumps_typenode(procinfo_inode, k199)