43 SUBROUTINE imp_mumps1(NDDL0 , NNZK0 , NDDL , NNZK , NNMAX ,
44 . NODGLOB, IDDL , NDOF , INLOC, IKC ,
45 . IADK , JDIK , DIAG_K, LT_K , IAD_ELEM,
46 . FR_ELEM, MUMPS_PAR, CDDLP , IADI , JDII ,
47 . ITOK , DIAG_I , LT_I , NDDLI, NNZI ,
58 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
59#include
"implicit_f.inc"
64#include "dmumps_struc.h"
73 INTEGER NDDL0, NNZK0, NDDL, NNZK, NNMAX, NODGLOB(*), IDDL(*),
74 . NDOF(*), INLOC(*), IKC(*), IADK(*), JDIK(*),
75 . IAD_ELEM(2,*), FR_ELEM(*), CDDLP(*), IADI(*), JDII(*),
76 . ITOK(*), NDDLI, NNZI,IMPRINT,TLEN, IT
78 . diag_k(*), lt_k(*), diag_i(*), lt_i(*)
80 TYPE(dmumps_struc) MUMPS_PAR
90 INTEGER NDDLG0, NNZKG0, NDDLG, NNZKG, NNMAXG,
91 . NDDL0P(), NNZK0P(NSPMD), NDDLP(NSPMD),
92 . NNZKP(NSPMD), NNMAXP(NSPMD), NKLOC,
93 . NKFRONT, NKFLOC, NZLOC, NNZ, NZP(NSPMD-1), (NDDL),
95 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITK
97 . ,
DIMENSION(:),
ALLOCATABLE :: RTK
107 IF (ncycle==1.AND.inconv==1)
THEN
108 mumps_par%ICNTL(3) = iout
110 mumps_par%ICNTL(3) = -1
114 mumps_par%ICNTL(3) = iout
115 mumps_par%ICNTL(4) = m_msg
119 mumps_par%ICNTL(7) = 7
121 mumps_par%ICNTL(7) = m_order
124 mumps_par%ICNTL(13) = 1
128 IF (m_ocore > 0)
THEN
129 CALL tmpenvf(mumps_par%OOC_TMPDIR,tlen)
130 mumps_par%ICNTL(22)=1
137 mumps_par%ICNTL(18)=3
138 ELSEIF (imumpsd==2)
THEN
139 mumps_par%ICNTL(18)=0
141 IF (idtc==3) mumps_par%ICNTL(13)=1
149 1 nddlg0 ,nnzkg0 ,nddlg ,nnzkg ,nnmaxg ,
150 2 nddl0p ,nnzk0p ,nddlp ,nnzkp ,nnmaxp )
152 CALL spmd_cddl(nddl, nodglob, iddl, ndof, cddlp,
153 . inloc, ikc, nddlg, nddlp)
156 ALLOCATE(itk(2,nnzt),rtk(nnzt))
163 . iadk, jdik, diag_k, lt_k, cddlp,
164 . nkloc, nkfront, itk, rtk, iddl,
166 . nddl, nnzk, iacti, nddli, nnzi,
167 . iadi, jdii, itok, diag_i, lt_i )
176 ALLOCATE(mumps_par%A_LOC(nzloc),
177 . mumps_par%IRN_LOC(nzloc),
178 . mumps_par%JCN_LOC(nzloc))
180 ALLOCATE(mumps_par%RHS(nddlg))
182 ALLOCATE(mumps_par%RHS(0))
185 mumps_par%NZ_LOC=nzloc
188 mumps_par%IRN_LOC(i)=itk(1,i)
189 mumps_par%JCN_LOC(i)=itk(2,i)
192 ELSEIF (imumpsd==2)
THEN
196 ALLOCATE(mumps_par%A(nnz),
197 . mumps_par%IRN(nnz),
198 . mumps_par%JCN(nnz),
199 . mumps_par%RHS(nddlg))
203 ALLOCATE(mumps_par%A(0),
210 . itk, rtk, nzloc, mumps_par%A, mumps_par%IRN,
211 . mumps_par%JCN, nzp)
216 mumps_par%ICNTL(18)=0
222 nnzk = nnzk + nddli + nnzi
224 ALLOCATE(mumps_par%A(nddl+nnzk),
226 . mumps_par%JCN(nddl+nnzk),
235 mumps_par%A(nnz)=diag_i(i)
236 DO n=iadi(i),iadi(i+1)-1
239 mumps_par%JCN(nnz)=itok(jdii(n))
240 mumps_par%A(nnz)=lt_i(n)
247 mumps_par%A(nnz)=diag_k(i)
248 DO j=iadk(i),iadk(i+1)-1
251 mumps_par%JCN(nnz)=jdik(j)
252 mumps_par%A(nnz)=lt_k(j)
258 WRITE(istdo,
'(A21,I10,A8,I10)')
259 .' mumps dim : nnz =
',NNZK+NDDL,' nnzfr =
',0
263 MUMPS_PAR%NZ=NNZK+NDDL
268.AND..OR.
IF (PRSTIFMAT == 1 (ILINE==1 (PRSTIFMAT_NC == NCYCLE
269.AND.
. PRSTIFMAT_IT == IT))) THEN
276 CALL PRINT_STIFF_MAT(MUMPS_PAR, NDDL, NODGLOB, IDDL, NDOF,
277 . CDDLP, INLOC, IKC, NDDLG, NDDLP)
2811000 FORMAT(5X,'--stiffness matrix is printed--
')
subroutine mumps_set2(iadk, jdik, diag_k, lt_k, cddlp, nkloc, nkfront, itk, rtk, iddl, inloc, iad_elem, fr_elem, ndof, ikc, nddl, nnzk, iacti, nddli, nnzi, iadi, jdii, itok, diag_i, lt_i)
subroutine imp_mumps1(nddl0, nnzk0, nddl, nnzk, nnmax, nodglob, iddl, ndof, inloc, ikc, iadk, jdik, diag_k, lt_k, iad_elem, fr_elem, mumps_par, cddlp, iadi, jdii, itok, diag_i, lt_i, nddli, nnzi, imprint, it)