OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lr_common.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
15 IMPLICIT NONE
16 CONTAINS
17 SUBROUTINE compute_blr_vcs(K472, IBCKSZ, MAXSIZE, NASS)
18 INTEGER, INTENT(IN) :: MAXSIZE, NASS, K472
19 INTEGER, INTENT(OUT) :: IBCKSZ
20 IF (k472.EQ.1) THEN
21 IF (nass.LE.1000) THEN
22 ibcksz = 128
23 ELSEIF (nass.GT.1000.AND.nass.LE.5000) THEN
24 ibcksz = 256
25 ELSEIF (nass.GT.5000.AND.nass.LE.10000) THEN
26 ibcksz = 384
27 ELSE
28 ibcksz = 512
29 ENDIF
30 ibcksz = min(ibcksz,maxsize)
31 ELSE
32 ibcksz = maxsize
33 ENDIF
34 END SUBROUTINE compute_blr_vcs
35 SUBROUTINE mumps_upd_tree(NV, NSTEPS, N, FIRST, LPTR, RPTR, F,
36 & VLIST, FILS, FRERE_STEPS, STEP, DAD_STEPS, NE_STEPS, NA, LNA,
37 & PVS, K38, STEP_SCALAPACK_ROOT)
38 IMPLICIT NONE
39 INTEGER, INTENT(IN) :: N, NV, NSTEPS, LNA, F, VLIST(NV)
40 INTEGER :: FILS(:), FRERE_STEPS(:),
41 & dad_steps(:), step(:), ne_steps(:), na(:)
42 INTEGER, INTENT(INOUT) :: PVS(NSTEPS), LPTR, RPTR
43 INTEGER, INTENT(INOUT) :: K38
44 INTEGER, INTENT(IN) :: STEP_SCALAPACK_ROOT
45 LOGICAL :: FIRST
46 INTEGER :: PV, NODE, I
47 pv = vlist(1)
48 node = abs(step(pv))
49 pvs(node) = pv
50 IF(first) THEN
51 i = dad_steps(node)
52 DO WHILE(fils(i).GT.0)
53 i = fils(i)
54 END DO
55 fils(i) = -pv
56 END IF
57 IF(frere_steps(node) .GT. 0) THEN
58 frere_steps(node) = pvs(abs(step(frere_steps(node))))
59 ELSE IF(frere_steps(node) .LT. 0) THEN
60 frere_steps(node) = -pvs(abs(step(dad_steps(node))))
61 END IF
62 IF(dad_steps(node) .EQ. 0) THEN
63 na(rptr) = pv
64 rptr = rptr -1
65 ELSE
66 dad_steps(node) = pvs(abs(step(dad_steps(node))))
67 END IF
68 IF(ne_steps(node) .EQ. 0) THEN
69 na(lptr) = pv
70 lptr = lptr -1
71 END IF
72 step(vlist(1)) = abs(step(vlist(1)))
73 IF (step(vlist(1)).EQ.step_scalapack_root) THEN
74 k38 = vlist(1)
75 ENDIF
76 DO i=1, nv-1
77 IF(step(vlist(i+1)).GT.0) step(vlist(i+1)) = -step(vlist(i+1))
78 fils(vlist(i)) = vlist(i+1)
79 END DO
80 fils(vlist(nv)) = f
81 RETURN
82 END SUBROUTINE mumps_upd_tree
83 END MODULE mumps_lr_common
#define min(a, b)
Definition macros.h:20
subroutine compute_blr_vcs(k472, ibcksz, maxsize, nass)
Definition lr_common.F:18
subroutine mumps_upd_tree(nv, nsteps, n, first, lptr, rptr, f, vlist, fils, frere_steps, step, dad_steps, ne_steps, na, lna, pvs, k38, step_scalapack_root)
Definition lr_common.F:38