1155 IMPLICIT NONE
1156 include 'mumps_headers.h'
1157 TYPE (CMUMPS_ROOT_STRUC) :: root
1158 INTEGER COMM_LOAD, ASS_IRECV
1159 INTEGER COMM_NODES, MYID_NODES, TYPE, TYPEF
1160 INTEGER N, LIW, INODE,INFO_P(2)
1161 INTEGER ICNTL(60), KEEP(500)
1162 REAL DKEEP(230)
1163 REAL UU, SEUIL, SEUIL_LDLT_NIV2
1164 INTEGER(8) KEEP8(150)
1165 INTEGER(8) :: LA, POSFAC, LRLU, LRLUS, LRLUSM, IPTRLU
1166 INTEGER IWPOSCB, IWPOS,
1167 & IFATH, SLAVEF, NELVAW, NMAXNPIVW, NSTEPSW
1168 INTEGER IW(LIW),PROCNODE_STEPS(KEEP(28))
1169 INTEGER(8) :: PTRAST (KEEP(28))
1170 INTEGER(8) :: PTRFAC (KEEP(28))
1171 INTEGER(8) :: PAMASTER(KEEP(28))
1172 INTEGER PTRIST(KEEP(28)), PTLUST_S(KEEP(28))
1173 INTEGER STEP(N), PIMASTER(KEEP(28)), NE(KEEP(28))
1174 COMPLEX A(LA)
1175 INTEGER :: MAXFRW, NOFFNEGW, NPVW, NBTINYW
1176 INTEGER, intent(in) :: LRGROUPS(N)
1177 DOUBLE PRECISION OPASSW, OPELIW
1178 COMPLEX DBLARR(KEEP8(26))
1179 INTEGER INTARR(KEEP8(27))
1180 INTEGER ITLOC( N + KEEP(253) ), FILS( N ),
1181 & ND( KEEP(28) ), FRERE( KEEP(28) )
1182 INTEGER DAD( KEEP(28) )
1183 COMPLEX :: RHS_MUMPS(KEEP(255))
1184 INTEGER ISTEP_TO_INIV2(KEEP(71)),
1185 & TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
1186 INTEGER NELT, LPTRAR
1187 INTEGER FRTPTR( N+1 ), FRTELT( NELT )
1188 INTEGER(8), INTENT(IN) :: PTRAIW( LPTRAR ), PTRARW( LPTRAR )
1189 INTEGER LEAF, COMP
1190 INTEGER :: NB22T1W, DET_EXPW, DET_SIGNW
1191 COMPLEX :: DET_MANTW
1192 INTEGER PERM( N )
1193 INTEGER NSTK_STEPS( KEEP(28) )
1194 INTEGER LBUFR, LBUFR_BYTES
1195 INTEGER BUFR( LBUFR )
1196 INTEGER NBFIN
1197 INTEGER :: LPN_LIST
1198 INTEGER :: PIVNUL_LIST(LPN_LIST)
1199 DOUBLE PRECISION FLOP_ESTIM_ACC
1200 INTEGER, INTENT(IN) :: LPOOL_P
1201 INTEGER, INTENT(IN) :: IPOOL_P(LPOOL_P)
1202 INTEGER :: IOLDPS, JOBASS, ETATASS
1203 INTEGER(8) :: POSELT
1204 LOGICAL :: AVOID_DELAYED, SON_LEVEL2
1205 JOBASS = 0
1206 ETATASS = 0
1207.EQ. IF ( KEEP(55) 0 ) THEN
1208 JOBASS = 0
1209 CALL CMUMPS_FAC_ASM_NIV1( COMM_LOAD, ASS_IRECV, N, INODE,
1210 & IW, LIW, A, LA,
1211 & INFO_P, ND, FILS, FRERE, DAD, MAXFRW, root, OPASSW,
1212 & OPELIW, PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP, PIMASTER,
1213 & PAMASTER, PTRARW, PTRAIW, ITLOC, RHS_MUMPS, NSTEPSW,
1214 & SON_LEVEL2,COMP, LRLU, IPTRLU,
1215 & IWPOS, IWPOSCB, POSFAC,
1216 & LRLUS, LRLUSM, ICNTL, KEEP, KEEP8, DKEEP,
1217 & INTARR, KEEP8(27), DBLARR, KEEP8(26),
1218 & NSTK_STEPS, PROCNODE_STEPS, SLAVEF, COMM_NODES,
1219 & MYID_NODES, BUFR, LBUFR, LBUFR_BYTES, NBFIN, IPOOL_P,
1220 & LPOOL_P, LEAF, PERM, ISTEP_TO_INIV2, TAB_POS_IN_PERE,
1221 & JOBASS, ETATASS
1222 & , LRGROUPS
1223 & )
1224 ELSE
1225 CALL CMUMPS_FAC_ASM_NIV1_ELT(COMM_LOAD,ASS_IRECV,NELT,FRTPTR,
1226 & FRTELT, N, INODE, IW, LIW, A,
1227 & LA, INFO_P, ND, FILS, FRERE, DAD, MAXFRW,
1228 & root, OPASSW, OPELIW, PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
1229 & PIMASTER, PAMASTER, PTRARW, PTRAIW, ITLOC,
1230 & RHS_MUMPS, NSTEPSW, SON_LEVEL2, COMP, LRLU,
1231 & IPTRLU, IWPOS, IWPOSCB,
1232 & POSFAC, LRLUS, LRLUSM, ICNTL, KEEP, KEEP8, DKEEP,
1233 & INTARR, KEEP8(27), DBLARR, KEEP8(26),
1234 & NSTK_STEPS, PROCNODE_STEPS, SLAVEF,
1235 & COMM_NODES, MYID_NODES, BUFR, LBUFR, LBUFR_BYTES, NBFIN,
1236 & IPOOL_P, LPOOL_P, LEAF, PERM, ISTEP_TO_INIV2,
1237 & TAB_POS_IN_PERE
1238 & , LRGROUPS
1239 & )
1240 ENDIF
1241.LT. IF (INFO_P(1) 0) THEN
1242 RETURN
1243 ENDIF
1244.EQ. AVOID_DELAYED = ( ( IFATH KEEP(20)
1245.OR. &
1246.EQ. & IFATH KEEP(38) )
1247.AND. &
1248.NE. & ( KEEP(60) 0 ) )
1249 POSELT = PTRAST(STEP(INODE))
1250 IOLDPS = PTLUST_S(STEP(INODE))
1251.EQ. IF ( KEEP(50) 0 ) THEN
1252 CALL CMUMPS_FAC1_LU( N, INODE,
1253 & IW, LIW,
1254 & A, LA, IOLDPS,
1255 & POSELT,
1256 & INFO_P(1), INFO_P(2), UU, NOFFNEGW, NPVW, NBTINYW,
1257 & DET_EXPW, DET_MANTW, DET_SIGNW,
1258 & KEEP, KEEP8,
1259 & STEP, PROCNODE_STEPS, MYID_NODES, SLAVEF,
1260 & SEUIL, AVOID_DELAYED, ETATASS,
1261 & DKEEP(1), PIVNUL_LIST(1), LPN_LIST, IWPOS
1262 & , LRGROUPS
1263 & , PERM
1264 & )
1265 ELSE
1266 IW( IOLDPS + 4 + KEEP(IXSZ) ) = 1
1267 CALL CMUMPS_FAC1_LDLT( N, INODE,
1268 & IW, LIW, A,
1269 & LA,
1270 & IOLDPS, POSELT,
1271 & INFO_P(1), INFO_P(2), UU, NOFFNEGW, NPVW,
1272 & NB22T1W, NBTINYW, DET_EXPW, DET_MANTW, DET_SIGNW,
1273 & KEEP, KEEP8, MYID_NODES, SEUIL,
1274 & AVOID_DELAYED,
1275 & ETATASS,
1276 & DKEEP(1), PIVNUL_LIST(1), LPN_LIST, IWPOS
1277 & , LRGROUPS
1278 & , PERM
1279 & )
1280 IW(IOLDPS + 4 + KEEP(IXSZ)) = STEP(INODE)
1281 ENDIF
1282.LT. IF (INFO_P(1) 0) THEN
1283 RETURN
1284 ENDIF
1285 CALL CMUMPS_FAC_STACK( COMM_LOAD, ASS_IRECV, N, INODE, TYPE,
1286 &TYPEF, LA, IW, LIW, A,
1287 &INFO_P(1), INFO_P(2), OPELIW, NELVAW, NMAXNPIVW, PTRIST, PTLUST_S,
1288 &PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER, NE, POSFAC,
1289 &LRLU, LRLUS, LRLUSM, IPTRLU, ICNTL, KEEP,
1290 &KEEP8, DKEEP,
1291 &COMP,IWPOS, IWPOSCB, PROCNODE_STEPS,
1292 &SLAVEF, IFATH, COMM_NODES, MYID_NODES, IPOOL_P,
1293 &LPOOL_P, LEAF, NSTK_STEPS, PERM, BUFR, LBUFR,
1294 &LBUFR_BYTES, NBFIN, root, OPASSW, ITLOC, RHS_MUMPS,
1295 &FILS, DAD, PTRARW, PTRAIW, INTARR, DBLARR, ND, FRERE,
1296 &LPTRAR, NELT, FRTPTR, FRTELT, ISTEP_TO_INIV2, TAB_POS_IN_PERE,
1297 & LRGROUPS,
1298 & FLOP_ESTIM_ACC
1299 &)
1300 RETURN