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

Go to the source code of this file.

Functions/Subroutines

subroutine cmumps_sol_r (n, a, la, iw, liw, wcb, lwcb, nrhs, ptricb, iwcb, liwcb, rhscomp, lrhscomp, posinrhscomp_fwd, step, frere, dad, fils, nstk, ipool, lpool, ptrist, ptrfac, myleaf, myroot, info, keep, keep8, dkeep, procnode_steps, slavef, comm, myid, bufr, lbufr, lbufr_bytes, rhs_root, lrhs_root, mtype, istep_to_iniv2, tab_pos_in_pere, rhs_bounds, lrhs_bounds, do_nbsparse, from_pp, l0_omp_mapping, ll0_omp_mapping, l0_omp_factors, ll0_omp_factors)

Function/Subroutine Documentation

◆ cmumps_sol_r()

subroutine cmumps_sol_r ( integer, intent(in) n,
complex, dimension( la ) a,
integer(8), intent(in) la,
integer, dimension( liw ) iw,
integer, intent(in) liw,
complex, dimension( lwcb ) wcb,
integer(8), intent(in) lwcb,
integer nrhs,
integer, dimension( keep(28) ) ptricb,
integer, dimension( liwcb ) iwcb,
integer, intent(in) liwcb,
complex, dimension(lrhscomp,nrhs), intent(inout) rhscomp,
integer, intent(in) lrhscomp,
integer, dimension(n), intent(in) posinrhscomp_fwd,
integer, dimension( n ) step,
integer, dimension( keep(28) ) frere,
integer, dimension( keep(28) ) dad,
integer, dimension( n ) fils,
integer, dimension(keep(28)) nstk,
integer, dimension( lpool ) ipool,
integer, intent(in) lpool,
integer, dimension(keep(28)) ptrist,
integer(8), dimension(keep(28)) ptrfac,
integer, intent(in) myleaf,
integer, intent(in) myroot,
integer, dimension( 80 ) info,
integer, dimension(500) keep,
integer(8), dimension(150) keep8,
real, dimension(230), intent(inout) dkeep,
integer, dimension( keep(28) ) procnode_steps,
integer, intent(in) slavef,
integer, intent(in) comm,
integer, intent(in) myid,
integer, dimension( lbufr ) bufr,
integer lbufr,
integer lbufr_bytes,
complex, dimension( lrhs_root ) rhs_root,
integer(8), intent(in) lrhs_root,
integer mtype,
integer, dimension(keep(71)) istep_to_iniv2,
integer, dimension(slavef+2,max(1,keep(56))) tab_pos_in_pere,
integer, dimension(lrhs_bounds), intent(in) rhs_bounds,
integer, intent(in) lrhs_bounds,
logical, intent(in) do_nbsparse,
logical, intent(in) from_pp,
integer, dimension( ll0_omp_mapping ), intent(in) l0_omp_mapping,
integer, intent(in) ll0_omp_mapping,
type (cmumps_l0ompfac_t), dimension(ll0_omp_factors), intent(in) l0_omp_factors,
integer, intent(in) ll0_omp_factors )

Definition at line 14 of file csol_fwd.F.

34 USE cmumps_struc_def, ONLY : cmumps_l0ompfac_t
35 IMPLICIT NONE
36 INTEGER MTYPE
37 INTEGER(8), INTENT(IN) :: LA, LWCB
38 INTEGER, INTENT(IN) :: N, LIW, LPOOL, LIWCB
39 INTEGER, INTENT(IN) :: SLAVEF, MYLEAF, MYROOT, COMM, MYID
40 INTEGER INFO( 80 ), KEEP(500)
41 INTEGER(8) KEEP8(150)
42 REAL, INTENT(INOUT) :: DKEEP(230)
43 INTEGER PROCNODE_STEPS( KEEP(28) )
44 INTEGER NRHS
45 COMPLEX A( LA ), WCB( LWCB )
46 INTEGER(8), intent(in) :: LRHS_ROOT
47 COMPLEX RHS_ROOT( LRHS_ROOT )
48 INTEGER LBUFR, LBUFR_BYTES
49 INTEGER BUFR( LBUFR )
50 INTEGER STEP( N ), FRERE( KEEP(28) ), FILS( N ),
51 & DAD( KEEP(28) )
52 INTEGER NSTK(KEEP(28)), IPOOL( LPOOL )
53 INTEGER PTRIST(KEEP(28))
54 INTEGER(8) :: PTRFAC(KEEP(28))
55 INTEGER PTRICB( KEEP(28) )
56 LOGICAL, intent(in) :: DO_NBSPARSE
57 INTEGER, intent(in) :: LRHS_BOUNDS
58 INTEGER, intent(in) :: RHS_BOUNDS(LRHS_BOUNDS)
59 INTEGER IW( LIW ), IWCB( LIWCB )
60 INTEGER ISTEP_TO_INIV2(KEEP(71)),
61 & TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
62 INTEGER, intent(in) :: POSINRHSCOMP_FWD(N), LRHSCOMP
63 COMPLEX, intent(inout) :: RHSCOMP(LRHSCOMP,NRHS)
64 LOGICAL, intent(in) :: FROM_PP
65 INTEGER, INTENT( in ) :: LL0_OMP_MAPPING, LL0_OMP_FACTORS
66 INTEGER, INTENT( in ) :: L0_OMP_MAPPING( LL0_OMP_MAPPING )
67 TYPE (CMUMPS_L0OMPFAC_T), INTENT(IN) ::
68 & L0_OMP_FACTORS(LL0_OMP_FACTORS)
69 include 'mpif.h'
70 include 'mumps_tags.h'
71 INTEGER DUMMY(1)
72 LOGICAL FLAG
73 COMPLEX, DIMENSION(:), POINTER :: A_PTR
74 INTEGER(8) :: LA_PTR
75 INTEGER :: UNDERL0MAP
76 INTEGER NBFIN, MYROOT_LEFT
77 INTEGER POSIWCB
78 INTEGER(8) :: POSWCB, PLEFTWCB
79 INTEGER INODE, IFATH
80 INTEGER III, LEAF
81 LOGICAL BLOQ
82 EXTERNAL mumps_procnode
83 INTEGER MUMPS_PROCNODE
84 LOGICAL ERROR_WAS_BROADCASTED
85 dummy(1) = 1
86 keep(266)=0
87 posiwcb = liwcb
88 poswcb = lwcb
89 pleftwcb= 1_8
90 ptricb = 0
91 leaf = myleaf + 1
92 iii = 1
93 nbfin = slavef
94 myroot_left = myroot
95 IF ( myroot_left .EQ. 0 ) THEN
96 nbfin = nbfin - 1
97 CALL cmumps_mcast2(dummy, 1, mpi_integer, myid, comm,
98 & racine_solve, slavef, keep)
99 IF (nbfin.EQ.0) GOTO 260
100 END IF
101 50 CONTINUE
102 IF (slavef .EQ. 1) THEN
104 & ( ipool(1), lpool, iii, leaf, inode,
105 & keep(208) )
106 GOTO 60
107 ENDIF
108 bloq = ( ( iii .EQ. leaf )
109 & )
110 CALL cmumps_solve_recv_and_treat( bloq, flag,
111 & bufr, lbufr, lbufr_bytes,
112 & myid, slavef, comm,
113 & n, nrhs, ipool, lpool, leaf,
114 & nbfin, nstk, iw, liw, a, la, ptrist, ptrfac,
115 & iwcb, liwcb,
116 & wcb, lwcb, poswcb,
117 & pleftwcb, posiwcb,
118 & ptricb, info, keep,keep8, dkeep, step,
119 & procnode_steps,
120 & rhscomp, lrhscomp, posinrhscomp_fwd
121 & , from_pp
122 & )
123 IF ( info( 1 ) .LT. 0 .OR. nbfin .EQ. 0 ) GOTO 260
124 IF (.not. flag) THEN
125 IF (iii .NE. leaf) THEN
127 & (ipool(1), lpool, iii, leaf, inode,
128 & keep(208) )
129 GOTO 60
130 ENDIF
131 ENDIF
132 GOTO 50
133 60 CONTINUE
134 IF (keep(400) .GT. 0 ) THEN
135 underl0map = l0_omp_mapping(step(inode))
136 ELSE
137 underl0map = 0
138 ENDIF
139 IF (underl0map .EQ. 0 .OR. keep(201).GT.0) THEN
141 CALL cmumps_get_tmp_ptr(a_ptr)
142 la_ptr = la
143 ELSE
144 a_ptr => l0_omp_factors(underl0map)%A
145 la_ptr = l0_omp_factors(underl0map)%LA
146 ENDIF
147 CALL cmumps_solve_node_fwd( inode,
148 & huge(inode), huge(inode),
149 & bufr, lbufr, lbufr_bytes,
150 & myid, slavef, comm, n,
151 & ipool, lpool, leaf, nbfin, nstk,
152 & iwcb, liwcb, wcb, lwcb, a_ptr(1), la_ptr,
153 & iw, liw, nrhs,
154 & poswcb, pleftwcb, posiwcb,
155 & ptricb, ptrist, ptrfac, procnode_steps,
156 & fils, step, frere, dad,
157 & info, keep,keep8, dkeep, rhs_root, lrhs_root, mtype,
158 & rhscomp, lrhscomp, posinrhscomp_fwd,
159 & istep_to_iniv2, tab_pos_in_pere
160 & , rhs_bounds, lrhs_bounds, do_nbsparse
161 & , from_pp
162 & , error_was_broadcasted
163 & )
164 IF ( info(1) .LT. 0 ) THEN
165 IF (.NOT. error_was_broadcasted) THEN
166 CALL cmumps_bdc_error( myid, slavef, comm, keep )
167 ENDIF
168 GOTO 260
169 ENDIF
170 ifath = dad(step(inode))
171 IF ( ifath .EQ. 0 ) THEN
172 myroot_left = myroot_left - 1
173 IF (myroot_left .EQ. 0) THEN
174 nbfin = nbfin - 1
175 IF (slavef .GT. 1) THEN
176 CALL cmumps_mcast2(dummy, 1, mpi_integer, myid,
177 & comm, racine_solve, slavef, keep)
178 ENDIF
179 END IF
180 ELSE
181 IF ( mumps_procnode(procnode_steps(step(ifath)), keep(199))
182 & .EQ. myid ) THEN
183 IF ( ptricb(step(inode)) .EQ. 1 .OR.
184 & ptricb(step(inode)) .EQ. -1 ) THEN
185 nstk(step(ifath)) = nstk(step(ifath)) - 1
186 IF (nstk(step(ifath)) .EQ. 0) THEN
187 ipool(leaf) = ifath
188 leaf = leaf + 1
189 IF (leaf .GT. lpool) THEN
190 WRITE(*,*)
191 & 'Internal error CMUMPS_TRAITER_MESSAGE_SOLVE',
192 & leaf, lpool
193 CALL mumps_abort()
194 ENDIF
195 ENDIF
196 ptricb(step(inode)) = 0
197 ENDIF
198 ENDIF
199 ENDIF
200 IF ( nbfin .EQ. 0 ) GOTO 260
201 GOTO 50
202 260 CONTINUE
203 CALL cmumps_clean_pending(info(1), keep, bufr, lbufr,lbufr_bytes,
204 & comm, dummy(1),
205 & slavef, .true., .false.)
206 RETURN
#define mumps_abort
Definition VE_Metis.h:25
subroutine cmumps_bdc_error(myid, slavef, comm, keep)
Definition cbcast_int.F:38
subroutine cmumps_mcast2(data, ldata, mpitype, root, commw, tag, slavef, keep)
Definition cbcast_int.F:16
subroutine cmumps_clean_pending(info1, keep, bufr, lbufr, lbufr_bytes, comm_nodes, comm_load, slavef, clean_comm_nodes, clean_comm_load)
subroutine cmumps_get_inode_from_pool(ipool, lpool, iii, leaf, inode, strategie)
subroutine cmumps_solve_node_fwd(inode, lastfsl0sta, lastfsl0dyn, bufr, lbufr, lbufr_bytes, myid, slavef, comm, n, ipool, lpool, leaf, nbfin, nstk_s, iwcb, liwcb, wcb, lwcb, a, la, iw, liw, nrhs, poswcb, pleftwcb, posiwcb, ptricb, ptrist, ptrfac, procnode_steps, fils, step, frere, dad, info, keep, keep8, dkeep, rhs_root, lrhs_root, mtype, rhscomp, lrhscomp, posinrhscomp_fwd istep_to_iniv2, tab_pos_in_pere, rhs_bounds, lrhs_bounds, do_nbsparse, from_pp, error_was_broadcasted)
recursive subroutine cmumps_solve_recv_and_treat(bloq, flag, bufr, lbufr, lbufr_bytes, myid, slavef, comm, n, nrhs, ipool, lpool, leaf, nbfin, nstk_s, iw, liw, a, la, ptrist, ptrfac, iwcb, liwcb, wcb, lwcb, poswcb, pleftwcb, posiwcb, ptricb, info, keep, keep8, dkeep, step, procnode_steps, rhscomp, lrhscomp, posinrhscomp_fwd, from_pp)
subroutine, public cmumps_get_tmp_ptr(ptr)
subroutine cmumps_set_static_ptr(array)
integer function mumps_procnode(procinfo_inode, k199)