My inclination is to remove the mirror enum and simply provide a utility 
function that updates the ghost points by mirroring in the local vector form 
that the user can call if they want mirroring?

   Barry

On Jun 20, 2012, at 5:41 PM, Barry Smith wrote:

> 
>     What is the intended difference between DMDA_BOUNDARY_GHOSTED and 
> DMDA_BOUNDARY_MIRROR?
> 
>     My understanding is that both cause ghost points around the physical 
> boundary that can be indexed in the usual way (for example on the left side 
> just indexing with -1 to get the first of the ghost points? Looking at the 
> code but not testing it I assume that the correctly sized local vectors are 
> created and the appropriate scatters are created that put things in the 
> correct place despite these extra locations with calls to DMGlobalToLocal()? 
> 
>     My guess is that whoever decided to have both of these was thinking that 
> with DMDA_BOUNDARY_GHOSTED the user would fill up the ghost points themselves 
> however they liked with whatever values they want whenever they want?  
> Meanwhile with mirror PETSc would fill up the ghost points by copying the 
> mirrored values from inside the real physical domain?  Thus ghosted is more 
> general.
> 
>   But when was it intended that the mirrored values be copied over? During 
> the DMGlobalToLocal call or in a new call?  (Note that this copying requires 
> no parallel communication)
> 
>    Is there an example of using DMDA_BOUNDARY_GHOSTED where the ghosted 
> values are set via mirroring? Should there be a utility to do that?  
> 
>    We have someone who needs this mirroring (due to Jed's advice) but appear 
> not to have any code to make that trivial. How shall we fix this?
> 
>   Thanks
> 
>   Barry
> 

Reply via email to