From c91a8888b3aec86e0a0d9446ed968be36edb453b Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 24 Jul 2008 14:31:55 +0000 Subject: [PATCH] mld2p4: docs/html/img92.png docs/html/node18.html docs/mld2p4-1.0.pdf docs/src/userinterface.tex mlprec/mld_caggrmat_smth_asb.F90 mlprec/mld_cmlprec_bld.f90 mlprec/mld_cprecinit.F90 mlprec/mld_cprecset.f90 mlprec/mld_daggrmat_smth_asb.F90 mlprec/mld_dmlprec_bld.f90 mlprec/mld_dprecinit.F90 mlprec/mld_dprecset.f90 mlprec/mld_prec_type.f90 mlprec/mld_saggrmat_smth_asb.F90 mlprec/mld_smlprec_bld.f90 mlprec/mld_sprecinit.F90 mlprec/mld_sprecset.f90 mlprec/mld_zaggrmat_smth_asb.F90 mlprec/mld_zmlprec_bld.f90 mlprec/mld_zprecinit.F90 mlprec/mld_zprecset.f90 test/fileread/cf_sample.f90 test/fileread/df_sample.f90 test/fileread/runs/cfs.inp test/fileread/runs/dfs.inp test/fileread/runs/sfs.inp test/fileread/runs/zfs.inp test/fileread/sf_sample.f90 test/fileread/zf_sample.f90 test/pdegen/ppde.f90 test/pdegen/runs/ppde.inp test/pdegen/spde.f90 Fixed proposal for aggr_omega_Alg aggr_omega_val. --- docs/html/img92.png | Bin 695 -> 813 bytes docs/html/node18.html | 62 +-- docs/mld2p4-1.0.pdf | 837 +++++++++++++++++-------------- docs/src/userinterface.tex | 28 +- mlprec/mld_caggrmat_smth_asb.F90 | 87 ++-- mlprec/mld_cmlprec_bld.f90 | 8 +- mlprec/mld_cprecinit.F90 | 6 +- mlprec/mld_cprecset.f90 | 10 +- mlprec/mld_daggrmat_smth_asb.F90 | 84 ++-- mlprec/mld_dmlprec_bld.f90 | 8 +- mlprec/mld_dprecinit.F90 | 6 +- mlprec/mld_dprecset.f90 | 10 +- mlprec/mld_prec_type.f90 | 50 +- mlprec/mld_saggrmat_smth_asb.F90 | 90 ++-- mlprec/mld_smlprec_bld.f90 | 8 +- mlprec/mld_sprecinit.F90 | 6 +- mlprec/mld_sprecset.f90 | 10 +- mlprec/mld_zaggrmat_smth_asb.F90 | 82 +-- mlprec/mld_zmlprec_bld.f90 | 8 +- mlprec/mld_zprecinit.F90 | 8 +- mlprec/mld_zprecset.f90 | 10 +- test/fileread/cf_sample.f90 | 8 +- test/fileread/df_sample.f90 | 8 +- test/fileread/runs/cfs.inp | 1 - test/fileread/runs/dfs.inp | 1 - test/fileread/runs/sfs.inp | 1 - test/fileread/runs/zfs.inp | 1 - test/fileread/sf_sample.f90 | 8 +- test/fileread/zf_sample.f90 | 8 +- test/pdegen/ppde.f90 | 6 - test/pdegen/runs/ppde.inp | 1 - test/pdegen/spde.f90 | 6 - 32 files changed, 793 insertions(+), 674 deletions(-) diff --git a/docs/html/img92.png b/docs/html/img92.png index ba6c655272db13d38bcbc7e71cbd0ccaee4cba2a..23ab3154463a6cc674a527f7bed86062071b7d67 100644 GIT binary patch delta 751 zcmVa)vE3m zwTnkKZtNIUVnhl|jA289!2=Q%3%qw{$4*p)%RrWVitpaN_x!!Pckj*tO006@+6Y+m zz75{G%?vf*aAT{^!O??4^LIq5f3>m*iIOs(TfuLeNQvgf@R{~B9Iqbbggs}}y> zd>Z5GD1Zky4rN0W8UuT~d_L$%_V{qH!44q17-dqGuEGenk;bt{Zkxpp`NT$hn@C(O z`K4kYw<}aGR6&3jm~0wL3NS^6iR!JDye!&r!p@KqPfItMmxb%(ZXAM+N|?#E@#tiT zBl{DAX3*8{kzEAks_iNQe+1E`UXQ|!P=Qeh5xBz0&9J+VciShWg^?#@iGM<^qfqNx zuxO;fniBqS`>f3lr&l4i=#fVLxk2kYHMY+O>>>IAlWlnOTx0}(0JppuvIBZuaHX1& zRy=32JHUW{8;Z=DIqZx96HfF~l9_#qv8~E}TgL>E8FVv$q`}Uie_rOBc``Px&>S31 z);Nf1ibl9fs&z%SuGA5ebzF4|&^d-FRQBNy;*bME07xQ{X+E zF_E=}`FV!QWh1`Ox;|92maA4>nHiF)& zK~zYI?NvQ%6hRn%X794u&24V>n&4Hpg{6>y*a@bz()$5|SELaX_a7vrwQ$Zturi>P z)nZ}m`U8Yhv=0`NE(1A2z+!yoYqNX7J5lryd|~I~{kZp;=Y3}m@RB5e<%sk zuP|S7X{L@I;<=uMo1;P?Gpm)7e+CnuR$gDkf`ki1x|v}Dj_je7EnXRKK;|?#MGNdM zF4JN(=)AKEZ{l%(?e}o}ycCo-?G%)ms}qOr(BjY-B5mJB$?ewKrNemuCcA?Pqf666_o2s7e@fDD#9V1g z!)#vfS!uRh5gS35AVH z(#SY<(S+v7-dMEFwx{u4D6s6}Ffq#sY=<=M1Mw_fe)*R!f4~2JNvP9WwmIZXAvY2ijT(EGBl>Pxzqd+zT*X;4JSb^s4RtvC;955*tcym9Pqp($N`0H*MOIU? zWwO6VFtIKJqVYk!@%MnoCY(J#N~7bk%T8J~)x_zu_m4l@47aH#PTtglLv@Nxb*61R z#eIQIe|AH@`7_)1U}g(f$IIi_D=)v|Ud258d;i0_H^M72{@>|;SQflS3*4.


-
+
Table 2: Parameters defining the type of multi-level preconditioner. @@ -181,7 +181,7 @@ Parameters defining the type of multi-level preconditioner.


-
+
Table 3: Parameters defining the one-level preconditioner used as smoother. @@ -281,7 +281,7 @@ Parameters defining the one-level preconditioner used as smoother.


-
+
+ + + + + - + ALT="$D^{-1}A$"> with largest modulus. + Currently only the infinity norm estimate + is available. - + + ALT="$4/(3\vert\lambda_{max}(D^{-1}A)\vert)$"> + Must be set by the user if + USER_CHOICE was specified for + mld_aggr_omega_alg_, + otherwise it is computed by the library.
Table 4: Parameters defining the aggregation algorithm. @@ -319,49 +319,51 @@ Parameters defining the aggregation algorithm. SRC="img91.png" ALT="$\theta$"> in the aggregation algorithm. +
mld_aggr_omega_alg_character(len=*)'USER_CHOICE' 'EIG_EST''EIG_EST'How the damping parameter $\omega$ in the + smoothed aggregation should be computed: + either via an estimate of the eigenvalue + $D^{-1}A$ with largest modulus, or explicily + specified by the user.
mld_aggr_eig_ character(len=*) 'A_NORMI' 'A_NORMI'Estimate of the eigenvalue How to estimate the eigenvalue $D^{-1}A$ with largest modulus, - to build the damping parameter $\omega$ in the smoothed aggregation. - Currently, only the infinity norm of - the matrix is available.
mld_aggr_damp_ real(kind_parameter)Any real num.Any nonnegative real num. $4/(3\vert\vert D^{-1}A\vert\vert _\infty)$ Damping parameter $\omega$ in the smoothed aggregation algorithm. - If the user specifies a negative value, then $\omega$ - is set to its default value; - otherwise, $\omega$ is set to the value provided by the - user. In the latter case no estimate of the eigenvalue of - $D^{-1}A$ with largest modulus is computed.
@@ -372,7 +374,7 @@ Parameters defining the aggregation algorithm.


-
+
Table 5: Parameters defining the coarse-space correction at the coarsest diff --git a/docs/mld2p4-1.0.pdf b/docs/mld2p4-1.0.pdf index 03f24760..0629b821 100644 --- a/docs/mld2p4-1.0.pdf +++ b/docs/mld2p4-1.0.pdf @@ -3702,7 +3702,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 434 0 obj << -/Length 8453 +/Length 9724 >> stream 0 g 0 G @@ -3721,299 +3721,363 @@ q 0 g 0 G 0 g 0 G q -1 0 0 1 0 148.447 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 0 155.421 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q q -1 0 0 1 0 134.699 cm +1 0 0 1 0 141.673 cm []0 d 0 J 0.398 w 0 0 m 0 13.549 l S Q 1 0 0 1 -299.826 -121.521 cm BT -/F44 10.9091 Tf 305.803 260.285 Td [(what)]TJ +/F44 10.9091 Tf 305.803 267.259 Td [(what)]TJ ET q -1 0 0 1 403.416 256.22 cm +1 0 0 1 420.598 263.194 cm []0 d 0 J 0.398 w 0 0 m 0 13.549 l S Q BT -/F41 10.9091 Tf 409.394 260.285 Td [(d)22(a)67(t)66(a)-377(type)]TJ +/F41 10.9091 Tf 426.576 267.259 Td [(d)22(a)67(t)67(a)-378(type)]TJ ET q -1 0 0 1 522.39 256.22 cm +1 0 0 1 539.571 263.194 cm []0 d 0 J 0.398 w 0 0 m 0 13.549 l S Q BT -/F44 10.9091 Tf 528.367 260.285 Td [(val)]TJ +/F44 10.9091 Tf 545.549 267.259 Td [(val)]TJ ET q -1 0 0 1 599.542 256.22 cm +1 0 0 1 616.723 263.194 cm []0 d 0 J 0.398 w 0 0 m 0 13.549 l S Q BT -/F41 10.9091 Tf 605.519 260.285 Td [(def)89(a)22(ul)67(t)]TJ +/F41 10.9091 Tf 622.701 267.259 Td [(def)89(a)22(ul)67(t)]TJ ET q -1 0 0 1 685.198 256.22 cm +1 0 0 1 702.38 263.194 cm []0 d 0 J 0.398 w 0 0 m 0 13.549 l S Q BT -/F41 10.9091 Tf 691.175 260.285 Td [(comments)]TJ +/F41 10.9091 Tf 708.357 267.259 Td [(comments)]TJ ET q -1 0 0 1 895.578 256.22 cm +1 0 0 1 912.76 263.194 cm []0 d 0 J 0.398 w 0 0 m 0 13.549 l S Q q -1 0 0 1 299.826 256.021 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 299.826 262.995 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q q -1 0 0 1 299.826 228.723 cm +1 0 0 1 299.826 235.697 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 305.803 246.337 Td [(mld_aggr_alg_)]TJ +/F44 10.9091 Tf 305.803 253.311 Td [(mld_aggr_alg_)]TJ ET q -1 0 0 1 403.416 228.723 cm +1 0 0 1 420.598 235.697 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 409.394 246.337 Td [(character\050len=*\051)]TJ +/F44 10.9091 Tf 426.576 253.311 Td [(character\050len=*\051)]TJ ET q -1 0 0 1 522.39 228.723 cm +1 0 0 1 539.571 235.697 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 528.367 246.337 Td [('DEC')]TJ +/F44 10.9091 Tf 545.549 253.311 Td [('DEC')]TJ ET q -1 0 0 1 599.542 228.723 cm +1 0 0 1 616.723 235.697 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 605.519 246.337 Td [('DEC')]TJ +/F44 10.9091 Tf 622.701 253.311 Td [('DEC')]TJ ET q -1 0 0 1 685.198 228.723 cm +1 0 0 1 702.38 235.697 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F15 10.9091 Tf 691.175 246.337 Td [(Aggregation)-521(algorithm.)-1006(Curren)28(tly)83(,)-567(only)]TJ 0 -13.549 Td [(the)-333(decoupled)-334(aggregation)-333(is)-333(a)28(v)55(ailable.)]TJ +/F15 10.9091 Tf 708.357 253.311 Td [(Aggregation)-521(algorith)1(m)-1(.)-1006(Curren)28(tly)83(,)-567(only)]TJ 0 -13.549 Td [(the)-333(decoupled)-334(aggregation)-333(is)-333(a)28(v)55(ailable.)]TJ ET q -1 0 0 1 895.578 228.723 cm +1 0 0 1 912.76 235.697 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q q -1 0 0 1 299.826 228.524 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 299.826 235.498 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q q -1 0 0 1 299.826 201.226 cm +1 0 0 1 299.826 208.2 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 305.803 218.84 Td [(mld_aggr_kind_)]TJ +/F44 10.9091 Tf 305.803 225.814 Td [(mld_aggr_kind_)]TJ ET q -1 0 0 1 403.416 201.226 cm +1 0 0 1 420.598 208.2 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 409.394 218.84 Td [(character\050len=*\051)]TJ +/F44 10.9091 Tf 426.576 225.814 Td [(character\050len=*\051)]TJ ET q -1 0 0 1 522.39 201.226 cm +1 0 0 1 539.571 208.2 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 528.367 218.84 Td [('SMOOTH')]TJ 0 -13.549 Td [('RAW')]TJ +/F44 10.9091 Tf 545.549 225.814 Td [('SMOOTH')]TJ 0 -13.549 Td [('RAW')]TJ ET q -1 0 0 1 599.542 201.226 cm +1 0 0 1 616.723 208.2 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 605.519 218.84 Td [('SMOOTH')]TJ +/F44 10.9091 Tf 622.701 225.814 Td [('SMOOTH')]TJ ET q -1 0 0 1 685.198 201.226 cm +1 0 0 1 702.38 208.2 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F15 10.9091 Tf 691.175 218.84 Td [(T)28(yp)-28(e)-380(of)-379(aggregation:)-537(smo)-28(othed,)-391(ra)28(w)-380(\050i.e.)]TJ 0 -13.549 Td [(using)-333(the)-334(ten)28(tativ)28(e)-333(prolongator\051.)]TJ +/F15 10.9091 Tf 708.357 225.814 Td [(T)28(yp)-28(e)-380(of)-379(aggregation:)-537(smo)-28(othed,)-391(ra)28(w)-380(\050i.e.)]TJ 0 -13.549 Td [(using)-333(the)-334(ten)28(tativ)28(e)-333(prolongator\051.)]TJ ET q -1 0 0 1 895.578 201.226 cm +1 0 0 1 912.76 208.2 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q q -1 0 0 1 299.826 201.027 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 299.826 208.001 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q q -1 0 0 1 299.826 173.729 cm +1 0 0 1 299.826 180.703 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 305.803 191.343 Td [(mld_aggr_thresh_)]TJ +/F44 10.9091 Tf 305.803 198.317 Td [(mld_aggr_thresh_)]TJ ET q -1 0 0 1 403.416 173.729 cm +1 0 0 1 420.598 180.703 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F44 10.9091 Tf 409.394 191.343 Td [(real\050)]TJ/F18 10.9091 Tf 28.636 0 Td [(kind)]TJ +/F44 10.9091 Tf 426.576 198.317 Td [(real\050)]TJ/F18 10.9091 Tf 28.636 0 Td [(kind)]TJ ET q -1 0 0 1 458.772 191.543 cm +1 0 0 1 475.953 198.516 cm []0 d 0 J 0.398 w 0 0 m 3.345 0 l S Q BT -/F18 10.9091 Tf 462.117 191.343 Td [(p)51(ar)51(ameter)]TJ/F44 10.9091 Tf 48.568 0 Td [(\051)]TJ +/F18 10.9091 Tf 479.299 198.317 Td [(p)51(ar)51(ameter)]TJ/F44 10.9091 Tf 48.568 0 Td [(\051)]TJ ET q -1 0 0 1 522.39 173.729 cm +1 0 0 1 539.571 180.703 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F15 10.9091 Tf 528.367 191.343 Td [(An)28(y)-222(real)-223(n)28(um.)]TJ/F25 10.9091 Tf 0 -13.549 Td [(2)]TJ/F15 10.9091 Tf 10.303 0 Td [([0)]TJ/F22 10.9091 Tf 8.485 0 Td [(;)]TJ/F15 10.9091 Tf 4.849 0 Td [(1])]TJ +/F15 10.9091 Tf 545.549 198.317 Td [(An)28(y)-222(real)-223(n)28(um.)]TJ/F25 10.9091 Tf 0 -13.549 Td [(2)]TJ/F15 10.9091 Tf 10.303 0 Td [([0)]TJ/F22 10.9091 Tf 8.485 0 Td [(;)]TJ/F15 10.9091 Tf 4.848 0 Td [(1])]TJ ET q -1 0 0 1 599.542 173.729 cm +1 0 0 1 616.723 180.703 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F15 10.9091 Tf 605.519 191.343 Td [(0)]TJ +/F15 10.9091 Tf 622.701 198.317 Td [(0)]TJ ET q -1 0 0 1 685.198 173.729 cm +1 0 0 1 702.38 180.703 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q BT -/F15 10.9091 Tf 691.175 191.343 Td [(Threshold)]TJ/F22 10.9091 Tf 51.267 0 Td [(\022)]TJ/F15 10.9091 Tf 8.722 0 Td [(in)-302(the)-302(aggregation)-303(algor)1(ithm.)]TJ +/F15 10.9091 Tf 708.357 198.317 Td [(Threshold)]TJ/F22 10.9091 Tf 51.267 0 Td [(\022)]TJ/F15 10.9091 Tf 8.721 0 Td [(in)-302(the)-302(aggregation)-303(algorith)1(m)-1(.)]TJ ET q -1 0 0 1 895.578 173.729 cm +1 0 0 1 912.76 180.703 cm []0 d 0 J 0.398 w 0 0 m 0 27.098 l S Q q -1 0 0 1 299.826 173.53 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 299.826 180.504 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q q -1 0 0 1 299.826 105.585 cm +1 0 0 1 299.826 112.559 cm []0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F44 10.9091 Tf 305.803 163.846 Td [(mld_aggr_eig_)]TJ +/F44 10.9091 Tf 305.803 170.82 Td [(mld_aggr_omega_alg_)]TJ ET q -1 0 0 1 403.416 105.585 cm +1 0 0 1 420.598 112.559 cm []0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F44 10.9091 Tf 409.394 163.846 Td [(character\050len=*\051)]TJ +/F44 10.9091 Tf 426.576 170.82 Td [(character\050len=*\051)]TJ ET q -1 0 0 1 522.39 105.585 cm +1 0 0 1 539.571 112.559 cm []0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F44 10.9091 Tf 528.367 163.846 Td [('A)]TJ +/F44 10.9091 Tf 545.549 170.82 Td [('USER)]TJ ET q -1 0 0 1 540.509 164.046 cm +1 0 0 1 574.872 171.02 cm []0 d 0 J 0.398 w 0 0 m 3.436 0 l S Q BT -/F44 10.9091 Tf 543.945 163.846 Td [(NORMI')]TJ +/F44 10.9091 Tf 578.309 170.82 Td [(CHOICE')]TJ -32.76 -13.549 Td [('EIG)]TJ ET q -1 0 0 1 599.542 105.585 cm +1 0 0 1 569.145 157.47 cm +[]0 d 0 J 0.398 w 0 0 m 3.436 0 l S +Q +BT +/F44 10.9091 Tf 572.581 157.271 Td [(EST')]TJ +ET +q +1 0 0 1 616.723 112.559 cm []0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F44 10.9091 Tf 605.519 163.846 Td [('A)]TJ +/F44 10.9091 Tf 622.701 170.82 Td [('EIG)]TJ ET q -1 0 0 1 617.661 164.046 cm +1 0 0 1 646.297 171.02 cm []0 d 0 J 0.398 w 0 0 m 3.436 0 l S Q BT -/F44 10.9091 Tf 621.097 163.846 Td [(NORMI')]TJ +/F44 10.9091 Tf 649.733 170.82 Td [(EST')]TJ ET q -1 0 0 1 685.198 105.585 cm +1 0 0 1 702.38 112.559 cm []0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F15 10.9091 Tf 691.175 163.846 Td [(Estimate)-611(of)-611(the)-610(e)-1(i)1(ge)-1(n)28(v)56(alue)]TJ/F22 10.9091 Tf 141.715 0 Td [(D)]TJ/F26 7.9701 Tf 9.335 3.959 Td [(\000)]TJ/F20 7.9701 Tf 6.586 0 Td [(1)]TJ/F22 10.9091 Tf 4.732 -3.959 Td [(A)]TJ/F15 10.9091 Tf 14.845 0 Td [(with)]TJ -177.213 -13.549 Td [(largest)-273(mo)-27(dulus,)-285(to)-272(build)-273(the)-272(damping)-273(pa-)]TJ 0 -13.549 Td [(rameter)]TJ/F22 10.9091 Tf 42.219 0 Td [(!)]TJ/F15 10.9091 Tf 12.37 0 Td [(in)-475(the)-476(smo)-28(othed)-475(aggregation.)]TJ -54.589 -13.549 Td [(Curren)28(tly)83(,)-519(only)-482(the)-483(in\014)1(nit)27(y)-482(norm)-482(of)-482(the)]TJ 0 -13.549 Td [(matrix)-333(is)-334(a)28(v)56(ailable.)]TJ +/F15 10.9091 Tf 708.357 170.82 Td [(Ho)28(w)-625(the)-624(damping)-625(parameter)]TJ/F22 10.9091 Tf 153.374 0 Td [(!)]TJ/F15 10.9091 Tf 13.996 0 Td [(in)-624(the)]TJ -167.37 -13.549 Td [(smo)-28(othed)-738(aggregation)-738(should)-738(b)-28(e)-738(com-)]TJ 0 -13.549 Td [(puted:)-420(either)-284(via)-284(an)-284(estimate)-285(of)-284(the)-284(eigen-)]TJ 0 -13.549 Td [(v)56(alue)]TJ/F22 10.9091 Tf 28.669 0 Td [(D)]TJ/F26 7.9701 Tf 9.335 3.958 Td [(\000)]TJ/F20 7.9701 Tf 6.586 0 Td [(1)]TJ/F22 10.9091 Tf 4.733 -3.958 Td [(A)]TJ/F15 10.9091 Tf 12.305 0 Td [(with)-378(largest)-378(mo)-28(dulus,)-389(or)-378(ex-)]TJ -61.628 -13.55 Td [(plicily)-333(sp)-28(eci\014ed)-333(b)27(y)-333(the)-333(user.)]TJ ET q -1 0 0 1 895.578 105.585 cm +1 0 0 1 912.76 112.559 cm []0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q q -1 0 0 1 299.826 105.386 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 299.826 112.359 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q q -1 0 0 1 299.826 10.342 cm -[]0 d 0 J 0.398 w 0 0 m 0 94.844 l S +1 0 0 1 299.826 71.513 cm +[]0 d 0 J 0.398 w 0 0 m 0 40.648 l S Q BT -/F44 10.9091 Tf 305.803 95.702 Td [(mld_aggr_damp_)]TJ +/F44 10.9091 Tf 305.803 102.676 Td [(mld_aggr_eig_)]TJ ET q -1 0 0 1 403.416 10.342 cm -[]0 d 0 J 0.398 w 0 0 m 0 94.844 l S +1 0 0 1 420.598 71.513 cm +[]0 d 0 J 0.398 w 0 0 m 0 40.648 l S +Q +BT +/F44 10.9091 Tf 426.576 102.676 Td [(character\050len=*\051)]TJ +ET +q +1 0 0 1 539.571 71.513 cm +[]0 d 0 J 0.398 w 0 0 m 0 40.648 l S Q BT -/F44 10.9091 Tf 409.394 95.702 Td [(real\050)]TJ/F18 10.9091 Tf 28.636 0 Td [(kind)]TJ +/F44 10.9091 Tf 545.549 102.676 Td [('A)]TJ ET q -1 0 0 1 458.772 95.901 cm +1 0 0 1 557.691 102.875 cm +[]0 d 0 J 0.398 w 0 0 m 3.436 0 l S +Q +BT +/F44 10.9091 Tf 561.127 102.676 Td [(NORMI')]TJ +ET +q +1 0 0 1 616.723 71.513 cm +[]0 d 0 J 0.398 w 0 0 m 0 40.648 l S +Q +BT +/F44 10.9091 Tf 622.701 102.676 Td [('A)]TJ +ET +q +1 0 0 1 634.843 102.875 cm +[]0 d 0 J 0.398 w 0 0 m 3.436 0 l S +Q +BT +/F44 10.9091 Tf 638.279 102.676 Td [(NORMI')]TJ +ET +q +1 0 0 1 702.38 71.513 cm +[]0 d 0 J 0.398 w 0 0 m 0 40.648 l S +Q +BT +/F15 10.9091 Tf 708.357 102.676 Td [(Ho)28(w)-642(to)-641(estimate)-641(the)-642(eigen)28(v)56(alue)]TJ/F22 10.9091 Tf 169.59 0 Td [(D)]TJ/F26 7.9701 Tf 9.335 3.959 Td [(\000)]TJ/F20 7.9701 Tf 6.586 0 Td [(1)]TJ/F22 10.9091 Tf 4.732 -3.959 Td [(A)]TJ/F15 10.9091 Tf -190.243 -13.549 Td [(with)-350(largest)-349(mo)-28(dulus.)-493(Curren)28(tly)-350(only)-349(the)]TJ 0 -13.55 Td [(in\014nit)28(y)-333(norm)-334(estimate)-333(is)-333(a)27(v)56(ailable.)]TJ +ET +q +1 0 0 1 912.76 71.513 cm +[]0 d 0 J 0.398 w 0 0 m 0 40.648 l S +Q +q +1 0 0 1 299.826 71.313 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S +Q +q +1 0 0 1 299.826 3.368 cm +[]0 d 0 J 0.398 w 0 0 m 0 67.746 l S +Q +BT +/F44 10.9091 Tf 305.803 61.63 Td [(mld_aggr_damp_)]TJ +ET +q +1 0 0 1 420.598 3.368 cm +[]0 d 0 J 0.398 w 0 0 m 0 67.746 l S +Q +BT +/F44 10.9091 Tf 426.576 61.63 Td [(real\050)]TJ/F18 10.9091 Tf 28.636 0 Td [(kind)]TJ +ET +q +1 0 0 1 475.953 61.829 cm []0 d 0 J 0.398 w 0 0 m 3.345 0 l S Q BT -/F18 10.9091 Tf 462.117 95.702 Td [(p)51(ar)51(ameter)]TJ/F44 10.9091 Tf 48.568 0 Td [(\051)]TJ +/F18 10.9091 Tf 479.299 61.63 Td [(p)51(ar)51(ameter)]TJ/F44 10.9091 Tf 48.568 0 Td [(\051)]TJ ET q -1 0 0 1 522.39 10.342 cm -[]0 d 0 J 0.398 w 0 0 m 0 94.844 l S +1 0 0 1 539.571 3.368 cm +[]0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F15 10.9091 Tf 528.367 95.702 Td [(An)28(y)-222(real)-223(n)28(um.)]TJ +/F15 10.9091 Tf 545.549 61.63 Td [(An)28(y)-227(n)1(onnega-)]TJ 0 -13.549 Td [(tiv)28(e)-279(real)-278(n)28(um.)]TJ ET q -1 0 0 1 599.542 10.342 cm -[]0 d 0 J 0.398 w 0 0 m 0 94.844 l S +1 0 0 1 616.723 3.368 cm +[]0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F15 10.9091 Tf 605.519 95.702 Td [(4)]TJ/F22 10.9091 Tf 5.455 0 Td [(=)]TJ/F15 10.9091 Tf 5.454 0 Td [(\0503)]TJ/F25 10.9091 Tf 9.697 0 Td [(jj)]TJ/F22 10.9091 Tf 6.061 0 Td [(D)]TJ/F26 7.9701 Tf 9.335 3.959 Td [(\000)]TJ/F20 7.9701 Tf 6.586 0 Td [(1)]TJ/F22 10.9091 Tf 4.733 -3.959 Td [(A)]TJ/F25 10.9091 Tf 8.182 0 Td [(jj)]TJ/F26 7.9701 Tf 6.06 -1.636 Td [(1)]TJ/F15 10.9091 Tf 8.967 1.636 Td [(\051)]TJ +/F15 10.9091 Tf 622.701 61.63 Td [(4)]TJ/F22 10.9091 Tf 5.455 0 Td [(=)]TJ/F15 10.9091 Tf 5.454 0 Td [(\0503)]TJ/F25 10.9091 Tf 9.697 0 Td [(j)]TJ/F22 10.9091 Tf 3.03 0 Td [(\025)]TJ/F23 7.9701 Tf 6.364 -1.637 Td [(max)]TJ/F15 10.9091 Tf 17.254 1.637 Td [(\050)]TJ/F22 10.9091 Tf 4.242 0 Td [(D)]TJ/F26 7.9701 Tf 9.335 3.959 Td [(\000)]TJ/F20 7.9701 Tf 6.586 0 Td [(1)]TJ/F22 10.9091 Tf 4.733 -3.959 Td [(A)]TJ/F15 10.9091 Tf 8.182 0 Td [(\051)]TJ/F25 10.9091 Tf 4.242 0 Td [(j)]TJ/F15 10.9091 Tf 3.03 0 Td [(\051)]TJ ET q -1 0 0 1 685.198 10.342 cm -[]0 d 0 J 0.398 w 0 0 m 0 94.844 l S +1 0 0 1 702.38 3.368 cm +[]0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q BT -/F15 10.9091 Tf 691.175 95.702 Td [(Damping)-223(parameter)]TJ/F22 10.9091 Tf 96.9 0 Td [(!)]TJ/F15 10.9091 Tf 9.616 0 Td [(in)-223(the)-223(smo)-28(othed)-223(ag-)]TJ -106.516 -13.549 Td [(gregation)-265(algorithm.)-422(If)-265(the)-265(user)-265(sp)-28(eci\014es)-265(a)]TJ 0 -13.549 Td [(negativ)28(e)-321(v)55(alu)1(e)-1(,)-323(then)]TJ/F22 10.9091 Tf 98.711 0 Td [(!)]TJ/F15 10.9091 Tf 10.682 0 Td [(is)-321(set)-321(to)-321(its)-321(default)]TJ -109.393 -13.55 Td [(v)56(alue;)-310(otherwise,)]TJ/F22 10.9091 Tf 82.241 0 Td [(!)]TJ/F15 10.9091 Tf 10.425 0 Td [(is)-297(set)-298(to)-297(the)-297(v)55(alu)1(e)-298(pro-)]TJ -92.666 -13.549 Td [(vided)-434(b)28(y)-434(the)-434(user.)-746(In)-434(the)-434(latter)-434(case)-434(no)]TJ 0 -13.549 Td [(estimate)-414(of)-414(the)-414(eigen)27(v)56(alue)-414(of)]TJ/F22 10.9091 Tf 143.861 0 Td [(D)]TJ/F26 7.9701 Tf 9.334 3.959 Td [(\000)]TJ/F20 7.9701 Tf 6.587 0 Td [(1)]TJ/F22 10.9091 Tf 4.732 -3.959 Td [(A)]TJ/F15 10.9091 Tf 12.699 0 Td [(with)]TJ -177.213 -13.549 Td [(largest)-333(mo)-28(dulus)-333(is)-334(computed.)]TJ +/F15 10.9091 Tf 708.357 61.63 Td [(Damping)-534(parameter)]TJ/F22 10.9091 Tf 103.691 0 Td [(!)]TJ/F15 10.9091 Tf 13.013 0 Td [(in)-534(the)-535(smo)-28(othed)]TJ -116.704 -13.549 Td [(aggregation)-517(algorith)1(m)-1(.)-994(Must)-517(b)-27(e)-517(set)-517(b)28(y)]TJ 0 -13.55 Td [(the)-673(user)-674(if)]TJ/F44 10.9091 Tf 63.04 0 Td [(USER_CHOICE)]TJ/F15 10.9091 Tf 70.342 0 Td [(w)28(as)-674(sp)-27(e)-1(ci\014)1(e)-1(d)]TJ -133.382 -13.549 Td [(for)]TJ/F44 10.9091 Tf 16.546 0 Td [(mld_aggr_omega_alg_)]TJ/F15 10.9091 Tf 108.817 0 Td [(,)-322(otherwise)-320(it)-319(is)]TJ -125.363 -13.549 Td [(computed)-333(b)28(y)-334(the)-333(library)83(.)]TJ ET q -1 0 0 1 895.578 10.342 cm -[]0 d 0 J 0.398 w 0 0 m 0 94.844 l S +1 0 0 1 912.76 3.368 cm +[]0 d 0 J 0.398 w 0 0 m 0 67.746 l S Q q -1 0 0 1 299.826 10.143 cm -[]0 d 0 J 0.398 w 0 0 m 595.752 0 l S +1 0 0 1 299.826 3.169 cm +[]0 d 0 J 0.398 w 0 0 m 612.934 0 l S Q 0 g 0 G BT -/F15 10.9091 Tf 459.779 -20.546 Td [(T)83(able)-333(4:)-444(P)27(arameters)-333(de\014ning)-333(the)-334(aggregation)-333(algorithm.)]TJ +/F15 10.9091 Tf 459.779 -27.52 Td [(T)83(able)-333(4:)-444(P)27(arameters)-333(de\014ning)-333(the)-334(aggregation)-333(algorithm.)]TJ 0 g 0 G 0 g 0 G ET @@ -4043,10 +4107,10 @@ endobj /D [433 0 R /XYZ 93.6 740.002 null] >> endobj 436 0 obj << -/D [433 0 R /XYZ 428.145 4405.505 null] +/D [433 0 R /XYZ -3645.38 4405.505 null] >> endobj 432 0 obj << -/Font << /F41 124 0 R /F15 123 0 R /F44 200 0 R /F18 173 0 R /F25 176 0 R /F22 175 0 R /F26 272 0 R /F20 273 0 R >> +/Font << /F41 124 0 R /F15 123 0 R /F44 200 0 R /F18 173 0 R /F25 176 0 R /F22 175 0 R /F26 272 0 R /F20 273 0 R /F23 271 0 R >> /ProcSet [ /PDF /Text ] >> endobj 440 0 obj << @@ -5050,10 +5114,10 @@ endobj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4] endobj 491 0 obj -[826.4 295.1 826.4 531.3 826.4 531.3 826.4 826.4 826.4 826.4 826.4 826.4 826.4 1062.5 531.3 531.3 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 1062.5 1062.5 826.4 826.4 1062.5 1062.5 531.3 531.3 1062.5 1062.5 1062.5 826.4 1062.5 1062.5 649.3 649.3 1062.5 1062.5 1062.5 826.4 288.2 1062.5] +[826.4 295.1 826.4] endobj 492 0 obj -[470.1 429.5 467 533.2 495.7 376.2 612.3 619.8 639.2 522.3 467 610.1 544.1 607.2 471.5 576.4 631.6 659.7 694.5 660.7 490.6 632.1 882.1 544.1 388.9 692.4 1062.5 1062.5 1062.5 1062.5 295.1 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 826.4 531.3 826.4 531.3 559.7 795.8 801.4 757.3 871.7 778.7 672.4 827.9 872.8 460.7 580.4 896 722.6 1020.4 843.3 806.2 673.6 835.7 800.2 646.2 618.6 718.8 618.8 1002.4 873.9 615.8 720 413.2 413.2 413.2 1062.5 1062.5 434 564.4 454.5 460.2 546.7 492.9 510.4 505.6 612.3 361.7 429.7 553.2 317.1 939.8 644.7 513.5 534.8 474.4 479.5 491.3] +[470.1 429.5 467 533.2 495.7 376.2 612.3 619.8 639.2 522.3 467 610.1 544.1 607.2 471.5 576.4 631.6 659.7 694.5 660.7 490.6 632.1 882.1 544.1 388.9 692.4 1062.5 1062.5 1062.5 1062.5 295.1 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 826.4 531.3 826.4 531.3 559.7 795.8 801.4 757.3 871.7 778.7 672.4 827.9 872.8 460.7 580.4 896 722.6 1020.4 843.3 806.2 673.6 835.7 800.2 646.2 618.6 718.8 618.8 1002.4 873.9 615.8 720 413.2 413.2 413.2 1062.5 1062.5 434 564.4 454.5 460.2 546.7 492.9 510.4 505.6 612.3 361.7 429.7 553.2 317.1 939.8 644.7 513.5 534.8 474.4 479.5 491.3 383.7 615.2 517.4 762.5 598.1] endobj 493 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] @@ -5543,10 +5607,10 @@ endobj /FontFile 509 0 R >> endobj 511 0 obj << -/Length1 1299 -/Length2 8195 +/Length1 1318 +/Length2 8345 /Length3 0 -/Length 9494 +/Length 9663 >> stream %!PS-AdobeFont-1.1: CMMI10 1.100 @@ -5562,7 +5626,7 @@ stream /ItalicAngle -14.04 def /isFixedPitch false def end readonly def -/FontName /PXTKEK+CMMI10 def +/FontName /MXLKIB+CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def @@ -5589,6 +5653,7 @@ dup 62 /greater put dup 105 /i put dup 106 /j put dup 108 /l put +dup 21 /lambda put dup 109 /m put dup 110 /n put dup 111 /o put @@ -5614,36 +5679,35 @@ currentfile eexec 1kX9JS:6V =!X>KM)9! I}HWIUcl=GeZm>nQk2=1p%R`%$]c{!W+8?v(+)0ӈ!YahtA?H @m?|M X9Հ֨#2 :m,MZ+ǒ\Ex9Yn<Ŀ2^FC[`T+ȬD]ǸFF$oB!>;A\T hxh|5:6;ϖUǷ6~k.T*{8K`y8'dT|-QkKmy9 91|Afr (K*)%_ʬtP`.rY?nrn{v2O_5;\g>R{4_ : 9pEz~Gu E[n窙i9ヽu#=X&>~J~ПUt0t1Cqs-b5 4AG˧OE1"?@~ -R Oԁ>XO8' IVTnP #ԫ3L3zٛoH9@uD Jsf*+5x/Jl dc!=2~S،%WqI/G 7PG6=NU򄂥 h^+#(&i0b.?ҍ_Isk?DdCHȸB{B[Qܪo@Jn ">ǿMzP(@]}U+i|}xց+Z!]|nl:(YJ]qXLE7vNO2UTY, fs,=}l-QMf WUl=Nq4,}CK+wNjXcV}!s{.ظ9U LcyrCS7_3J p3y0&  ;ZC7=hi}Z{U`d?fp6TϒM|QtE_xSh_e){hB~EUdalY| ؄̮pf6a;^)3wmn G2zR@gwYF Ep4[%nltG}K ×eQLo'Jm$Fmy'0dl݁ hԥls=+F'Kyq{$)Q\j۾獫a\?u{H#J""o:W}W, w64\͊T9E//-=F9~v}![R((D _شl0AZ! _dNV/R90t -䟩Rey[q=(_ȢdJ`\CWIJ:=}'0_/gptN$bBuٺzC%(iȠ}Pg<[b.-tف]U+Nj<+sI*V.D_j_84/;l/\Eb΂+h{ /Uͨ9m@qKa_*mBK!I5Dx;$MCgLޯ”hkô$?d+dFԖa3&lKx[T:fK{M&o|ɈO- Uk~:dw;, (75T}lu]c$/bG1Q0)Wzb{] 3)iB2O͋#&3GT:TAӋ-c+qCaiy9|T]#+TIv)Ha~QWsLů L!qJ}<<6uUeMC}XT0/,b=)|Zm n-DzZ~/T* 2iƁ^J&%2H>-);~rngT"ŶY@T~S7 tXmHeNwNޗ(O[]k"rRb]ܡy7&$R\V5xp놽B')Km'J So2f~Ab0he?]-8`:veƇ9~Ӱ ex`arQŜ7^ݩL${c??)?t?ǃ<ϦK*SlfZr%ٞN%` NF%VJgkPQc=HV5~ck.U^֮? 2<֦ʬd٠|C`"1؊fth֝.A=R:(Ys2csF*~o#ǒ,1oq@KV4o6 -gG6{>zNgv`NQXl(֐'V dZ55ͽ=J ]x_](1QxPQ@VUr= !Qm] /ʜ܃hj5ZI2_Uf8Eo5(jKzcԑȀ2Ĕ]:nB _/bq$1z&f)E 7;r)G-[WTwTlhkaղN \``^gُI1Ld4S/;InJp+ tbw#swQ /K'{e+=3=_Lm" -iz@ /fyP|+9k8;^?Oo -&

3eWi/ [*?P7w(Sb k M?VA H*TOѷS$,1hq?K!O 3֧aR4I>'!-Gg7thp0 [*1'j㵴 `_@zaY1?MDҲ~?Y}%W<^Fc D lz!,B$7%"p -m+9,x|sS(~0$tVDNߋ13 !& 2ty[ XNf+<}IrGYn P%wie Z6 s֮&e !0Sa.<]^ڨܵTQdM_uXʑM|0!Vʭp8k#9."?2jDѐ40ju@|(\z)TkaǎBd8g[ɈU-[wU4qI,־Ob@ԩ2J8}j=K$Eeq G}@j鄈/G;k -Zg9٤ -.JtUB~~ZTL] YGQ;tf./|XR+ rO-zU;)SZ*c3gz1b|bN<-JYia0Æe?rJx' $Zc`9\SrXhH[ Q;Lj>4YWΨ>%׬ȰؔS"fHA0oe o)lhNao W93%(.oeI&Ha;dɆ@~TƭdT) H 5`&)tv.,S^Yyُ^mؒ -\.#*Ww:PTU}~ @7s,YVG103-?aY@4RzW)1M7P<:vhq~yn$[Qa{ KO ȰNSzfi,zT+G%u^J7_?v56\҇>WS[|ᓈp+ -Sǹ閫SރwR7 ľly-O ~j=0bՋ9,ߟ6tYQtktv9{.NMQ숑؝}RCfvN039<⠣I)F=> -tIn8Mcy +R Oԁ>XO8' IVTnP #ԫ3L3zٛoH9@uD Jsf*+5x/Jl dc!=2~S،%Wq ˒¯p sFc]@{F,̖:0 +Z^E Y;Fp'*_*C]q+1^mtv`#ԽDצ=., `CWt UbxkF㴠2VauO"-FU/IJpKZW`cpCݪ``Nm\G +pVUXYm?q jL}+:R':\Lz +ŊeY_g #g|: I {6C*}VqG()ѧ12 fF\Xn(VfY.!r*@aɴԲB@\9h0kXG%<;Sՠ#gwG~k*7^U{\ʶ߻Y5m-ԏ]&~ T4iV6IjZT nbZ]E^ ,'>_Ч91!~x1,bK|T[9E߻WPPt°q!f|dӎHm&$6l׉ς~v`~cM3]̩^2 /j٤SeM UMYxT>q4˻7-!U;0UZa?5K)yŻ'Z-P142`lF U$_OJhbef[:cБC;KŬF_ZSJG[?[/Iɋh+s1tf\vvP3P_9^6$5&6җVމx)P_0sAi?uSuY +i[bR$a٫oW~he>`WEwG:0IKvpQls?R60ۈջ6E2FlG")v!oخ"rY0po0ae.ǼךFr`nieu)'`zx /kw))k/3-)CN@\LОv}_kc\~y/JoA$g!oa`N t*zTHd | -Q kU>8;d ҋ+찌̙4*"Y}hO'<#sϰ~AU{vV +$r?w5{v0͓6r=HU +z:FboD+}jEOYrIcܶY9Cvx*Z -R홻(QJi"DhU20.U4@h{"bڌH T,׉kwC㎗Ì=ư7|FMd3Lk§ +VxB 20FE,5_/NdB^szEwg9K#PX5OuE<kt)G9LmӁ9͒ w|$q b{\L~wz8:u<3Ϧq7LgS'+ + +]܅`a{72 ֌N[x4)y-atj{Q֑}̴ J_?n x&+r0"'p2x'`BWRq5~{佅mt)10KgQ!bƇ3 j,noY%^0sI>ri~W )E[*U 8Q37G+d'`!"wBfzn$`'/q{X&cclpG+&?e]. .=§jⷳJ*{c c.ʛ`wT(pUO8:h#_lT%4(׃XFhW)U=s:V5-G Ԍ4IW'gF5b7ń`12U1\'@d+ps@/!Bn& DqO?7|YFJ˪%y[ HQǘqZL&RNWxᖉ2:Mx3`UO'[kȺݍ`t9C6Ŷ!Be  ru*ؠ*&8I:y~ˠ'h j__~X6xt.xxx`zޞz+>-hA"?ADke8sҥ!@u+^=b=!W'Д`¸^ƣB^r)kL{A mxFVDbq NR9t3z!iہ>˓u ѫg zbx4"=ܖ)sB]l1V)(&|O%kL@9@\j/^Wq͙uq4HIN|{;OIR%h?'؛2 }gSGO ebq)L]9r{O|9J܉Xˇ' +8x- +ʍQ׳/\i~D ڻpxDzZ8a\ 0&i{fwC/. 8EI\'yy/\yHL* wUox3n.S}_t4,?\OuoӭW`/W9j>ٻԲӃ,=Ls4qf4T|)zo6ml- e{ ̤ ''aWӗ$XOeY:|`w +HJ$|9ILycsOf[,qNrEDZ&lsS͎Ԡz΄3Y˖-r. +\G5t@dK؂cwx\&j9#[R ^T?cG#L Z;,ٲU"{NT+ˑ.a9Pceu8,/7[Pcl +Ӹ4&Ng5sU+뜙}L*ık08J-<h~Ҍb%=&퀟Q ZXIVw7 4Nk$Byi+Ža)Fӻ8F\%8DJlRS̑20,9ky_߸"oj"DzWNz¦w^6rA?J.!UY& _KZ1Gi$.Jhlke#<6$0xEGG!-0xzSGbTWkw6ԏEO fg#TY V3#sD́VIܰzuqrD$UoaIQ"G,}$?T(d~lBD tdLX5cHy2; kC/&P ɘŪ@F鞆#f1 ;[iҫu=xȐT\){uķjG +GD = .H6q,n2!i/'ǿLIwolpy~;cGlf cmY#\0Ezzz|H%YqzVFeDKױCug#xtDi$d~aK 5~@6.-|6ZT8=SrʑBE$l|m> +T,H@ϥɗ0m;@gqM&P1?(-.?(xgoe3>{N6޿vBOn(_!S#$TgFojCLļ~2;<7V=ЛO\DWWFa~>7P$<=63JMJ-͍h>[mG'>'М;2iRHUЉS&BJXV9Ga!>\J\#~N*zTjJ%)X{Byn1z %Q5MK;88y˲s\?xU4o3`d@5;M*vXI~4}VFCY^%kHyokT؃*&@+*gs$K;kTo uj)d>h2aR1uέO&|)̎/90۰Ey,IfX!FQhбKx:CKmvio |yU~A1h'FL-guv>00O))$Yw荥8aQ;BUčQ/4кjAZv&)=Ub~IyOTl6lsW_5CB(ܑΤO,& o<,Kj:2^n[': t%*o-@ᡆoP`!6y%&|2~- y$:Z$XCB&z؎{|i)k(1!|Өge:vDb<]!5(8B8?I6#a:d;Ubq%Wte#M 8JY6%I>p -ǒK kfm}n> @C?M0| խk?4Lm1 -Gu\dWި}z +kʹ9) [Ĕz8·S^hCh8w@fjG^Ln C.JV%`NۙUj_vD,k.?1𖊫!|`b}4.\>Ј"y?‘i{Q$ڐCтCR¬ 0.-6CvFy%|x=R@" T*QmodNPdb䂴Ӱ֕@GGf_y$غEM37zHUI]A+1suճӲ;-1?\]=˔Ur3h /vҖ ӟ=lj*U +/ziΧe*,+hĒд1/\M#d$HS.%`l$|WijAaf̐.Y`YX\a6Qs ,~d&a򹼜nkH!{ Y:B6UcRJbv@Das;ݤ1w~A&O(6')+c{ +E`9Uc(aZJt,KpwCDK~3}?RVqs6uꢖybS]kYJB ~zqy_I>Kf؉eWxb [RDH5iM~j'Kΐ_H$+ "5[6!>'1YqhdџPڰXKx/0قfΰ1w*)kwFl4&D;$ެ9sPƞ5!|ӇVVuYʡ% o:_fq@ySe5P` ,-9h1/ + ~fs3\T:naEnޘO%VrpU!B endstream endobj 512 0 obj << /Type /FontDescriptor -/FontName /PXTKEK+CMMI10 +/FontName /MXLKIB+CMMI10 /Flags 4 /FontBBox [-32 -250 1048 750] /Ascent 694 @@ -5652,7 +5716,7 @@ endobj /ItalicAngle -14 /StemV 72 /XHeight 431 -/CharSet (/A/D/E/G/I/M/N/P/R/S/V/W/a/b/comma/delta/e/greater/i/j/l/m/n/o/omega/p/period/r/s/slash/t/theta/v/w/x/y/z) +/CharSet (/A/D/E/G/I/M/N/P/R/S/V/W/a/b/comma/delta/e/greater/i/j/l/lambda/m/n/o/omega/p/period/r/s/slash/t/theta/v/w/x/y/z) /FontFile 511 0 R >> endobj 513 0 obj << @@ -5768,10 +5832,10 @@ endobj /FontFile 515 0 R >> endobj 517 0 obj << -/Length1 994 -/Length2 4891 +/Length1 1023 +/Length2 5345 /Length3 0 -/Length 5885 +/Length 6368 >> stream %!PS-AdobeFont-1.1: CMMI8 1.100 @@ -5787,7 +5851,7 @@ stream /ItalicAngle -14.04 def /isFixedPitch false def end readonly def -/FontName /VCFHMD+CMMI8 def +/FontName /OVCSNW+CMMI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def @@ -5803,6 +5867,7 @@ dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put +dup 97 /a put dup 14 /delta put dup 105 /i put dup 106 /j put @@ -5811,28 +5876,30 @@ dup 109 /m put dup 110 /n put dup 114 /r put dup 115 /s put +dup 120 /x put readonly def /FontBBox{-24 -250 1110 750}readonly def currentdict end currentfile eexec oc;j~EЪ)s̾;.;rTejiK/df5A|{S/ )Sc\^ȟmp+#vL17~k d# ]LeVߐGoo٥\k 9M֨[G(aܘ|RP6n=: b9s2m4{~CD%xSd,&jA x"ПmѬ,+;ŝboB|ծTboI*VDZBJϟ2a{Y0Q(/e@AGƀ挄п]w}ga8.ݲ cS,t^Ujq.or!N]@j -Gē75uʑm$KWNWVF2P,KP˻ 62abw;SBֳ{ u&DChNe^L2Ib^ǞY62"CSl5X!okR6D UjT|S{G3:6A| ٺJ 33kLKEnMpٽqlHZoxV ˏU>U^o\WbY<&~~S'_Z `gקZW(U7Tg4{{r s^=P0@._^זc]ÀDd0X,a<5ݦu0oHdxwE}g/ ( :.ȀVj{E~$>>o !4;_Hd[+h)DnH:BhVaK 1xgLԔ}wZ̵F1GR !0n@0nWJTwʳ'B-M;xZO YX%55֒qz#!4=pȕ4S݀22/ҋjٜft<ǨQס 6vye8죵CJUx [Ĥ"\oMI[KK!t@WdT7(?+O'}ē"}S"FŚs6ndaT4M!RVeDg=}2w;,EC^&?~܉NGFGe`&D(N:=|$ZR1nP̻=?_xGoҐ VmZC*X01>}\g`lИ6`]\; +N/$pjZVƊ^Y>>,.'a0:_8z瘱βyruêt^ -cb+ 1%b>аh-X?}sk=pnHt(z. ǥh4풎7r߇풀==B;- nsG\71\L “ A޸zo%lJW@!ʟ; 4rM22|`%*:c' Nf;UokJ[ ]-[LÝlΔA:x E1'Bɖ`@ݜ -qk3A"l=^yן}Adt6j%K`t"Ok$cIfU7;(G FRD@$t)|Le{U)qGpV#}f2 m1ӓ"qSU[(Bl./}l'/P(g8^`!Wb>%$WыAhW2ytߍj[kB4gwLy.IKlg &ФbJ Un&}$ M@ÁXlDskfB>$L:By\u7] lThp̚0G1T>_<S5 b*uIVWɗU¯=A=( Q@$LTg9x+1l:ٙTXIG;p 6)mnɷbD)|o -=פQ`Zk }^4}dO.+1o2!WRt[Ģ(bv!r{V.qa'庝xL -di).[V;'c1:{6@]PZ,Vci6](f9qڙ,o BJex@˩#Gr kP8Lg/Ó!<]"bX_ <u7߇\l.&D/uGN,(EzR9Z>}ԃqbWɟ"ϟ@0y-γ#3j?$j>Y:6atsNroh8H`2s~)Ӄyoo2>>YQWu>;-ٜ<,E3r/g.#R/ff1|zMT!Dz/x*);bkZkҎ1kLQ\ 5ݒ/XлWb~E.C6cWS|Lߦ "c,/T2ɺSz=~̞g+f)9AX(3יFY9['vӒÄ7k5z>-Gh=UEQ#ǸLΞ<9c@<޴mdkFtTT iwX-4^;qKL}IBR& Hx1Nw v̸H>i,N~IG-PCD +Gē75uʑm$KWNWVF2P,KP˻ 62abw;SBֳ{ u&DChNe^L2Ib^ǞY62"CSl5X!okR6D UjT|S{G3:6A| ٺJ 33kLKEnMpٽqlHZoxV ^HXv/'VL`qkb"|k#3Mv%[`%3lh*lpHTBbm,b@sY͢ɧ):rk7^Aj^dsZ .$t/v 'A3K8} {P0Ibə8Hjn<rk-&N#{n%}yDJvEٵbŇ^?Hr0v7>ʢ.{BI5Dȃcg;6ׅXmOR0,o}+ײ,CbW$qEKc)q[5nj۠I֍[w7:z7i'S*NS͂f1e4![G3nB#]q6ϵe1|kyPzR[c!\@ToD.&Mz* /;`L O~$kwƆoFw'o# jh4 j\:f,4Gˍcj.* x0Q8Eju\&aG3wI3E. Qf=":JcV18x[ Zܭ;@TzjB\P)|Ok aT0r C3pѝz5= bo71ٌG"=. yE# +0I װP|9dP[WxPDQQFܟa aNƞIYReke3r7^/wk?lIK>FG"etCrJ{9ChV.:~ԬNGk)KISG& B}0\h3]BEƕM%pӇ' +1Zq_49])[8}^጖15zq/2K1]C9s9#}%pIu_aPsx6~ϒ۝ '. Y"" /2 bgW|9dd~$ E-'dt9vC߈qyDcE^fQs9 D~x5[&jɨ2|5M_ۣVɯwB4HmlArN׌ +d-[i]:ne3IDU(6|i(}|0҆ù!bsb> gdoS/qgh#[DT/Qg%8k97W%"1ɈG ~U-$&a֚s&B?U=wIV`ˤ6<ώH68xwd%|+EQ1eh۲*QK皢fvz>YUD.d'LJ7@qϴf?uozJ±e+4wCA\;Y5MvF=! 9HQ!R97|J(h>-|[ɸs 8 +fP> 6$̣,TrDїmXS$#ױJ?=CꎥS*%,Fېhf?BŢt ltsz gF80I v twyֺMGj}R/ i4G`E91L8>C<Gsڎ_iŶm&k#9 nfpFxLhx7wŕw@8ξc*H +Y!Vj5=5(؋MjPPl/ +fZJ )D>4;-e7lO Z'3inF/>,?ܼT'ʡqUw6Pk;Z$˯{ +Tqn:Q<au╃Ǐv 灑:F" dnpX@r2;]LdΉnI5ˆ<!$~Ӻua&}]G\vW=)u9U0pÚpk]Av$$pmYoȪRKۉ/5Hz?-q.JQ{;Rvh(\ Ic C::愳$p.L:dv 6)O9Þ\ |uƵm3Nw^&m}Zаm~ '/zXN/~^upt\ZԏBEi0{~G-u"})SlYn;bGG_\԰*/Dx7 ,wy%f^UG5uMLtS"g>?ZL!YGH{prYR̎}=8Vl`Ԟ pߜp҈-})?0CS7Kނqps.c@:ѱDW@NW#$ml"QZGx\ƹ@XH6`Ix3+![Xx"9Ex!z`nk3xsUk|9z"N!RM~2[g +5yqW3=[v) Y,㮙s*s7cX0E^0HF9;0)YvTQ՗fQ|@ȽXYﭡµz!aR%d.,j8%[56~tZ+!U,];ǩWr6g6 W#fb55W F@zNQY1aRCil";Yl{NwI"6x0]ۭ^˜ Eھ}{Der0dwE36U +IVLX5x4A-H3F-ap=O;&]l=D<ͨDsѢ~j,'.vdFpI?NUIk/p}>P%ܛm֡`|Q fz)Xu^2;,KO8TTRf>HB8Ɨ!cgo"d+1vt EYW+ʷ[~˻ƒx_İb +6F64 ~y ׅܨTeޏf쿚4'Է$(n( +Sn5RzRQkn|G\R[MdvӺ5K, endstream endobj 518 0 obj << /Type /FontDescriptor -/FontName /VCFHMD+CMMI8 +/FontName /OVCSNW+CMMI8 /Flags 4 /FontBBox [-24 -250 1110 750] /Ascent 694 @@ -5841,7 +5908,7 @@ endobj /ItalicAngle -14 /StemV 78 /XHeight 431 -/CharSet (/A/C/E/H/L/O/P/R/S/T/delta/i/j/l/m/n/r/s) +/CharSet (/A/C/E/H/L/O/P/R/S/T/a/delta/i/j/l/m/n/r/s/x) /FontFile 517 0 R >> endobj 519 0 obj << @@ -6393,10 +6460,10 @@ endobj /FontFile 529 0 R >> endobj 531 0 obj << -/Length1 786 -/Length2 937 +/Length1 765 +/Length2 745 /Length3 0 -/Length 1723 +/Length 1510 >> stream %!PS-AdobeFont-1.1: CMSY8 1.0 @@ -6412,28 +6479,24 @@ stream /ItalicAngle -14.035 def /isFixedPitch false def end readonly def -/FontName /SJPXCC+CMSY8 def +/FontName /VOEFGO+CMSY8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 49 /infinity put dup 0 /minus put dup 2 /multiply put readonly def /FontBBox{-30 -955 1185 779}readonly def currentdict end currentfile eexec -oc;j~EЪ/ ȭX~id}S5Q!gtⵎkJc;rN^X5.Sy +'IqV:r㚉#,# dBZ *R*"7٨y! [R߻*|]~[C֨a[#ԙ jY!4J"3&ejc\J$2626wIaUIrnFB/Г(Hp%#O.,snݸt%\b9?_\ <+n6gd'0ǎAll[9r)fx8EWBWPB l1UsݵIpd'㺰YVZZnGEAƆY'"v?DljO? "ڲ_zej΂[(AP˂^̸ۣIbEwA%²^b:ǯ>N@r?qlKmV]r: e@l +oc;j~EЪ/ ȭX~id}S5Q!gtⵎkJc;rN^X5.Sy +'IqV:r㚉#,# dBZ *R*"7٨y! [R߻*|]~[C֨a[#ԙ jY!4J"3&ejc\J$2626wIaUIrnFB/Г(Hp%#O.,snݸt%\b9?_\ <+n6rBPYԥ Tlp4űI=+rp% !<'y1# 0wyr(X|X> endobj 533 0 obj << @@ -6924,7 +6987,7 @@ endobj 175 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /PXTKEK+CMMI10 +/BaseFont /MXLKIB+CMMI10 /FontDescriptor 512 0 R /FirstChar 14 /LastChar 122 @@ -6951,10 +7014,10 @@ endobj 271 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /VCFHMD+CMMI8 +/BaseFont /OVCSNW+CMMI8 /FontDescriptor 518 0 R /FirstChar 14 -/LastChar 115 +/LastChar 120 /Widths 492 0 R >> endobj 123 0 obj << @@ -7014,10 +7077,10 @@ endobj 272 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /SJPXCC+CMSY8 +/BaseFont /VOEFGO+CMSY8 /FontDescriptor 532 0 R /FirstChar 0 -/LastChar 49 +/LastChar 2 /Widths 491 0 R >> endobj 173 0 obj << @@ -7403,8 +7466,8 @@ endobj >> endobj 570 0 obj << /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package based on PSBLAS, V. 1.0) /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package) /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 2008-04-08 Pasqua D'Ambra, Daniela di Serafino, Salvatore Filippone$) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() -/CreationDate (D:20080724150129+02'00') -/ModDate (D:20080724150129+02'00') +/CreationDate (D:20080724153355+02'00') +/ModDate (D:20080724153355+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) >> endobj @@ -7417,103 +7480,103 @@ xref 0000000000 00000 f 0000000015 00000 n 0000003823 00000 n -0000422431 00000 n +0000423891 00000 n 0000000058 00000 n 0000000109 00000 n 0000008280 00000 n -0000422359 00000 n +0000423819 00000 n 0000000155 00000 n 0000000182 00000 n 0000029341 00000 n -0000422273 00000 n +0000423733 00000 n 0000000228 00000 n 0000000265 00000 n 0000037009 00000 n -0000422187 00000 n +0000423647 00000 n 0000000311 00000 n 0000000349 00000 n 0000045692 00000 n -0000422064 00000 n +0000423524 00000 n 0000000395 00000 n 0000000447 00000 n 0000045750 00000 n -0000421990 00000 n +0000423450 00000 n 0000000498 00000 n 0000000534 00000 n 0000052433 00000 n -0000421903 00000 n +0000423363 00000 n 0000000585 00000 n 0000000638 00000 n 0000052491 00000 n -0000421816 00000 n +0000423276 00000 n 0000000689 00000 n 0000000733 00000 n 0000066170 00000 n -0000421729 00000 n +0000423189 00000 n 0000000784 00000 n 0000000820 00000 n 0000066228 00000 n -0000421655 00000 n +0000423115 00000 n 0000000871 00000 n 0000000919 00000 n 0000075811 00000 n -0000421532 00000 n +0000422992 00000 n 0000000965 00000 n 0000001029 00000 n 0000092666 00000 n -0000421458 00000 n +0000422918 00000 n 0000001080 00000 n 0000001138 00000 n 0000120713 00000 n -0000421384 00000 n +0000422844 00000 n 0000001189 00000 n 0000001232 00000 n 0000148561 00000 n -0000421261 00000 n +0000422721 00000 n 0000001278 00000 n 0000001314 00000 n 0000158839 00000 n -0000421200 00000 n +0000422660 00000 n 0000001365 00000 n 0000001396 00000 n 0000185085 00000 n -0000421077 00000 n +0000422537 00000 n 0000001442 00000 n 0000001477 00000 n 0000189132 00000 n -0000421003 00000 n +0000422463 00000 n 0000001528 00000 n 0000001577 00000 n 0000195945 00000 n -0000420916 00000 n +0000422376 00000 n 0000001628 00000 n 0000001676 00000 n -0000234018 00000 n -0000420829 00000 n +0000235303 00000 n +0000422289 00000 n 0000001727 00000 n 0000001775 00000 n -0000243704 00000 n -0000420742 00000 n +0000244989 00000 n +0000422202 00000 n 0000001826 00000 n 0000001875 00000 n -0000246070 00000 n -0000420655 00000 n +0000247355 00000 n +0000422115 00000 n 0000001926 00000 n 0000001975 00000 n -0000248932 00000 n -0000420581 00000 n +0000250217 00000 n +0000422041 00000 n 0000002026 00000 n 0000002076 00000 n -0000251493 00000 n -0000420495 00000 n +0000252778 00000 n +0000421955 00000 n 0000002122 00000 n 0000002157 00000 n -0000255898 00000 n -0000420407 00000 n +0000257183 00000 n +0000421867 00000 n 0000002204 00000 n 0000002233 00000 n -0000262962 00000 n -0000420331 00000 n +0000264247 00000 n +0000421791 00000 n 0000002281 00000 n 0000002311 00000 n 0000003586 00000 n @@ -7521,10 +7584,10 @@ xref 0000002363 00000 n 0000003705 00000 n 0000003764 00000 n -0000416761 00000 n -0000418902 00000 n -0000417909 00000 n -0000419190 00000 n +0000418222 00000 n +0000420362 00000 n +0000419370 00000 n +0000420650 00000 n 0000004247 00000 n 0000004069 00000 n 0000003978 00000 n @@ -7533,8 +7596,8 @@ xref 0000008102 00000 n 0000004288 00000 n 0000008221 00000 n -0000417766 00000 n -0000416905 00000 n +0000419227 00000 n +0000418366 00000 n 0000008752 00000 n 0000008574 00000 n 0000008436 00000 n @@ -7568,7 +7631,7 @@ xref 0000008824 00000 n 0000019347 00000 n 0000019406 00000 n -0000416617 00000 n +0000418078 00000 n 0000019879 00000 n 0000019701 00000 n 0000019563 00000 n @@ -7583,17 +7646,17 @@ xref 0000029460 00000 n 0000028053 00000 n 0000019951 00000 n -0000418758 00000 n +0000420218 00000 n 0000029399 00000 n -0000417193 00000 n -0000418334 00000 n -0000419307 00000 n -0000270580 00000 n -0000263021 00000 n -0000270816 00000 n -0000270285 00000 n -0000270226 00000 n -0000270639 00000 n +0000418654 00000 n +0000419795 00000 n +0000420767 00000 n +0000271865 00000 n +0000264306 00000 n +0000272101 00000 n +0000271570 00000 n +0000271511 00000 n +0000271924 00000 n 0000033676 00000 n 0000033828 00000 n 0000033980 00000 n @@ -7610,7 +7673,7 @@ xref 0000036499 00000 n 0000034821 00000 n 0000036950 00000 n -0000419046 00000 n +0000420506 00000 n 0000044405 00000 n 0000044558 00000 n 0000044711 00000 n @@ -7623,11 +7686,11 @@ xref 0000044210 00000 n 0000037178 00000 n 0000045633 00000 n -0000263552 00000 n -0000263611 00000 n -0000270403 00000 n -0000270344 00000 n -0000263670 00000 n +0000264837 00000 n +0000264896 00000 n +0000271688 00000 n +0000271629 00000 n +0000264955 00000 n 0000051907 00000 n 0000052062 00000 n 0000052215 00000 n @@ -7636,9 +7699,9 @@ xref 0000051593 00000 n 0000045932 00000 n 0000052374 00000 n -0000263434 00000 n -0000263493 00000 n -0000270462 00000 n +0000264719 00000 n +0000264778 00000 n +0000271747 00000 n 0000056728 00000 n 0000056550 00000 n 0000052686 00000 n @@ -7648,7 +7711,7 @@ xref 0000060755 00000 n 0000056826 00000 n 0000061045 00000 n -0000419424 00000 n +0000420884 00000 n 0000066286 00000 n 0000065992 00000 n 0000061202 00000 n @@ -7664,8 +7727,8 @@ xref 0000074647 00000 n 0000066397 00000 n 0000075752 00000 n -0000263316 00000 n -0000263375 00000 n +0000264601 00000 n +0000264660 00000 n 0000091194 00000 n 0000091354 00000 n 0000091519 00000 n @@ -7681,20 +7744,20 @@ xref 0000090822 00000 n 0000075980 00000 n 0000092607 00000 n -0000417623 00000 n -0000418617 00000 n -0000418193 00000 n -0000417337 00000 n -0000417050 00000 n +0000419084 00000 n +0000420078 00000 n +0000419654 00000 n +0000418798 00000 n +0000418511 00000 n 0000092724 00000 n 0000092783 00000 n 0000092842 00000 n -0000270698 00000 n -0000270757 00000 n -0000263080 00000 n -0000263139 00000 n -0000263198 00000 n -0000270521 00000 n +0000271983 00000 n +0000272042 00000 n +0000264365 00000 n +0000264424 00000 n +0000264483 00000 n +0000271806 00000 n 0000107648 00000 n 0000107802 00000 n 0000107182 00000 n @@ -7702,8 +7765,8 @@ xref 0000107011 00000 n 0000093103 00000 n 0000107956 00000 n -0000263257 00000 n -0000270167 00000 n +0000264542 00000 n +0000271452 00000 n 0000119871 00000 n 0000120024 00000 n 0000120176 00000 n @@ -7725,12 +7788,12 @@ xref 0000131234 00000 n 0000121019 00000 n 0000132359 00000 n -0000418052 00000 n -0000417480 00000 n -0000418477 00000 n +0000419513 00000 n +0000418941 00000 n +0000419938 00000 n 0000132480 00000 n 0000132539 00000 n -0000419541 00000 n +0000421001 00000 n 0000136902 00000 n 0000137063 00000 n 0000137225 00000 n @@ -7766,7 +7829,7 @@ xref 0000148914 00000 n 0000158778 00000 n 0000201128 00000 n -0000229793 00000 n +0000231078 00000 n 0000158419 00000 n 0000158569 00000 n 0000158897 00000 n @@ -7802,7 +7865,7 @@ xref 0000177130 00000 n 0000174047 00000 n 0000177420 00000 n -0000419658 00000 n +0000421118 00000 n 0000184869 00000 n 0000185143 00000 n 0000184730 00000 n @@ -7841,151 +7904,151 @@ xref 0000201289 00000 n 0000211171 00000 n 0000211230 00000 n -0000220082 00000 n -0000220355 00000 n -0000219943 00000 n +0000221353 00000 n +0000221627 00000 n +0000221214 00000 n 0000211431 00000 n -0000220233 00000 n -0000220292 00000 n -0000419775 00000 n -0000229857 00000 n -0000229615 00000 n -0000220518 00000 n -0000229734 00000 n -0000233489 00000 n -0000233648 00000 n -0000233807 00000 n -0000233338 00000 n -0000234076 00000 n -0000233175 00000 n -0000229994 00000 n -0000233959 00000 n -0000243494 00000 n -0000243762 00000 n -0000243355 00000 n -0000234200 00000 n -0000243645 00000 n -0000245859 00000 n -0000245708 00000 n -0000246128 00000 n -0000245561 00000 n -0000243938 00000 n -0000246011 00000 n -0000248721 00000 n -0000248990 00000 n -0000248582 00000 n -0000246252 00000 n -0000248873 00000 n -0000251275 00000 n -0000251124 00000 n -0000251551 00000 n -0000250977 00000 n -0000249114 00000 n -0000251434 00000 n -0000419892 00000 n -0000255956 00000 n -0000255720 00000 n -0000251662 00000 n -0000255839 00000 n -0000263729 00000 n -0000262784 00000 n -0000256067 00000 n -0000262903 00000 n -0000270875 00000 n -0000269989 00000 n -0000263853 00000 n -0000270108 00000 n -0000270986 00000 n -0000271011 00000 n -0000271242 00000 n -0000271301 00000 n -0000271997 00000 n -0000272561 00000 n -0000272664 00000 n -0000272997 00000 n -0000273626 00000 n -0000274021 00000 n -0000274657 00000 n -0000275278 00000 n -0000275947 00000 n -0000276562 00000 n -0000277074 00000 n -0000277718 00000 n -0000278202 00000 n -0000278559 00000 n -0000279200 00000 n -0000290509 00000 n -0000290864 00000 n -0000301136 00000 n -0000301499 00000 n -0000311200 00000 n -0000311549 00000 n -0000314921 00000 n -0000315247 00000 n -0000324840 00000 n -0000325165 00000 n -0000327513 00000 n -0000327741 00000 n -0000330499 00000 n -0000330726 00000 n -0000336709 00000 n -0000336968 00000 n -0000354754 00000 n -0000355327 00000 n -0000363853 00000 n -0000364204 00000 n -0000366221 00000 n -0000366446 00000 n -0000368809 00000 n -0000369044 00000 n -0000372514 00000 n -0000372860 00000 n -0000374283 00000 n -0000374508 00000 n -0000376328 00000 n -0000376571 00000 n -0000392432 00000 n -0000392846 00000 n -0000400186 00000 n -0000400467 00000 n -0000416059 00000 n -0000419993 00000 n -0000420111 00000 n -0000420188 00000 n -0000420258 00000 n -0000422529 00000 n -0000422702 00000 n -0000422868 00000 n -0000423037 00000 n -0000423256 00000 n -0000423484 00000 n -0000423717 00000 n -0000423923 00000 n -0000424111 00000 n -0000424284 00000 n -0000424454 00000 n -0000424623 00000 n -0000424793 00000 n -0000424962 00000 n -0000425126 00000 n -0000425299 00000 n -0000425484 00000 n -0000425684 00000 n -0000425904 00000 n -0000426111 00000 n -0000426261 00000 n -0000426375 00000 n -0000426487 00000 n -0000426603 00000 n -0000426687 00000 n -0000426782 00000 n -0000426820 00000 n -0000427017 00000 n +0000221504 00000 n +0000221563 00000 n +0000421235 00000 n +0000231142 00000 n +0000230900 00000 n +0000221803 00000 n +0000231019 00000 n +0000234774 00000 n +0000234933 00000 n +0000235092 00000 n +0000234623 00000 n +0000235361 00000 n +0000234460 00000 n +0000231279 00000 n +0000235244 00000 n +0000244779 00000 n +0000245047 00000 n +0000244640 00000 n +0000235485 00000 n +0000244930 00000 n +0000247144 00000 n +0000246993 00000 n +0000247413 00000 n +0000246846 00000 n +0000245223 00000 n +0000247296 00000 n +0000250006 00000 n +0000250275 00000 n +0000249867 00000 n +0000247537 00000 n +0000250158 00000 n +0000252560 00000 n +0000252409 00000 n +0000252836 00000 n +0000252262 00000 n +0000250399 00000 n +0000252719 00000 n +0000421352 00000 n +0000257241 00000 n +0000257005 00000 n +0000252947 00000 n +0000257124 00000 n +0000265014 00000 n +0000264069 00000 n +0000257352 00000 n +0000264188 00000 n +0000272160 00000 n +0000271274 00000 n +0000265138 00000 n +0000271393 00000 n +0000272271 00000 n +0000272296 00000 n +0000272527 00000 n +0000272586 00000 n +0000273282 00000 n +0000273846 00000 n +0000273949 00000 n +0000273986 00000 n +0000274645 00000 n +0000275040 00000 n +0000275676 00000 n +0000276297 00000 n +0000276966 00000 n +0000277581 00000 n +0000278093 00000 n +0000278737 00000 n +0000279221 00000 n +0000279578 00000 n +0000280219 00000 n +0000291528 00000 n +0000291883 00000 n +0000302155 00000 n +0000302518 00000 n +0000312219 00000 n +0000312568 00000 n +0000315940 00000 n +0000316266 00000 n +0000326028 00000 n +0000326360 00000 n +0000328708 00000 n +0000328936 00000 n +0000331694 00000 n +0000331921 00000 n +0000338388 00000 n +0000338651 00000 n +0000356437 00000 n +0000357010 00000 n +0000365536 00000 n +0000365887 00000 n +0000367904 00000 n +0000368129 00000 n +0000370492 00000 n +0000370727 00000 n +0000374197 00000 n +0000374543 00000 n +0000375966 00000 n +0000376191 00000 n +0000377798 00000 n +0000378032 00000 n +0000393893 00000 n +0000394307 00000 n +0000401647 00000 n +0000401928 00000 n +0000417520 00000 n +0000421453 00000 n +0000421571 00000 n +0000421648 00000 n +0000421718 00000 n +0000423989 00000 n +0000424162 00000 n +0000424328 00000 n +0000424497 00000 n +0000424716 00000 n +0000424944 00000 n +0000425177 00000 n +0000425383 00000 n +0000425571 00000 n +0000425744 00000 n +0000425914 00000 n +0000426083 00000 n +0000426253 00000 n +0000426422 00000 n +0000426586 00000 n +0000426759 00000 n +0000426944 00000 n +0000427144 00000 n +0000427364 00000 n +0000427571 00000 n +0000427721 00000 n +0000427835 00000 n +0000427947 00000 n +0000428063 00000 n +0000428147 00000 n +0000428242 00000 n +0000428280 00000 n +0000428477 00000 n trailer << /Size 571 /Root 569 0 R /Info 570 0 R -/ID [<0ADDDDD89E8359949F0ED5F67CEB3E28> <0ADDDDD89E8359949F0ED5F67CEB3E28>] >> +/ID [<8C9D77446880D5C824A790A1E14DBC0A> <8C9D77446880D5C824A790A1E14DBC0A>] >> startxref -427760 +429220 %%EOF diff --git a/docs/src/userinterface.tex b/docs/src/userinterface.tex index e3d5cf34..441c3f21 100644 --- a/docs/src/userinterface.tex +++ b/docs/src/userinterface.tex @@ -234,22 +234,28 @@ refer to Section~\ref{sec:background}. & Any~real~num. $\in [0, 1]$ & 0 & Threshold $\theta$ in the aggregation algorithm. \\ \hline +\verb|mld_aggr_omega_alg_| & \verb|character(len=*)| + & \texttt{'USER\_CHOICE'} \hspace{2.5cm} \texttt{'EIG\_EST'} + & \texttt{'EIG\_EST'} + & How the damping parameter $\omega$ in the + smoothed aggregation should be computed: + either via an estimate of the eigenvalue + $D^{-1}A$ with largest modulus, or explicily + specified by the user. \\ \hline \verb|mld_aggr_eig_| & \verb|character(len=*)| & \texttt{'A\_NORMI'} & \texttt{'A\_NORMI'} - & Estimate of the eigenvalue $D^{-1}A$ with largest modulus, - to build the damping parameter $\omega$ in the smoothed aggregation. - Currently, only the infinity norm of - the matrix is available. \\ \hline + & How to estimate the eigenvalue $D^{-1}A$ with largest modulus. + Currently only the infinity norm estimate + is available. \\ \hline \verb|mld_aggr_damp_| & \verb|real(|\emph{kind\_parameter}\verb|)| - & Any~real~num. - & $4/(3||D^{-1}A||_\infty)$ + & Any~nonnegative~real~num. + & $4/(3|\lambda_{max}(D^{-1}A)|)$ & Damping parameter $\omega$ in the smoothed aggregation algorithm. - If the user specifies a negative value, then $\omega$ - is set to its default value; - otherwise, $\omega$ is set to the value provided by the - user. In the latter case no estimate of the eigenvalue of - $D^{-1}A$ with largest modulus is computed.\\ + Must be set by the user if + \verb|USER_CHOICE| was specified for + \verb|mld_aggr_omega_alg_|, + otherwise it is computed by the library.\\ \hline \end{tabular} \end{center} diff --git a/mlprec/mld_caggrmat_smth_asb.F90 b/mlprec/mld_caggrmat_smth_asb.F90 index 29747597..32da3daf 100644 --- a/mlprec/mld_caggrmat_smth_asb.F90 +++ b/mlprec/mld_caggrmat_smth_asb.F90 @@ -58,7 +58,7 @@ ! where D is the diagonal matrix with main diagonal equal to the main diagonal ! of A, and omega is a suitable smoothing parameter. An estimate of the spectral ! radius of D^(-1)A, to be used in the computation of omega, is provided, -! according to the value of p%iprcparm(mld_aggr_eig_), specified by the user +! according to the value of p%iprcparm(mld_aggr_omega_alg_), specified by the user ! through mld_dprecinit and mld_dprecset. ! ! This routine can also build A_C according to a "bizarre" aggregation algorithm, @@ -106,7 +106,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) include 'mpif.h' #endif -! Arguments + ! Arguments type(psb_cspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a type(psb_cspmat_type), intent(out) :: ac @@ -114,7 +114,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) type(mld_cbaseprc_type), intent(inout), target :: p integer, intent(out) :: info -! Local variables + ! Local variables type(psb_cspmat_type) :: b integer, pointer :: nzbr(:), idisp(:) integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,& @@ -261,50 +261,61 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) call psb_sp_scal(am3,adiag,info) if (info /= 0) goto 9999 - if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then - - if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then + if (p%iprcparm(mld_aggr_omega_alg_) == mld_eig_est_) then + + + if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then + + if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then + + ! + ! This only works with CSR. + ! + if (psb_toupper(am3%fida)=='CSR') then + anorm = szero + dg = sone + do i=1,am3%m + tmp = szero + do j=am3%ia2(i),am3%ia2(i+1)-1 + if (am3%ia1(j) <= am3%m) then + tmp = tmp + abs(am3%aspk(j)) + endif + if (am3%ia1(j) == i ) then + dg = abs(am3%aspk(j)) + end if + end do + anorm = max(anorm,tmp/dg) + enddo + else + info = 4001 + call psb_errpush(info,name,a_err='this section only CSR') + goto 9999 + endif - ! - ! This only works with CSR. - ! - if (psb_toupper(am3%fida)=='CSR') then - anorm = dzero - dg = done - do i=1,am3%m - tmp = dzero - do j=am3%ia2(i),am3%ia2(i+1)-1 - if (am3%ia1(j) <= am3%m) then - tmp = tmp + abs(am3%aspk(j)) - endif - if (am3%ia1(j) == i ) then - dg = abs(am3%aspk(j)) - end if - end do - anorm = max(anorm,tmp/dg) - enddo - call psb_amx(ictxt,anorm) else - info = 4001 + anorm = psb_spnrmi(am3,desc_a,info) endif - else - anorm = psb_spnrmi(am3,desc_a,info) - endif - if (info /= 0) then - call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + if (info /= 0) then + call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + goto 9999 + end if + omega = 4.d0/(3.d0*anorm) + p%rprcparm(mld_aggr_omega_val_) = omega + + else + info = 4001 + call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') goto 9999 end if - omega = 4.d0/(3.d0*anorm) - p%rprcparm(mld_aggr_damp_) = omega - else if (p%iprcparm(mld_aggr_eig_) == mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) == mld_user_choice_) then - omega = p%rprcparm(mld_aggr_damp_) + omega = p%rprcparm(mld_aggr_omega_val_) - else if (p%iprcparm(mld_aggr_eig_) /= mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) /= mld_user_choice_) then info = 4001 - call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') + call psb_errpush(info,name,a_err='invalid mld_aggr_omega_alg_') goto 9999 end if @@ -368,7 +379,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) call psb_errpush(4001,name,a_err='Halo of am1') goto 9999 end if - + call psb_symbmm(a,am1,am3,info) if(info /= 0) then call psb_errpush(4010,name,a_err='symbmm 2') diff --git a/mlprec/mld_cmlprec_bld.f90 b/mlprec/mld_cmlprec_bld.f90 index abcbc323..76b1c05d 100644 --- a/mlprec/mld_cmlprec_bld.f90 +++ b/mlprec/mld_cmlprec_bld.f90 @@ -100,7 +100,11 @@ subroutine mld_cmlprec_bld(a,desc_a,p,info) & mld_distr_mat_,is_legal_ml_coarse_mat) call mld_check_def(p%iprcparm(mld_smoother_pos_),'smooth_pos',& & mld_pre_smooth_,is_legal_ml_smooth_pos) - + call mld_check_def(p%iprcparm(mld_aggr_omega_alg_),'Omega Alg.',& + & mld_eig_est_,is_legal_ml_aggr_omega_alg) + call mld_check_def(p%iprcparm(mld_aggr_eig_),'Eigenvalue estimate',& + & mld_max_norm_,is_legal_ml_aggr_eig) + select case(p%iprcparm(mld_sub_solve_)) case(mld_ilu_n_,mld_milu_n_) @@ -108,7 +112,7 @@ subroutine mld_cmlprec_bld(a,desc_a,p,info) case(mld_ilu_t_) call mld_check_def(p%rprcparm(mld_sub_iluthrs_),'Eps',szero,is_legal_s_fact_thrs) end select - call mld_check_def(p%rprcparm(mld_aggr_damp_),'Omega',szero,is_legal_s_omega) + call mld_check_def(p%rprcparm(mld_aggr_omega_val_),'Omega',szero,is_legal_s_omega) call mld_check_def(p%rprcparm(mld_aggr_thresh_),'Aggr_Thresh',szero,is_legal_s_aggr_thrs) call mld_check_def(p%iprcparm(mld_smoother_sweeps_),'Jacobi sweeps',& & 1,is_legal_jac_sweeps) diff --git a/mlprec/mld_cprecinit.F90 b/mlprec/mld_cprecinit.F90 index aed40bd5..0a7b4e0e 100644 --- a/mlprec/mld_cprecinit.F90 +++ b/mlprec/mld_cprecinit.F90 @@ -219,11 +219,12 @@ subroutine mld_cprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.e0/3.e0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = szero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = szero end do ilev_ = nlev_ @@ -248,10 +249,11 @@ subroutine mld_cprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 4 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.e0/3.e0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = szero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = szero case default write(0,*) name,': Warning: Unknown preconditioner type request "',ptype,'"' diff --git a/mlprec/mld_cprecset.f90 b/mlprec/mld_cprecset.f90 index 1eed8ebd..d7cd13a3 100644 --- a/mlprec/mld_cprecset.f90 +++ b/mlprec/mld_cprecset.f90 @@ -145,7 +145,7 @@ subroutine mld_cprecseti(p,what,val,info,ilev) case(mld_smoother_type_,mld_sub_solve_,mld_sub_restr_,mld_sub_prol_,& & mld_sub_ren_,mld_sub_ovr_,mld_sub_fillin_,& & mld_smoother_sweeps_,mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) p%baseprecv(ilev_)%iprcparm(what) = val case(mld_coarse_mat_) if (ilev_ /= nlev_ .and. val /= mld_distr_mat_) then @@ -220,8 +220,8 @@ subroutine mld_cprecseti(p,what,val,info,ilev) p%baseprecv(ilev_)%iprcparm(what) = val end do case(mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) - do ilev_=2,nlev_-1 + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) + do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%iprcparm)) then write(0,*) name,& &': Error: uninitialized preconditioner component, should call MLD_PRECINIT' @@ -487,7 +487,7 @@ subroutine mld_cprecsetr(p,what,val,info,ilev) else if (ilev_ > 1) then select case(what) - case(mld_aggr_damp_,mld_aggr_thresh_,mld_sub_iluthrs_) + case(mld_aggr_omega_val_,mld_aggr_thresh_,mld_sub_iluthrs_) p%baseprecv(ilev_)%rprcparm(what) = val case default write(0,*) name,': Error: invalid WHAT' @@ -518,7 +518,7 @@ subroutine mld_cprecsetr(p,what,val,info,ilev) return endif p%baseprecv(ilev_)%rprcparm(mld_sub_iluthrs_) = val - case(mld_aggr_damp_) + case(mld_aggr_omega_val_) do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%rprcparm)) then write(0,*) name,': Error: uninitialized preconditioner component, should call MLD_PRECINIT' diff --git a/mlprec/mld_daggrmat_smth_asb.F90 b/mlprec/mld_daggrmat_smth_asb.F90 index d65b50f9..c8df6c02 100644 --- a/mlprec/mld_daggrmat_smth_asb.F90 +++ b/mlprec/mld_daggrmat_smth_asb.F90 @@ -58,7 +58,7 @@ ! where D is the diagonal matrix with main diagonal equal to the main diagonal ! of A, and omega is a suitable smoothing parameter. An estimate of the spectral ! radius of D^(-1)A, to be used in the computation of omega, is provided, -! according to the value of p%iprcparm(mld_aggr_eig_), specified by the user +! according to the value of p%iprcparm(mld_aggr_omega_alg_), specified by the user ! through mld_dprecinit and mld_dprecset. ! ! This routine can also build A_C according to a "bizarre" aggregation algorithm, @@ -261,50 +261,60 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) call psb_sp_scal(am3,adiag,info) if (info /= 0) goto 9999 - if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then - - if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then - - ! - ! This only works with CSR. - ! - if (psb_toupper(am3%fida)=='CSR') then - anorm = dzero - dg = done - do i=1,am3%m - tmp = dzero - do j=am3%ia2(i),am3%ia2(i+1)-1 - if (am3%ia1(j) <= am3%m) then - tmp = tmp + dabs(am3%aspk(j)) - endif - if (am3%ia1(j) == i ) then - dg = dabs(am3%aspk(j)) - end if - end do - anorm = max(anorm,tmp/dg) - enddo - - call psb_amx(ictxt,anorm) + if (p%iprcparm(mld_aggr_omega_alg_) == mld_eig_est_) then + + if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then + + if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then + + ! + ! This only works with CSR. + ! + if (psb_toupper(am3%fida)=='CSR') then + anorm = dzero + dg = done + do i=1,am3%m + tmp = dzero + do j=am3%ia2(i),am3%ia2(i+1)-1 + if (am3%ia1(j) <= am3%m) then + tmp = tmp + dabs(am3%aspk(j)) + endif + if (am3%ia1(j) == i ) then + dg = dabs(am3%aspk(j)) + end if + end do + anorm = max(anorm,tmp/dg) + enddo + + call psb_amx(ictxt,anorm) + else + info = 4001 + call psb_errpush(info,name,a_err='this section only CSR') + goto 9999 + endif else - info = 4001 + anorm = psb_spnrmi(am3,desc_a,info) endif - else - anorm = psb_spnrmi(am3,desc_a,info) - endif - if (info /= 0) then - call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + if (info /= 0) then + call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + goto 9999 + end if + omega = 4.d0/(3.d0*anorm) + p%rprcparm(mld_aggr_omega_val_) = omega + + else + info = 4001 + call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') goto 9999 end if - omega = 4.d0/(3.d0*anorm) - p%rprcparm(mld_aggr_damp_) = omega - else if (p%iprcparm(mld_aggr_eig_) == mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) == mld_user_choice_) then - omega = p%rprcparm(mld_aggr_damp_) + omega = p%rprcparm(mld_aggr_omega_val_) - else if (p%iprcparm(mld_aggr_eig_) /= mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) /= mld_user_choice_) then info = 4001 - call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') + call psb_errpush(info,name,a_err='invalid mld_aggr_omega_alg_') goto 9999 end if diff --git a/mlprec/mld_dmlprec_bld.f90 b/mlprec/mld_dmlprec_bld.f90 index a7266615..c66c561f 100644 --- a/mlprec/mld_dmlprec_bld.f90 +++ b/mlprec/mld_dmlprec_bld.f90 @@ -100,7 +100,11 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info) & mld_distr_mat_,is_legal_ml_coarse_mat) call mld_check_def(p%iprcparm(mld_smoother_pos_),'smooth_pos',& & mld_pre_smooth_,is_legal_ml_smooth_pos) - + call mld_check_def(p%iprcparm(mld_aggr_omega_alg_),'Omega Alg.',& + & mld_eig_est_,is_legal_ml_aggr_omega_alg) + call mld_check_def(p%iprcparm(mld_aggr_eig_),'Eigenvalue estimate',& + & mld_max_norm_,is_legal_ml_aggr_eig) + select case(p%iprcparm(mld_sub_solve_)) case(mld_ilu_n_,mld_milu_n_) @@ -108,7 +112,7 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info) case(mld_ilu_t_) call mld_check_def(p%rprcparm(mld_sub_iluthrs_),'Eps',dzero,is_legal_fact_thrs) end select - call mld_check_def(p%rprcparm(mld_aggr_damp_),'Omega',dzero,is_legal_omega) + call mld_check_def(p%rprcparm(mld_aggr_omega_val_),'Omega',dzero,is_legal_omega) call mld_check_def(p%rprcparm(mld_aggr_thresh_),'Aggr_Thresh',dzero,is_legal_aggr_thrs) call mld_check_def(p%iprcparm(mld_smoother_sweeps_),'Jacobi sweeps',& & 1,is_legal_jac_sweeps) diff --git a/mlprec/mld_dprecinit.F90 b/mlprec/mld_dprecinit.F90 index 3559be45..4aed84b8 100644 --- a/mlprec/mld_dprecinit.F90 +++ b/mlprec/mld_dprecinit.F90 @@ -219,11 +219,12 @@ subroutine mld_dprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.d0/3.d0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = dzero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = dzero end do ilev_ = nlev_ @@ -250,10 +251,11 @@ subroutine mld_dprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 4 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.d0/3.d0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = dzero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = dzero case default diff --git a/mlprec/mld_dprecset.f90 b/mlprec/mld_dprecset.f90 index 482c4afd..a7f3aabc 100644 --- a/mlprec/mld_dprecset.f90 +++ b/mlprec/mld_dprecset.f90 @@ -144,7 +144,7 @@ subroutine mld_dprecseti(p,what,val,info,ilev) case(mld_smoother_type_,mld_sub_solve_,mld_sub_restr_,mld_sub_prol_,& & mld_sub_ren_,mld_sub_ovr_,mld_sub_fillin_,& & mld_smoother_sweeps_,mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) p%baseprecv(ilev_)%iprcparm(what) = val case(mld_coarse_mat_) if (ilev_ /= nlev_ .and. val /= mld_distr_mat_) then @@ -219,8 +219,8 @@ subroutine mld_dprecseti(p,what,val,info,ilev) p%baseprecv(ilev_)%iprcparm(what) = val end do case(mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) - do ilev_=2,nlev_-1 + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) + do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%iprcparm)) then write(0,*) name,& &': Error: uninitialized preconditioner component, should call MLD_PRECINIT' @@ -483,7 +483,7 @@ subroutine mld_dprecsetr(p,what,val,info,ilev) else if (ilev_ > 1) then select case(what) - case(mld_aggr_damp_,mld_aggr_thresh_,mld_sub_iluthrs_) + case(mld_aggr_omega_val_,mld_aggr_thresh_,mld_sub_iluthrs_) p%baseprecv(ilev_)%rprcparm(what) = val case default write(0,*) name,': Error: invalid WHAT' @@ -514,7 +514,7 @@ subroutine mld_dprecsetr(p,what,val,info,ilev) return endif p%baseprecv(ilev_)%rprcparm(mld_sub_iluthrs_) = val - case(mld_aggr_damp_) + case(mld_aggr_omega_val_) do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%rprcparm)) then write(0,*) name,': Error: uninitialized preconditioner component, should call MLD_PRECINIT' diff --git a/mlprec/mld_prec_type.f90 b/mlprec/mld_prec_type.f90 index d8ab1f16..35d755f8 100644 --- a/mlprec/mld_prec_type.f90 +++ b/mlprec/mld_prec_type.f90 @@ -248,7 +248,8 @@ module mld_prec_type integer, parameter :: mld_smoother_pos_ = 11 integer, parameter :: mld_aggr_kind_ = 12 integer, parameter :: mld_aggr_alg_ = 13 - integer, parameter :: mld_aggr_eig_ = 14 + integer, parameter :: mld_aggr_omega_alg_ = 14 + integer, parameter :: mld_aggr_eig_ = 15 integer, parameter :: mld_coarse_mat_ = 16 !! 2 ints for 64 bit versions integer, parameter :: mld_slu_ptr_ = 17 @@ -301,10 +302,15 @@ module mld_prec_type integer, parameter :: mld_glb_aggr_=2, mld_new_dec_aggr_=3 integer, parameter :: mld_new_glb_aggr_=4 integer, parameter :: mld_max_aggr_alg_=mld_new_glb_aggr_ + + ! + ! Legal values for entry: mld_aggr_omega_alg_ + ! + integer, parameter :: mld_eig_est_=0, mld_user_choice_=999 ! - ! Legal values for entry: mld_aggr_eig_ + ! Legal values for entry: mld_aggr_omega_eig_ ! - integer, parameter :: mld_max_norm_=0, mld_user_choice_=999 + integer, parameter :: mld_max_norm_=0 ! ! Legal values for entry: mld_coarse_mat_ ! @@ -319,10 +325,10 @@ module mld_prec_type ! Entries in rprcparm: ILU(k,t) threshold, smoothed aggregation omega ! integer, parameter :: mld_sub_iluthrs_ = 1 - integer, parameter :: mld_aggr_damp_ = 2 - integer, parameter :: mld_aggr_thresh_ = 3 + integer, parameter :: mld_aggr_omega_val_ = 2 + integer, parameter :: mld_aggr_thresh_ = 3 integer, parameter :: mld_coarse_iluthrs_ = 4 - integer, parameter :: mld_rfpsz_ = 8 + integer, parameter :: mld_rfpsz_ = 8 ! ! Fields for sparse matrices ensembles stored in av() @@ -484,6 +490,8 @@ contains val = mld_max_norm_ case('USER_CHOICE') val = mld_user_choice_ + case('EIG_EST') + val = mld_eig_est_ case default val = -1 info = -1 @@ -866,7 +874,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if end if end do @@ -890,7 +898,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if if (p%baseprecv(ilev)%iprcparm(mld_coarse_mat_) == mld_distr_mat_ .and. & & p%baseprecv(ilev)%iprcparm(mld_sub_solve_) /= mld_sludist_) then @@ -1076,7 +1084,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if end do @@ -1099,7 +1107,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if if (p%baseprecv(ilev)%iprcparm(mld_coarse_mat_) == mld_distr_mat_ .and. & & p%baseprecv(ilev)%iprcparm(mld_sub_solve_) /= mld_sludist_) then @@ -1306,7 +1314,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if end do @@ -1329,7 +1337,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if if (p%baseprecv(ilev)%iprcparm(mld_coarse_mat_) == mld_distr_mat_ .and. & & p%baseprecv(ilev)%iprcparm(mld_sub_solve_) /= mld_sludist_) then @@ -1515,7 +1523,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if end do @@ -1538,7 +1546,7 @@ contains end if if (p%baseprecv(ilev)%iprcparm(mld_aggr_kind_) /= mld_no_smooth_) then write(iout_,*) ' Damping omega: ', & - & p%baseprecv(ilev)%rprcparm(mld_aggr_damp_) + & p%baseprecv(ilev)%rprcparm(mld_aggr_omega_val_) end if if (p%baseprecv(ilev)%iprcparm(mld_coarse_mat_) == mld_distr_mat_ .and. & & p%baseprecv(ilev)%iprcparm(mld_sub_solve_) /= mld_sludist_) then @@ -1642,6 +1650,20 @@ contains is_legal_ml_aggr_alg = ((ip>=mld_dec_aggr_).and.(ip<=mld_max_aggr_alg_)) return end function is_legal_ml_aggr_alg + function is_legal_ml_aggr_omega_alg(ip) + integer, intent(in) :: ip + logical :: is_legal_ml_aggr_omega_alg + + is_legal_ml_aggr_omega_alg = ((ip==mld_eig_est_).or.(ip==mld_user_choice_)) + return + end function is_legal_ml_aggr_omega_alg + function is_legal_ml_aggr_eig(ip) + integer, intent(in) :: ip + logical :: is_legal_ml_aggr_eig + + is_legal_ml_aggr_eig = (ip==mld_max_norm_) + return + end function is_legal_ml_aggr_eig function is_legal_ml_smooth_pos(ip) integer, intent(in) :: ip logical :: is_legal_ml_smooth_pos diff --git a/mlprec/mld_saggrmat_smth_asb.F90 b/mlprec/mld_saggrmat_smth_asb.F90 index a8c5cbc5..dcc107ee 100644 --- a/mlprec/mld_saggrmat_smth_asb.F90 +++ b/mlprec/mld_saggrmat_smth_asb.F90 @@ -58,7 +58,7 @@ ! where D is the diagonal matrix with main diagonal equal to the main diagonal ! of A, and omega is a suitable smoothing parameter. An estimate of the spectral ! radius of D^(-1)A, to be used in the computation of omega, is provided, -! according to the value of p%iprcparm(mld_aggr_eig_), specified by the user +! according to the value of p%iprcparm(mld_aggr_omega_alg_), specified by the user ! through mld_sprecinit and mld_sprecset. ! ! This routine can also build A_C according to a "bizarre" aggregation algorithm, @@ -106,7 +106,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) include 'mpif.h' #endif -! Arguments + ! Arguments type(psb_sspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a type(psb_sspmat_type), intent(out) :: ac @@ -114,7 +114,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) type(mld_sbaseprc_type), intent(inout), target :: p integer, intent(out) :: info -! Local variables + ! Local variables type(psb_sspmat_type) :: b integer, pointer :: nzbr(:), idisp(:) integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,& @@ -261,50 +261,62 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) call psb_sp_scal(am3,adiag,info) if (info /= 0) goto 9999 - if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then - - if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then + if (p%iprcparm(mld_aggr_omega_alg_) == mld_eig_est_) then + + + if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then + + if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then + + ! + ! This only works with CSR. + ! + if (psb_toupper(am3%fida)=='CSR') then + anorm = szero + dg = sone + do i=1,am3%m + tmp = szero + do j=am3%ia2(i),am3%ia2(i+1)-1 + if (am3%ia1(j) <= am3%m) then + tmp = tmp + abs(am3%aspk(j)) + endif + if (am3%ia1(j) == i ) then + dg = abs(am3%aspk(j)) + end if + end do + anorm = max(anorm,tmp/dg) + enddo + + call psb_amx(ictxt,anorm) + else + info = 4001 + call psb_errpush(info,name,a_err='this section only CSR') + goto 9999 + endif - ! - ! This only works with CSR. - ! - if (psb_toupper(am3%fida)=='CSR') then - anorm = szero - dg = sone - do i=1,am3%m - tmp = szero - do j=am3%ia2(i),am3%ia2(i+1)-1 - if (am3%ia1(j) <= am3%m) then - tmp = tmp + abs(am3%aspk(j)) - endif - if (am3%ia1(j) == i ) then - dg = abs(am3%aspk(j)) - end if - end do - anorm = max(anorm,tmp/dg) - enddo - - call psb_amx(ictxt,anorm) else - info = 4001 + anorm = psb_spnrmi(am3,desc_a,info) endif - else - anorm = psb_spnrmi(am3,desc_a,info) - endif - if (info /= 0) then - call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + if (info /= 0) then + call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + goto 9999 + end if + omega = 4.d0/(3.d0*anorm) + p%rprcparm(mld_aggr_omega_val_) = omega + + else + info = 4001 + call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') goto 9999 end if - omega = 4.d0/(3.d0*anorm) - p%rprcparm(mld_aggr_damp_) = omega - else if (p%iprcparm(mld_aggr_eig_) == mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) == mld_user_choice_) then - omega = p%rprcparm(mld_aggr_damp_) + omega = p%rprcparm(mld_aggr_omega_val_) - else if (p%iprcparm(mld_aggr_eig_) /= mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) /= mld_user_choice_) then info = 4001 - call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') + call psb_errpush(info,name,a_err='invalid mld_aggr_omega_alg_') goto 9999 end if @@ -368,7 +380,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) call psb_errpush(4001,name,a_err='Halo of am1') goto 9999 end if - + call psb_symbmm(a,am1,am3,info) if(info /= 0) then call psb_errpush(4010,name,a_err='symbmm 2') diff --git a/mlprec/mld_smlprec_bld.f90 b/mlprec/mld_smlprec_bld.f90 index 7ca0ec6a..8b6234d1 100644 --- a/mlprec/mld_smlprec_bld.f90 +++ b/mlprec/mld_smlprec_bld.f90 @@ -100,7 +100,11 @@ subroutine mld_smlprec_bld(a,desc_a,p,info) & mld_distr_mat_,is_legal_ml_coarse_mat) call mld_check_def(p%iprcparm(mld_smoother_pos_),'smooth_pos',& & mld_pre_smooth_,is_legal_ml_smooth_pos) - + call mld_check_def(p%iprcparm(mld_aggr_omega_alg_),'Omega Alg.',& + & mld_eig_est_,is_legal_ml_aggr_omega_alg) + call mld_check_def(p%iprcparm(mld_aggr_eig_),'Eigenvalue estimate',& + & mld_max_norm_,is_legal_ml_aggr_eig) + select case(p%iprcparm(mld_sub_solve_)) case(mld_ilu_n_,mld_milu_n_) @@ -108,7 +112,7 @@ subroutine mld_smlprec_bld(a,desc_a,p,info) case(mld_ilu_t_) call mld_check_def(p%rprcparm(mld_sub_iluthrs_),'Eps',szero,is_legal_s_fact_thrs) end select - call mld_check_def(p%rprcparm(mld_aggr_damp_),'Omega',szero,is_legal_s_omega) + call mld_check_def(p%rprcparm(mld_aggr_omega_val_),'Omega',szero,is_legal_s_omega) call mld_check_def(p%rprcparm(mld_aggr_thresh_),'Aggr_Thresh',szero,is_legal_s_aggr_thrs) call mld_check_def(p%iprcparm(mld_smoother_sweeps_),'Jacobi sweeps',& & 1,is_legal_jac_sweeps) diff --git a/mlprec/mld_sprecinit.F90 b/mlprec/mld_sprecinit.F90 index 38069712..3d75fc59 100644 --- a/mlprec/mld_sprecinit.F90 +++ b/mlprec/mld_sprecinit.F90 @@ -219,11 +219,12 @@ subroutine mld_sprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.e0/3.e0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = szero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = szero end do ilev_ = nlev_ @@ -248,10 +249,11 @@ subroutine mld_sprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 4 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.e0/3.e0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = szero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = szero case default diff --git a/mlprec/mld_sprecset.f90 b/mlprec/mld_sprecset.f90 index 04829e62..981dbaed 100644 --- a/mlprec/mld_sprecset.f90 +++ b/mlprec/mld_sprecset.f90 @@ -145,7 +145,7 @@ subroutine mld_sprecseti(p,what,val,info,ilev) case(mld_smoother_type_,mld_sub_solve_,mld_sub_restr_,mld_sub_prol_,& & mld_sub_ren_,mld_sub_ovr_,mld_sub_fillin_,& & mld_smoother_sweeps_,mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) p%baseprecv(ilev_)%iprcparm(what) = val case(mld_coarse_mat_) if (ilev_ /= nlev_ .and. val /= mld_distr_mat_) then @@ -220,8 +220,8 @@ subroutine mld_sprecseti(p,what,val,info,ilev) p%baseprecv(ilev_)%iprcparm(what) = val end do case(mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) - do ilev_=2,nlev_-1 + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) + do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%iprcparm)) then write(0,*) name,& &': Error: uninitialized preconditioner component, should call MLD_PRECINIT' @@ -486,7 +486,7 @@ subroutine mld_sprecsetr(p,what,val,info,ilev) else if (ilev_ > 1) then select case(what) - case(mld_aggr_damp_,mld_aggr_thresh_,mld_sub_iluthrs_) + case(mld_aggr_omega_val_,mld_aggr_thresh_,mld_sub_iluthrs_) p%baseprecv(ilev_)%rprcparm(what) = val case default write(0,*) name,': Error: invalid WHAT' @@ -517,7 +517,7 @@ subroutine mld_sprecsetr(p,what,val,info,ilev) return endif p%baseprecv(ilev_)%rprcparm(mld_sub_iluthrs_) = val - case(mld_aggr_damp_) + case(mld_aggr_omega_val_) do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%rprcparm)) then write(0,*) name,': Error: uninitialized preconditioner component, should call MLD_PRECINIT' diff --git a/mlprec/mld_zaggrmat_smth_asb.F90 b/mlprec/mld_zaggrmat_smth_asb.F90 index 74c62bdf..ae204928 100644 --- a/mlprec/mld_zaggrmat_smth_asb.F90 +++ b/mlprec/mld_zaggrmat_smth_asb.F90 @@ -58,7 +58,7 @@ ! where D is the diagonal matrix with main diagonal equal to the main diagonal ! of A, and omega is a suitable smoothing parameter. An estimate of the spectral ! radius of D^(-1)A, to be used in the computation of omega, is provided, -! according to the value of p%iprcparm(mld_aggr_eig_), specified by the user +! according to the value of p%iprcparm(mld_aggr_omega_alg_), specified by the user ! through mld_dprecinit and mld_dprecset. ! ! This routine can also build A_C according to a "bizarre" aggregation algorithm, @@ -261,50 +261,60 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ac,desc_ac,p,info) call psb_sp_scal(am3,adiag,info) if (info /= 0) goto 9999 - if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then + if (p%iprcparm(mld_aggr_omega_alg_) == mld_eig_est_) then - if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then - - ! - ! This only works with CSR. - ! - if (psb_toupper(am3%fida)=='CSR') then - anorm = dzero - dg = done - do i=1,am3%m - tmp = dzero - do j=am3%ia2(i),am3%ia2(i+1)-1 - if (am3%ia1(j) <= am3%m) then - tmp = tmp + abs(am3%aspk(j)) - endif - if (am3%ia1(j) == i ) then - dg = abs(am3%aspk(j)) - end if - end do - anorm = max(anorm,tmp/dg) - enddo + if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then + + if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then - call psb_amx(ictxt,anorm) + ! + ! This only works with CSR. + ! + if (psb_toupper(am3%fida)=='CSR') then + anorm = dzero + dg = done + do i=1,am3%m + tmp = dzero + do j=am3%ia2(i),am3%ia2(i+1)-1 + if (am3%ia1(j) <= am3%m) then + tmp = tmp + abs(am3%aspk(j)) + endif + if (am3%ia1(j) == i ) then + dg = abs(am3%aspk(j)) + end if + end do + anorm = max(anorm,tmp/dg) + enddo + + call psb_amx(ictxt,anorm) + else + info = 4001 + call psb_errpush(info,name,a_err='this section only CSR') + goto 9999 + endif else - info = 4001 + anorm = psb_spnrmi(am3,desc_a,info) endif - else - anorm = psb_spnrmi(am3,desc_a,info) - endif - if (info /= 0) then - call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + if (info /= 0) then + call psb_errpush(4001,name,a_err='Invalid AM3 storage format') + goto 9999 + end if + omega = 4.d0/(3.d0*anorm) + p%rprcparm(mld_aggr_omega_val_) = omega + + else + info = 4001 + call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') goto 9999 end if - omega = 4.d0/(3.d0*anorm) - p%rprcparm(mld_aggr_damp_) = omega - - else if (p%iprcparm(mld_aggr_eig_) == mld_user_choice_) then + + else if (p%iprcparm(mld_aggr_omega_alg_) == mld_user_choice_) then - omega = p%rprcparm(mld_aggr_damp_) + omega = p%rprcparm(mld_aggr_omega_val_) - else if (p%iprcparm(mld_aggr_eig_) /= mld_user_choice_) then + else if (p%iprcparm(mld_aggr_omega_alg_) /= mld_user_choice_) then info = 4001 - call psb_errpush(info,name,a_err='invalid mld_aggr_eig_') + call psb_errpush(info,name,a_err='invalid mld_aggr_omega_alg_') goto 9999 end if diff --git a/mlprec/mld_zmlprec_bld.f90 b/mlprec/mld_zmlprec_bld.f90 index c12934dc..142a132b 100644 --- a/mlprec/mld_zmlprec_bld.f90 +++ b/mlprec/mld_zmlprec_bld.f90 @@ -100,7 +100,11 @@ subroutine mld_zmlprec_bld(a,desc_a,p,info) & mld_distr_mat_,is_legal_ml_coarse_mat) call mld_check_def(p%iprcparm(mld_smoother_pos_),'smooth_pos',& & mld_pre_smooth_,is_legal_ml_smooth_pos) - + call mld_check_def(p%iprcparm(mld_aggr_omega_alg_),'Omega Alg.',& + & mld_eig_est_,is_legal_ml_aggr_omega_alg) + call mld_check_def(p%iprcparm(mld_aggr_eig_),'Eigenvalue estimate',& + & mld_max_norm_,is_legal_ml_aggr_eig) + select case(p%iprcparm(mld_sub_solve_)) case(mld_ilu_n_,mld_milu_n_) @@ -108,7 +112,7 @@ subroutine mld_zmlprec_bld(a,desc_a,p,info) case(mld_ilu_t_) call mld_check_def(p%rprcparm(mld_sub_iluthrs_),'Eps',dzero,is_legal_fact_thrs) end select - call mld_check_def(p%rprcparm(mld_aggr_damp_),'Omega',dzero,is_legal_omega) + call mld_check_def(p%rprcparm(mld_aggr_omega_val_),'Omega',dzero,is_legal_omega) call mld_check_def(p%rprcparm(mld_aggr_thresh_),'Aggr_Thresh',dzero,is_legal_aggr_thrs) call mld_check_def(p%iprcparm(mld_smoother_sweeps_),'Jacobi sweeps',& & 1,is_legal_jac_sweeps) diff --git a/mlprec/mld_zprecinit.F90 b/mlprec/mld_zprecinit.F90 index 91c53078..1081d863 100644 --- a/mlprec/mld_zprecinit.F90 +++ b/mlprec/mld_zprecinit.F90 @@ -219,11 +219,12 @@ subroutine mld_zprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.d0/3.d0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = dzero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = dzero end do ilev_ = nlev_ @@ -250,12 +251,13 @@ subroutine mld_zprecinit(p,ptype,info,nlev) p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_smoother_pos_) = mld_post_smooth_ + p%baseprecv(ilev_)%iprcparm(mld_aggr_omega_alg_) = mld_eig_est_ p%baseprecv(ilev_)%iprcparm(mld_aggr_eig_) = mld_max_norm_ p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 4 - p%baseprecv(ilev_)%rprcparm(mld_aggr_damp_) = 4.d0/3.d0 + p%baseprecv(ilev_)%rprcparm(mld_aggr_omega_val_) = dzero p%baseprecv(ilev_)%rprcparm(mld_aggr_thresh_) = dzero - + case default write(0,*) name,': Warning: Unknown preconditioner type request "',ptype,'"' info = 2 diff --git a/mlprec/mld_zprecset.f90 b/mlprec/mld_zprecset.f90 index 3b8f7fff..de7e6c0f 100644 --- a/mlprec/mld_zprecset.f90 +++ b/mlprec/mld_zprecset.f90 @@ -145,7 +145,7 @@ subroutine mld_zprecseti(p,what,val,info,ilev) case(mld_smoother_type_,mld_sub_solve_,mld_sub_restr_,mld_sub_prol_,& & mld_sub_ren_,mld_sub_ovr_,mld_sub_fillin_,& & mld_smoother_sweeps_,mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) p%baseprecv(ilev_)%iprcparm(what) = val case(mld_coarse_mat_) if (ilev_ /= nlev_ .and. val /= mld_distr_mat_) then @@ -220,8 +220,8 @@ subroutine mld_zprecseti(p,what,val,info,ilev) p%baseprecv(ilev_)%iprcparm(what) = val end do case(mld_ml_type_,mld_aggr_alg_,mld_aggr_kind_,& - & mld_smoother_pos_,mld_aggr_eig_) - do ilev_=2,nlev_-1 + & mld_smoother_pos_,mld_aggr_omega_alg_,mld_aggr_eig_) + do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%iprcparm)) then write(0,*) name,& &': Error: uninitialized preconditioner component, should call MLD_PRECINIT' @@ -487,7 +487,7 @@ subroutine mld_zprecsetr(p,what,val,info,ilev) else if (ilev_ > 1) then select case(what) - case(mld_aggr_damp_,mld_aggr_thresh_,mld_sub_iluthrs_) + case(mld_aggr_omega_val_,mld_aggr_thresh_,mld_sub_iluthrs_) p%baseprecv(ilev_)%rprcparm(what) = val case default write(0,*) name,': Error: invalid WHAT' @@ -518,7 +518,7 @@ subroutine mld_zprecsetr(p,what,val,info,ilev) return endif p%baseprecv(ilev_)%rprcparm(mld_sub_iluthrs_) = val - case(mld_aggr_damp_) + case(mld_aggr_omega_val_) do ilev_=2,nlev_ if (.not.allocated(p%baseprecv(ilev_)%rprcparm)) then write(0,*) name,': Error: uninitialized preconditioner component, should call MLD_PRECINIT' diff --git a/test/fileread/cf_sample.f90 b/test/fileread/cf_sample.f90 index 96cf4ed1..920a190c 100644 --- a/test/fileread/cf_sample.f90 +++ b/test/fileread/cf_sample.f90 @@ -68,7 +68,6 @@ program cf_sample integer :: cfill ! Fill-in for factorization 1 real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T) integer :: cjswp ! Jacobi sweeps - real(psb_spk_) :: omega ! smoother omega real(psb_spk_) :: athres ! smoother aggregation threshold end type precdata type(precdata) :: prec_choice @@ -267,9 +266,6 @@ program cf_sample call mld_precset(prec,mld_coarse_fillin_, prec_choice%cfill, info) call mld_precset(prec,mld_coarse_iluthrs_, prec_choice%cthres, info) call mld_precset(prec,mld_coarse_sweeps_, prec_choice%cjswp, info) - if (prec_choice%omega>=0.0) then - call mld_precset(prec,mld_aggr_damp_,prec_choice%omega,info) - end if end if ! building the preconditioner @@ -377,8 +373,8 @@ contains integer :: icontxt character(len=*) :: kmethd, mtrx, rhs, afmt,filefmt type(precdata) :: prec + real(psb_spk_) :: eps integer :: iret, istopc,itmax,itrace, ipart, irst - real(psb_spk_) :: eps, omega,thr1,thr2 integer :: iam, nm, np, i call psb_info(icontxt,iam,np) @@ -416,7 +412,6 @@ contains call read_data(prec%cfill,5) ! Fill-in for factorization 1 call read_data(prec%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prec%cjswp,5) ! Jacobi sweeps - call read_data(prec%omega,5) ! smoother omega call read_data(prec%athres,5) ! smoother aggr thresh end if end if @@ -453,7 +448,6 @@ contains call psb_bcast(icontxt,prec%cfill) ! Fill-in for factorization 1 call psb_bcast(icontxt,prec%cthres) ! Threshold for fact. 1 ILU(T) call psb_bcast(icontxt,prec%cjswp) ! Jacobi sweeps - call psb_bcast(icontxt,prec%omega) ! smoother omega call psb_bcast(icontxt,prec%athres) ! smoother aggr thresh end if diff --git a/test/fileread/df_sample.f90 b/test/fileread/df_sample.f90 index af7b43b6..acd4618e 100644 --- a/test/fileread/df_sample.f90 +++ b/test/fileread/df_sample.f90 @@ -68,7 +68,6 @@ program df_sample integer :: cfill ! fillin for coarse factorization real(psb_dpk_) :: cthres ! threshold for coarse fact. ILU(T) integer :: cjswp ! block-Jacobi sweeps - real(psb_dpk_) :: omega ! damping parameter omega real(psb_dpk_) :: athres ! smoothed aggregation threshold end type precdata type(precdata) :: prec_choice @@ -267,9 +266,6 @@ program df_sample call mld_precset(prec,mld_coarse_fillin_, prec_choice%cfill, info) call mld_precset(prec,mld_coarse_iluthrs_, prec_choice%cthres, info) call mld_precset(prec,mld_coarse_sweeps_, prec_choice%cjswp, info) - if (prec_choice%omega>=0.0) then - call mld_precset(prec,mld_aggr_damp_,prec_choice%omega,info) - end if end if ! building the preconditioner @@ -377,8 +373,8 @@ contains integer :: icontxt character(len=*) :: kmethd, mtrx, rhs, afmt,filefmt type(precdata) :: prec + real(psb_dpk_) :: eps integer :: iret, istopc,itmax,itrace, ipart, irst - real(psb_dpk_) :: eps, omega,thr integer :: iam, nm, np, i call psb_info(icontxt,iam,np) @@ -416,7 +412,6 @@ contains call read_data(prec%cfill,5) ! Fill-in for factorization call read_data(prec%cthres,5) ! Threshold for fact. ILU(T) call read_data(prec%cjswp,5) ! Jacobi sweeps - call read_data(prec%omega,5) ! smoother omega call read_data(prec%athres,5) ! smoother aggr thresh end if end if @@ -453,7 +448,6 @@ contains call psb_bcast(icontxt,prec%cfill) ! Fill-in for factorization call psb_bcast(icontxt,prec%cthres) ! Threshold for fact. ILU(T) call psb_bcast(icontxt,prec%cjswp) ! Jacobi sweeps - call psb_bcast(icontxt,prec%omega) ! smoother omega call psb_bcast(icontxt,prec%athres) ! smoother aggr thresh end if diff --git a/test/fileread/runs/cfs.inp b/test/fileread/runs/cfs.inp index 4bab85e9..fcac830d 100644 --- a/test/fileread/runs/cfs.inp +++ b/test/fileread/runs/cfs.inp @@ -28,5 +28,4 @@ ILU ! Coarsest-level subsolver: ILU UMF SLU SLUDIST 0 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P) 4 ! Number of Jacobi sweeps for BJAC coarsest-level solver --1.0d0 ! Damping parameter omega: if < 0 means library choice 0.10d0 ! Smoothed aggregation threshold: >= 0.0 diff --git a/test/fileread/runs/dfs.inp b/test/fileread/runs/dfs.inp index 7b4745ce..a4e84739 100644 --- a/test/fileread/runs/dfs.inp +++ b/test/fileread/runs/dfs.inp @@ -28,5 +28,4 @@ ILU ! Coarsest-level subsolver: ILU UMF SLU SLUDIST 0 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P) 4 ! Number of Jacobi sweeps for BJAC coarsest-level solver --1.0d0 ! Damping parameter omega: if < 0 means library choice 0.10d0 ! Smoothed aggregation threshold: >= 0.0 diff --git a/test/fileread/runs/sfs.inp b/test/fileread/runs/sfs.inp index 7b4745ce..a4e84739 100644 --- a/test/fileread/runs/sfs.inp +++ b/test/fileread/runs/sfs.inp @@ -28,5 +28,4 @@ ILU ! Coarsest-level subsolver: ILU UMF SLU SLUDIST 0 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P) 4 ! Number of Jacobi sweeps for BJAC coarsest-level solver --1.0d0 ! Damping parameter omega: if < 0 means library choice 0.10d0 ! Smoothed aggregation threshold: >= 0.0 diff --git a/test/fileread/runs/zfs.inp b/test/fileread/runs/zfs.inp index 4bab85e9..fcac830d 100644 --- a/test/fileread/runs/zfs.inp +++ b/test/fileread/runs/zfs.inp @@ -28,5 +28,4 @@ ILU ! Coarsest-level subsolver: ILU UMF SLU SLUDIST 0 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P) 4 ! Number of Jacobi sweeps for BJAC coarsest-level solver --1.0d0 ! Damping parameter omega: if < 0 means library choice 0.10d0 ! Smoothed aggregation threshold: >= 0.0 diff --git a/test/fileread/sf_sample.f90 b/test/fileread/sf_sample.f90 index f93144d7..4e09395e 100644 --- a/test/fileread/sf_sample.f90 +++ b/test/fileread/sf_sample.f90 @@ -68,7 +68,6 @@ program sf_sample integer :: cfill ! Fill-in for factorization 1 real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T) integer :: cjswp ! Jacobi sweeps - real(psb_spk_) :: omega ! smoother omega real(psb_spk_) :: athres ! smoother aggregation threshold end type precdata type(precdata) :: prec_choice @@ -267,9 +266,6 @@ program sf_sample call mld_precset(prec,mld_coarse_fillin_, prec_choice%cfill, info) call mld_precset(prec,mld_coarse_iluthrs_, prec_choice%cthres, info) call mld_precset(prec,mld_coarse_sweeps_, prec_choice%cjswp, info) - if (prec_choice%omega>=0.0) then - call mld_precset(prec,mld_aggr_damp_,prec_choice%omega,info) - end if end if ! building the preconditioner @@ -377,8 +373,8 @@ contains integer :: icontxt character(len=*) :: kmethd, mtrx, rhs, afmt,filefmt type(precdata) :: prec + real(psb_spk_) :: eps integer :: iret, istopc,itmax,itrace, ipart, irst - real(psb_spk_) :: eps, omega,thr1,thr2 integer :: iam, nm, np, i call psb_info(icontxt,iam,np) @@ -416,7 +412,6 @@ contains call read_data(prec%cfill,5) ! Fill-in for factorization 1 call read_data(prec%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prec%cjswp,5) ! Jacobi sweeps - call read_data(prec%omega,5) ! smoother omega call read_data(prec%athres,5) ! smoother aggr thresh end if end if @@ -453,7 +448,6 @@ contains call psb_bcast(icontxt,prec%cfill) ! Fill-in for factorization 1 call psb_bcast(icontxt,prec%cthres) ! Threshold for fact. 1 ILU(T) call psb_bcast(icontxt,prec%cjswp) ! Jacobi sweeps - call psb_bcast(icontxt,prec%omega) ! smoother omega call psb_bcast(icontxt,prec%athres) ! smoother aggr thresh end if diff --git a/test/fileread/zf_sample.f90 b/test/fileread/zf_sample.f90 index 5deb225e..400e46ea 100644 --- a/test/fileread/zf_sample.f90 +++ b/test/fileread/zf_sample.f90 @@ -68,7 +68,6 @@ program zf_sample integer :: cfill ! Fill-in for factorization 1 real(psb_dpk_) :: cthres ! Threshold for fact. 1 ILU(T) integer :: cjswp ! Jacobi sweeps - real(psb_dpk_) :: omega ! smoother omega real(psb_dpk_) :: athres ! smoother aggregation threshold end type precdata type(precdata) :: prec_choice @@ -267,9 +266,6 @@ program zf_sample call mld_precset(prec,mld_coarse_fillin_, prec_choice%cfill, info) call mld_precset(prec,mld_coarse_iluthrs_, prec_choice%cthres, info) call mld_precset(prec,mld_coarse_sweeps_, prec_choice%cjswp, info) - if (prec_choice%omega>=0.0) then - call mld_precset(prec,mld_aggr_damp_,prec_choice%omega,info) - end if end if ! building the preconditioner @@ -377,8 +373,8 @@ contains integer :: icontxt character(len=*) :: kmethd, mtrx, rhs, afmt,filefmt type(precdata) :: prec + real(psb_dpk_) :: eps integer :: iret, istopc,itmax,itrace, ipart, irst - real(psb_dpk_) :: eps, omega,thr1,thr2 integer :: iam, nm, np, i call psb_info(icontxt,iam,np) @@ -416,7 +412,6 @@ contains call read_data(prec%cfill,5) ! Fill-in for factorization 1 call read_data(prec%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prec%cjswp,5) ! Jacobi sweeps - call read_data(prec%omega,5) ! smoother omega call read_data(prec%athres,5) ! smoother aggr thresh end if end if @@ -453,7 +448,6 @@ contains call psb_bcast(icontxt,prec%cfill) ! Fill-in for factorization 1 call psb_bcast(icontxt,prec%cthres) ! Threshold for fact. 1 ILU(T) call psb_bcast(icontxt,prec%cjswp) ! Jacobi sweeps - call psb_bcast(icontxt,prec%omega) ! smoother omega call psb_bcast(icontxt,prec%athres) ! smoother aggr thresh end if diff --git a/test/pdegen/ppde.f90 b/test/pdegen/ppde.f90 index cb1b6deb..24f043d9 100644 --- a/test/pdegen/ppde.f90 +++ b/test/pdegen/ppde.f90 @@ -118,7 +118,6 @@ program ppde integer :: cfill ! Fill-in for factorization 1 real(psb_dpk_) :: cthres ! Threshold for fact. 1 ILU(T) integer :: cjswp ! Jacobi sweeps - real(psb_dpk_) :: omega ! smoother omega real(psb_dpk_) :: athres ! smoother aggregation threshold end type precdata type(precdata) :: prectype @@ -192,9 +191,6 @@ program ppde call mld_precset(prec,mld_coarse_fillin_, prectype%cfill, info) call mld_precset(prec,mld_coarse_iluthrs_, prectype%cthres, info) call mld_precset(prec,mld_coarse_sweeps_, prectype%cjswp, info) - if (prectype%omega>=0.0) then - call mld_precset(prec,mld_aggr_damp_,prectype%omega,info) - end if end if call psb_barrier(ictxt) @@ -310,7 +306,6 @@ contains call read_data(prectype%cfill,5) ! Fill-in for factorization 1 call read_data(prectype%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%cjswp,5) ! Jacobi sweeps - call read_data(prectype%omega,5) ! smoother omega call read_data(prectype%athres,5) ! smoother aggr thresh end if end if @@ -345,7 +340,6 @@ contains call psb_bcast(ictxt,prectype%cfill) ! Fill-in for factorization 1 call psb_bcast(ictxt,prectype%cthres) ! Threshold for fact. 1 ILU(T) call psb_bcast(ictxt,prectype%cjswp) ! Jacobi sweeps - call psb_bcast(ictxt,prectype%omega) ! smoother omega call psb_bcast(ictxt,prectype%athres) ! smoother aggr thresh end if diff --git a/test/pdegen/runs/ppde.inp b/test/pdegen/runs/ppde.inp index 565df1d2..53529b07 100644 --- a/test/pdegen/runs/ppde.inp +++ b/test/pdegen/runs/ppde.inp @@ -25,5 +25,4 @@ ILU ! Coarse level: subsolver ILU UMF SLU SLUDIST 0 ! Coarse level: Level-set N for ILU(N) 1.d-4 ! Coarse level: Threshold T for ILU(T,P) 4 ! Coarse level: Number of Jacobi sweeps --1.0d0 ! Smoother Omega: if < 0 means library choice. 0.10d0 ! Smoother Aggregation Threshold: >= 0.0 diff --git a/test/pdegen/spde.f90 b/test/pdegen/spde.f90 index ac30c229..b6d203e0 100644 --- a/test/pdegen/spde.f90 +++ b/test/pdegen/spde.f90 @@ -118,7 +118,6 @@ program spde integer :: cfill ! Fill-in for factorization 1 real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T) integer :: cjswp ! Jacobi sweeps - real(psb_spk_) :: omega ! smoother omega real(psb_spk_) :: athres ! smoother aggregation threshold end type precdata type(precdata) :: prectype @@ -192,9 +191,6 @@ program spde call mld_precset(prec,mld_coarse_fillin_, prectype%cfill, info) call mld_precset(prec,mld_coarse_iluthrs_, prectype%cthres, info) call mld_precset(prec,mld_coarse_sweeps_, prectype%cjswp, info) - if (prectype%omega>=0.0) then - call mld_precset(prec,mld_aggr_damp_,prectype%omega,info) - end if end if call psb_barrier(ictxt) @@ -310,7 +306,6 @@ contains call read_data(prectype%cfill,5) ! Fill-in for factorization 1 call read_data(prectype%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%cjswp,5) ! Jacobi sweeps - call read_data(prectype%omega,5) ! smoother omega call read_data(prectype%athres,5) ! smoother aggr thresh end if end if @@ -345,7 +340,6 @@ contains call psb_bcast(ictxt,prectype%cfill) ! Fill-in for factorization 1 call psb_bcast(ictxt,prectype%cthres) ! Threshold for fact. 1 ILU(T) call psb_bcast(ictxt,prectype%cjswp) ! Jacobi sweeps - call psb_bcast(ictxt,prectype%omega) ! smoother omega call psb_bcast(ictxt,prectype%athres) ! smoother aggr thresh end if