[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