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