OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dmumps.m
Go to the documentation of this file.
1function [id]=dmumps(id,mat)
2%
3% [id]=dmumps(id,mat)
4% id is a structure (see details in initmumps.m and MUMPS documentation)
5% mat is optional if the job is -1 or -2
6% mat is a square sparse matrice
7% information are return in id fields
8%
9% Use help mumps_help for detailed information
10%
11
12errmsg = nargoutchk(1,1,nargout);
13if(~isempty(errmsg))
14 disp(errmsg);
15 return;
16end
17
19
20if(id.JOB == -2)
21 if(id.INST==-9999)
22 disp('Uninitialized instance');
23 return;
24 end
25 if(id.TYPE ~= arithtype)
26 disp('You are trying to call z/d version on a d/z instance');
27 return;
28 end
29 dmumpsmex(id.SYM,id.JOB,id.ICNTL,id.CNTL,id.PERM_IN,id.COLSCA,id.ROWSCA,id.RHS,id.VAR_SCHUR,id.INST,id.REDRHS,id.KEEP,id.DKEEP);
30 id = [];
31 return;
32end
33
34
35if(id.JOB == -1)
36 if(id.INST~=-9999)
37 disp('Already initialized instance');
38 return;
40 [inform,rinform,sol,inst,schur,redrhs,pivnul_list,sym_perm,uns_perm,icntl,cntl,colsca_out,rowsca_out,keep_out,dkeep_out] = dmumpsmex(id.SYM,id.JOB,id.ICNTL,id.CNTL,id.PERM_IN,id.COLSCA,id.ROWSCA,id.RHS,id.VAR_SCHUR,id.INST,id.REDRHS,id.KEEP,id.DKEEP);
41 id.INFOG = inform;
42 id.RINFOG = rinform;
43 id.SOL = sol;
44 id.INST = inst;
45 id.SCHUR = schur;
46 id.REDRHS = redrhs;
47 id.PIVNUL_LIST = pivnul_list;
48 id.SYM_PERM = sym_perm;
49 id.UNS_PERM = uns_perm;
50 id.TYPE = arithtype;
51 id.ICNTL = icntl;
52 id.CNTL = cntl;
53 id.COLSCA = colsca_out;
54 id.ROWSCA = rowsca_out;
55 id.KEEP = keep_out;
56 id.DKEEP = dkeep_out;
57 return;
58end
59
60if(id.INST==-9999)
61 disp('Uninitialized instance');
62 return;
63end
64
65if(id.TYPE ~= arithtype)
66 disp('You are trying to call z/d version on a d/z instance');
67 return;
68end
69
70[inform,rinform,sol,inst,schur,redrhs,pivnul_list,sym_perm,uns_perm,icntl,cntl,colsca_out,rowsca_out,keep_out,dkeep_out] = dmumpsmex(id.SYM,id.JOB,id.ICNTL,id.CNTL,id.PERM_IN,id.COLSCA,id.ROWSCA,id.RHS,id.VAR_SCHUR,id.INST,id.REDRHS,id.KEEP,id.DKEEP,mat);
71id.INFOG = inform;
72id.RINFOG = rinform;
73id.SOL = sol;
74id.INST = inst;
75if(id.JOB == 2 | id.JOB == 4 | id.JOB == 6)
76 if(id.SYM == 0)
77 id.SCHUR = schur';
78 else
79 id.SCHUR = triu(schur)+tril(schur',-1);
80 end
81end
82id.REDRHS = redrhs;
83id.PIVNUL_LIST = pivnul_list;
84id.SYM_PERM(sym_perm) = [1:size(mat,1)];
85id.UNS_PERM = uns_perm;
86id.ICNTL=icntl;
87id.CNTL=cntl;
88id.COLSCA=colsca_out;
89id.ROWSCA=rowsca_out;
90id.KEEP=keep_out;
91id.DKEEP=dkeep_out;
#define ICNTL(I)
#define TYPE
Definition clamov.c:7
!This file is part of MUMPS
Definition cmumps_root.h:2
end diagonal values have been computed in the(sparse) matrix id.SOL
id KEEP
Definition dmumps.m:55
end[inform, rinform, sol, inst, schur, redrhs, pivnul_list, sym_perm, uns_perm, icntl, cntl, colsca_out, rowsca_out, keep_out, dkeep_out]
Definition dmumps.m:40
id REDRHS
Definition dmumps.m:46
end arithtype
Definition dmumps.m:18
end dmumpsmex(id.SYM, id.JOB, id.ICNTL, id.CNTL, id.PERM_IN, id.COLSCA, id.ROWSCA, id.RHS, id.VAR_SCHUR, id.INST, id.REDRHS, id.KEEP, id.DKEEP)
id CNTL
Definition dmumps.m:52
id COLSCA
Definition dmumps.m:53
return
Definition dmumps.m:15
id ROWSCA
Definition dmumps.m:54
id DKEEP
Definition dmumps.m:56
subroutine errmsg(key)
Definition errmsg.F:40
we set the rigth hand side id RHS
if(norm(mat *id.SOL - id.RHS, 'inf') > sqrt(eps)) disp('WARNING els disp)('SOLUTION OK')
for(i8=*sizetab-1;i8 >=0;i8--)
****************************************This help menu gives details about the use of dmumps
Definition mumps_help.m:2
#define PERM_IN
Definition mumpsmex.c:36
#define VAR_SCHUR
Definition mumpsmex.c:40
#define JOB
Definition mumpsmex.c:33
#define INST
Definition mumpsmex.c:41
#define SYM
Definition mumpsmex.c:32
sol