20 integer(4),
parameter :: krealp = 8
22 integer(kind=kint) :: NPFIU, NPFIL
23 integer(kind=kint) :: N
24 integer(kind=kint),
pointer :: inumFI1L(:) => null()
25 integer(kind=kint),
pointer :: inumFI1U(:) => null()
26 integer(kind=kint),
pointer :: FI1L(:) => null()
27 integer(kind=kint),
pointer :: FI1U(:) => null()
29 integer(kind=kint),
pointer :: indexL(:) => null()
30 integer(kind=kint),
pointer :: indexU(:) => null()
31 integer(kind=kint),
pointer :: itemL(:) => null()
32 integer(kind=kint),
pointer :: itemU(:) => null()
33 real(kind=
kreal),
pointer :: d(:) => null()
34 real(kind=
kreal),
pointer :: al(:) => null()
35 real(kind=
kreal),
pointer :: au(:) => null()
37 real(kind=krealp),
pointer :: sainvu(:) => null()
38 real(kind=krealp),
pointer :: sainvl(:) => null()
39 real(kind=krealp),
pointer :: sainvd(:) => null()
40 real(kind=
kreal),
pointer :: t(:) => null()
51 integer(kind=kint ) :: precond
53 real(kind=krealp) :: filter
61 indexl => hecmat%indexL
62 indexu => hecmat%indexU
66 if (precond.eq.20)
call form_ilu1_sainv_33(hecmat)
68 allocate (sainvd(9*hecmat%NP))
69 allocate (sainvl(9*npfiu))
70 allocate (t(3*hecmat%NP))
75 filter= hecmat%Rarray(5)
77 write(*,
"(a,F15.8)")
"### SAINV FILTER :",filter
79 call hecmw_sainv_33(hecmat)
81 allocate (sainvu(9*npfiu))
84 call hecmw_sainv_make_u_33(hecmat)
88 subroutine hecmw_sainv_lu_33()
90 integer(kind=kint) :: i,j,js,je,in
91 real(kind=
kreal) :: x1, x2, x3
94 sainvd(9*i-5) = sainvd(9*i-5)*sainvd(9*i-4)
95 sainvd(9*i-2) = sainvd(9*i-2)*sainvd(9*i )
96 sainvd(9*i-1) = sainvd(9*i-1)*sainvd(9*i )
107 sainvl(9*j-8) = sainvl(9*j-8)*x1
108 sainvl(9*j-7) = sainvl(9*j-7)*x1
109 sainvl(9*j-6) = sainvl(9*j-6)*x1
110 sainvl(9*j-5) = sainvl(9*j-5)*x2
111 sainvl(9*j-4) = sainvl(9*j-4)*x2
112 sainvl(9*j-3) = sainvl(9*j-3)*x2
113 sainvl(9*j-2) = sainvl(9*j-2)*x3
114 sainvl(9*j-1) = sainvl(9*j-1)*x3
115 sainvl(9*j ) = sainvl(9*j )*x3
119 end subroutine hecmw_sainv_lu_33
123 real(kind=
kreal),
intent(inout) :: zp(:)
124 real(kind=
kreal),
intent(in) :: r(:)
125 integer(kind=kint) :: in, i, j, isl, iel, isu, ieu
126 real(kind=
kreal) :: sw1, sw2, sw3, x1, x2, x3
152 sw1= sw1 + sainvl(9*j-8)*x1 + sainvl(9*j-7)*x2 + sainvl(9*j-6)*x3
153 sw2= sw2 + sainvl(9*j-5)*x1 + sainvl(9*j-4)*x2 + sainvl(9*j-3)*x3
154 sw3= sw3 + sainvl(9*j-2)*x1 + sainvl(9*j-1)*x2 + sainvl(9*j )*x3
161 t(3*i-2)= (x1 + sw1)*sainvd(9*i-8)
162 t(3*i-1)= (x2 + sainvd(9*i-7)*x1 + sw2)*sainvd(9*i-4)
163 t(3*i )= (x3 + sainvd(9*i-6)*x1 + sainvd(9*i-3)*x2 + sw3)*sainvd(9*i )
183 isu= inumfi1u(i-1) + 1
190 sw1= sw1 + sainvu(9*j-8)*x1 + sainvu(9*j-7)*x2 + sainvu(9*j-6)*x3
191 sw2= sw2 + sainvu(9*j-5)*x1 + sainvu(9*j-4)*x2 + sainvu(9*j-3)*x3
192 sw3= sw3 + sainvu(9*j-2)*x1 + sainvu(9*j-1)*x2 + sainvu(9*j )*x3
199 zp(3*i-2)= x1 + sw1 + sainvd(9*i-7)*x2 + sainvd(9*i-6)*x3
200 zp(3*i-1)= x2 + sw2 + sainvd(9*i-3)*x3
218 subroutine hecmw_sainv_33(hecMAT)
222 integer(kind=kint) :: i, j, js, je, in, itr, np
223 real(kind=krealp) :: x1, x2, x3, dd, dd1, dd2, dd3, dtemp(3)
224 real(kind=krealp) :: filter
225 real(kind=krealp),
allocatable :: zz(:), vv(:)
227 filter= hecmat%Rarray(5)
242 zz(3*itr-2)= sainvd(9*itr-8)
243 zz(3*itr-1)= sainvd(9*itr-5)
244 zz(3*itr )= sainvd(9*itr-2)
248 js= inumfi1l(itr-1) + 1
252 zz(3*in-2)= sainvl(9*j-8)
253 zz(3*in-1)= sainvl(9*j-7)
254 zz(3*in )= sainvl(9*j-6)
261 vv(3*i-2) = vv(3*i-2) + d(9*i-8)*x1 + d(9*i-7)*x2 + d(9*i-6)*x3
262 vv(3*i-1) = vv(3*i-1) + d(9*i-5)*x1 + d(9*i-4)*x2 + d(9*i-3)*x3
263 vv(3*i ) = vv(3*i ) + d(9*i-2)*x1 + d(9*i-1)*x2 + d(9*i )*x3
269 vv(3*in-2)= vv(3*in-2) + al(9*j-8)*x1 + al(9*j-5)*x2 + al(9*j-2)*x3
270 vv(3*in-1)= vv(3*in-1) + al(9*j-7)*x1 + al(9*j-4)*x2 + al(9*j-1)*x3
271 vv(3*in )= vv(3*in ) + al(9*j-6)*x1 + al(9*j-3)*x2 + al(9*j )*x3
278 vv(3*in-2)= vv(3*in-2) + au(9*j-8)*x1 + au(9*j-5)*x2 + au(9*j-2)*x3
279 vv(3*in-1)= vv(3*in-1) + au(9*j-7)*x1 + au(9*j-4)*x2 + au(9*j-1)*x3
280 vv(3*in )= vv(3*in ) + au(9*j-6)*x1 + au(9*j-3)*x2 + au(9*j )*x3
303 sainvd(9*i-8) = vv(3*i-2)
304 sainvd(9*i-4) = vv(3*i-2)*sainvd(9*i-7) + vv(3*i-1)
305 sainvd(9*i ) = vv(3*i-2)*sainvd(9*i-6) + vv(3*i-1)*sainvd(9*i-3) + vv(3*i)
306 js= inumfi1l(i-1) + 1
313 sainvd(9*i-8)= sainvd(9*i-8) + x1*sainvl(9*j-8) + x2*sainvl(9*j-7) + x3*sainvl(9*j-6)
314 sainvd(9*i-4)= sainvd(9*i-4) + x1*sainvl(9*j-5) + x2*sainvl(9*j-4) + x3*sainvl(9*j-3)
315 sainvd(9*i )= sainvd(9*i ) + x1*sainvl(9*j-2) + x2*sainvl(9*j-1) + x3*sainvl(9*j )
326 dd = 1.0d0/sainvd(9*itr-8)
328 sainvd(9*itr-4) =sainvd(9*itr-4)*dd
329 sainvd(9*itr ) =sainvd(9*itr )*dd
332 sainvd(9*i-8) = sainvd(9*i-8)*dd
333 sainvd(9*i-4) = sainvd(9*i-4)*dd
334 sainvd(9*i ) = sainvd(9*i )*dd
340 if(dabs(dd2) > filter)
then
341 sainvd(9*itr-7)= sainvd(9*itr-7) - dd2*zz(3*itr-2)
342 js= inumfi1l(itr-1) + 1
346 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
347 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
348 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
353 if(dabs(dd3) > filter)
then
354 sainvd(9*itr-6)= sainvd(9*itr-6) - dd3*zz(3*itr-2)
355 js= inumfi1l(itr-1) + 1
359 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
360 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
361 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
366 js= inumfi1l(i-1) + 1
369 if(dabs(dd1) > filter)
then
373 sainvl(9*j-8) = sainvl(9*j-8)-dd1*zz(3*in-2)
374 sainvl(9*j-7) = sainvl(9*j-7)-dd1*zz(3*in-1)
375 sainvl(9*j-6) = sainvl(9*j-6)-dd1*zz(3*in )
379 if(dabs(dd2) > filter)
then
383 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
384 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
385 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
389 if(dabs(dd3) > filter)
then
393 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
394 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
395 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
407 zz(3*itr-2)= sainvd(9*itr-7)
408 zz(3*itr-1)= sainvd(9*itr-4)
409 zz(3*itr )= sainvd(9*itr-1)
413 js= inumfi1l(itr-1) + 1
417 zz(3*in-2)= sainvl(9*j-5)
418 zz(3*in-1)= sainvl(9*j-4)
419 zz(3*in )= sainvl(9*j-3)
426 vv(3*i-2) = vv(3*i-2) + d(9*i-8)*x1 + d(9*i-7)*x2 + d(9*i-6)*x3
427 vv(3*i-1) = vv(3*i-1) + d(9*i-5)*x1 + d(9*i-4)*x2 + d(9*i-3)*x3
428 vv(3*i ) = vv(3*i ) + d(9*i-2)*x1 + d(9*i-1)*x2 + d(9*i )*x3
434 vv(3*in-2)= vv(3*in-2) + al(9*j-8)*x1 + al(9*j-5)*x2 + al(9*j-2)*x3
435 vv(3*in-1)= vv(3*in-1) + al(9*j-7)*x1 + al(9*j-4)*x2 + al(9*j-1)*x3
436 vv(3*in )= vv(3*in ) + al(9*j-6)*x1 + al(9*j-3)*x2 + al(9*j )*x3
443 vv(3*in-2)= vv(3*in-2) + au(9*j-8)*x1 + au(9*j-5)*x2 + au(9*j-2)*x3
444 vv(3*in-1)= vv(3*in-1) + au(9*j-7)*x1 + au(9*j-4)*x2 + au(9*j-1)*x3
445 vv(3*in )= vv(3*in ) + au(9*j-6)*x1 + au(9*j-3)*x2 + au(9*j )*x3
450 dtemp(1) = sainvd(9*itr-8)
466 sainvd(9*i-8) = vv(3*i-2)
467 sainvd(9*i-4) = vv(3*i-2)*sainvd(9*i-7) + vv(3*i-1)
468 sainvd(9*i ) = vv(3*i-2)*sainvd(9*i-6) + vv(3*i-1)*sainvd(9*i-3) + vv(3*i)
469 js= inumfi1l(i-1) + 1
476 sainvd(9*i-8)= sainvd(9*i-8) + x1*sainvl(9*j-8) + x2*sainvl(9*j-7) + x3*sainvl(9*j-6)
477 sainvd(9*i-4)= sainvd(9*i-4) + x1*sainvl(9*j-5) + x2*sainvl(9*j-4) + x3*sainvl(9*j-3)
478 sainvd(9*i )= sainvd(9*i ) + x1*sainvl(9*j-2) + x2*sainvl(9*j-1) + x3*sainvl(9*j )
489 dd = 1.0d0/sainvd(9*itr-4)
491 sainvd(9*itr-8) = dtemp(1)
492 sainvd(9*itr ) =sainvd(9*itr )*dd
495 sainvd(9*i-8) = sainvd(9*i-8)*dd
496 sainvd(9*i-4) = sainvd(9*i-4)*dd
497 sainvd(9*i ) = sainvd(9*i )*dd
502 if(dabs(dd3) > filter)
then
503 sainvd(9*itr-6)= sainvd(9*itr-6) - dd3*zz(3*itr-2)
504 sainvd(9*itr-3)= sainvd(9*itr-3) - dd3*zz(3*itr-1)
506 js= inumfi1l(itr-1) + 1
510 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
511 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
512 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
517 js= inumfi1l(i-1) + 1
520 if(dabs(dd1) > filter)
then
524 sainvl(9*j-8) = sainvl(9*j-8)-dd1*zz(3*in-2)
525 sainvl(9*j-7) = sainvl(9*j-7)-dd1*zz(3*in-1)
526 sainvl(9*j-6) = sainvl(9*j-6)-dd1*zz(3*in )
530 if(dabs(dd2) > filter)
then
534 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
535 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
536 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
540 if(dabs(dd3) > filter)
then
544 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
545 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
546 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
559 zz(3*itr-2)= sainvd(9*itr-6)
560 zz(3*itr-1)= sainvd(9*itr-3)
561 zz(3*itr )= sainvd(9*itr )
565 js= inumfi1l(itr-1) + 1
569 zz(3*in-2)= sainvl(9*j-2)
570 zz(3*in-1)= sainvl(9*j-1)
571 zz(3*in )= sainvl(9*j )
578 vv(3*i-2) = vv(3*i-2) + d(9*i-8)*x1 + d(9*i-7)*x2 + d(9*i-6)*x3
579 vv(3*i-1) = vv(3*i-1) + d(9*i-5)*x1 + d(9*i-4)*x2 + d(9*i-3)*x3
580 vv(3*i ) = vv(3*i ) + d(9*i-2)*x1 + d(9*i-1)*x2 + d(9*i )*x3
586 vv(3*in-2)= vv(3*in-2) + al(9*j-8)*x1 + al(9*j-5)*x2 + al(9*j-2)*x3
587 vv(3*in-1)= vv(3*in-1) + al(9*j-7)*x1 + al(9*j-4)*x2 + al(9*j-1)*x3
588 vv(3*in )= vv(3*in ) + al(9*j-6)*x1 + al(9*j-3)*x2 + al(9*j )*x3
595 vv(3*in-2)= vv(3*in-2) + au(9*j-8)*x1 + au(9*j-5)*x2 + au(9*j-2)*x3
596 vv(3*in-1)= vv(3*in-1) + au(9*j-7)*x1 + au(9*j-4)*x2 + au(9*j-1)*x3
597 vv(3*in )= vv(3*in ) + au(9*j-6)*x1 + au(9*j-3)*x2 + au(9*j )*x3
602 dtemp(1) = sainvd(9*itr-8)
603 dtemp(2) = sainvd(9*itr-4)
619 sainvd(9*i-8) = vv(3*i-2)
620 sainvd(9*i-4) = vv(3*i-2)*sainvd(9*i-7) + vv(3*i-1)
621 sainvd(9*i ) = vv(3*i-2)*sainvd(9*i-6) + vv(3*i-1)*sainvd(9*i-3) + vv(3*i)
622 js= inumfi1l(i-1) + 1
629 sainvd(9*i-8)= sainvd(9*i-8) + x1*sainvl(9*j-8) + x2*sainvl(9*j-7) + x3*sainvl(9*j-6)
630 sainvd(9*i-4)= sainvd(9*i-4) + x1*sainvl(9*j-5) + x2*sainvl(9*j-4) + x3*sainvl(9*j-3)
631 sainvd(9*i )= sainvd(9*i ) + x1*sainvl(9*j-2) + x2*sainvl(9*j-1) + x3*sainvl(9*j )
642 dd = 1.0d0/sainvd(9*itr )
644 sainvd(9*itr-8) = dtemp(1)
645 sainvd(9*itr-4) = dtemp(2)
648 sainvd(9*i-8) = sainvd(9*i-8)*dd
649 sainvd(9*i-4) = sainvd(9*i-4)*dd
650 sainvd(9*i ) = sainvd(9*i )*dd
655 js= inumfi1l(i-1) + 1
658 if(dabs(dd1) > filter)
then
662 sainvl(9*j-8) = sainvl(9*j-8)-dd1*zz(3*in-2)
663 sainvl(9*j-7) = sainvl(9*j-7)-dd1*zz(3*in-1)
664 sainvl(9*j-6) = sainvl(9*j-6)-dd1*zz(3*in )
668 if(dabs(dd2) > filter)
then
672 sainvl(9*j-5) = sainvl(9*j-5)-dd2*zz(3*in-2)
673 sainvl(9*j-4) = sainvl(9*j-4)-dd2*zz(3*in-1)
674 sainvl(9*j-3) = sainvl(9*j-3)-dd2*zz(3*in )
678 if(dabs(dd3) > filter)
then
682 sainvl(9*j-2) = sainvl(9*j-2)-dd3*zz(3*in-2)
683 sainvl(9*j-1) = sainvl(9*j-1)-dd3*zz(3*in-1)
684 sainvl(9*j ) = sainvl(9*j )-dd3*zz(3*in )
693 sainvd(9*i-8) = 1.0d0/sainvd(9*i-8)
694 sainvd(9*i-4) = 1.0d0/sainvd(9*i-4)
695 sainvd(9*i ) = 1.0d0/sainvd(9*i )
696 sainvd(9*i-5) = sainvd(9*i-7)
697 sainvd(9*i-2) = sainvd(9*i-6)
698 sainvd(9*i-1) = sainvd(9*i-3)
701 end subroutine hecmw_sainv_33
703 subroutine hecmw_sainv_make_u_33(hecMAT)
706 integer(kind=kint) i,j,k,n,m,o
707 integer(kind=kint) is,ie,js,je
720 sainvu(9*n-8)=sainvl(9*j-8)
721 sainvu(9*n-7)=sainvl(9*j-5)
722 sainvu(9*n-6)=sainvl(9*j-2)
723 sainvu(9*n-5)=sainvl(9*j-7)
724 sainvu(9*n-4)=sainvl(9*j-4)
725 sainvu(9*n-3)=sainvl(9*j-1)
726 sainvu(9*n-2)=sainvl(9*j-6)
727 sainvu(9*n-1)=sainvl(9*j-3)
728 sainvu(9*n )=sainvl(9*j )
735 end subroutine hecmw_sainv_make_u_33
740 subroutine form_ilu0_sainv_33(hecMAT)
744 allocate (inumfi1l(0:hecmat%NP), inumfi1u(0:hecmat%NP))
745 allocate (fi1l(hecmat%NPL), fi1u(hecmat%NPU))
752 inumfi1l = hecmat%indexL
753 inumfi1u = hecmat%indexU
760 end subroutine form_ilu0_sainv_33
765 subroutine form_ilu1_sainv_33(hecMAT)
769 integer(kind=kint),
allocatable :: iwsl(:), iwsu(:), iw1(:), iw2(:)
770 integer(kind=kint) :: nplf1,npuf1
771 integer(kind=kint) :: i,jj,kk,l,isk,iek,isj,iej
772 integer(kind=kint) :: icou,icou0,icouu,icouu1,icouu2,icouu3,icoul,icoul1,icoul2,icoul3
773 integer(kind=kint) :: j,k,isl,isu
782 allocate (iw1(hecmat%NP) , iw2(hecmat%NP))
783 allocate (inumfi1l(0:hecmat%NP), inumfi1u(0:hecmat%NP))
794 do l= indexl(i-1)+1, indexl(i)
797 do l= indexu(i-1)+1, indexu(i)
805 isj= indexu(kk-1) + 1
809 if (iw1(jj).eq.0 .and. jj.lt.i)
then
810 inumfi1l(i)= inumfi1l(i)+1
813 if (iw1(jj).eq.0 .and. jj.gt.i)
then
814 inumfi1u(i)= inumfi1u(i)+1
819 nplf1= nplf1 + inumfi1l(i)
820 npuf1= npuf1 + inumfi1u(i)
825 allocate (iwsl(0:hecmat%NP), iwsu(0:hecmat%NP))
826 allocate (fi1l(hecmat%NPL+nplf1), fi1u(hecmat%NPU+npuf1))
828 npfiu = hecmat%NPU+npuf1
829 npfil = hecmat%NPL+nplf1
837 iwsl(i)= indexl(i)-indexl(i-1) + inumfi1l(i) + iwsl(i-1)
838 iwsu(i)= indexu(i)-indexu(i-1) + inumfi1u(i) + iwsu(i-1)
844 inumfi1l(i)= inumfi1l(i-1) + inumfi1l(i)
845 inumfi1u(i)= inumfi1u(i-1) + inumfi1u(i)
849 do l= indexl(i-1)+1, indexl(i)
852 do l= indexu(i-1)+1, indexu(i)
860 isj= indexu(kk-1) + 1
864 if (iw1(jj).eq.0 .and. jj.lt.i)
then
866 fi1l(icoul+iwsl(i-1)+indexl(i)-indexl(i-1))= jj
869 if (iw1(jj).eq.0 .and. jj.gt.i)
then
871 fi1u(icouu+iwsu(i-1)+indexu(i)-indexu(i-1))= jj
881 icoul1= indexl(i) - indexl(i-1)
882 icoul2= inumfi1l(i) - inumfi1l(i-1)
883 icoul3= icoul1 + icoul2
884 icouu1= indexu(i) - indexu(i-1)
885 icouu2= inumfi1u(i) - inumfi1u(i-1)
886 icouu3= icouu1 + icouu2
890 do k= indexl(i-1)+1, indexl(i)
895 do k= inumfi1l(i-1)+1, inumfi1l(i)
897 iw1(icou0)= fi1l(icou0+iwsl(i-1))
903 call sainv_sort_33 (iw1, iw2, icoul3, hecmat%NP)
911 do k= indexu(i-1)+1, indexu(i)
916 do k= inumfi1u(i-1)+1, inumfi1u(i)
918 iw1(icou0)= fi1u(icou0+iwsu(i-1))
924 call sainv_sort_33 (iw1, iw2, icouu3, hecmat%NP)
940 deallocate (iw1, iw2)
941 deallocate (iwsl, iwsu)
943 end subroutine form_ilu1_sainv_33
950 subroutine sainv_sort_33(STEM, INUM, N, NP)
953 integer(kind=kint) :: n, np
954 integer(kind=kint),
dimension(NP) :: stem
955 integer(kind=kint),
dimension(NP) :: inum
956 integer(kind=kint),
dimension(:),
allocatable :: istack
957 integer(kind=kint) :: m,nstack,jstack,l,ir,ip,i,j,k,ss,ii,temp,it
959 allocate (istack(-np:+np))
978 if (stem(i).le.ss)
goto 2
989 if (jstack.eq.0)
then
1008 if (stem(l+1).gt.stem(ir))
then
1017 if (stem(l).gt.stem(ir))
then
1026 if (stem(l+1).gt.stem(l))
then
1043 if (stem(i).lt.ss)
goto 3
1047 if (stem(j).gt.ss)
goto 4
1070 if (jstack.gt.nstack)
then
1071 write (*,*)
'NSTACK overflow'
1075 if (ir-i+1.ge.j-1)
then
1080 istack(jstack )= j-1
1089 end subroutine sainv_sort_33
1094 if (
associated(sainvd))
deallocate(sainvd)
1095 if (
associated(sainvl))
deallocate(sainvl)
1096 if (
associated(sainvu))
deallocate(sainvu)
1097 if (
associated(inumfi1l))
deallocate(inumfi1l)
1098 if (
associated(inumfi1u))
deallocate(inumfi1u)
1099 if (
associated(fi1l))
deallocate(fi1l)
1100 if (
associated(fi1u))
deallocate(fi1u)
integer(kind=kint) function, public hecmw_mat_get_precond(hecMAT)
subroutine, public hecmw_precond_sainv_33_apply(R, ZP)
subroutine, public hecmw_precond_sainv_33_clear()
subroutine, public hecmw_precond_sainv_33_setup(hecMAT)
integer(kind=4), parameter kreal