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

Yann Jobic yann.jobic at univ-amu.fr
Wed Nov 22 11:39:37 CST 2017


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.

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



More information about the petsc-users mailing list