/usr/include/smumps_struc.h is in libmumps-dev 5.1.2-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 | !
! This file is part of MUMPS 5.1.2, released
! on Mon Oct 2 07:37:01 UTC 2017
!
!
! Copyright 1991-2017 CERFACS, CNRS, ENS Lyon, INP Toulouse, Inria,
! University of Bordeaux.
!
! This version of MUMPS is provided to you free of charge. It is
! released under the CeCILL-C license:
! http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
!
INCLUDE 'smumps_root.h'
TYPE SMUMPS_STRUC
SEQUENCE
!
! This structure contains all parameters
! for the interface to the user, plus internal
! information from the solver
!
! *****************
! INPUT PARAMETERS
! *****************
! -----------------
! MPI Communicator
! -----------------
INTEGER :: COMM
! ------------------
! Problem definition
! ------------------
! Solver (SYM=0 unsymmetric,SYM=1 symmetric Positive Definite,
! SYM=2 general symmetric)
! Type of parallelism (PAR=1 host working, PAR=0 host not working)
INTEGER :: SYM, PAR
INTEGER :: JOB
! --------------------
! Order of Input matrix
! --------------------
INTEGER :: N
!
! ----------------------------------------
! Assembled input matrix : User interface
! ----------------------------------------
INTEGER :: NZ ! Standard integer input + bwd. compat.
INTEGER(8) :: NNZ ! 64-bit integer input
REAL, DIMENSION(:), POINTER :: A
INTEGER, DIMENSION(:), POINTER :: IRN, JCN
REAL, DIMENSION(:), POINTER :: COLSCA, ROWSCA, pad0
!
! ------------------------------------
! Case of distributed assembled matrix
! matrix on entry:
! ------------------------------------
INTEGER :: NZ_loc ! Standard integer input + bwd. compat.
INTEGER :: pad1
INTEGER(8) :: NNZ_loc ! 64-bit integer input
INTEGER, DIMENSION(:), POINTER :: IRN_loc, JCN_loc
REAL, DIMENSION(:), POINTER :: A_loc, pad2
!
! ----------------------------------------
! Unassembled input matrix: User interface
! ----------------------------------------
INTEGER :: NELT, pad3
INTEGER, DIMENSION(:), POINTER :: ELTPTR
INTEGER, DIMENSION(:), POINTER :: ELTVAR
REAL, DIMENSION(:), POINTER :: A_ELT, pad4
!
! ---------------------------------------------
! Symmetric permutation :
! PERM_IN if given by user (optional)
! ---------------------------------------------
INTEGER, DIMENSION(:), POINTER :: PERM_IN
!
!
! ******************
! INPUT/OUTPUT data
! ******************
! --------------------------------------------------------
! RHS / SOL_loc
! -------------
! right-hand side and solution
! -------------------------------------------------------
REAL, DIMENSION(:), POINTER :: RHS, REDRHS
REAL, DIMENSION(:), POINTER :: RHS_SPARSE
REAL, DIMENSION(:), POINTER :: SOL_loc
INTEGER, DIMENSION(:), POINTER :: IRHS_SPARSE
INTEGER, DIMENSION(:), POINTER :: IRHS_PTR
INTEGER, DIMENSION(:), POINTER :: ISOL_loc
INTEGER :: LRHS, NRHS, NZ_RHS, LSOL_loc, LREDRHS
INTEGER :: pad5
! ----------------------------
! Control parameters,
! statistics and output data
! ---------------------------
INTEGER :: ICNTL(40)
INTEGER :: INFO(40)
INTEGER :: INFOG(40)
REAL :: COST_SUBTREES
REAL :: CNTL(15)
REAL :: RINFO(40)
REAL :: RINFOG(40)
! ---------------------------------------------------------
! Permutations computed during analysis:
! SYM_PERM: Symmetric permutation
! UNS_PERM: Column permutation (optional)
! ---------------------------------------------------------
INTEGER, DIMENSION(:), POINTER :: SYM_PERM, UNS_PERM
!
! -----
! Schur
! -----
INTEGER :: NPROW, NPCOL, MBLOCK, NBLOCK
INTEGER :: SCHUR_MLOC, SCHUR_NLOC, SCHUR_LLD
INTEGER :: SIZE_SCHUR
REAL, DIMENSION(:), POINTER :: SCHUR
REAL, DIMENSION(:), POINTER :: SCHUR_CINTERFACE
INTEGER, DIMENSION(:), POINTER :: LISTVAR_SCHUR
! -------------------------------------
! Case of distributed matrix on entry:
! SMUMPS potentially provides mapping
! -------------------------------------
INTEGER, DIMENSION(:), POINTER :: MAPPING
! --------------
! Version number
! --------------
CHARACTER(LEN=30) :: VERSION_NUMBER
! -----------
! Out-of-core
! -----------
CHARACTER(LEN=255) :: OOC_TMPDIR
CHARACTER(LEN=63) :: OOC_PREFIX
! ------------------------------------------
! To save the matrix in matrix market format
! ------------------------------------------
CHARACTER(LEN=255) :: WRITE_PROBLEM
! -----------
! Save/Restore
! -----------
CHARACTER(LEN=255) :: SAVE_DIR
CHARACTER(LEN=255) :: SAVE_PREFIX
CHARACTER(LEN=7) :: pad8
!
!
! **********************
! INTERNAL Working data
! *********************
INTEGER(8) :: KEEP8(150), MAX_SURF_MASTER
INTEGER :: INST_Number
! For MPI
INTEGER :: COMM_NODES, MYID_NODES, COMM_LOAD
INTEGER :: MYID, NPROCS, NSLAVES
INTEGER :: ASS_IRECV
INTEGER :: LBUFR
INTEGER :: LBUFR_BYTES
INTEGER, DIMENSION(:), POINTER :: BUFR
! IS is used for the factors + workspace for contrib. blocks
INTEGER, DIMENSION(:), POINTER :: IS
! IS1 (maxis1) contains working arrays computed
! and used only during analysis
INTEGER, DIMENSION(:), POINTER :: IS1
! For analysis/facto/solve phases
INTEGER :: MAXIS1, Deficiency
INTEGER :: KEEP(500)
! The following data/arrays are computed during the analysis
! phase and used during the factorization and solve phases.
INTEGER :: LNA
INTEGER :: NBSA
INTEGER,POINTER,DIMENSION(:) :: STEP, NE_STEPS, ND_STEPS
! Info for pruning tree
INTEGER,POINTER,DIMENSION(:) :: Step2node
! ---------------------
INTEGER,POINTER,DIMENSION(:) :: FRERE_STEPS, DAD_STEPS
INTEGER,POINTER,DIMENSION(:) :: FILS, FRTPTR, FRTELT
INTEGER(8),POINTER,DIMENSION(:) :: PTRAR
INTEGER,POINTER,DIMENSION(:) :: NA, PROCNODE_STEPS
! The two pointer arrays computed in facto and used by the solve
! (except the factors) are PTLUST_S and PTRFAC.
INTEGER, DIMENSION(:), POINTER :: PTLUST_S
INTEGER(8), DIMENSION(:), POINTER :: PTRFAC
! main real working arrays for factorization/solve phases
REAL, DIMENSION(:), POINTER :: S
! Information on mapping
INTEGER, DIMENSION(:), POINTER :: PROCNODE
! Input matrix ready for numerical assembly
! -arrowhead format in case of assembled matrix
! -element format otherwise
INTEGER, DIMENSION(:), POINTER :: INTARR
REAL, DIMENSION(:), POINTER :: DBLARR
! Element entry: internal data
INTEGER :: NELT_loc, LELTVAR
INTEGER, DIMENSION(:), POINTER :: ELTPROC
! Candidates and node partitionning
INTEGER, DIMENSION(:,:), POINTER :: CANDIDATES
INTEGER, DIMENSION(:), POINTER :: ISTEP_TO_INIV2
INTEGER, DIMENSION(:), POINTER :: FUTURE_NIV2
INTEGER, DIMENSION(:,:), POINTER :: TAB_POS_IN_PERE
LOGICAL, DIMENSION(:), POINTER :: I_AM_CAND
! For heterogeneous architecture
INTEGER, DIMENSION(:), POINTER :: MEM_DIST
! Compressed RHS
INTEGER, DIMENSION(:), POINTER :: POSINRHSCOMP_ROW
LOGICAL :: POSINRHSCOMP_COL_ALLOC, pad11
INTEGER, DIMENSION(:), POINTER :: POSINRHSCOMP_COL
REAL, DIMENSION(:), POINTER :: RHSCOMP
! Info on the subtrees to be used during factorization
DOUBLE PRECISION, DIMENSION(:), POINTER :: MEM_SUBTREE
DOUBLE PRECISION, DIMENSION(:), POINTER :: COST_TRAV
INTEGER, DIMENSION(:), POINTER :: MY_ROOT_SBTR
INTEGER, DIMENSION(:), POINTER :: MY_FIRST_LEAF
INTEGER, DIMENSION(:), POINTER :: MY_NB_LEAF
INTEGER, DIMENSION(:), POINTER :: DEPTH_FIRST
INTEGER, DIMENSION(:), POINTER :: DEPTH_FIRST_SEQ
INTEGER, DIMENSION(:), POINTER :: SBTR_ID
INTEGER, DIMENSION(:), POINTER :: SCHED_DEP
INTEGER, DIMENSION(:), POINTER :: SCHED_GRP
INTEGER, DIMENSION(:), POINTER :: SCHED_SBTR
INTEGER, DIMENSION(:), POINTER :: CROIX_MANU
REAL, DIMENSION(:), POINTER :: WK_USER
INTEGER :: NBSA_LOCAL
INTEGER :: LWK_USER
! Internal control array
REAL :: DKEEP(230)
! For simulating parallel out-of-core stack.
DOUBLE PRECISION, DIMENSION(:),POINTER :: CB_SON_SIZE
! Instance number used/managed by the C/F77 interface
INTEGER :: INSTANCE_NUMBER
! OOC management data that must persist from factorization to solve.
INTEGER :: OOC_MAX_NB_NODES_FOR_ZONE
INTEGER, DIMENSION(:,:), POINTER :: OOC_INODE_SEQUENCE
INTEGER(8),DIMENSION(:,:), POINTER :: OOC_SIZE_OF_BLOCK
INTEGER(8), DIMENSION(:,:), POINTER :: OOC_VADDR
INTEGER,DIMENSION(:), POINTER :: OOC_TOTAL_NB_NODES
INTEGER,DIMENSION(:), POINTER :: OOC_NB_FILES
INTEGER :: OOC_NB_FILE_TYPE,pad12
INTEGER,DIMENSION(:), POINTER :: OOC_FILE_NAME_LENGTH
CHARACTER,DIMENSION(:,:), POINTER :: OOC_FILE_NAMES
! Indices of nul pivots
INTEGER,DIMENSION(:), POINTER :: PIVNUL_LIST
! Array needed to manage additionnal candidate processor
INTEGER, DIMENSION(:,:), POINTER :: SUP_PROC, pad14
! Lists of nodes where processors work. Built/used in solve phase.
INTEGER, DIMENSION(:), POINTER :: IPTR_WORKING, WORKING
! Root structure(internal)
TYPE (SMUMPS_ROOT_STRUC) :: root
! Low-rank
INTEGER, POINTER, DIMENSION(:) :: LRGROUPS
INTEGER :: NBGRP,pad13
! Pointer encoding for FDM_F data
CHARACTER(LEN=1), DIMENSION(:), POINTER :: FDM_F_ENCODING
! Pointer array encoding BLR factors pointers
CHARACTER(LEN=1), DIMENSION(:), POINTER :: BLRARRAY_ENCODING
! Multicore
INTEGER :: LPOOL_AFTER_L0_OMP, LPOOL_BEFORE_L0_OMP
INTEGER :: L_PHYS_L0_OMP
INTEGER :: L_VIRT_L0_OMP
INTEGER :: LL0_OMP_MAPPING,pad15
INTEGER(8) :: THREAD_LA
! Pool before L0_OMP
INTEGER, DIMENSION(:), POINTER :: IPOOL_BEFORE_L0_OMP
! Pool after L0_OMP
INTEGER, DIMENSION(:), POINTER :: IPOOL_AFTER_L0_OMP
! Subtrees
INTEGER, DIMENSION(:), POINTER :: PHYS_L0_OMP
! Amalgamated subtrees
INTEGER, DIMENSION(:), POINTER :: VIRT_L0_OMP
! From heaviest to lowest subtree
INTEGER, DIMENSION(:), POINTER :: PERM_L0_OMP
! To get leafs in global pool
INTEGER, DIMENSION(:), POINTER :: PTR_LEAFS_L0_OMP
! Mapping of the subtrees
INTEGER, DIMENSION(:), POINTER :: L0_OMP_MAPPING
! for RR on root
REAL, DIMENSION(:), POINTER :: SINGULAR_VALUES
INTEGER :: NB_SINGULAR_VALUES
! To know if OOC files are associated to a saved and so if they should be removed.
LOGICAL :: ASSOCIATED_OOC_FILES
END TYPE SMUMPS_STRUC
|