[firedrake] Applying Dirichlet Boundary conditions in certain regions

Justin Chang jychang48 at gmail.com
Thu Nov 5 19:33:00 GMT 2015


Hi all,

I think I asked a similar question a couple months ago, but say I want to
solve the advection equation. From what I understand, boundary conditions
should only be applied in the "upstream" regions (i.e., regions where the
velocity is flowing into the domain).

Say on a unit cube, i know that on plane x-y at z = 0, only the quadrants
(x[0] < 0.5 && x[1] < 0.5) and (x[0] >= 0.5 && x[1] >= 0.5) will have the
influx and the other two are either zero flux or have outflux.

Last time I asked how to constrain a point on the bottom left corner, and I
think one of you (David?) said to use something like:

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]

I am guessing that I would need to modify that last line somehow so that it
. What routines would I need in order to achieve this? Or is there a better
of doing this?

Thanks,
Justin
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the firedrake mailing list