Hi Justin,
The nice way of doing this would require better subdomain support than we have right now. However there is a slightly hacky way of doing it which I think will cover your case nicely.
If you take a look at the DirichletBC class (in bcs.py), you'll notice that the set of nodes at which the BC should be applied is calculated in DirichletBC.nodes . So you could simply subclass DirichletBC and replace nodes with a function which returns the index of the zero node. For example (and I confess this is a sketch code which I haven't tried to run):
class PointDirichletBC(DirichletBC):
    @utils.cached_property
    def nodes(self):
        # Find the array of coordinate values.
        x = self.function_space().mesh().coordinates.dat.data_ro
        # Find the location of the zero rows in that 
        return np.where(~x.any(axis=1))[0]
Does that work for you?
Cheers,
David
Hi all,
If I create a mesh using UnitSquareMesh or UnitCubeMesh, is there a
way to subject a single point (as opposed to an entire edge/face) to a
DirichletBC? I want to subject the the location x=0,y=0 to some value.
Thanks,
Justin
_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake