OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mumps_lr_common Module Reference

Functions/Subroutines

subroutine compute_blr_vcs (k472, ibcksz, maxsize, nass)
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)

Function/Subroutine Documentation

◆ compute_blr_vcs()

subroutine mumps_lr_common::compute_blr_vcs ( integer, intent(in) k472,
integer, intent(out) ibcksz,
integer, intent(in) maxsize,
integer, intent(in) nass )

Definition at line 17 of file lr_common.F.

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
#define min(a, b)
Definition macros.h:20

◆ mumps_upd_tree()

subroutine mumps_lr_common::mumps_upd_tree ( integer, intent(in) nv,
integer, intent(in) nsteps,
integer, intent(in) n,
logical first,
integer, intent(inout) lptr,
integer, intent(inout) rptr,
integer, intent(in) f,
integer, dimension(nv), intent(in) vlist,
integer, dimension(:) fils,
integer, dimension(:) frere_steps,
integer, dimension(:) step,
integer, dimension(:) dad_steps,
integer, dimension(:) ne_steps,
integer, dimension(:) na,
integer, intent(in) lna,
integer, dimension(nsteps), intent(inout) pvs,
integer, intent(inout) k38,
integer, intent(in) step_scalapack_root )

Definition at line 35 of file lr_common.F.

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