1C 2C This file is part of MUMPS 5.1.2, released 3C on Mon Oct 2 07:37:01 UTC 2017 4C 5C 6C Copyright 1991-2017 CERFACS, CNRS, ENS Lyon, INP Toulouse, Inria, 7C 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 http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html 12C 13 MODULE MUMPS_LR_COMMON 14 IMPLICIT NONE 15 CONTAINS 16 SUBROUTINE COMPUTE_BLR_VCS(K472, IBCKSZ, MAXSIZE, NASS) 17 INTEGER, INTENT(IN) :: MAXSIZE, NASS, K472 18 INTEGER, INTENT(OUT) :: IBCKSZ 19 IF (K472.EQ.1) THEN 20 IF (NASS.LE.1000) THEN 21 IBCKSZ = 128 22 ELSEIF (NASS.GT.1000.AND.NASS.LE.5000) THEN 23 IBCKSZ = 256 24 ELSEIF (NASS.GT.5000.AND.NASS.LE.10000) THEN 25 IBCKSZ = 384 26 ELSE 27 IBCKSZ = 512 28 ENDIF 29 IBCKSZ = min(IBCKSZ,MAXSIZE) 30 ELSE 31 IBCKSZ = MAXSIZE 32 ENDIF 33 END SUBROUTINE COMPUTE_BLR_VCS 34 SUBROUTINE MUMPS_UPD_TREE(NV, NSTEPS, N, FIRST, LPTR, RPTR, F, 35 & VLIST, FILS, FRERE_STEPS, STEP, DAD_STEPS, NE_STEPS, NA, LNA, 36 & PVS, K38, STEP_SCALAPACK_ROOT) 37 IMPLICIT NONE 38 INTEGER, INTENT(IN) :: N, NV, NSTEPS, LNA, F, VLIST(NV), 39 & NE_STEPS(NSTEPS) 40 INTEGER, INTENT(INOUT) :: FILS(N), FRERE_STEPS(NSTEPS), 41 & DAD_STEPS(NSTEPS), STEP(N), PVS(NSTEPS), NA(LNA), LPTR, RPTR 42 INTEGER, INTENT(INOUT) :: K38 43 INTEGER, INTENT(IN) :: STEP_SCALAPACK_ROOT 44 LOGICAL :: FIRST 45 INTEGER :: PV, NODE, I 46 PV = VLIST(1) 47 NODE = ABS(STEP(PV)) 48 PVS(NODE) = PV 49 IF(FIRST) THEN 50 I = DAD_STEPS(NODE) 51 DO WHILE(FILS(I).GT.0) 52 I = FILS(I) 53 END DO 54 FILS(I) = -PV 55 END IF 56 IF(FRERE_STEPS(NODE) .GT. 0) THEN 57 FRERE_STEPS(NODE) = PVS(ABS(STEP(FRERE_STEPS(NODE)))) 58 ELSE IF(FRERE_STEPS(NODE) .LT. 0) THEN 59 FRERE_STEPS(NODE) = -PVS(ABS(STEP(DAD_STEPS(NODE)))) 60 END IF 61 IF(DAD_STEPS(NODE) .EQ. 0) THEN 62 NA(RPTR) = PV 63 RPTR = RPTR -1 64 ELSE 65 DAD_STEPS(NODE) = PVS(ABS(STEP(DAD_STEPS(NODE)))) 66 END IF 67 IF(NE_STEPS(NODE) .EQ. 0) THEN 68 NA(LPTR) = PV 69 LPTR = LPTR -1 70 END IF 71 STEP(VLIST(1)) = ABS(STEP(VLIST(1))) 72 IF (STEP(VLIST(1)).EQ.STEP_SCALAPACK_ROOT) THEN 73 K38 = VLIST(1) 74 ENDIF 75 DO I=1, NV-1 76 IF(STEP(VLIST(I+1)).GT.0) STEP(VLIST(I+1)) = -STEP(VLIST(I+1)) 77 FILS(VLIST(I)) = VLIST(I+1) 78 END DO 79 FILS(VLIST(NV)) = F 80 RETURN 81 END SUBROUTINE MUMPS_UPD_TREE 82 END MODULE MUMPS_LR_COMMON 83