19 integer(4),
parameter :: krealp = 8
21 integer(kind=kint) :: NPFIU, NPFIL
22 integer(kind=kint) :: N
23 integer(kind=kint),
pointer :: inumFI1L(:) => null()
24 integer(kind=kint),
pointer :: inumFI1U(:) => null()
25 integer(kind=kint),
pointer :: FI1L(:) => null()
26 integer(kind=kint),
pointer :: FI1U(:) => null()
28 integer(kind=kint),
pointer :: indexL(:) => null()
29 integer(kind=kint),
pointer :: indexU(:) => null()
30 integer(kind=kint),
pointer :: itemL(:) => null()
31 integer(kind=kint),
pointer :: itemU(:) => null()
32 real(kind=
kreal),
pointer :: d(:) => null()
33 real(kind=
kreal),
pointer :: al(:) => null()
34 real(kind=
kreal),
pointer :: au(:) => null()
36 real(kind=krealp),
pointer :: sainvu(:) => null()
37 real(kind=krealp),
pointer :: sainvl(:) => null()
38 real(kind=krealp),
pointer :: sainvd(:) => null()
39 real(kind=
kreal),
pointer :: t(:) => null()
50 integer(kind=kint ) :: precond
52 real(kind=krealp) :: filter
60 indexl => hecmat%indexL
61 indexu => hecmat%indexU
65 if (precond.eq.20)
call form_ilu1_sainv_33(hecmat)
67 allocate (sainvd(9*hecmat%NP))
68 allocate (sainvl(9*npfiu))
69 allocate (t(3*hecmat%NP))
74 filter= hecmat%Rarray(5)
76 write(*,
"(a,F15.8)")
"### SAINV FILTER :",filter
78 call hecmw_sainv_33(hecmat)
80 allocate (sainvu(9*npfiu))
83 call hecmw_sainv_make_u_33(hecmat)
87 subroutine hecmw_sainv_lu_33()
89 integer(kind=kint) :: i,j,js,je,in
90 real(kind=
kreal) :: x1, x2, x3
93 sainvd(9*i-5) = sainvd(9*i-5)*sainvd(9*i-4)
94 sainvd(9*i-2) = sainvd(9*i-2)*sainvd(9*i )
95 sainvd(9*i-1) = sainvd(9*i-1)*sainvd(9*i )
106 sainvl(9*j-8) = sainvl(9*j-8)*x1
107 sainvl(9*j-7) = sainvl(9*j-7)*x1
108 sainvl(9*j-6) = sainvl(9*j-6)*x1
109 sainvl(9*j-5) = sainvl(9*j-5)*x2
110 sainvl(9*j-4) = sainvl(9*j-4)*x2
111 sainvl(9*j-3) = sainvl(9*j-3)*x2
112 sainvl(9*j-2) = sainvl(9*j-2)*x3
113 sainvl(9*j-1) = sainvl(9*j-1)*x3
114 sainvl(9*j ) = sainvl(9*j )*x3
118 end subroutine hecmw_sainv_lu_33
122 real(kind=
kreal),
intent(inout) :: zp(:)
123 real(kind=
kreal),
intent(in) :: r(:)
124 integer(kind=kint) :: in, i, j, isl, iel, isu, ieu
125 real(kind=
kreal) :: sw1, sw2, sw3, x1, x2, x3
144 sw1= sw1 + sainvl(9*j-8)*x1 + sainvl(9*j-7)*x2 + sainvl(9*j-6)*x3
145 sw2= sw2 + sainvl(9*j-5)*x1 + sainvl(9*j-4)*x2 + sainvl(9*j-3)*x3
146 sw3= sw3 + sainvl(9*j-2)*x1 + sainvl(9*j-1)*x2 + sainvl(9*j )*x3
153 t(3*i-2)= (x1 + sw1)*sainvd(9*i-8)
154 t(3*i-1)= (x2 + sainvd(9*i-7)*x1 + sw2)*sainvd(9*i-4)
155 t(3*i )= (x3 + sainvd(9*i-6)*x1 + sainvd(9*i-3)*x2 + sw3)*sainvd(9*i )
165 isu= inumfi1u(i-1) + 1
172 sw1= sw1 + sainvu(9*j-8)*x1 + sainvu(9*j-7)*x2 + sainvu(9*j-6)*x3
173 sw2= sw2 + sainvu(9*j-5)*x1 + sainvu(9*j-4)*x2 + sainvu(9*j-3)*x3
174 sw3= sw3 + sainvu(9*j-2)*x1 + sainvu(9*j-1)*x2 + sainvu(9*j )*x3
181 zp(3*i-2)= x1 + sw1 + sainvd(9*i-7)*x2 + sainvd(9*i-6)*x3
182 zp(3*i-1)= x2 + sw2 + sainvd(9*i-3)*x3
194 subroutine hecmw_sainv_33(hecMAT)
198 integer(kind=kint) :: i, j, js, je, in, itr
199 real(kind=krealp) :: x1, x2, x3, dd, dd1, dd2, dd3, dtemp(3)
200 real(kind=krealp) :: filter
201 real(kind=krealp),
allocatable :: zz(:), vv(:)
203 filter= hecmat%Rarray(5)
205 allocate (vv(3*hecmat%NP))
206 allocate (zz(3*hecmat%NP))
216 zz(3*itr-2)= sainvd(9*itr-8)
217 zz(3*itr-1)= sainvd(9*itr-5)
218 zz(3*itr )= sainvd(9*itr-2)
222 js= inumfi1l(itr-1) + 1
226 zz(3*in-2)= sainvl(9*j-8)
227 zz(3*in-1)= sainvl(9*j-7)
228 zz(3*in )= sainvl(9*j-6)
235 vv(3*i-2) = vv(3*i-2) + d(9*i-8)*x1 + d(9*i-7)*x2 + d(9*i-6)*x3
236 vv(3*i-1) = vv(3*i-1) + d(9*i-5)*x1 + d(9*i-4)*x2 + d(9*i-3)*x3
237 vv(3*i ) = vv(3*i ) + d(9*i-2)*x1 + d(9*i-1)*x2 + d(9*i )*x3
243 vv(3*in-2)= vv(3*in-2) + al(9*j-8)*x1 + al(9*j-5)*x2 + al(9*j-2)*x3
244 vv(3*in-1)= vv(3*in-1) + al(9*j-7)*x1 + al(9*j-4)*x2 + al(9*j-1)*x3
245 vv(3*in )= vv(3*in ) + al(9*j-6)*x1 + al(9*j-3)*x2 + al(9*j )*x3
252 vv(3*in-2)= vv(3*in-2) + au(9*j-8)*x1 + au(9*j-5)*x2 + au(9*j-2)*x3
253 vv(3*in-1)= vv(3*in-1) + au(9*j-7)*x1 + au(9*j-4)*x2 + au(9*j-1)*x3
254 vv(3*in )= vv(3*in ) + au(9*j-6)*x1 + au(9*j-3)*x2 + au(9*j )*x3
269 sainvd(9*i-8) = vv(3*i-2)
270 sainvd(9*i-4) = vv(3*i-2)*sainvd(9*i-7) + vv(3*i-1)
271 sainvd(9*i ) = vv(3*i-2)*sainvd(9*i-6) + vv(3*i-1)*sainvd(9*i-3) + vv(3*i)
272 js= inumfi1l(i-1) + 1
279 sainvd(9*i-8)= sainvd(9*i-8) + x1*sainvl(9*j-8) + x2*sainvl(9*j-7) + x3*sainvl(9*j-6)
280 sainvd(9*i-4)= sainvd(9*i-4) + x1*sainvl(9*j-5) + x2*sainvl(9*j-4) + x3*sainvl(9*j-3)
281 sainvd(9*i )= sainvd(9*i ) + x1*sainvl(9*j-2) + x2*sainvl(9*j-1) + x3*sainvl(9*j )
288 dd = 1.0d0/sainvd(9*itr-8)
290 sainvd(9*itr-4) =sainvd(9*itr-4)*dd
291 sainvd(9*itr ) =sainvd(9*itr )*dd
294 sainvd(9*i-8) = sainvd(9*i-8)*dd
295 sainvd(9*i-4) = sainvd(9*i-4)*dd
296 sainvd(9*i ) = sainvd(9*i )*dd
302 if(dabs(dd2) > filter)
then
303 sainvd(9*itr-7)= sainvd(9*itr-7) - dd2*zz(3*itr-2)
304 js= inumfi1l(itr-1) + 1
308 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
309 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
310 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
315 if(dabs(dd3) > filter)
then
316 sainvd(9*itr-6)= sainvd(9*itr-6) - dd3*zz(3*itr-2)
317 js= inumfi1l(itr-1) + 1
321 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
322 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
323 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
328 js= inumfi1l(i-1) + 1
331 if(dabs(dd1) > filter)
then
335 sainvl(9*j-8) = sainvl(9*j-8)-dd1*zz(3*in-2)
336 sainvl(9*j-7) = sainvl(9*j-7)-dd1*zz(3*in-1)
337 sainvl(9*j-6) = sainvl(9*j-6)-dd1*zz(3*in )
341 if(dabs(dd2) > filter)
then
345 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
346 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
347 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
351 if(dabs(dd3) > filter)
then
355 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
356 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
357 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
369 zz(3*itr-2)= sainvd(9*itr-7)
370 zz(3*itr-1)= sainvd(9*itr-4)
371 zz(3*itr )= sainvd(9*itr-1)
375 js= inumfi1l(itr-1) + 1
379 zz(3*in-2)= sainvl(9*j-5)
380 zz(3*in-1)= sainvl(9*j-4)
381 zz(3*in )= sainvl(9*j-3)
388 vv(3*i-2) = vv(3*i-2) + d(9*i-8)*x1 + d(9*i-7)*x2 + d(9*i-6)*x3
389 vv(3*i-1) = vv(3*i-1) + d(9*i-5)*x1 + d(9*i-4)*x2 + d(9*i-3)*x3
390 vv(3*i ) = vv(3*i ) + d(9*i-2)*x1 + d(9*i-1)*x2 + d(9*i )*x3
396 vv(3*in-2)= vv(3*in-2) + al(9*j-8)*x1 + al(9*j-5)*x2 + al(9*j-2)*x3
397 vv(3*in-1)= vv(3*in-1) + al(9*j-7)*x1 + al(9*j-4)*x2 + al(9*j-1)*x3
398 vv(3*in )= vv(3*in ) + al(9*j-6)*x1 + al(9*j-3)*x2 + al(9*j )*x3
405 vv(3*in-2)= vv(3*in-2) + au(9*j-8)*x1 + au(9*j-5)*x2 + au(9*j-2)*x3
406 vv(3*in-1)= vv(3*in-1) + au(9*j-7)*x1 + au(9*j-4)*x2 + au(9*j-1)*x3
407 vv(3*in )= vv(3*in ) + au(9*j-6)*x1 + au(9*j-3)*x2 + au(9*j )*x3
412 dtemp(1) = sainvd(9*itr-8)
420 sainvd(9*i-8) = vv(3*i-2)
421 sainvd(9*i-4) = vv(3*i-2)*sainvd(9*i-7) + vv(3*i-1)
422 sainvd(9*i ) = vv(3*i-2)*sainvd(9*i-6) + vv(3*i-1)*sainvd(9*i-3) + vv(3*i)
423 js= inumfi1l(i-1) + 1
430 sainvd(9*i-8)= sainvd(9*i-8) + x1*sainvl(9*j-8) + x2*sainvl(9*j-7) + x3*sainvl(9*j-6)
431 sainvd(9*i-4)= sainvd(9*i-4) + x1*sainvl(9*j-5) + x2*sainvl(9*j-4) + x3*sainvl(9*j-3)
432 sainvd(9*i )= sainvd(9*i ) + x1*sainvl(9*j-2) + x2*sainvl(9*j-1) + x3*sainvl(9*j )
439 dd = 1.0d0/sainvd(9*itr-4)
441 sainvd(9*itr-8) = dtemp(1)
442 sainvd(9*itr ) =sainvd(9*itr )*dd
445 sainvd(9*i-8) = sainvd(9*i-8)*dd
446 sainvd(9*i-4) = sainvd(9*i-4)*dd
447 sainvd(9*i ) = sainvd(9*i )*dd
452 if(dabs(dd3) > filter)
then
453 sainvd(9*itr-6)= sainvd(9*itr-6) - dd3*zz(3*itr-2)
454 sainvd(9*itr-3)= sainvd(9*itr-3) - dd3*zz(3*itr-1)
456 js= inumfi1l(itr-1) + 1
460 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
461 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
462 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
467 js= inumfi1l(i-1) + 1
470 if(dabs(dd1) > filter)
then
474 sainvl(9*j-8) = sainvl(9*j-8)-dd1*zz(3*in-2)
475 sainvl(9*j-7) = sainvl(9*j-7)-dd1*zz(3*in-1)
476 sainvl(9*j-6) = sainvl(9*j-6)-dd1*zz(3*in )
480 if(dabs(dd2) > filter)
then
484 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
485 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
486 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
490 if(dabs(dd3) > filter)
then
494 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
495 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
496 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
509 zz(3*itr-2)= sainvd(9*itr-6)
510 zz(3*itr-1)= sainvd(9*itr-3)
511 zz(3*itr )= sainvd(9*itr )
515 js= inumfi1l(itr-1) + 1
519 zz(3*in-2)= sainvl(9*j-2)
520 zz(3*in-1)= sainvl(9*j-1)
521 zz(3*in )= sainvl(9*j )
528 vv(3*i-2) = vv(3*i-2) + d(9*i-8)*x1 + d(9*i-7)*x2 + d(9*i-6)*x3
529 vv(3*i-1) = vv(3*i-1) + d(9*i-5)*x1 + d(9*i-4)*x2 + d(9*i-3)*x3
530 vv(3*i ) = vv(3*i ) + d(9*i-2)*x1 + d(9*i-1)*x2 + d(9*i )*x3
536 vv(3*in-2)= vv(3*in-2) + al(9*j-8)*x1 + al(9*j-5)*x2 + al(9*j-2)*x3
537 vv(3*in-1)= vv(3*in-1) + al(9*j-7)*x1 + al(9*j-4)*x2 + al(9*j-1)*x3
538 vv(3*in )= vv(3*in ) + al(9*j-6)*x1 + al(9*j-3)*x2 + al(9*j )*x3
545 vv(3*in-2)= vv(3*in-2) + au(9*j-8)*x1 + au(9*j-5)*x2 + au(9*j-2)*x3
546 vv(3*in-1)= vv(3*in-1) + au(9*j-7)*x1 + au(9*j-4)*x2 + au(9*j-1)*x3
547 vv(3*in )= vv(3*in ) + au(9*j-6)*x1 + au(9*j-3)*x2 + au(9*j )*x3
552 dtemp(1) = sainvd(9*itr-8)
553 dtemp(2) = sainvd(9*itr-4)
561 sainvd(9*i-8) = vv(3*i-2)
562 sainvd(9*i-4) = vv(3*i-2)*sainvd(9*i-7) + vv(3*i-1)
563 sainvd(9*i ) = vv(3*i-2)*sainvd(9*i-6) + vv(3*i-1)*sainvd(9*i-3) + vv(3*i)
564 js= inumfi1l(i-1) + 1
571 sainvd(9*i-8)= sainvd(9*i-8) + x1*sainvl(9*j-8) + x2*sainvl(9*j-7) + x3*sainvl(9*j-6)
572 sainvd(9*i-4)= sainvd(9*i-4) + x1*sainvl(9*j-5) + x2*sainvl(9*j-4) + x3*sainvl(9*j-3)
573 sainvd(9*i )= sainvd(9*i ) + x1*sainvl(9*j-2) + x2*sainvl(9*j-1) + x3*sainvl(9*j )
580 dd = 1.0d0/sainvd(9*itr )
582 sainvd(9*itr-8) = dtemp(1)
583 sainvd(9*itr-4) = dtemp(2)
586 sainvd(9*i-8) = sainvd(9*i-8)*dd
587 sainvd(9*i-4) = sainvd(9*i-4)*dd
588 sainvd(9*i ) = sainvd(9*i )*dd
593 js= inumfi1l(i-1) + 1
596 if(dabs(dd1) > filter)
then
600 sainvl(9*j-8) = sainvl(9*j-8)-dd1*zz(3*in-2)
601 sainvl(9*j-7) = sainvl(9*j-7)-dd1*zz(3*in-1)
602 sainvl(9*j-6) = sainvl(9*j-6)-dd1*zz(3*in )
606 if(dabs(dd2) > filter)
then
610 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
611 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
612 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
616 if(dabs(dd3) > filter)
then
620 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
621 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
622 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
631 sainvd(9*i-8) = 1.0d0/sainvd(9*i-8)
632 sainvd(9*i-4) = 1.0d0/sainvd(9*i-4)
633 sainvd(9*i ) = 1.0d0/sainvd(9*i )
634 sainvd(9*i-5) = sainvd(9*i-7)
635 sainvd(9*i-2) = sainvd(9*i-6)
636 sainvd(9*i-1) = sainvd(9*i-3)
639 end subroutine hecmw_sainv_33
641 subroutine hecmw_sainv_make_u_33(hecMAT)
644 integer(kind=kint) i,j,k,n,m,o
645 integer(kind=kint) is,ie,js,je
658 sainvu(9*n-8)=sainvl(9*j-8)
659 sainvu(9*n-7)=sainvl(9*j-5)
660 sainvu(9*n-6)=sainvl(9*j-2)
661 sainvu(9*n-5)=sainvl(9*j-7)
662 sainvu(9*n-4)=sainvl(9*j-4)
663 sainvu(9*n-3)=sainvl(9*j-1)
664 sainvu(9*n-2)=sainvl(9*j-6)
665 sainvu(9*n-1)=sainvl(9*j-3)
666 sainvu(9*n )=sainvl(9*j )
673 end subroutine hecmw_sainv_make_u_33
678 subroutine form_ilu0_sainv_33(hecMAT)
682 allocate (inumfi1l(0:hecmat%NP), inumfi1u(0:hecmat%NP))
683 allocate (fi1l(hecmat%NPL), fi1u(hecmat%NPU))
690 inumfi1l = hecmat%indexL
691 inumfi1u = hecmat%indexU
698 end subroutine form_ilu0_sainv_33
703 subroutine form_ilu1_sainv_33(hecMAT)
707 integer(kind=kint),
allocatable :: iwsl(:), iwsu(:), iw1(:), iw2(:)
708 integer(kind=kint) :: nplf1,npuf1
709 integer(kind=kint) :: i,jj,kk,l,isk,iek,isj,iej
710 integer(kind=kint) :: icou,icou0,icouu,icouu1,icouu2,icouu3,icoul,icoul1,icoul2,icoul3
711 integer(kind=kint) :: j,k,isl,isu
720 allocate (iw1(hecmat%NP) , iw2(hecmat%NP))
721 allocate (inumfi1l(0:hecmat%NP), inumfi1u(0:hecmat%NP))
732 do l= indexl(i-1)+1, indexl(i)
735 do l= indexu(i-1)+1, indexu(i)
743 isj= indexu(kk-1) + 1
747 if (iw1(jj).eq.0 .and. jj.lt.i)
then
748 inumfi1l(i)= inumfi1l(i)+1
751 if (iw1(jj).eq.0 .and. jj.gt.i)
then
752 inumfi1u(i)= inumfi1u(i)+1
757 nplf1= nplf1 + inumfi1l(i)
758 npuf1= npuf1 + inumfi1u(i)
763 allocate (iwsl(0:hecmat%NP), iwsu(0:hecmat%NP))
764 allocate (fi1l(hecmat%NPL+nplf1), fi1u(hecmat%NPU+npuf1))
766 npfiu = hecmat%NPU+npuf1
767 npfil = hecmat%NPL+nplf1
775 iwsl(i)= indexl(i)-indexl(i-1) + inumfi1l(i) + iwsl(i-1)
776 iwsu(i)= indexu(i)-indexu(i-1) + inumfi1u(i) + iwsu(i-1)
782 inumfi1l(i)= inumfi1l(i-1) + inumfi1l(i)
783 inumfi1u(i)= inumfi1u(i-1) + inumfi1u(i)
787 do l= indexl(i-1)+1, indexl(i)
790 do l= indexu(i-1)+1, indexu(i)
798 isj= indexu(kk-1) + 1
802 if (iw1(jj).eq.0 .and. jj.lt.i)
then
804 fi1l(icoul+iwsl(i-1)+indexl(i)-indexl(i-1))= jj
807 if (iw1(jj).eq.0 .and. jj.gt.i)
then
809 fi1u(icouu+iwsu(i-1)+indexu(i)-indexu(i-1))= jj
819 icoul1= indexl(i) - indexl(i-1)
820 icoul2= inumfi1l(i) - inumfi1l(i-1)
821 icoul3= icoul1 + icoul2
822 icouu1= indexu(i) - indexu(i-1)
823 icouu2= inumfi1u(i) - inumfi1u(i-1)
824 icouu3= icouu1 + icouu2
828 do k= indexl(i-1)+1, indexl(i)
833 do k= inumfi1l(i-1)+1, inumfi1l(i)
835 iw1(icou0)= fi1l(icou0+iwsl(i-1))
841 call sainv_sort_33 (iw1, iw2, icoul3, hecmat%NP)
849 do k= indexu(i-1)+1, indexu(i)
854 do k= inumfi1u(i-1)+1, inumfi1u(i)
856 iw1(icou0)= fi1u(icou0+iwsu(i-1))
862 call sainv_sort_33 (iw1, iw2, icouu3, hecmat%NP)
878 deallocate (iw1, iw2)
879 deallocate (iwsl, iwsu)
881 end subroutine form_ilu1_sainv_33
888 subroutine sainv_sort_33(STEM, INUM, N, NP)
891 integer(kind=kint) :: n, np
892 integer(kind=kint),
dimension(NP) :: stem
893 integer(kind=kint),
dimension(NP) :: inum
894 integer(kind=kint),
dimension(:),
allocatable :: istack
895 integer(kind=kint) :: m,nstack,jstack,l,ir,ip,i,j,k,ss,ii,temp,it
897 allocate (istack(-np:+np))
916 if (stem(i).le.ss)
goto 2
927 if (jstack.eq.0)
then
946 if (stem(l+1).gt.stem(ir))
then
955 if (stem(l).gt.stem(ir))
then
964 if (stem(l+1).gt.stem(l))
then
981 if (stem(i).lt.ss)
goto 3
985 if (stem(j).gt.ss)
goto 4
1008 if (jstack.gt.nstack)
then
1009 write (*,*)
'NSTACK overflow'
1013 if (ir-i+1.ge.j-1)
then
1018 istack(jstack )= j-1
1027 end subroutine sainv_sort_33
1032 if (
associated(sainvd))
deallocate(sainvd)
1033 if (
associated(sainvl))
deallocate(sainvl)
1034 if (
associated(sainvu))
deallocate(sainvu)
1035 if (
associated(inumfi1l))
deallocate(inumfi1l)
1036 if (
associated(inumfi1u))
deallocate(inumfi1u)
1037 if (
associated(fi1l))
deallocate(fi1l)
1038 if (
associated(fi1u))
deallocate(fi1u)
integer(kind=kint) function, public hecmw_mat_get_precond(hecMAT)
subroutine, public hecmw_precond_33_sainv_setup(hecMAT)
subroutine, public hecmw_precond_33_sainv_apply(R, ZP)
subroutine, public hecmw_precond_33_sainv_clear()
integer(kind=4), parameter kreal