> On Sep 17, 2018, at 5:54 PM, Oleksandr Koshkarov <[email protected]> wrote:
> 
> Thank you. One more question:
> 
> Are DMDA matrices with smaller stencil compatible with state vectors with 
> larger stencil width? If I precondition finite volume method were I use 
> stencil width 2 (or more) with lower order method with stencil width 1, can 
> this still work? (My jacobian is matrix free). Can this work together?

   Yes

> 
> Thank you and best regards,
> 
> Oleksandr.
> 
> 
> On 09/17/2018 04:44 PM, Smith, Barry F. wrote:
>> 
>>> On Sep 17, 2018, at 5:36 PM, Oleksandr Koshkarov <[email protected]> 
>>> wrote:
>>> 
>>> Wow, that is neat, thank you! I think it is exactly what I need. However, 
>>> can you please clarify some details:
>>> 
>>> 1) does "ofill" represent all non diagonal blocs?  meaning they have the 
>>> same pattern. (e.g., in 1d I will have 1+2*stencil_width blocks)
>>    Yes, it represents all the non diagonal blocks, this is a weakness in 
>> that depending on the discretization different diagonal blocks may have 
>> different nonzero structure. You need to use the union of all the 
>> off-diagonal block matrix nonzero structure.
>>> 2) this note: "This only makes sense when you are doing multicomponent 
>>> problems but using the MPIAIJ matrix format". Sounds like MPIAIJ is wrong 
>>> choice for multi component problem. Actually, I do not pick the DMDA matrix 
>>> format myself, and use petsc default (which is probably MPIAIJ).
>>    It is MPIAIJ.
>> 
>>> Maybe, I should something else more heavily multi component problem? My 
>>> matrices appears from discretizing 6D PDE, where I put 3D inside dof... The 
>>> discretization is all stencil based (finite volume method).
>>    The BAIJ format is only appropriate if the "blocks" are essentially dense 
>> (since BAIJ stores them as dense). BAIJ format is not correct for you. You 
>> should be using the MPIAIJ format.
>> 
>>    Barry
>> 
>>> p.s. All those functions and flexibility imply the enormous beauty in PETSc 
>>> structure. I wish to start reading petsc internal code, to be more 
>>> comfortable using it and to ask more smart questions to you guys. However, 
>>> it is quite intimidating to start. Maybe you have some pointers, how can I 
>>> start?
>>> 
>>> Thank you and best regards,
>>> 
>>> Oleksandr.
>>> 
>>> 
>>> On 09/17/2018 02:37 PM, Smith, Barry F. wrote:
>>>>   You can use DMDASetBlockFills() or DMDASetBlockFillsSparse().
>>>> 
>>>>    If you need any finer scale control then they offer you need to copy 
>>>> the PETSc source that does the preallocation for DMDA generated matrices 
>>>> and customize it exactly for your problem.
>>>> 
>>>> 
>>>>     Barry
>>>> 
>>>> 
>>>>> On Sep 17, 2018, at 3:31 PM, Oleksandr Koshkarov <[email protected]> 
>>>>> wrote:
>>>>> 
>>>>> Hello All,
>>>>> 
>>>>> I have a question about preallocation of DMDA matrix. As I understand, it 
>>>>> preallocates the number of nonzeros using the stencil width info. 
>>>>> However, it seems it will not be efficient for me: I have a large dof 
>>>>> (around 2000), where only some of those dof's are coupled, so those 
>>>>> dof*dof blocks inside the DMMatrix would be also sparse. I also use this 
>>>>> DMDA matrix as preconditioner, which has lower coupling than original 
>>>>> DMDA array, so stencil is effectively smaller (I precondition higher 
>>>>> order finite volume method with lower order FV method). Can I manually 
>>>>> specify how many zeros needs to be preallocated for the DMDA matrix?
>>>>> 
>>>>> p.s. I do not want o use normal matrix, as I relay on dmda indexing 
>>>>> (MatSetValuesStencil).
>>>>> 
>>>>> Thank you and best regards,
>>>>> 
>>>>> Oleksandr.
>>>>> 
> 

Reply via email to