[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