← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Add support for setting periodic boundary conditions.

 

Good point, but I don't see how to do this in DOLFIN without a few major
changes. For example, we assume that each vertex is associated to
exactly one coordinate and the local-to-global mappings that FFC
generate are computed in terms of the global number of vertices, edges etc.

Perhaps one could postprocess the system to remove the rows with a
single 1 on the diagonal (Dirichlet BCs) and the rows with a 1 and -1
(periodic BCs)?

/Anders


Matthew Knepley wrote:
This seems weird to me. When I want periodic boundary conditions,
I just make a periodic mesh. Anything else messes with the system
too much. Making a periodic mesh from a flat one is simple surgery.
I agree that you have to modify the computation of element geometry,
but that seems to right place to me to account for the embedding.

 Matt

On 7/9/07, Garth N. Wells <g.n.wells@xxxxxxxxxx> wrote:

Quoting DOLFIN <dolfin@xxxxxxxxxx>:

> One or more new changesets pushed to the primary dolfin repository.
> A short summary of the last three changesets is included below.
>
> changeset:   3306:c70033cb881cb98ef8f177ebf0cb95348de96aa7
> tag:         tip
> user:        "Anders Logg <logg@xxxxxxxxx>"
> date:        Mon Jul 09 19:24:50 2007 +0200
> files:       Makefile.in aclocal.m4 configure src/Makefile.in
> src/bench/Makefile.in src/bench/fem/Makefile.in src/bench/la/Makefile.in
> src/bench/ode/Makefile.in src/demo/Makefile.in src/greeting/Makefile.in
> src/kernel/Makefile.in src/kernel/common/Makefile.in
> src/kernel/common/dolfin/Makefile.in src/kernel/elements/Makefile.in
> src/kernel/elements/dolfin/Makefile.in src/kernel/fem/BoundaryCondition.cpp
> src/kernel/fem/Makefile.am src/kernel/fem/Makefile.in
> src/kernel/fem/PeriodicBoundaryCondition.cpp
> src/kernel/fem/dolfin/BoundaryCondition.h src/kernel/fem/dolfin/Makefile.am
> src/kernel/fem/dolfin/Makefile.in
> src/kernel/fem/dolfin/PeriodicBoundaryCondition.h
> src/kernel/fem/dolfin/dolfin_fem.h src/kernel/function/Makefile.in
> src/kernel/function/dolfin/Makefile.in src/kernel/graph/Makefile.in
> src/kernel/graph/dolfin/Makefile.in src/kernel/io/Makefile.in
> src/kernel/io/dolfin/Makefile.in src/kernel/la/Makefile.in
> src/kernel/la/dolfin/Makefile.in src/kernel/log/Makefile.in src/kernel
>  /log/dolfin/Makefile.in src/kernel/main/Makefile.in
> src/kernel/main/dolfin/Makefile.in src/kernel/math/Makefile.in
> src/kernel/math/dolfin/Makefile.in src/kernel/mesh/Makefile.in
> src/kernel/mesh/SubDomain.cpp src/kernel/mesh/dolfin/Makefile.in
> src/kernel/mesh/dolfin/SubDomain.h src/kernel/mf/Makefile.in
> src/kernel/mf/dolfin/Makefile.in src/kernel/nls/Makefile.in
> src/kernel/nls/dolfin/Makefile.in src/kernel/ode/Makefile.in
> src/kernel/ode/dolfin/Makefile.in src/kernel/parameter/Makefile.in
> src/kernel/parameter/dolfin/Makefile.in src/kernel/pde/Makefile.in
> src/kernel/pde/dolfin/Makefile.in src/kernel/plot/Makefile.in
> src/kernel/plot/dolfin/Makefile.in src/kernel/quadrature/Makefile.in
> src/kernel/quadrature/dolfin/Makefile.in src/lib/Makefile.in
> src/pydolfin/Makefile.in src/test/Makefile.in src/utils/Makefile.in
> src/utils/convert/Makefile.in src/utils/inp2dx/Makefile.in
> src/utils/swig/Makefile.in
> description:
> Add support for setting periodic boundary conditions.
>
> To set a periodic boundary condition, specify a pair of domains
> G and H by a SubDomain. The inside() function should specify the
> points of G and the map() function should specify a mapping F : H --> G.
>
> Then create a PeriodicBoundaryCondition and apply() it to the linear system.
>
> Bugs/features:
>
>   1. Only works for scalar subsystems, so it needs to be done once for
>   each subsystem of a vector function.
>
>   2. Setting the entries in the matrix can perhaps be optimized.
>
>   3. PeriodicBoundaryCondition is not a subclass of BoundaryCondition,
>   so it does not work to give a PeriodicBoundaryCondition as argument
>   to LinearPDE.
>
> To fix 3, should we rename BoundaryCondition --> DirichletBC
> and have PeriodicBC and DirichletBC as subclasses of BoundaryCondition?
>

Yes, sounds good.

Garth

>
> changeset:   3305:4564fa57c9159e7dbe287ba121324ec84afd4d00
> user:        "Garth N. Wells <g.n.wells@xxxxxxxxxx>"
> date:        Thu Jul 05 22:24:27 2007 +0200
> files: src/kernel/la/PETScLUSolver.cpp src/kernel/nls/NewtonSolver.cpp
> src/kernel/nls/dolfin/NewtonSolver.h src/kernel/pde/LinearPDE.cpp
> description:
> Fix use of PETSc with UMFPACK.
>
>
> changeset:   3304:1a95bb6095dd1b91e462f62a630035defd37c8c6
> parent:      3303:a324e9cb2c73b27ecd636fcee5b1a08cc01a0da8
> parent:      3302:cd19d9eeddaa68d14d8c6fafe4de490ff17c1f5a
> user:        "Garth N. Wells <g.n.wells@xxxxxxxxxx>"
> date:        Wed Jul 04 14:38:37 2007 +0200
> files:
> description:
> merge.
>
> ----------------------------------------------------------------------
> For more details, visit http://www.fenics.org/hg/dolfin
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
>
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev






Follow ups

References