HYPRE with multiple variables

Shaman Mahmoudi shma7099 at student.uu.se
Wed Apr 25 11:53:22 CDT 2007


Hi,

int HYPRE_BOOMERAMGSetNodal(....)

Sets whether to use the nodal systems version. Default is 0, i.e. do  
not.

int HYPRE_BoomerAMGSetNumFunctions (.....)

sets the size of the system of PDEs.

With best regards, Shaman Mahmoudi

On Apr 25, 2007, at 6:35 PM, Barry Smith wrote:

>
>   Nicolas,
>
> On Wed, 25 Apr 2007, Nicolas Bathfield wrote:
>
>> Dear Barry,
>>
>> Using MatSetBlockSize(A,5) improved my results greatly. Boomemramg  
>> is now
>> solving the system of equations.
>
>    Good
>
>> Still, the equations I solve are coupled, and my discretization  
>> scheme is
>> meant for a non-segregated solver. As a consequence (I believe),  
>> boomeramg
>> still diverges.
>
>   How can "Boomeramg be now solving the system of equations" but also
> diverge? I am so confused.
>
>>  I would therefore like to use the nodal relaxation in
>> boomeramg (the hypre command is HYPRE_BOOMERAMGSetNodal) in order to
>> couple the coarse grid choice for all my variables.
>
>   I can add this this afternoon.
>
>   I have to admit I do not understand the difference between
> HYPRE_BOOMERAMGSetNodal() and hypre_BoomerAMGSetNumFunctions(). Do  
> you?
>
>    Barry
>>
>> How can I achieve this from PETSc?
>>
>> Best regards,
>>
>> Nicolas
>>
>>>
>>>   From PETSc MPIAIJ matrices you need to set the block size of  
>>> the matrix
>>> with MatSetBlockSize(A,5) after you have called MatSetType() or
>>> MatCreateMPIAIJ(). Then HYPRE_BoomerAMGSetNumFunctions() is  
>>> automatically
>>> called by PETSc.
>>>
>>>    Barry
>>>
>>> The reason this is done this way instead of as
>>> -pc_hypre_boomeramg_block_size <bs> is the idea that hypre will  
>>> use the
>>> properties of the matrix it is given in building the  
>>> preconditioner so
>>> the user does not have to pass those properties in seperately  
>>> directly
>>> to hypre.
>>>
>>>
>>> On Fri, 13 Apr 2007, Shaman Mahmoudi wrote:
>>>
>>>> Hi,
>>>>
>>>> int HYPRE_BoomerAMGSetNumFunctions (.....)
>>>>
>>>> sets the size of the system of PDEs.
>>>>
>>>> With best regards, Shaman Mahmoudi
>>>>
>>>> On Apr 13, 2007, at 2:04 PM, Shaman Mahmoudi wrote:
>>>>
>>>>> Hi Nicolas,
>>>>>
>>>>> You are right. hypre has changed a lot since the version I used.
>>>>>
>>>>> I found this interesting information:
>>>>>
>>>>> int HYPRE_BOOMERAMGSetNodal(....)
>>>>>
>>>>> Sets whether to use the nodal systems version. Default is 0.
>>>>>
>>>>> Then information about smoothers:
>>>>>
>>>>> One interesting thing there is this,
>>>>>
>>>>> HYPRE_BoomerAMGSetDomainType(....)
>>>>>
>>>>> 0 - each point is a domain (default)
>>>>> 1 each node is a domain (only of interest in systems AMG)
>>>>> 2 ....
>>>>>
>>>>> I could not find how you define the nodal displacement  
>>>>> ordering. But
>>>> it
>>>>> should be there somewhere.
>>>>>
>>>>> I read the reference manual for hypre 2.0
>>>>>
>>>>> With best regards, Shaman Mahmoudi
>>>>>
>>>>>
>>>>> On Apr 13, 2007, at 1:40 PM, Nicolas Bathfield wrote:
>>>>>
>>>>>> Dear Shaman,
>>>>>>
>>>>>> As far as I could understand, there is a BoomerAMG?s systems AMG
>>>> version
>>>>>> available. This seems to be exactly what I am looking for, but I
>>>> just
>>>>>> don't know how to access it, either through PETSc or directly.
>>>>>>
>>>>>> Best regards,
>>>>>>
>>>>>> Nicolas
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> You want to exploit the structure of the model?
>>>>>>> As far as I know, boomeramg can not treat a set of rows or  
>>>>>>> blocks
>>>> as
>>>>>>> a molecule,  a so called block-smoother?
>>>>>>> ML 2.0 smoothed aggregation does support it.
>>>>>>>
>>>>>>> With best regards, Shaman Mahmoudi
>>>>>>>
>>>>>>> On Apr 13, 2007, at 10:45 AM, Nicolas Bathfield wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I am solving the Navier-stokes equations and try to use  
>>>>>>>> Hypre as
>>>>>>>> preconditioner.
>>>>>>>> Until now, I used PETSc as non-segregated solver and it worked
>>>>>>>> perfectly.
>>>>>>>> Things got worse when I decided to use Boomeramg (Hypre).
>>>>>>>> As I solve a system of PDEs,  each cell is represented by 5  
>>>>>>>> rows
>>>> in my
>>>>>>>> matrix (I solve for 5 variables). PETSc handles that without
>>>> problem
>>>>>>>> apparently, but the coarsening scheme of Boomeramg needs more
>>>> input in
>>>>>>>> order to work properly.
>>>>>>>>
>>>>>>>> Is there an option in PETSc to tell HYPRE that we are dealing
>>>> with a
>>>>>>>> system of PDEs? (something like:  -pc_hypre_boomeramg_...)
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks for your help.
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>>
>>>>>>>> Nicolas
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Nicolas BATHFIELD
>>>>>>>> Chalmers University of Technology
>>>>>>>> Shipping and Marine Technology
>>>>>>>> phone: +46 (0)31 772 1476
>>>>>>>> fax:   +46 (0)31 772 3699
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Nicolas BATHFIELD
>>>>>> Chalmers University of Technology
>>>>>> Shipping and Marine Technology
>>>>>> phone: +46 (0)31 772 1476
>>>>>> fax:   +46 (0)31 772 3699
>>>>>>
>>>>>
>>>>
>>
>>
>>
>




More information about the petsc-users mailing list