[Trilinos-Users] ilut setting

Hoang Giang Bui hgbk2008 at gmail.com
Thu Sep 19 04:43:15 MDT 2013


That's fine. I can use AztecOO with ilut since it works well in my case. 
In fact, I used Ifpack as sub-preconditioner for my block 
preconditioner. This block preconditioner doesn't work since Ifpack_ILUT 
failed. It is not sure that AztecOO ILUT will be success if it's applied 
as sub-preconditioners though. However I wonder if there is a way to 
introduce AztecOO as an InverseFactory in Teko?

Best regards
Giang Bui



On 09/18/2013 07:16 PM, Erik Boman wrote:
> Unfortunately, the incomplete factorization parameters are not well 
> documented so looking at the source code is best. Yes, Ifpack_ILUT 
> interprets "ilut level-of-fill" to be the ratio of nonzeros in the 
> preconditioner relative to the original matrix, so a value of 1.0 or a 
> bit higher is reasonable. (Note: 1.0 in Ifpack roughly corresponds to 
> 0 in AztecOO.) If you set it to 50, you will in most cases compute a 
> complete factorization (but in a very slow way!). As a sanity check, 
> you can try using Amesos (by default, KLU) as your subdomain solver.
>
> There are several other parameters in Ifpack that may be helpful. For 
> example, the absolute and relative threshold parameters may make your 
> preconditioner more robust. Confusingly, these prescribe a diagonal 
> perturbation (aka Manteuffel shift).
>
> Erik
>
> Hoang Giang Bui wrote:
>> Hi Chris
>>
>> I didn't see the range of value of ilut level of fill in Ifpack user 
>> guide yet. But looking in the code of Ifpack_ILUT, I'm quite sure 
>> that the level of fill indicates the number of nonzeros in the 
>> preconditioner compare to initial nonzeros. Therefore its value can 
>> be bigger than 1.
>>
>> Giang Bui
>>
>>
>> On 09/18/2013 04:43 AM, Chris Jackson wrote:
>>>
>>> I don’t know if this applies to the one you are talking about, but I 
>>> recall that with one of the ILUT preconditioners the fill value is 
>>> expected to be between 0.0 and 1.0.  1.0 meant essentially we were 
>>> finding the inverse of the matrix.  Before we figured that out we 
>>> were always astounded that BiCGStab was converging in 2 iterations…
>>>
>>>
>>>
>>> Chris Jackson
>>>
>>>
>>>
>>>
>>>
>>> *From:* trilinos-users-bounces at software.sandia.gov 
>>> [mailto:trilinos-users-bounces at software.sandia.gov] *On Behalf Of 
>>> *Hoang Giang Bui
>>> *Sent:* Tuesday, September 17, 2013 6:28 PM
>>> *To:* Erik Boman
>>> *Cc:* trilinos-users at software.sandia.gov
>>> *Subject:* Re: [Trilinos-Users] ilut setting
>>>
>>>
>>>
>>> Hi Erik
>>>
>>> I tried to increase "fact: ilut level-of-fill" to 50.0 and it still 
>>> doesn't converge. In fact, with this value the preconditioner take 
>>> very long to compute. Is there other option we can set for Ifpack ILUT?
>>>
>>> Giang Bui
>>>
>>>
>>>
>>> On Tue, Sep 17, 2013 at 8:01 PM, Erik Boman <egboman at sandia.gov 
>>> <mailto:egboman at sandia.gov>> wrote:
>>>
>>> Giang Bui,
>>>
>>> You will not get exactly the same answer because the ILUT 
>>> implementations are different in AztecOO and Ifpack. Also, the 
>>> meaning of "fill" may be slightly different. Try increase the value 
>>> of  "fact: ilut level-of-fill" in the Ifpack parameter to see if you 
>>> can make it converge.
>>>
>>> Erik
>>>
>>> Hoang Giang Bui wrote:
>>>
>>> Dear Trilinos developers,
>>>
>>> Is there difference between 2 settings:
>>>
>>> solver_parameters.set("AZ_solver", "AZ_bicgstab")
>>> solver_parameters.set("AZ_kspace", 1000)
>>> solver_parameters.set("AZ_output", 100)
>>> solver_parameters.set("AZ_precond", "AZ_dom_decomp")
>>> solver_parameters.set("AZ_subdomain_solve", "AZ_ilut")
>>> solver_parameters.set("AZ_drop", 0.0)
>>> solver_parameters.set("AZ_ilut_fill", 10.0)
>>> aztec_solver.SetParameters(solver_parameter, true);
>>>
>>> And:
>>> solver_parameters.set("AZ_solver", "AZ_bicgstab")
>>> solver_parameters.set("AZ_kspace", 1000)
>>> solver_parameters.set("AZ_output", 100)
>>> solver_parameters.set("AZ_precond", "AZ_none")
>>> aztec_solver.SetParameters(solver_parameter, true);
>>> IFPreconditionerType = "ILUT"
>>> preconditioner_parameters.set("fact: ilut level-of-fill", 10.0);
>>> preconditioner_parameters.set("fact: drop tolerance", 0.0);
>>> overlap_level = 1
>>> mPrec = Teuchos::rcp(Factory.Create(IFPreconditionerType, &rA, 
>>> overlap_level));
>>> mPrec->SetParameters(preconditioner_parameters);
>>> aztec_solver.SetPrecOperator(&*(mpPrec->GetOperator()))
>>>
>>> I thought it all resulted in Additive-Schwartz preconditioner with 
>>> ILUT as local subdomain preconditioner. But it gives different 
>>> performance. The first setting works well but the second failed to 
>>> converge.
>>>
>>> Best regards
>>> Giang Bui
>>>
>>> _______________________________________________
>>> Trilinos-Users mailing list
>>> Trilinos-Users at software.sandia.gov 
>>> <mailto:Trilinos-Users at software.sandia.gov>
>>> http://software.sandia.gov/mailman/listinfo/trilinos-users
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> -- 
>>> With Best Regards !
>>> Giang Bui
>>>
>>> To learn and to excel
>>>
>>
>



More information about the Trilinos-Users mailing list