Something like 

  DMDASetComputeGhostBoundary(DM dm, s(DM,Vec,Vec,void*),d(void*))

where 

s(DM dm, Vec g, Vec l, void*ctx) {
  User code that fills in appropriate places in l. 

d(void* ctx) {
Optional: Destroys optional user context when DM is destroyed.
}

and s() gets called inside of DMGlobalToLocalEnd() just before it returns? 

Yes, this seems doable. But I note that you can simply perform your s() 
function on the local vector immediately after you call DMGlobalToLocalEnd() 
and get the same affect.

Barry


> On Aug 15, 2022, at 4:02 AM, David Scott <d.sc...@epcc.ed.ac.uk> wrote:
> 
> 
> 
> On 12/08/2022 18:15, Matthew Knepley wrote:
>> This email was sent to you by someone outside the University.
>> You should only click on links or attachments if you are certain that the 
>> email is genuine and the content is safe.
>> On Fri, Aug 12, 2022 at 9:27 AM David Scott <d.sc...@epcc.ed.ac.uk 
>> <mailto:d.sc...@epcc.ed.ac.uk>> wrote:
>> On 12/08/2022 11:26, Matthew Knepley wrote:
>>> This email was sent to you by someone outside the University.
>>> You should only click on links or attachments if you are certain that the 
>>> email is genuine and the content is safe.
>>> On Fri, Aug 12, 2022 at 2:21 AM Quynh Nguyen <nguyenquynh9...@gmail.com 
>>> <mailto:nguyenquynh9...@gmail.com>> wrote:
>>> Dear petsc developers and users,
>>> 
>>> I am a new petsc user ^_^.
>>> I have some questions about using DMDA_BOUNDARY_GHOSTED.
>>> 
>>> 1. I have 2D Poisson code with domain (nx, ny), and I used  
>>> DMDA_BOUNDARY_NONE, then the size of the matrix is (nx*ny)X(nx*ny). what is 
>>> the size of the matrix if I used  DMDA_BOUNDARY_GHOSTED? is it the same 
>>> size as DMDA_BOUNDARY_NONE?
>>> 
>>> Yes, the matrix should be the same size, but local vectors have extra ghost 
>>> node slots.
>>>  
>>> 2. if the matrix size of DMDA_BOUNDARY_GHOSTED isn't the same as 
>>> DMDA_BOUNDARY_NONE, how i can view the matrix including ghost points? I ask 
>>> this one because I used MatView(P, PETSC_VIEWER_STDOUT_WORLD) to show the 
>>> matrix but excluded ghost points.
>>> 
>>> Ghost nodes are there so that stencil operations on local vectors work at 
>>> boundaries. You fill in the slots with boundary information.
>>> 
>> I can see how this works if you are writing your own solver but can it be 
>> used with a KSP? In the case of periodic boundary conditions the boundary 
>> values are "filled in" for you by PETSc. Is there any way for a user to 
>> supply boundary information to a PETSc solver when using 
>> DMDA_BOUNDARY_GHOSTED?
>> 
>> Right now, there is not. This is mainly due to the lack of consensus for 
>> boundary condition specification. Periodic conditions are simple in this 
>> respect.
>> 
>> For example, Plex has such a thing
>> 
>>   https://petsc.org/main/docs/manualpages/DM/DMAddBoundary/ 
>> <https://petsc.org/main/docs/manualpages/DM/DMAddBoundary/>
>> 
>> that can be used to fill in these constrained spots
>> 
>>   https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexInsertBoundaryValues/ 
>> <https://petsc.org/main/docs/manualpages/DMPLEX/DMPlexInsertBoundaryValues/>
>> 
>> But there have been many complaints about this interface (and I suspect any 
>> interface we choose).
>> 
>> Maybe there is something that we could write that would make it easier for 
>> you with DMDA?
>> 
> The way I had imagined it working was that for each dimension the user could 
> register a function to be to be called at the start of every iteration (in a 
> similar fashion to adding a monitor). Not all of the dimensions would have to 
> be specified as DMDA_BOUNDARY_GHOSTED and thus require a function to be 
> registered. This function would have access to the DMDA and the local vector 
> so it could determine if ghost locations were present and, if so, set 
> appropriate values. Does this make sense?
> 
> Thanks,
> 
> David
> 
>>   Thanks,
>> 
>>      Matt
>>  
>> Thanks,
>> 
>> David
>> 
>>>   Thanks,
>>> 
>>>      Matt
>>>  
>>> I hope someone can explain my wonder :)
>>> 
>>> P/S: maybe, those question is simple and a bit stupid ^_^. 
>>> 
>>> Have a nice day,
>>> 
>>> -- 
>>> Quynh Nguyen
>>> Graduate student, Ocean Engineering.
>>> School of Naval Architecture and Ocean Engineering, University of Ulsan.
>>> -----------------------------------------------------------------------------------------
>>> Mobile: (+82) 010-9394-5595 
>>> Email: nguyenquynh9...@gmail.com <mailto:nguyenquynh9...@gmail.com>; 
>>> nguyenthiquynhb_...@hus.edu.vn <mailto:nguyenthiquynhb_...@hus.edu.vn>
>>> 
>>> -- 
>>> What most experimenters take for granted before they begin their 
>>> experiments is infinitely more interesting than any results to which their 
>>> experiments lead.
>>> -- Norbert Wiener
>>> 
>>> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
>> 
>> The University of Edinburgh is a charitable body, registered in Scotland, 
>> with registration number SC005336. Is e buidheann carthannais a th’ ann an 
>> Oilthigh Dhùn Èideann, clàraichte an Alba, àireamh clàraidh SC005336.
>> 
>> 
>> -- 
>> What most experimenters take for granted before they begin their experiments 
>> is infinitely more interesting than any results to which their experiments 
>> lead.
>> -- Norbert Wiener
>> 
>> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
> 

Reply via email to