I'm solving a series of PDEs with different non-zero Dirichlet boundary
conditions. I'm using the DirichletBoundary functionality, and for each
solve in the series I currently do this via the following steps:

- Remove all existing DirichletBoundaries via
get_dof_map().remove_dirichlet_boundary
- Add the new DirichletBoundary objects (for the same set of boundaries as
before)
- Call EquationSystems::reinit() to reinitialize the dof constraints
- Perform the solve

This works fine, but the call to EquationSystems::reinit() is somewhat
inefficient for me because it clobbers the PETSc matrix data so that PETSc
doesn't let me reuse the preconditioner from one solve to the next.

I'm not changing the mesh and I'm constraining the same set of dofs on each
solve, so I was wondering if there's a way to just recompute the
constraints without calling EquationSystems::reinit() ? I wonder if it
would be sufficient for me to pick out a couple of the relevant commands
from EquationSystems::reinit, like:

        sys.get_dof_map().create_dof_constraints(_mesh, sys.time);
        sys.get_dof_map().process_constraints(_mesh);

?


Thanks,
David
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
www.gigenet.com
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to