On Thu, Jul 6, 2023 at 3:40 PM Hongrui Yu <[email protected]> wrote:
> Hello PETSc users,
>
>
>
> In our Finite Element application we would like to apply
> Multi-Point-Constraints to some vertices. In these Multi-Point-Constraints
> we force certain DoF in the following nodes to be the same as those in
> controlling nodes. We use DMPlex to store our mesh. I’m wondering what
> would be a good way to implement this together with SNES? Or is there an
> example that does similar thing?
>
There is a simple thing that Jed implemented call "isoperiodicity" in
plexsfc.c, and you can see
him using it to define a periodic box in
DMPlexCreateBoxMesh_Tensor_SFC_Periodicity_Private()
You could use exactly this to define an affine relation between two dofs.
> Currently both right-hand-side and solution vectors in out application are
> created using DMCreateGlobalVec(). And we tried (unsuccessfully) to modify
> solution within FormRHS or FormJacobian routines but the solution vector
> seems to be read-only (for good reason). Is there a way to tell SNES about
> these constraints? Or perhaps one can somehow create a vector with only a
> subset of the DoFs (the actual “unknowns”)?
>
Doing it as above will eliminate the constrained unknowns from the SNES
automatically, so this will not be a concern.
Thanks,
Matt
> Thank you in advance for any help or advice!
>
>
>
> Hongrui
>
>
>
>
--
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.cse.buffalo.edu/~knepley/>