Construct an example problem for shape optimisation. The example problem is one-dimensional. Roughly speaking, the cost is chosen such that the optimal solution should be symmetric around the origin and have a determined volume.
The parameters in data.p
as well as the basic grid in
data.g
should already be set. This routine fills in
the necessary callbacks to compute the cost and to find a descent direction.
These parameters in data.p
are used to refine the
example problem:
vol The desired volume. Deviations from this volume will be penalised in the cost functional.
weight Weight of the volume penalisation term. This is relative to the term that penalises non-symmetry and should be relatively large.
Note that these routines assume (for simplicity) that the level-set domain will always be a single interval. Thus, the initial domain should fulfil this assumption. (It will then automatically stay that way even when the shape is evolved.)
In addition to the callbacks, also utility routines will be returned
that can be used in handlers for plotting. They will be set
in data.util
:
[a, b] = bounds (phi, data)
Find the left and right bounds of the (assumed) interval that the
level-set function phi describes. This makes use of the
grid in data.g
. The bounds will also be filled into
the state struct as s.a
and s.b
.
See also: so_run_descent.
Package: level-set