OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
cfac_process_rtnelind.F
Go to the documentation of this file.
1C
2C This file is part of MUMPS 5.5.1, released
3C on Tue Jul 12 13:17:24 UTC 2022
4C
5C
6C Copyright 1991-2022 CERFACS, CNRS, ENS Lyon, INP Toulouse, Inria,
7C Mumps Technologies, University of Bordeaux.
8C
9C This version of MUMPS is provided to you free of charge. It is
10C released under the CeCILL-C license
11C (see doc/CeCILL-C_V1-en.txt, doc/CeCILL-C_V1-fr.txt, and
12C https://cecill.info/licences/Licence_CeCILL-C_V1-en.html)
13C
14 SUBROUTINE cmumps_process_rtnelind( ROOT,
15 & INODE, NELIM, NSLAVES, ROW_LIST,
16 & COL_LIST, SLAVE_LIST,
17 &
18 & PROCNODE_STEPS, IWPOS, IWPOSCB, IPTRLU,
19 & LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
20 & PTLUST_S, PTRFAC,
21 & PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S,
22 & ITLOC, RHS_MUMPS, COMP,
23 & IFLAG, IERROR,
24 & IPOOL, LPOOL, LEAF, MYID, SLAVEF,
25 & KEEP, KEEP8, DKEEP,
26 & COMM, COMM_LOAD, FILS, DAD, ND )
27 USE cmumps_load
28 USE cmumps_struc_def, ONLY : cmumps_root_struc
29 IMPLICIT NONE
30 TYPE (CMUMPS_ROOT_STRUC) :: ROOT
31 INTEGER INODE, NELIM, NSLAVES
32 INTEGER KEEP( 500 )
33 INTEGER(8) KEEP8(150)
34 REAL 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 COMPLEX 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 COMPLEX :: 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 cmumps_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 : CMUMPS_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 cmumps_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
130 END SUBROUTINE cmumps_process_rtnelind
subroutine cmumps_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 cmumps_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)
subroutine cmumps_insert_pool_n(n, pool, lpool, procnode, slavef, keep199, k28, k76, k80, k47, step, inode)
subroutine, public cmumps_load_pool_upd_new_pool(pool, lpool, procnode, keep, keep8, slavef, comm, myid, step, n, nd, fils)