33 1 NDDL ,NNZ ,IADK ,JDIK ,DIAG_K ,
34 2 LT_K ,IADM ,JDIM ,DIAG_M, LT_M ,
35 3 PSI ,NNZM ,MAXC ,MAXA ,MAX_L ,
40#include "implicit_f.inc"
44 INTEGER NDDL ,NNZ ,IADK(*),(*),NNZM ,IADM(*),JDIM(*),
45 . MAXC ,MAXA ,MAX_L,IOPT,NNE
48 . diag_k(*), diag_m(*), lt_k(*) ,lt_m(*) ,psi
53 INTEGER I,J,K,M,N,NC(NDDL),JM(MAXC,NDDL),I1
55 . PSR,TOL,MJ(MAXA),A(MAXA,MAXC)
57 CALL sp_static(nddl ,iadk ,jdik ,diag_k ,lt_k ,
58 . iadm ,jdim ,nnzm ,nc ,jm ,
66 CALL get_suba(nddl ,iadk ,jdik ,diag_k ,lt_k ,
67 . nc ,jm ,a ,maxc ,maxa ,
69 IF (m>maxa)
WRITE(*,*)
'M>MAXB',m,maxa
71 CALL imp_saic(m ,nc(i) ,a ,mj ,maxa )
77 IF (diag_m(i)<=em20) nne=nne+1
80 psr = tol*abs(diag_m(i1))
81 IF (abs(mj(k))>=psr)
THEN
84 WRITE(*,*)
'NNZM>MAX_L',nnzm,maxc,i
146 SUBROUTINE get_suba(NDDL ,IADK ,JDIK ,DIAG_K ,LT_K ,
147 . NC ,JM ,A ,MAXC ,MAXA ,
152#include "implicit_f.inc"
156 INTEGER NDDL ,MAXC,MAXA,IADK(*) ,JDIK(*),IM,M
157 INTEGER NC(*),JM(MAXC,*)
160 . A(MAXA,*),LT_K(*),DIAG_K(*),MJ(*)
170 INTEGER I,I1,J,K,K0,NL,N,JN,IUN
187 CALL get_kijs(j ,i ,iadk,jdik,lt_k ,a(m,n))
196 CALL get_kijs(i ,j ,iadk,jdik,lt_k ,a(m,k))
202 CALL get_kijs(j ,i ,iadk,jdik,lt_k ,a(m,k))
206 CALL get_kijs(i ,j ,iadk,jdik,lt_k ,a(m,k))
214 n=intab2(nc(im),jm(1,im),nc(i),jm(1,i))
216 IF(m==maxa)
write(*,*)
'mem',n,i
224 CALL get_kijs(j ,i ,iadk,jdik,lt_k ,a(m,k))
228 CALL get_kijs(i ,j ,iadk,jdik,lt_k ,a(m,k))
255#include "implicit_f.inc"
262 . A(MAXC,*),D_R(*),TAU(*)
275 scal=
max(scal,abs(a(i,j)))
280 WRITE(*,*)
'SIGNULAR A'
287 CALL produt_v( l ,a(j,j) ,a(j,j) ,norm2)
288 s =sign(sqrt(norm2),a(j,j))
294 CALL produt_v( l ,a(j,j) ,a(j,k) ,norm2)
297 a(i,k)=a(i,k)-s*a(i,j)
subroutine sp_static(nddl, iadk, jdik, diag_k, lt_k, iadm, jdim, nnzm, nc, jm, maxc, psi, ip)
subroutine imp_pc_inv(nddl, nnz, iadk, jdik, diag_k, lt_k, iadm, jdim, diag_m, lt_m, psi, nnzm, maxc, maxa, max_l, iopt, nne)
subroutine get_suba(nddl, iadk, jdik, diag_k, lt_k, nc, jm, a, maxc, maxa, im, m, mj)