[petsc-users] 2 Dirichlet conditions for one Element in PetscFE

Yann Jobic yann.jobic at univ-amu.fr
Thu Nov 23 02:39:12 CST 2017


Hello,

I checked out  the branch knepley/fix-plex-bc-multiple, but i now have a 
strange problem.
I splited my labels as in ex69.c of snes. It may be the right way to do it.
In petsc 3.8.2, i have the same behavior as before, the element 
containing the face is called by PetscDSAddBoundary.
In the git version, PetscDSAddBoundary does not call my boundary 
function at all.
The call :
   ierr = PetscDSAddBoundary(prob, DM_BC_ESSENTIAL, "wallL", 
"markerLeft",   0, Ncomp, components, (void (*)(void)) uIn,  1, &id, 
ctx);CHKERRQ(ierr);

I checked that my labels are correct :
   markerLeft: 1 strata with value/size (1 (11))
   markerTop: 1 strata with value/size (1 (11))
   markerRight: 1 strata with value/size (1 (11))
   markerBottom: 1 strata with value/size (1 (11))

What am i doing wrong ?

Thanks,

Regards,

Yann

Le 22/11/2017 à 18:51, Matthew Knepley a écrit :
> On Wed, Nov 22, 2017 at 12:39 PM, Yann Jobic <yann.jobic at univ-amu.fr 
> <mailto:yann.jobic at univ-amu.fr>> wrote:
>
>     Hello,
>
>     I've found a strange behavior when looking into a bug for the
>     pressure convergence of a simple Navier-Stokes problem using PetscFE.
>
>     I followed many examples for labeling boundary faces. I first use
>     DMPlexMarkBoundaryFaces, (label=1 to the faces).
>     I find those faces using DMGetStratumIS and searching 1 as it is
>     the value of the marked boundary faces.
>     Finally i use DMPlexLabelComplete over the new label.
>     I then use :
>       ierr = PetscDSAddBoundary(prob, DM_BC_ESSENTIAL, "in", "Faces",
>     0, Ncomp, components, (void (*)(void)) uIn, NWest, west,
>     NULL);CHKERRQ(ierr);
>     in order to impose a dirichlet condition for the faces labeled by
>     the correct value (west=1, south=3,...).
>
>     However, the function "uIn()" is called in all the Elements
>     containing the boundary faces, and thus impose the values at nodes
>     that are not in the labeled faces.
>     Is it a normal behavior ? I then have to test the position of the
>     node calling uIn, in order to impose the good value.
>     I have this problem for a Poiseuille flow, where at 2 corner
>     Elements i have a zero velocity dirichlet condition (wall) and a
>     In flow velocity one.
>
>
> I believe I have fixed this in knepley/fix-plex-bc-multiple which 
> should be merged soon. Do you know how to merge that branch and try?
>
>   Thanks,
>
>      Matt
>
>     The pressure is then very high at the corner nodes of those 2
>     Elements.
>     Do you think my pressure problem comes from there ? (The velocity
>     field is correct)
>
>     Many thanks,
>
>     Regards,
>
>     Yann
>
>     PS : i'm using those runtime options :
>     -vel_petscspace_order 2 -pres_petscspace_order 1 \
>     -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur
>     -pc_fieldsplit_schur_fact_type full  \
>     -fieldsplit_velocity_pc_type lu -fieldsplit_pressure_ksp_rtol
>     1.0e-10 -fieldsplit_pressure_pc_type jacobi
>
>
>     ---
>     L'absence de virus dans ce courrier électronique a été vérifiée
>     par le logiciel antivirus Avast.
>     https://www.avast.com/antivirus <https://www.avast.com/antivirus>
>
>
>
>
> -- 
> 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.caam.rice.edu/%7Emk51/>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20171123/e8136699/attachment.html>


More information about the petsc-users mailing list