Closed bindi-nagda closed 7 months ago
The main roadblock here is the smoother. At physical boundaries, the size of the system we solve in the smoother changes. We'll need a bunch of if
statements in the smoother to handle this, so it's a fairly tedious thing to implement. It might be easier to handle in something like C++ which has a more flexible API for varying system sizes. If we replace the smoother with a PETSc smoother, then physical boundaries can be baked into the matrix.
Everywhere else, physical boundaries are just a matter of passing around RefinePatchStrategy
and RobinBcCoefStrategy
objects and giving them to the ghost filling routines.
An initial implementation of Dirichlet BC's is in the branch physical_bcs
. There's something off with the box relaxation operator: it's use currently leads to failure to converge spatially.
This does not change the application of the smoother, which may be the problem. I think the box system needs to be adjusted.
Currently, we are employing bi-periodic boundary conditions. We should provide the ability to implement physical boundary conditions as well. We need to figure out how to set up these up in the solver and smoother.