OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
zfac_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 zmumps_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 zmumps_load
28 USE zmumps_struc_def, ONLY : zmumps_root_struc
29 IMPLICIT NONE
30 TYPE (ZMUMPS_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 COMPLEX(kind=8) 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(kind=8) :: 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.EQ. IF (TYPE_INODE1) THEN
69.EQ. IF (NELIM0) THEN
70 KEEP(41) = KEEP(41) + 1
71 ELSE
72 KEEP(41) = KEEP(41) + 3
73 ENDIF
74 ELSE
75.EQ. IF (NELIM0) THEN
76 KEEP(41) = KEEP(41) + NSLAVES
77 ELSE
78 KEEP(41) = KEEP(41) + 2*NSLAVES + 1
79 ENDIF
80 ENDIF
81.EQ. IF (NELIM0) THEN
82 PIMASTER(STEP(INODE)) = 0
83 ELSE
84 NOINT = 6 + NSLAVES + NELIM + NELIM + KEEP(IXSZ)
85 NOREAL= 0_8
86 CALL ZMUMPS_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.LT. IF ( IFLAG 0 ) THEN
94 WRITE(*,*) ' failure in int space allocation in cb area ',
95 & ' during assembly of root : zmumps_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.GT. IF (NSLAVES0) 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.EQ. IF (NSTK_S(STEP(IROOT)) 0 ) THEN
118 CALL ZMUMPS_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.GE. IF (KEEP(47) 3) THEN
123 CALL ZMUMPS_LOAD_POOL_UPD_NEW_POOL(
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 ZMUMPS_PROCESS_RTNELIND
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine zmumps_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)