ksp ex29.c B.C.s and Forcing terms.

Barry Smith bsmith at mcs.anl.gov
Sat Dec 12 13:57:38 CST 2009


On Dec 12, 2009, at 12:31 PM, Tahar Amari wrote:

> Hello,
>
> SOrry. I took this very interesting discussion a bit late, but one  
> of my major problem is to understand if all this is valid for node  
> centered
> variables for u or cell centered.
> Usually the best way of solving Neuwman BC for this equation is  
> having cell centered unknowns to have derivatives
> given on the domain boundary.
> This then have some impact on handling ghost values transfer between  
> subdomains with MPI.Is all this transparent for
> us and PETSC handle it . I guess no, right ?

   If you have only cell centered unknowns the ghost point updates are  
the same. See src/ksp/ksp/examples/tutorials/ex32.c  Having some  
Neuman and some Dirichlet boundary conditions is then trickery with  
cell centered.

    If you have some cell-centered and some vertex centered unknowns  
(staggered grid), DA does not handle this well, you have to "cheat" to  
match up variables on the cells and vertices.


    Barry

>
> Tahar
>
>
> Le 12 déc. 09 à 02:28, Barry Smith a écrit :
>
>>
>> On Dec 11, 2009, at 7:18 PM, Ryan Yan wrote:
>>
>>> Hi Matt,
>>> Thank you very much for the reply.  Now, I got the Neumann part.  
>>> But I am still a bit confused about the Dirichlet part. Please see  
>>> the following quote.
>>>
>>> Yan
>>>
>>>
>>> For the Dirichlet B.C.s, I did not understand the coefficients  
>>> given below. Isn't correct to set the v[0]=Hx*Hy here?
>>> if (i==0 || j==0 || i==mx-1 || j==my-1) {
>>> if (user->bcType == DIRICHLET) {
>>> v[0] = 2.0*rho*(HxdHy + HydHx);
>>> }
>>> }
>>>
>>> This is the proper scaling.
>>>
>>> the Dirichlet B.C.s:
>>> Which  scaling  do you think is proper, "v[0]=Hx*Hy" or  
>>> 2.0*rho*(HxdHy + HydHx)?
>>> If it is 2.0*rho*(HxdHy + HydHx), can you say a little bit more  
>>> about why is this one? I only see a factor of Hx*Hy when we set up  
>>> the  RHS. Did I miss something?
>>>
>>  Ryan,
>>
>>    You can scale the equations for Dirichlet boundary conditions  
>> anyway you want; you could multiply them by 1,000,000 if you want.  
>> The answer in exact precision with direct solvers will be the same.  
>> The reason we use the given scaling is to make the scaling work  
>> well with multigrid. If you use a different scaling the Dirichlet  
>> boundary conditions on the coarser grid matrices would have a  
>> different scaling then the interior equations and this would slow  
>> down MG's convergence rate. For toy problems people usually  
>> eliminate the Dirichlet boundary conditions, then there is no  
>> scaling issue for multigrid.
>>
>>
>>  Barry
>>
>>>
>>> Matt
>>>
>>>
>>>
>>>
>>>
>>> -- 
>>> 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
>>>
>
> --------------------------------------------
> T. Amari
> Centre de Physique Theorique
> Ecole Polytechnique
> 91128 Palaiseau Cedex France
> tel : 33 1 69 33 42 52
> fax: 33 1 69 33 49 49
> email: <mailto:amari at cpht.polytechnique.fr>
> URL : http://www.cpht.polytechnique.fr/cpht/amari
>
>
>
>
>



More information about the petsc-users mailing list