This page was generated from unit-3.4-nonlmin/nonlmin.ipynb.

3.4 Nonlinear minimization problems

We consider minimization problems of the form

\[\text{find } u \in V \text{ s.t. } E(u) \leq E(v) \quad \forall~ v \in V.\]
[1]:
# imports
from ngsolve import *
from ngsolve.webgui import Draw

Similar to the previous unit we want solve the (minimization) problem using Newton’s method. However this time we don’t start with an equation but a minimization problem. We will let NGSolve derive the corresponding expressions for minimization conditions.

To solve the problem we use the Variation integrator of NGSolve and formulate the problem through the symbolic description of an energy functional.

Let \(E(u)\) be the energy that is to be minimized for the unknown state \(u\).

Then a necessary optimality condition is that the derivative at the minimizer \(u\) in all directions \(v\) vanishes, i.e.

\[\delta E(u) (v) = 0 \quad \forall v \in V\]

At this point we are back in business of the previous unit as we now have an equation that we need to solve.

Let’s continue with a concrete example.

Scalar minimization problems

As a first example we take \(V = H^1_0\) and

\[E(u) = \int_{\Omega} \frac12 \vert \nabla u \vert^2 + \frac{1}{12} u^4 - fu ~dx.\]

The minimization is equivalent (due to convexity) to solving the nonlinear PDE (cf. unit 3.3 with \(f=10\))

\[\delta E(u)(v) = 0 ~ \forall v \in V \quad \Leftrightarrow \quad - \Delta u + \frac13 u^3 = f \text{ in } V'\]

with \(\Omega = (0,1)^2\).

[2]:
# define geometry and generate mesh
from ngsolve import *
from ngsolve.webgui import *
from netgen.occ import *
shape = Rectangle(1,1).Face()
shape.edges.Min(X).name="left"
shape.edges.Max(X).name="right"
shape.edges.Min(Y).name="bottom"
shape.edges.Max(Y).name="top"
geom = OCCGeometry(shape, dim=2)
mesh = Mesh(geom.GenerateMesh(maxh=0.3))

We solve the PDE with a Newton iteration.

[3]:
V = H1(mesh, order=4, dirichlet=".*")
u = V.TrialFunction()

We define the semi-linear form expression through the energy functional using the Variation-keyword:

[4]:
a = BilinearForm (V, symmetric=True)
a += Variation ( (0.5*grad(u)*grad(u) + 1/12*u**4-10*u) * dx)

Now NGSolve applies the derivative on the functional so that the previous statement corresponds to:

a += (grad(u) * grad(v) + 1/3*u**3*v - 10 * v)*dx

(which has the same form as the problems in the nonlinear example)

We recall the Newton iteration (cf. unit-3.3 ) and now apply the same loop:

  • Given an initial guess \(u^0\)

  • loop over \(i=0,..\) until convergence:

    • Compute linearization: $A (u^i) + \delta `A(u^i) :nbsphinx-math:Delta `u^{i} = 0 $:

      • \(f^i = A (u^i)\)

      • \(B^i = \delta A(u^i)\)

      • Solve \(B^i \Delta u^i = -f^i\)

    • Update \(u^{i+1} = u^i + \Delta u^{i}\)

    • Evaluate stopping criteria

  • Evaluate \(E(u^{i+1})\)

As a stopping criteria we take \(\langle A u^i,\Delta u^i \rangle = \langle A u^i, A u^i \rangle_{(B^i)^{-1}}< \varepsilon\).

Note that \(A(u^i)\) (a.Apply(...)) and \(\delta A(u^i)\) (a.AssembleLinearization(...)) are now derived from \(A\) which is defined as \(A = \delta E\) through the energy functional \(E(\cdot)\).

We obtain a similar Newton solver with the two additional advantages:

  • We don’t have to form \(\delta E\) manually, but let NGSolve do the job and

  • we can use the energy functional to interprete the success of iteration steps

[5]:
def SolveNonlinearMinProblem(a,gfu,tol=1e-13,maxits=10, callback=lambda gfu: None):
    res = gfu.vec.CreateVector()
    du  = gfu.vec.CreateVector()
    callback(gfu)
    for it in range(maxits):
        print ("Newton iteration {:3}".format(it),
               ", energy = {:16}".format(a.Energy(gfu.vec)),end="")

        #solve linearized problem:
        a.Apply (gfu.vec, res)
        a.AssembleLinearization (gfu.vec)
        du.data = a.mat.Inverse(V.FreeDofs()) * res

        #update iteration
        gfu.vec.data -= du
        callback(gfu)

        #stopping criteria
        stopcritval = sqrt(abs(InnerProduct(du,res)))
        print ("<A u",it,", A u",it,">_{-1}^0.5 = ", stopcritval)
        if stopcritval < tol:
            break
        Redraw(blocking=True)

So, let’s try it out:

[6]:
gfu = GridFunction(V)
gfu.Set((x*(1-x))**4*(y*(1-y))**4) # initial guess
gfu_it = GridFunction(gfu.space,multidim=0)
cb = lambda gfu : gfu_it.AddMultiDimComponent(gfu.vec) # store current state
SolveNonlinearMinProblem(a,gfu, callback = cb)
print ("energy = ", a.Energy(gfu.vec))
Newton iteration   0 , energy = -2.5192104707462087e-05<A u 0 , A u 0 >_{-1}^0.5 =  1.8746349904970985
Newton iteration   1 , energy = -1.7525754353153378<A u 1 , A u 1 >_{-1}^0.5 =  0.010379567002968723
Newton iteration   2 , energy = -1.752629306894636<A u 2 , A u 2 >_{-1}^0.5 =  1.122910341961911e-06
Newton iteration   3 , energy = -1.7526293068952665<A u 3 , A u 3 >_{-1}^0.5 =  1.3148910551667396e-14
energy =  -1.7526293068952663
[7]:
Draw(gfu,mesh,"u", deformation = True)
#Draw(gfu_it,mesh,"u", deformation = True)
[7]:
WebGLScene

Again, a Newton for minimization is also shipped with NGSolve (actually it is the same with the additional knowledge about the Energy and the possibility to do a line search for a given search direction):

[8]:
from ngsolve.solvers import *
gfu.Set((x*(1-x))**4*(y*(1-y))**4) # initial guess
NewtonMinimization(a,gfu)
#Draw(gfu,mesh,"u", deformation = True)
Newton iteration  0
Energy:  -2.5192104707462087e-05
err =  1.8746349904970985
Newton iteration  1
Energy:  -1.7525754353153378
err =  0.010379567002968723
Newton iteration  2
Energy:  -1.752629306894636
err =  1.122910341961911e-06
Newton iteration  3
Energy:  -1.7526293068952665
err =  1.3148910551667396e-14
[8]:
(0, 4)

Nonlinear elasticity

We consider a beam which is fixed on one side and is subject to gravity only. We assume a Neo-Hookean hyperelastic material. The model is a nonlinear minimization problem with

\[E(v) := \int_{\Omega} \frac{\mu}{2} ( \operatorname{tr}(F^T F-I)+\frac{2 \mu}{\lambda} \operatorname{det}(F^T F)^{\frac{\lambda}{2\mu}} - 1) - \gamma ~ (f,v) ~~ dx\]

where \(\mu\) and \(\lambda\) are the Lamé parameters and \(F = I + D v\) where \(v: \Omega \to \mathbb{R}^2\) is the sought for displacement.

We fix the domain to \(\Omega = (0,1) \times (0,0.1)\)

[9]:
# define geometry and generate mesh
shape = Rectangle(1,0.1).Face()
shape.edges.Min(X).name="left"
shape.edges.Min(X).maxh=0.01
shape.edges.Max(X).name="right"
shape.edges.Min(Y).name="bot"
shape.edges.Max(Y).name="top"
geom = OCCGeometry(shape, dim=2)
mesh = Mesh(geom.GenerateMesh(maxh=0.05))
[10]:
# E module and poisson number:
E, nu = 210, 0.2
# Lamé constants:
mu  = E / 2 / (1+nu)
lam = E * nu / ((1+nu)*(1-2*nu))

V = VectorH1(mesh, order=2, dirichlet="left")
u  = V.TrialFunction()

#gravity:
force = CoefficientFunction( (0,-1) )

Now, we recall the energy

\[E(v) := \int_{\Omega} \frac{\mu}{2} ( \operatorname{tr}(F^T F-I)+\frac{2 \mu}{\lambda} \operatorname{det}(F^T F)^{\frac{\lambda}{2\mu}} - 1) - \gamma ~ (f,v) ~~ dx\]
[11]:
def Pow(a, b):
    return exp (log(a)*b)

def NeoHook (C):
    return 0.5 * mu * (Trace(C-I) + 2*mu/lam * Pow(Det(C), -lam/2/mu) - 1)

I = Id(mesh.dim)
F = I + Grad(u)
C = F.trans * F

factor = Parameter(1.0)

a = BilinearForm(V, symmetric=True)
a += Variation(  NeoHook (C).Compile() * dx
                -factor * (InnerProduct(force,u) ).Compile() * dx)

We want to solve the minimization problem for \(\gamma = 5\). Due to the high nonlinearity in the problem, the Newton iteration will not convergence for any initial guess. We approach the case \(\gamma = 5\) by solving problems with \(\gamma = i/10\) for \(i=1,..,50\) and taking the solution of the previous problem as an initial guess.

[12]:
gfu = GridFunction(V)
gfu.vec[:] = 0
gfu_l = GridFunction(V,multidim=0)
gfu_l.AddMultiDimComponent(gfu.vec)
for loadstep in range(50):
    print ("loadstep", loadstep)
    factor.Set ((loadstep+1)/10)
    SolveNonlinearMinProblem(a,gfu)
    if (loadstep + 1) % 10 == 0:
        gfu_l.AddMultiDimComponent(gfu.vec)
loadstep 0
Newton iteration   0 , energy = 8.750000000000005<A u 0 , A u 0 >_{-1}^0.5 =  0.016677582605688256
Newton iteration   1 , energy = 8.750132555222008<A u 1 , A u 1 >_{-1}^0.5 =  0.023331359879653298
Newton iteration   2 , energy = 8.749861163856334<A u 2 , A u 2 >_{-1}^0.5 =  0.00010230629993971325
Newton iteration   3 , energy = 8.74986115862305<A u 3 , A u 3 >_{-1}^0.5 =  5.117101125682976e-08
Newton iteration   4 , energy = 8.749861158623046<A u 4 , A u 4 >_{-1}^0.5 =  2.701744185681322e-13
Newton iteration   5 , energy = 8.749861158623046<A u 5 , A u 5 >_{-1}^0.5 =  6.798770747708438e-16
loadstep 1
Newton iteration   0 , energy = 8.749583933129314<A u 0 , A u 0 >_{-1}^0.5 =  0.01659529905393341
Newton iteration   1 , energy = 8.749710107506656<A u 1 , A u 1 >_{-1}^0.5 =  0.022956437669095688
Newton iteration   2 , energy =  8.7494473544425<A u 2 , A u 2 >_{-1}^0.5 =  0.00014215828017813073
Newton iteration   3 , energy = 8.749447344443878<A u 3 , A u 3 >_{-1}^0.5 =  2.325524696550145e-06
Newton iteration   4 , energy = 8.749447344441162<A u 4 , A u 4 >_{-1}^0.5 =  6.328257273216065e-10
Newton iteration   5 , energy = 8.749447344441164<A u 5 , A u 5 >_{-1}^0.5 =  9.859281979912507e-16
loadstep 2
Newton iteration   0 , energy = 8.748898257854599<A u 0 , A u 0 >_{-1}^0.5 =  0.01635609185386302
Newton iteration   1 , energy = 8.749005344320107<A u 1 , A u 1 >_{-1}^0.5 =  0.021890729080231715
Newton iteration   2 , energy = 8.748766384857403<A u 2 , A u 2 >_{-1}^0.5 =  0.0002082524388541725
Newton iteration   3 , energy = 8.748766363495845<A u 3 , A u 3 >_{-1}^0.5 =  4.891625109978169e-06
Newton iteration   4 , energy = 8.748766363483883<A u 4 , A u 4 >_{-1}^0.5 =  2.665444958448017e-09
Newton iteration   5 , energy = 8.748766363483883<A u 5 , A u 5 >_{-1}^0.5 =  1.6369611220278779e-15
loadstep 3
Newton iteration   0 , energy = 8.74795551255992<A u 0 , A u 0 >_{-1}^0.5 =  0.01598112098287601
Newton iteration   1 , energy = 8.748035610071787<A u 1 , A u 1 >_{-1}^0.5 =  0.02029003772228361
Newton iteration   2 , energy = 8.747830272447587<A u 2 , A u 2 >_{-1}^0.5 =  0.0002638495351723194
Newton iteration   3 , energy = 8.747830238130943<A u 3 , A u 3 >_{-1}^0.5 =  7.248678994761973e-06
Newton iteration   4 , energy = 8.74783023810466<A u 4 , A u 4 >_{-1}^0.5 =  4.7441719970221105e-09
Newton iteration   5 , energy = 8.747830238104667<A u 5 , A u 5 >_{-1}^0.5 =  2.756706762319856e-15
loadstep 4
Newton iteration   0 , energy = 8.74677136608456<A u 0 , A u 0 >_{-1}^0.5 =  0.015500028754925184
Newton iteration   1 , energy = 8.74682218106983<A u 1 , A u 1 >_{-1}^0.5 =  0.0183573377582377
Newton iteration   2 , energy = 8.746654051147164<A u 2 , A u 2 >_{-1}^0.5 =  0.00029910871447747363
Newton iteration   3 , energy = 8.746654006940766<A u 3 , A u 3 >_{-1}^0.5 =  8.721699481129219e-06
Newton iteration   4 , energy = 8.74665400690272<A u 4 , A u 4 >_{-1}^0.5 =  5.2421345512191085e-09
Newton iteration   5 , energy = 8.746654006902725<A u 5 , A u 5 >_{-1}^0.5 =  3.0219915476489533e-15
loadstep 5
Newton iteration   0 , energy = 8.745363235443094<A u 0 , A u 0 >_{-1}^0.5 =  0.014945100392160605
Newton iteration   1 , energy = 8.745386960171842<A u 1 , A u 1 >_{-1}^0.5 =  0.016290257519128774
Newton iteration   2 , energy = 8.745254520464082<A u 2 , A u 2 >_{-1}^0.5 =  0.0003132391521966715
Newton iteration   3 , energy = 8.745254471852597<A u 3 , A u 3 >_{-1}^0.5 =  9.043578971982681e-06
Newton iteration   4 , energy = 8.745254471811707<A u 4 , A u 4 >_{-1}^0.5 =  4.215318093104516e-09
Newton iteration   5 , energy = 8.745254471811707<A u 5 , A u 5 >_{-1}^0.5 =  2.5984049783305235e-15
loadstep 6
Newton iteration   0 , energy = 8.743749097806278<A u 0 , A u 0 >_{-1}^0.5 =  0.014346493694403144
Newton iteration   1 , energy = 8.743750467097103<A u 1 , A u 1 >_{-1}^0.5 =  0.014246300602291274
Newton iteration   2 , energy = 8.743649143781802<A u 2 , A u 2 >_{-1}^0.5 =  0.0003093649419070004
Newton iteration   3 , energy = 8.743649096250383<A u 3 , A u 3 >_{-1}^0.5 =  8.384606928761204e-06
Newton iteration   4 , energy = 8.74364909621523<A u 4 , A u 4 >_{-1}^0.5 =  2.692148560368236e-09
Newton iteration   5 , energy = 8.74364909621523<A u 5 , A u 5 >_{-1}^0.5 =  2.9279629855035487e-15
loadstep 7
Newton iteration   0 , energy = 8.741946608055969<A u 0 , A u 0 >_{-1}^0.5 =  0.013729428634283154
Newton iteration   1 , energy = 8.74193113281337<A u 1 , A u 1 >_{-1}^0.5 =  0.01233080753397855
Newton iteration   2 , energy = 8.741855199570422<A u 2 , A u 2 >_{-1}^0.5 =  0.00029213298826285546
Newton iteration   3 , energy = 8.741855157102608<A u 3 , A u 3 >_{-1}^0.5 =  7.128970075575259e-06
Newton iteration   4 , energy = 8.741855157077197<A u 4 , A u 4 >_{-1}^0.5 =  1.442055999928669e-09
Newton iteration   5 , energy = 8.741855157077197<A u 5 , A u 5 >_{-1}^0.5 =  3.5302096757248084e-15
loadstep 8
Newton iteration   0 , energy = 8.739972524644806<A u 0 , A u 0 >_{-1}^0.5 =  0.013113224428749149
Newton iteration   1 , energy = 8.739945347610655<A u 1 , A u 1 >_{-1}^0.5 =  0.010601366355254695
Newton iteration   2 , energy = 8.739889202270739<A u 2 , A u 2 >_{-1}^0.5 =  0.00026630591280448634
Newton iteration   3 , energy = 8.739889166926453<A u 3 , A u 3 >_{-1}^0.5 =  5.6612218852907176e-06
Newton iteration   4 , energy = 8.73988916691043<A u 4 , A u 4 >_{-1}^0.5 =  6.711442677871424e-10
Newton iteration   5 , energy = 8.73988916691043<A u 5 , A u 5 >_{-1}^0.5 =  3.1175940628451676e-15
loadstep 9
Newton iteration   0 , energy = 8.737842388930513<A u 0 , A u 0 >_{-1}^0.5 =  0.012511583560599424
Newton iteration   1 , energy = 8.73780775374073<A u 1 , A u 1 >_{-1}^0.5 =  0.009079612968670502
Newton iteration   2 , energy = 8.737766557197908<A u 2 , A u 2 >_{-1}^0.5 =  0.00023601511100587196
Newton iteration   3 , energy = 8.737766529405944<A u 3 , A u 3 >_{-1}^0.5 =  4.2568302583465406e-06
Newton iteration   4 , energy = 8.737766529396882<A u 4 , A u 4 >_{-1}^0.5 =  2.774314228113961e-10
Newton iteration   5 , energy = 8.737766529396882<A u 5 , A u 5 >_{-1}^0.5 =  3.530717200630473e-15
loadstep 10
Newton iteration   0 , energy = 8.735570387692954<A u 0 , A u 0 >_{-1}^0.5 =  0.011933492662434991
Newton iteration   1 , energy = 8.735531524207468<A u 1 , A u 1 >_{-1}^0.5 =  0.007763816791506178
Newton iteration   2 , energy = 8.735501393758721<A u 2 , A u 2 >_{-1}^0.5 =  0.0002044641727725396
Newton iteration   3 , energy = 8.735501372884306<A u 3 , A u 3 >_{-1}^0.5 =  3.063318797081812e-06
Newton iteration   4 , energy = 8.735501372879614<A u 4 , A u 4 >_{-1}^0.5 =  1.0296457994624177e-10
Newton iteration   5 , energy = 8.735501372879611<A u 5 , A u 5 >_{-1}^0.5 =  4.50254847269832e-15
loadstep 11
Newton iteration   0 , energy = 8.733169335796152<A u 0 , A u 0 >_{-1}^0.5 =  0.011384291415805162
Newton iteration   1 , energy = 8.733128560905095<A u 1 , A u 1 >_{-1}^0.5 =  0.006639099721605412
Newton iteration   2 , energy = 8.733106521835385<A u 2 , A u 2 >_{-1}^0.5 =  0.00017390289941566437
Newton iteration   3 , energy = 8.733106506726692<A u 3 , A u 3 >_{-1}^0.5 =  2.1280128161250023e-06
Newton iteration   4 , energy = 8.733106506724424<A u 4 , A u 4 >_{-1}^0.5 =  3.424124992754215e-11
Newton iteration   5 , energy = 8.733106506724427<A u 5 , A u 5 >_{-1}^0.5 =  4.219217699604616e-15
loadstep 12
Newton iteration   0 , energy = 8.730650730885845<A u 0 , A u 0 >_{-1}^0.5 =  0.01086666364955632
Newton iteration   1 , energy = 8.730609627352983<A u 1 , A u 1 >_{-1}^0.5 =  0.005684550176917688
Newton iteration   2 , energy = 8.730593466066006<A u 2 , A u 2 >_{-1}^0.5 =  0.00014574158624119013
Newton iteration   3 , energy = 8.730593455450627<A u 3 , A u 3 >_{-1}^0.5 =  1.437327629889745e-06
Newton iteration   4 , energy = 8.730593455449599<A u 4 , A u 4 >_{-1}^0.5 =  9.957367802452626e-12
Newton iteration   5 , energy = 8.730593455449595<A u 5 , A u 5 >_{-1}^0.5 =  4.129377707070466e-15
loadstep 13
Newton iteration   0 , energy = 8.728024846757634<A u 0 , A u 0 >_{-1}^0.5 =  0.010381451820195066
Newton iteration   1 , energy = 8.727984446186102<A u 1 , A u 1 >_{-1}^0.5 =  0.004877644309092091
Newton iteration   2 , energy = 8.72797254472322<A u 2 , A u 2 >_{-1}^0.5 =  0.0001207228017450167
Newton iteration   3 , energy = 8.72797253743792<A u 3 , A u 3 >_{-1}^0.5 =  9.497245801611015e-07
Newton iteration   4 , energy = 8.727972537437468<A u 4 , A u 4 >_{-1}^0.5 =  2.3171401407906247e-12
Newton iteration   5 , energy = 8.727972537437466<A u 5 , A u 5 >_{-1}^0.5 =  4.4374973312780435e-15
loadstep 14
Newton iteration   0 , energy = 8.725300843768158<A u 0 , A u 0 >_{-1}^0.5 =  0.009928279578335333
Newton iteration   1 , energy = 8.725261782651362<A u 1 , A u 1 >_{-1}^0.5 =  0.004196713092744225
Newton iteration   2 , energy = 8.72525297050855<A u 2 , A u 2 >_{-1}^0.5 =  9.91018907320269e-05
Newton iteration   3 , energy = 8.725252965598381<A u 3 , A u 3 >_{-1}^0.5 =  6.171499948719075e-07
Newton iteration   4 , energy = 8.725252965598202<A u 4 , A u 4 >_{-1}^0.5 =  2.679479062673745e-13
Newton iteration   5 , energy = 8.725252965598198<A u 5 , A u 5 >_{-1}^0.5 =  4.468253179356372e-15
loadstep 15
Newton iteration   0 , energy = 8.722486883056932<A u 0 , A u 0 >_{-1}^0.5 =  0.009506005046418452
Newton iteration   1 , energy = 8.722449524170576<A u 1 , A u 1 >_{-1}^0.5 =  0.003622138360373369
Newton iteration   2 , energy = 8.722442958756766<A u 2 , A u 2 >_{-1}^0.5 =  8.080932447779428e-05
Newton iteration   3 , energy = 8.722442955491692<A u 3 , A u 3 >_{-1}^0.5 =  3.961941214316756e-07
Newton iteration   4 , energy = 8.722442955491612<A u 4 , A u 4 >_{-1}^0.5 =  1.5360942075874615e-13
Newton iteration   5 , energy = 8.72244295549161<A u 5 , A u 5 >_{-1}^0.5 =  4.4132791455927374e-15
loadstep 16
Newton iteration   0 , energy = 8.719590236980153<A u 0 , A u 0 >_{-1}^0.5 =  0.009113039187351311
Newton iteration   1 , energy = 8.719554758791885<A u 1 , A u 1 >_{-1}^0.5 =  0.0031367887187774635
Newton iteration   2 , energy = 8.719549834337263<A u 2 , A u 2 >_{-1}^0.5 =  6.558227828987954e-05
Newton iteration   3 , energy = 8.719549832186644<A u 3 , A u 3 >_{-1}^0.5 =  2.522536043717455e-07
Newton iteration   4 , energy = 8.719549832186614<A u 4 , A u 4 >_{-1}^0.5 =  1.5071476000182458e-13
Newton iteration   5 , energy = 8.719549832186608<A u 5 , A u 5 >_{-1}^0.5 =  5.317718774857797e-15
loadstep 17
Newton iteration   0 , energy = 8.716617391769226<A u 0 , A u 0 >_{-1}^0.5 =  0.00874756287455999
Newton iteration   1 , energy = 8.716583851994578<A u 1 , A u 1 >_{-1}^0.5 =  0.002726036584214414
Newton iteration   2 , energy = 8.716580132414697<A u 2 , A u 2 >_{-1}^0.5 =  5.3062302052299725e-05
Newton iteration   3 , energy = 8.716580131006792<A u 3 , A u 3 >_{-1}^0.5 =  1.598107502909486e-07
Newton iteration   4 , energy = 8.716580131006774<A u 4 , A u 4 >_{-1}^0.5 =  9.177847449717832e-14
loadstep 18
Newton iteration   0 , energy = 8.713574140655616<A u 0 , A u 0 >_{-1}^0.5 =  0.00840767077894791
Newton iteration   1 , energy = 8.71354252032551<A u 1 , A u 1 >_{-1}^0.5 =  0.002377567532430969
Newton iteration   2 , energy = 8.713539690707933<A u 2 , A u 2 >_{-1}^0.5 =  4.28618645920527e-05
Newton iteration   3 , energy = 8.71353968978929<A u 3 , A u 3 >_{-1}^0.5 =  1.0101914444136365e-07
Newton iteration   4 , energy = 8.713539689789279<A u 4 , A u 4 >_{-1}^0.5 =  4.82795783380251e-14
loadstep 19
Newton iteration   0 , energy = 8.710465667024842<A u 0 , A u 0 >_{-1}^0.5 =  0.00809146379891488
Newton iteration   1 , energy = 8.710435900463292<A u 1 , A u 1 >_{-1}^0.5 =  0.002081104792287083
Newton iteration   2 , energy = 8.710433732402826<A u 2 , A u 2 >_{-1}^0.5 =  3.4605549425305793e-05
Newton iteration   3 , energy = 8.710433731803999<A u 3 , A u 3 >_{-1}^0.5 =  6.385680188929693e-08
Newton iteration   4 , energy = 8.710433731803999<A u 4 , A u 4 >_{-1}^0.5 =  2.3762492364765888e-14
loadstep 20
Newton iteration   0 , energy = 8.707296617905461<A u 0 , A u 0 >_{-1}^0.5 =  0.007797106054483893
Newton iteration   1 , energy =  8.7072686127897<A u 1 , A u 1 >_{-1}^0.5 =  0.0018281159208483175
Newton iteration   2 , energy = 8.707266939759123<A u 2 , A u 2 >_{-1}^0.5 =  2.79524799653702e-05
Newton iteration   3 , energy = 8.70726693936842<A u 3 , A u 3 >_{-1}^0.5 =  4.043944264999984e-08
Newton iteration   4 , energy = 8.707266939368422<A u 4 , A u 4 >_{-1}^0.5 =  1.221879396908615e-14
loadstep 21
Newton iteration   0 , energy = 8.704071168483761<A u 0 , A u 0 >_{-1}^0.5 =  0.007522857909615841
Newton iteration   1 , energy = 8.704044819049008<A u 1 , A u 1 >_{-1}^0.5 =  0.0016115353156430292
Newton iteration   2 , energy = 8.704043518933696<A u 2 , A u 2 >_{-1}^0.5 =  2.2605982085439947e-05
Newton iteration   3 , energy = 8.704043518678159<A u 3 , A u 3 >_{-1}^0.5 =  2.5693534712995607e-08
Newton iteration   4 , energy = 8.704043518678159<A u 4 , A u 4 >_{-1}^0.5 =  8.15132766349107e-15
loadstep 22
Newton iteration   0 , energy = 8.700793078503208<A u 0 , A u 0 >_{-1}^0.5 =  0.007267093060734741
Newton iteration   1 , energy = 8.700768274070786<A u 1 , A u 1 >_{-1}^0.5 =  0.0014255171678105995
Newton iteration   2 , energy = 8.700767256775295<A u 2 , A u 2 >_{-1}^0.5 =  1.831528979903711e-05
Newton iteration   3 , energy = 8.700767256607556<A u 3 , A u 3 >_{-1}^0.5 =  1.6396499609365773e-08
Newton iteration   4 , energy = 8.700767256607554<A u 4 , A u 4 >_{-1}^0.5 =  5.504858305094284e-15
loadstep 23
Newton iteration   0 , energy = 8.697465741449392<A u 0 , A u 0 >_{-1}^0.5 =  0.007028305242749024
Newton iteration   1 , energy = 8.697442371797754<A u 1 , A u 1 >_{-1}^0.5 =  0.0012652231229568303
Newton iteration   2 , energy = 8.697441570430094<A u 2 , A u 2 >_{-1}^0.5 =  1.4872780407806899e-05
Newton iteration   3 , energy = 8.697441570319484<A u 3 , A u 3 >_{-1}^0.5 =  1.051863292995099e-08
Newton iteration   4 , energy = 8.697441570319487<A u 4 , A u 4 >_{-1}^0.5 =  5.992611562424951e-15
loadstep 24
Newton iteration   0 , energy = 8.694092227393039<A u 0 , A u 0 >_{-1}^0.5 =  0.006805108340823433
Newton iteration   1 , energy = 8.694070186017765<A u 1 , A u 1 >_{-1}^0.5 =  0.0011266436801001761
Newton iteration   2 , energy = 8.694069550595467<A u 2 , A u 2 >_{-1}^0.5 =  1.2109069701744777e-05
Newton iteration   3 , energy = 8.694069550522146<A u 3 , A u 3 >_{-1}^0.5 =  6.787739564304703e-09
Newton iteration   4 , energy = 8.694069550522148<A u 4 , A u 4 >_{-1}^0.5 =  6.1572040885994705e-15
loadstep 25
Newton iteration   0 , energy = 8.690675320299123<A u 0 , A u 0 >_{-1}^0.5 =  0.006596232465386839
Newton iteration   1 , energy = 8.690654506275457<A u 1 , A u 1 >_{-1}^0.5 =  0.0010064499991218009
Newton iteration   2 , energy = 8.690653999211644<A u 2 , A u 2 >_{-1}^0.5 =  9.887408053220786e-06
Newton iteration   3 , energy = 8.690653999162762<A u 3 , A u 3 >_{-1}^0.5 =  4.408063365182464e-09
Newton iteration   4 , energy = 8.690653999162764<A u 4 , A u 4 >_{-1}^0.5 =  6.009540807130762e-15
loadstep 26
Newton iteration   0 , energy = 8.687217550530383<A u 0 , A u 0 >_{-1}^0.5 =  0.006400517697531208
Newton iteration   1 , energy = 8.687197869461734<A u 1 , A u 1 >_{-1}^0.5 =  0.000901871981973461
Newton iteration   2 , energy = 8.68719746231136<A u 2 , A u 2 >_{-1}^0.5 =  8.098192892692488e-06
Newton iteration   3 , energy = 8.687197462278565<A u 3 , A u 3 >_{-1}^0.5 =  2.8818016949170126e-09
Newton iteration   4 , energy = 8.687197462278565<A u 4 , A u 4 >_{-1}^0.5 =  5.636839211788211e-15
loadstep 27
Newton iteration   0 , energy = 8.68372122318979<A u 0 , A u 0 >_{-1}^0.5 =  0.00621690662966671
Newton iteration   1 , energy = 8.683702587568163<A u 1 , A u 1 >_{-1}^0.5 =  0.0008105984822199511
Newton iteration   2 , energy = 8.683702258669637<A u 2 , A u 2 >_{-1}^0.5 =  6.654005046748937e-06
Newton iteration   3 , energy = 8.683702258647493<A u 3 , A u 3 >_{-1}^0.5 =  1.8969673967478004e-09
Newton iteration   4 , energy = 8.683702258647491<A u 4 , A u 4 >_{-1}^0.5 =  6.158599242999238e-15
loadstep 28
Newton iteration   0 , energy = 8.680188442866307<A u 0 , A u 0 >_{-1}^0.5 =  0.006044436430117581
Newton iteration   1 , energy = 8.680170772062889<A u 1 , A u 1 >_{-1}^0.5 =  0.0007306958544607946
Newton iteration   2 , energy = 8.680170504818912<A u 2 , A u 2 >_{-1}^0.5 =  5.485327885167921e-06
Newton iteration   3 , energy = 8.680170504803865<A u 3 , A u 3 >_{-1}^0.5 =  1.2574267031218996e-09
Newton iteration   4 , energy = 8.680170504803863<A u 4 , A u 4 >_{-1}^0.5 =  5.98634471165874e-15
loadstep 29
Newton iteration   0 , energy = 8.676621135273352<A u 0 , A u 0 >_{-1}^0.5 =  0.005882230892525424
Newton iteration   1 , energy = 8.676604355304637<A u 1 , A u 1 >_{-1}^0.5 =  0.0006605415495143304
Newton iteration   2 , energy = 8.676604136921792<A u 2 , A u 2 >_{-1}^0.5 =  4.536967916990353e-06
Newton iteration   3 , energy = 8.676604136911502<A u 3 , A u 3 >_{-1}^0.5 =  8.39361379051721e-10
Newton iteration   4 , energy =  8.6766041369115<A u 4 , A u 4 >_{-1}^0.5 =  6.643523880833332e-15
loadstep 30
Newton iteration   0 , energy = 8.673021066202951<A u 0 , A u 0 >_{-1}^0.5 =  0.005729492751289682
Newton iteration   1 , energy = 8.673005109368706<A u 1 , A u 1 >_{-1}^0.5 =  0.0005987699748752788
Newton iteration   2 , energy = 8.673004929927785<A u 2 , A u 2 >_{-1}^0.5 =  3.7651240065167174e-06
Newton iteration   3 , energy = 8.673004929920697<A u 3 , A u 3 >_{-1}^0.5 =  5.642205880426964e-10
Newton iteration   4 , energy = 8.673004929920696<A u 4 , A u 4 >_{-1}^0.5 =  6.852675857521622e-15
loadstep 31
Newton iteration   0 , energy = 8.669389858159557<A u 0 , A u 0 >_{-1}^0.5 =  0.0055854964249345785
Newton iteration   1 , energy = 8.66937466261523<A u 1 , A u 1 >_{-1}^0.5 =  0.0005442283166960414
Newton iteration   2 , energy = 8.669374514381584<A u 2 , A u 2 >_{-1}^0.5 =  3.1350221737686933e-06
Newton iteration   3 , energy = 8.66937451437667<A u 3 , A u 3 >_{-1}^0.5 =  3.819100174924721e-10
Newton iteration   4 , energy = 8.66937451437667<A u 4 , A u 4 >_{-1}^0.5 =  5.7744145313361346e-15
loadstep 32
Newton iteration   0 , energy = 8.665729004986108<A u 0 , A u 0 >_{-1}^0.5 =  0.005449581270427783
Newton iteration   1 , energy = 8.665714514290283<A u 1 , A u 1 >_{-1}^0.5 =  0.0004959404367405084
Newton iteration   2 , energy = 8.665714391199181<A u 2 , A u 2 >_{-1}^0.5 =  2.6190258486185856e-06
Newton iteration   3 , energy = 8.665714391195753<A u 3 , A u 3 >_{-1}^0.5 =  2.6027998094816324e-10
Newton iteration   4 , energy = 8.665714391195753<A u 4 , A u 4 >_{-1}^0.5 =  5.420304941573265e-15
loadstep 33
Newton iteration   0 , energy = 8.66203988475065<A u 0 , A u 0 >_{-1}^0.5 =  0.005321145381084389
Newton iteration   1 , energy = 8.662026047412915<A u 1 , A u 1 >_{-1}^0.5 =  0.00045307731149999726
Newton iteration   2 , energy = 8.662025944683323<A u 2 , A u 2 >_{-1}^0.5 =  2.19513630035207e-06
Newton iteration   3 , energy = 8.662025944680916<A u 3 , A u 3 >_{-1}^0.5 =  1.7858325689090602e-10
Newton iteration   4 , energy = 8.662025944680916<A u 4 , A u 4 >_{-1}^0.5 =  6.626153293707764e-15
loadstep 34
Newton iteration   0 , energy = 8.658323771123683<A u 0 , A u 0 >_{-1}^0.5 =  0.005199639928202896
Newton iteration   1 , energy = 8.658310540168342<A u 1 , A u 1 >_{-1}^0.5 =  0.00041493277335665266
Newton iteration   2 , energy = 8.658310454011467<A u 2 , A u 2 >_{-1}^0.5 =  1.8458080208099774e-06
Newton iteration   3 , energy = 8.658310454009762<A u 3 , A u 3 >_{-1}^0.5 =  1.2334124113666236e-10
Newton iteration   4 , energy = 8.658310454009763<A u 4 , A u 4 >_{-1}^0.5 =  5.466952864596778e-15
loadstep 35
Newton iteration   0 , energy = 8.654581843443761<A u 0 , A u 0 >_{-1}^0.5 =  0.005084564027368124
Newton iteration   1 , energy = 8.654569175998306<A u 1 , A u 1 >_{-1}^0.5 =  0.0003809035534957335
Newton iteration   2 , energy = 8.65456910339633<A u 2 , A u 2 >_{-1}^0.5 =  1.5570154928630494e-06
Newton iteration   3 , energy = 8.654569103395119<A u 3 , A u 3 >_{-1}^0.5 =  8.5738191636816e-11
Newton iteration   4 , energy = 8.654569103395119<A u 4 , A u 4 >_{-1}^0.5 =  6.257563621105073e-15
loadstep 36
Newton iteration   0 , energy = 8.65081519564104<A u 0 , A u 0 >_{-1}^0.5 =  0.004975460099007468
Newton iteration   1 , energy = 8.65080305255372<A u 1 , A u 1 >_{-1}^0.5 =  0.00035047282042625227
Newton iteration   2 , energy = 8.650802991091057<A u 2 , A u 2 >_{-1}^0.5 =  1.3175190456931949e-06
Newton iteration   3 , energy = 8.650802991090185<A u 3 , A u 3 >_{-1}^0.5 =  5.997650817051264e-11
Newton iteration   4 , energy = 8.650802991090188<A u 4 , A u 4 >_{-1}^0.5 =  6.349388074911158e-15
loadstep 37
Newton iteration   0 , energy = 8.647024844164548<A u 0 , A u 0 >_{-1}^0.5 =  0.004871909687065692
Newton iteration   1 , energy = 8.647013189652872<A u 1 , A u 1 >_{-1}^0.5 =  0.0003231965645324674
Newton iteration   2 , energy = 8.647013137386661<A u 2 , A u 2 >_{-1}^0.5 =  1.1182875714053803e-06
Newton iteration   3 , energy = 8.647013137386036<A u 3 , A u 3 >_{-1}^0.5 =  4.2214276014163253e-11
Newton iteration   4 , energy = 8.647013137386038<A u 4 , A u 4 >_{-1}^0.5 =  6.821988855641862e-15
loadstep 38
Newton iteration   0 , energy = 8.643211735038838<A u 0 , A u 0 >_{-1}^0.5 =  0.004773529697627147
Newton iteration   1 , energy = 8.643200536368832<A u 1 , A u 1 >_{-1}^0.5 =  0.00029869230501195735
Newton iteration   2 , energy = 8.64320049172917<A u 2 , A u 2 >_{-1}^0.5 =  9.520444184718867e-07
Newton iteration   3 , energy = 8.643200491728715<A u 3 , A u 3 >_{-1}^0.5 =  2.9890961866218224e-11
Newton iteration   4 , energy = 8.643200491728713<A u 4 , A u 4 >_{-1}^0.5 =  6.727880658986673e-15
loadstep 39
Newton iteration   0 , energy = 8.639376750158188<A u 0 , A u 0 >_{-1}^0.5 =  0.0046799690192701185
Newton iteration   1 , energy = 8.639365977353362<A u 1 , A u 1 >_{-1}^0.5 =  0.0002766296964340682
Newton iteration   2 , energy = 8.639365939065922<A u 2 , A u 2 >_{-1}^0.5 =  8.1290983113172e-07
Newton iteration   3 , energy = 8.639365939065595<A u 3 , A u 3 >_{-1}^0.5 =  2.129065906897303e-11
Newton iteration   4 , energy = 8.639365939065595<A u 4 , A u 4 >_{-1}^0.5 =  7.030016520959302e-15
loadstep 40
Newton iteration   0 , energy = 8.635520712911948<A u 0 , A u 0 >_{-1}^0.5 =  0.004590905488470324
Newton iteration   1 , energy = 8.635510338490105<A u 1 , A u 1 >_{-1}^0.5 =  0.0002567226930863875
Newton iteration   2 , energy = 8.635510305515965<A u 2 , A u 2 >_{-1}^0.5 =  6.96119011214249e-07
Newton iteration   3 , energy = 8.63551030551572<A u 3 , A u 3 >_{-1}^0.5 =  1.524956306451023e-11
Newton iteration   4 , energy = 8.635510305515721<A u 4 , A u 4 >_{-1}^0.5 =  6.6099115469144115e-15
loadstep 41
Newton iteration   0 , energy = 8.631644393221706<A u 0 , A u 0 >_{-1}^0.5 =  0.004506043165565891
Newton iteration   1 , energy = 8.631634391957729<A u 1 , A u 1 >_{-1}^0.5 =  0.0002387229941949864
Newton iteration   2 , energy = 8.631634363446205<A u 2 , A u 2 >_{-1}^0.5 =  5.977994012099246e-07
Newton iteration   3 , energy = 8.631634363446029<A u 3 , A u 3 >_{-1}^0.5 =  1.0982349692459552e-11
Newton iteration   4 , energy = 8.631634363446027<A u 4 , A u 4 >_{-1}^0.5 =  7.284890424800354e-15
loadstep 42
Newton iteration   0 , energy = 8.627748512060567<A u 0 , A u 0 >_{-1}^0.5 =  0.0044251098893855
Newton iteration   1 , energy = 8.627738860772808<A u 1 , A u 1 >_{-1}^0.5 =  0.00022241454517991948
Newton iteration   2 , energy = 8.627738836024482<A u 2 , A u 2 >_{-1}^0.5 =  5.147943875841786e-07
Newton iteration   3 , energy = 8.627738836024351<A u 3 , A u 3 >_{-1}^0.5 =  7.954997685926971e-12
Newton iteration   4 , energy = 8.627738836024351<A u 4 , A u 4 >_{-1}^0.5 =  7.216400236635793e-15
loadstep 43
Newton iteration   0 , energy = 8.623833745515201<A u 0 , A u 0 >_{-1}^0.5 =  0.004347855081377236
Newton iteration   1 , energy = 8.623824422873442<A u 1 , A u 1 >_{-1}^0.5 =  0.00020760891187559768
Newton iteration   2 , energy = 8.623824401310943<A u 2 , A u 2 >_{-1}^0.5 =  4.445234314392625e-07
Newton iteration   3 , energy = 8.623824401310841<A u 3 , A u 3 >_{-1}^0.5 =  5.791019113460381e-12
Newton iteration   4 , energy = 8.623824401310845<A u 4 , A u 4 >_{-1}^0.5 =  7.93027887015656e-15
loadstep 44
Newton iteration   0 , energy = 8.61990072844367<A u 0 , A u 0 >_{-1}^0.5 =  0.004274047772882246
Newton iteration   1 , energy = 8.619891714796633<A u 1 , A u 1 >_{-1}^0.5 =  0.00019414137852422411
Newton iteration   2 , energy = 8.619891695941398<A u 2 , A u 2 >_{-1}^0.5 =  3.8487082510574005e-07
Newton iteration   3 , energy = 8.619891695941325<A u 3 , A u 3 >_{-1}^0.5 =  4.236733363625308e-12
Newton iteration   4 , energy = 8.619891695941316<A u 4 , A u 4 >_{-1}^0.5 =  7.0989686031196835e-15
loadstep 45
Newton iteration   0 , energy = 8.615950057775086<A u 0 , A u 0 >_{-1}^0.5 =  0.004203474831744524
Newton iteration   1 , energy = 8.615941334995355<A u 1 , A u 1 >_{-1}^0.5 =  0.00018186764736623367
Newton iteration   2 , energy = 8.615941318449256<A u 2 , A u 2 >_{-1}^0.5 =  3.340969897025725e-07
Newton iteration   3 , energy = 8.615941318449206<A u 3 , A u 3 >_{-1}^0.5 =  3.1156600199178787e-12
Newton iteration   4 , energy = 8.615941318449204<A u 4 , A u 4 >_{-1}^0.5 =  7.440283580604173e-15
loadstep 46
Newton iteration   0 , energy = 8.611982295491366<A u 0 , A u 0 >_{-1}^0.5 =  0.004135939366896681
Newton iteration   1 , energy = 8.61197384683618<A u 1 , A u 1 >_{-1}^0.5 =  0.00017066103967650328
Newton iteration   2 , energy = 8.611973832266731<A u 2 , A u 2 >_{-1}^0.5 =  2.907675676775281e-07
Newton iteration   3 , energy = 8.611973832266687<A u 3 , A u 3 >_{-1}^0.5 =  2.3027101724042536e-12
Newton iteration   4 , energy = 8.61197383226669<A u 4 , A u 4 >_{-1}^0.5 =  7.016440979847435e-15
loadstep 47
Newton iteration   0 , energy = 8.607997971326373<A u 0 , A u 0 >_{-1}^0.5 =  0.004071259291905104
Newton iteration   1 , energy = 8.60798978131238<A u 1 , A u 1 >_{-1}^0.5 =  0.00016041011593720677
Newton iteration   2 , energy = 8.607989768440921<A u 2 , A u 2 >_{-1}^0.5 =  2.5369657253314076e-07
Newton iteration   3 , energy = 8.607989768440882<A u 3 , A u 3 >_{-1}^0.5 =  1.709965888008929e-12
Newton iteration   4 , energy = 8.60798976844089<A u 4 , A u 4 >_{-1}^0.5 =  6.215899419102892e-15
loadstep 48
Newton iteration   0 , energy = 8.603997585213087<A u 0 , A u 0 >_{-1}^0.5 =  0.004009266030421462
Newton iteration   1 , energy = 8.603989639503844<A u 1 , A u 1 >_{-1}^0.5 =  0.0001510166472475852
Newton iteration   2 , energy = 8.60398962809597<A u 2 , A u 2 >_{-1}^0.5 =  2.2190070058225785e-07
Newton iteration   3 , energy = 8.60398962809595<A u 3 , A u 3 >_{-1}^0.5 =  1.2745213729365437e-12
Newton iteration   4 , energy = 8.603989628095949<A u 4 , A u 4 >_{-1}^0.5 =  8.139550572160273e-15
loadstep 49
Newton iteration   0 , energy = 8.599981609506168<A u 0 , A u 0 >_{-1}^0.5 =  0.003949803348439344
Newton iteration   1 , energy = 8.599973894810805<A u 1 , A u 1 >_{-1}^0.5 =  0.00014239388187147574
Newton iteration   2 , energy = 8.599973884668694<A u 2 , A u 2 >_{-1}^0.5 =  1.9456250107318723e-07
Newton iteration   3 , energy = 8.59997388466867<A u 3 , A u 3 >_{-1}^0.5 =  9.555053698661142e-13
Newton iteration   4 , energy = 8.599973884668675<A u 4 , A u 4 >_{-1}^0.5 =  6.785412076578533e-15
[13]:
Draw(gfu_l,mesh, interpolate_multidim=True, animate=True,
     deformation=True, min=0, max=1, autoscale=False)
[13]:
WebGLScene

Supplementary 1: Allen-Cahn equation

The Allen-Cahn equations describe the process of phase separation and is the (\(L^2\)) gradient-flow equation to the energy

\[E(v) = \int_{\Omega} \varepsilon \vert \nabla v \vert^2~+~ \underbrace{v^2(1-v^2)}_{\Psi(v)} ~ dx\]

where \(\Psi(v)\) is the so-called double-well potential with the minima \(-1,0,1\) (with \(0\) being an unstable minima).

The solution to the Allen-Cahn equation solves

\[\partial_t u = \frac{\delta E}{\delta u}\]

The quantity \(u\) is an indicator for a phase where \(-1\) refers to one phase and \(1\) to another phase.

The equation has two driving forces:

  • \(u\) is pulled into one of the two stable minima states (\(-1\) and \(1\)) of the nonlinear term \(u^2(1-u^2)\) (separation of the phases)

  • the diffusion term scaled with \(\varepsilon\) enforces a smooth transition between the two phases. \(\varepsilon\) determines the size of the transition layer

We use the Energy formulation for energy minimization combined with a simple time stepping with an implicit Euler discretization:

\[M u^{n+1} - M u^n = \Delta t \underbrace{\frac{\delta E}{\delta u}}_{=:A(u)} (u^{n+1})\]

which we can interprete as a nonlinear minimization problem again with the energy

\[E^{IE}(v) = \int_{\Omega} \frac{\varepsilon}{2} \vert \nabla v \vert^2~+~v^2(1-v^2) + \frac{1}{2\Delta t} \vert v - u^n \vert^2 ~ dx\]

To solve the nonlinear equation at every time step we again rely on Newton’s method. We first define the periodic geometry, setup the formulation and then apply Newton’s method in the next cells:

[14]:
# define periodic geometry and generate mesh
shape = Rectangle(1,1).Face()
right=shape.edges.Max(X)
right.name="right"
shape.edges.Min(X).Identify(right,name="left")
top=shape.edges.Max(Y)
top.name="top"
shape.edges.Min(Y).Identify(top,name="bottom")
geom = OCCGeometry(shape, dim=2)
mesh = Mesh(geom.GenerateMesh(maxh=0.1))

[15]:
#use a periodic fe space correspondingly
V = Periodic(H1(mesh, order=3))
u = V.TrialFunction()

eps = 4e-3
dt = Parameter(1e-1)
gfu = GridFunction(V)
gfuold = GridFunction(V)
a = BilinearForm (V, symmetric=False)
a += Variation( (eps/2*grad(u)*grad(u) + ((1-u*u)*(1-u*u))
                     + 0.5/dt*(u-gfuold)*(u-gfuold)) * dx)
[16]:
from math import pi
gfu = GridFunction(V)
#gfu.Set(sin(2*pi*x)) # regular initial values
gfu.Set(sin(1e7*(x+y*y))) #<- essentially a random function
gfu_t = GridFunction(V, multidim=0)
gfu_t.AddMultiDimComponent(0.1*gfu.vec)
[17]:
t = 0; tend = 5; cnt = 0; sample_rate = int(floor(0.5/dt.Get()))
while t < tend - 0.5 * dt.Get():
    gfuold.vec.data = gfu.vec
    SolveNonlinearMinProblem(a,gfu)
    if (cnt+1) % sample_rate == 0:
        gfu_t.AddMultiDimComponent(0.1*gfu.vec)
    t += dt.Get(); cnt += 1
    print("t = ", t)
Newton iteration   0 , energy = 11.15552758307915<A u 0 , A u 0 >_{-1}^0.5 =  3.9029676599964356
Newton iteration   1 , energy = 3.031758348180306<A u 1 , A u 1 >_{-1}^0.5 =  0.5872637683334879
Newton iteration   2 , energy = 2.851815319141039<A u 2 , A u 2 >_{-1}^0.5 =  0.05151717528228301
Newton iteration   3 , energy = 2.8504702543586924<A u 3 , A u 3 >_{-1}^0.5 =  0.0012747176928646824
Newton iteration   4 , energy = 2.850469441245067<A u 4 , A u 4 >_{-1}^0.5 =  1.6950502750978308e-06
Newton iteration   5 , energy = 2.8504694412436304<A u 5 , A u 5 >_{-1}^0.5 =  4.232322115027404e-12
Newton iteration   6 , energy = 2.850469441243631<A u 6 , A u 6 >_{-1}^0.5 =  3.5961883270539175e-16
t =  0.1
Newton iteration   0 , energy = 1.4798260774123717<A u 0 , A u 0 >_{-1}^0.5 =  0.8225916481266747
Newton iteration   1 , energy = 1.1356965619182884<A u 1 , A u 1 >_{-1}^0.5 =  0.04100866263191857
Newton iteration   2 , energy = 1.1348504604861949<A u 2 , A u 2 >_{-1}^0.5 =  0.000480898701181523
Newton iteration   3 , energy = 1.1348503448283513<A u 3 , A u 3 >_{-1}^0.5 =  1.8404732692501114e-07
Newton iteration   4 , energy = 1.1348503448283356<A u 4 , A u 4 >_{-1}^0.5 =  4.2955136107803156e-14
t =  0.2
Newton iteration   0 , energy = 1.0118266140967556<A u 0 , A u 0 >_{-1}^0.5 =  0.34912788830841435
Newton iteration   1 , energy = 0.9512089196836607<A u 1 , A u 1 >_{-1}^0.5 =  0.012892609175849997
Newton iteration   2 , energy = 0.9511256001031912<A u 2 , A u 2 >_{-1}^0.5 =  5.536184437012763e-05
Newton iteration   3 , energy = 0.9511255985706928<A u 3 , A u 3 >_{-1}^0.5 =  1.905642860879329e-09
Newton iteration   4 , energy = 0.951125598570693<A u 4 , A u 4 >_{-1}^0.5 =  1.4601113782889896e-16
t =  0.30000000000000004
Newton iteration   0 , energy = 0.9110905742648312<A u 0 , A u 0 >_{-1}^0.5 =  0.25875410187350006
Newton iteration   1 , energy = 0.8783690430528546<A u 1 , A u 1 >_{-1}^0.5 =  0.011877729229512558
Newton iteration   2 , energy = 0.8782983071331121<A u 2 , A u 2 >_{-1}^0.5 =  5.367126192037485e-05
Newton iteration   3 , energy = 0.8782983056927819<A u 3 , A u 3 >_{-1}^0.5 =  1.6969039256776913e-09
Newton iteration   4 , energy = 0.8782983056927811<A u 4 , A u 4 >_{-1}^0.5 =  1.5451841438785795e-16
t =  0.4
Newton iteration   0 , energy = 0.8471297100896065<A u 0 , A u 0 >_{-1}^0.5 =  0.25377371439216867
Newton iteration   1 , energy = 0.8159840305905827<A u 1 , A u 1 >_{-1}^0.5 =  0.013776892969317214
Newton iteration   2 , energy = 0.8158888392657976<A u 2 , A u 2 >_{-1}^0.5 =  6.721093223891401e-05
Newton iteration   3 , energy = 0.8158888370070941<A u 3 , A u 3 >_{-1}^0.5 =  2.308013504233765e-09
Newton iteration   4 , energy = 0.8158888370070937<A u 4 , A u 4 >_{-1}^0.5 =  1.6664458598162187e-16
t =  0.5
Newton iteration   0 , energy = 0.7833250286621234<A u 0 , A u 0 >_{-1}^0.5 =  0.26294142561404565
Newton iteration   1 , energy = 0.7500716427225392<A u 1 , A u 1 >_{-1}^0.5 =  0.015899905246509465
Newton iteration   2 , energy = 0.7499447950735362<A u 2 , A u 2 >_{-1}^0.5 =  8.989579063249217e-05
Newton iteration   3 , energy = 0.7499447910327889<A u 3 , A u 3 >_{-1}^0.5 =  4.32412681544959e-09
Newton iteration   4 , energy = 0.7499447910327892<A u 4 , A u 4 >_{-1}^0.5 =  1.891786472977242e-16
t =  0.6
Newton iteration   0 , energy = 0.7154946859834872<A u 0 , A u 0 >_{-1}^0.5 =  0.2669123353115907
Newton iteration   1 , energy = 0.6812710898968131<A u 1 , A u 1 >_{-1}^0.5 =  0.01675474898717961
Newton iteration   2 , energy = 0.6811301927204855<A u 2 , A u 2 >_{-1}^0.5 =  0.00010545670351906707
Newton iteration   3 , energy = 0.6811301871596956<A u 3 , A u 3 >_{-1}^0.5 =  7.2210562265055075e-09
Newton iteration   4 , energy = 0.6811301871596956<A u 4 , A u 4 >_{-1}^0.5 =  2.0022643368569928e-16
t =  0.7
Newton iteration   0 , energy = 0.6467836239728085<A u 0 , A u 0 >_{-1}^0.5 =  0.26232034385760594
Newton iteration   1 , energy = 0.6136408725154111<A u 1 , A u 1 >_{-1}^0.5 =  0.015828021126799267
Newton iteration   2 , energy = 0.6135151716841833<A u 2 , A u 2 >_{-1}^0.5 =  9.12006797639443e-05
Newton iteration   3 , energy = 0.6135151675252576<A u 3 , A u 3 >_{-1}^0.5 =  5.087267452710197e-09
Newton iteration   4 , energy = 0.6135151675252581<A u 4 , A u 4 >_{-1}^0.5 =  2.167771952652171e-16
t =  0.7999999999999999
Newton iteration   0 , energy = 0.5810325747790682<A u 0 , A u 0 >_{-1}^0.5 =  0.25309740388912627
Newton iteration   1 , energy = 0.5501189246296481<A u 1 , A u 1 >_{-1}^0.5 =  0.014529399261869788
Newton iteration   2 , energy = 0.5500130410040378<A u 2 , A u 2 >_{-1}^0.5 =  7.36386980927143e-05
Newton iteration   3 , energy = 0.5500130382926431<A u 3 , A u 3 >_{-1}^0.5 =  2.943680825162607e-09
Newton iteration   4 , energy = 0.5500130382926431<A u 4 , A u 4 >_{-1}^0.5 =  2.294819011275763e-16
t =  0.8999999999999999
Newton iteration   0 , energy = 0.5200191268203634<A u 0 , A u 0 >_{-1}^0.5 =  0.24195821561367556
Newton iteration   1 , energy = 0.4919505542279059<A u 1 , A u 1 >_{-1}^0.5 =  0.016199909361125933
Newton iteration   2 , energy = 0.49181865735246194<A u 2 , A u 2 >_{-1}^0.5 =  0.00013877000725203906
Newton iteration   3 , energy = 0.49181864772320133<A u 3 , A u 3 >_{-1}^0.5 =  1.616223495861556e-08
Newton iteration   4 , energy = 0.49181864772320166<A u 4 , A u 4 >_{-1}^0.5 =  3.8948076861174205e-16
t =  0.9999999999999999
Newton iteration   0 , energy = 0.46529832168488133<A u 0 , A u 0 >_{-1}^0.5 =  0.22254165791068467
Newton iteration   1 , energy = 0.4417138182910359<A u 1 , A u 1 >_{-1}^0.5 =  0.01725443471476224
Newton iteration   2 , energy = 0.4415638841006565<A u 2 , A u 2 >_{-1}^0.5 =  0.00020331770740643313
Newton iteration   3 , energy = 0.44156386342910525<A u 3 , A u 3 >_{-1}^0.5 =  3.7927036725502266e-08
Newton iteration   4 , energy = 0.44156386342910425<A u 4 , A u 4 >_{-1}^0.5 =  1.4894470009208515e-15
t =  1.0999999999999999
Newton iteration   0 , energy = 0.4205372504665092<A u 0 , A u 0 >_{-1}^0.5 =  0.19203379300738596
Newton iteration   1 , energy = 0.40290010941151605<A u 1 , A u 1 >_{-1}^0.5 =  0.013500636012613445
Newton iteration   2 , energy = 0.4028084746911072<A u 2 , A u 2 >_{-1}^0.5 =  0.00011906321623922667
Newton iteration   3 , energy = 0.4028084676026184<A u 3 , A u 3 >_{-1}^0.5 =  1.2055948387864272e-08
Newton iteration   4 , energy = 0.4028084676026184<A u 4 , A u 4 >_{-1}^0.5 =  2.9323059721354294e-16
t =  1.2
Newton iteration   0 , energy = 0.3878905813907027<A u 0 , A u 0 >_{-1}^0.5 =  0.15838607100912372
Newton iteration   1 , energy = 0.37581637306468657<A u 1 , A u 1 >_{-1}^0.5 =  0.010038128711437815
Newton iteration   2 , energy = 0.37576571746939175<A u 2 , A u 2 >_{-1}^0.5 =  9.086309328460767e-05
Newton iteration   3 , energy = 0.3757657133410195<A u 3 , A u 3 >_{-1}^0.5 =  1.0914660007423554e-08
Newton iteration   4 , energy = 0.37576571334101955<A u 4 , A u 4 >_{-1}^0.5 =  3.139142017174461e-16
t =  1.3
Newton iteration   0 , energy = 0.36584485431035774<A u 0 , A u 0 >_{-1}^0.5 =  0.1278588589632408
Newton iteration   1 , energy = 0.357901073947152<A u 1 , A u 1 >_{-1}^0.5 =  0.00649395558822488
Newton iteration   2 , energy = 0.3578799070803811<A u 2 , A u 2 >_{-1}^0.5 =  4.132806305806133e-05
Newton iteration   3 , energy = 0.3578799062263454<A u 3 , A u 3 >_{-1}^0.5 =  2.3114040493745755e-09
Newton iteration   4 , energy = 0.35787990622634536<A u 4 , A u 4 >_{-1}^0.5 =  2.5924671735246676e-16
t =  1.4000000000000001
Newton iteration   0 , energy = 0.3513724379199408<A u 0 , A u 0 >_{-1}^0.5 =  0.10411973204306069
Newton iteration   1 , energy = 0.3460518695657858<A u 1 , A u 1 >_{-1}^0.5 =  0.0036799678719608405
Newton iteration   2 , energy = 0.3460450861620084<A u 2 , A u 2 >_{-1}^0.5 =  1.1245500471501215e-05
Newton iteration   3 , energy = 0.34604508609877727<A u 3 , A u 3 >_{-1}^0.5 =  1.5959155346709413e-10
Newton iteration   4 , energy = 0.3460450860987771<A u 4 , A u 4 >_{-1}^0.5 =  2.742366982802415e-16
t =  1.5000000000000002
Newton iteration   0 , energy = 0.34155788210304117<A u 0 , A u 0 >_{-1}^0.5 =  0.08812837810569046
Newton iteration   1 , energy = 0.3377216160861495<A u 1 , A u 1 >_{-1}^0.5 =  0.0022478960936431727
Newton iteration   2 , energy = 0.3377190875473619<A u 2 , A u 2 >_{-1}^0.5 =  3.0487964167576977e-06
Newton iteration   3 , energy = 0.33771908754271424<A u 3 , A u 3 >_{-1}^0.5 =  9.322414839059953e-12
Newton iteration   4 , energy = 0.33771908754271424<A u 4 , A u 4 >_{-1}^0.5 =  2.5013474460336036e-16
t =  1.6000000000000003
Newton iteration   0 , energy = 0.33433895104480565<A u 0 , A u 0 >_{-1}^0.5 =  0.07806637730345266
Newton iteration   1 , energy = 0.3313186158522756<A u 1 , A u 1 >_{-1}^0.5 =  0.0016725178974907476
Newton iteration   2 , energy = 0.3313172165169983<A u 2 , A u 2 >_{-1}^0.5 =  1.3750415508186043e-06
Newton iteration   3 , energy = 0.3313172165160529<A u 3 , A u 3 >_{-1}^0.5 =  1.6855399694939047e-12
Newton iteration   4 , energy = 0.33131721651605284<A u 4 , A u 4 >_{-1}^0.5 =  2.491463591919707e-16
t =  1.7000000000000004
Newton iteration   0 , energy = 0.3285582350416462<A u 0 , A u 0 >_{-1}^0.5 =  0.071540709657306
Newton iteration   1 , energy = 0.3260170653240675<A u 1 , A u 1 >_{-1}^0.5 =  0.001425070310442031
Newton iteration   2 , energy = 0.3260160495143564<A u 2 , A u 2 >_{-1}^0.5 =  9.51803418849838e-07
Newton iteration   3 , energy = 0.3260160495139035<A u 3 , A u 3 >_{-1}^0.5 =  8.371525474484359e-13
Newton iteration   4 , energy = 0.32601604951390345<A u 4 , A u 4 >_{-1}^0.5 =  2.5621929263511474e-16
t =  1.8000000000000005
Newton iteration   0 , energy = 0.32364184482764224<A u 0 , A u 0 >_{-1}^0.5 =  0.0669205423328246
Newton iteration   1 , energy = 0.32141555569999936<A u 1 , A u 1 >_{-1}^0.5 =  0.0012774943286490799
Newton iteration   2 , energy = 0.3214147394257076<A u 2 , A u 2 >_{-1}^0.5 =  7.395919728488247e-07
Newton iteration   3 , energy = 0.32141473942543414<A u 3 , A u 3 >_{-1}^0.5 =  4.774291036911369e-13
Newton iteration   4 , energy = 0.32141473942543414<A u 4 , A u 4 >_{-1}^0.5 =  2.5095592030786745e-16
t =  1.9000000000000006
Newton iteration   0 , energy = 0.31930719954844416<A u 0 , A u 0 >_{-1}^0.5 =  0.06336334502789535
Newton iteration   1 , energy = 0.3173094818757045<A u 1 , A u 1 >_{-1}^0.5 =  0.0011636519370664881
Newton iteration   2 , energy = 0.31730880462836625<A u 2 , A u 2 >_{-1}^0.5 =  5.88157906620952e-07
Newton iteration   3 , energy = 0.317308804628193<A u 3 , A u 3 >_{-1}^0.5 =  2.7552721185033313e-13
Newton iteration   4 , energy = 0.31730880462819316<A u 4 , A u 4 >_{-1}^0.5 =  2.53838149906218e-16
t =  2.0000000000000004
Newton iteration   0 , energy = 0.31540194393069504<A u 0 , A u 0 >_{-1}^0.5 =  0.06046988395025435
Newton iteration   1 , energy = 0.3135813455577025<A u 1 , A u 1 >_{-1}^0.5 =  0.0010696980857862759
Newton iteration   2 , energy = 0.31358077327542<A u 2 , A u 2 >_{-1}^0.5 =  4.782193844604824e-07
Newton iteration   3 , energy = 0.31358077327530554<A u 3 , A u 3 >_{-1}^0.5 =  1.6248506380615512e-13
Newton iteration   4 , energy = 0.3135807732753054<A u 4 , A u 4 >_{-1}^0.5 =  2.75521574736501e-16
t =  2.1000000000000005
Newton iteration   0 , energy = 0.31183294150698704<A u 0 , A u 0 >_{-1}^0.5 =  0.05803092944947203
Newton iteration   1 , energy = 0.3101555883708872<A u 1 , A u 1 >_{-1}^0.5 =  0.0009939083452888946
Newton iteration   2 , energy = 0.31015509432091765<A u 2 , A u 2 >_{-1}^0.5 =  4.0262913283283755e-07
Newton iteration   3 , energy = 0.31015509432083654<A u 3 , A u 3 >_{-1}^0.5 =  1.0405446838478489e-13
Newton iteration   4 , energy = 0.3101550943208366<A u 4 , A u 4 >_{-1}^0.5 =  2.5290564093353745e-16
t =  2.2000000000000006
Newton iteration   0 , energy = 0.30853814641883726<A u 0 , A u 0 >_{-1}^0.5 =  0.05590950803615781
Newton iteration   1 , energy = 0.3069808908530208<A u 1 , A u 1 >_{-1}^0.5 =  0.0009350737882984549
Newton iteration   2 , energy = 0.3069804535700852<A u 2 , A u 2 >_{-1}^0.5 =  3.5099162685451444e-07
Newton iteration   3 , energy = 0.3069804535700234<A u 3 , A u 3 >_{-1}^0.5 =  7.519021318283405e-14
t =  2.3000000000000007
Newton iteration   0 , energy = 0.3054751636176692<A u 0 , A u 0 >_{-1}^0.5 =  0.05400150183907779
Newton iteration   1 , energy = 0.30402228059289865<A u 1 , A u 1 >_{-1}^0.5 =  0.0008896044270641023
Newton iteration   2 , energy = 0.30402188480868736<A u 2 , A u 2 >_{-1}^0.5 =  3.138328645089259e-07
Newton iteration   3 , energy = 0.30402188480863795<A u 3 , A u 3 >_{-1}^0.5 =  5.993398985105123e-14
t =  2.400000000000001
Newton iteration   0 , energy = 0.3026153116026799<A u 0 , A u 0 >_{-1}^0.5 =  0.052228182977152274
Newton iteration   1 , energy = 0.3012562403570003<A u 1 , A u 1 >_{-1}^0.5 =  0.000851549188316855
Newton iteration   2 , energy = 0.3012558777140675<A u 2 , A u 2 >_{-1}^0.5 =  2.8565169892286335e-07
Newton iteration   3 , energy = 0.3012558777140269<A u 3 , A u 3 >_{-1}^0.5 =  5.027296551108319e-14
t =  2.500000000000001
Newton iteration   0 , energy = 0.2999393014059321<A u 0 , A u 0 >_{-1}^0.5 =  0.05053687642805142
Newton iteration   1 , energy = 0.2986667574451791<A u 1 , A u 1 >_{-1}^0.5 =  0.0008146689271853024
Newton iteration   2 , energy = 0.2986664255366471<A u 2 , A u 2 >_{-1}^0.5 =  2.6287413036002037e-07
Newton iteration   3 , energy = 0.2986664255366129<A u 3 , A u 3 >_{-1}^0.5 =  4.332005923979748e-14
t =  2.600000000000001
Newton iteration   0 , energy = 0.2974336006861114<A u 0 , A u 0 >_{-1}^0.5 =  0.048899840862079595
Newton iteration   1 , energy = 0.2962420358043187<A u 1 , A u 1 >_{-1}^0.5 =  0.0007749917780606616
Newton iteration   2 , energy = 0.29624173544082694<A u 2 , A u 2 >_{-1}^0.5 =  2.415012926242455e-07
Newton iteration   3 , energy = 0.2962417354407976<A u 3 , A u 3 >_{-1}^0.5 =  3.7437944753555505e-14
t =  2.700000000000001
Newton iteration   0 , energy = 0.29508755473824744<A u 0 , A u 0 >_{-1}^0.5 =  0.047308950639777886
Newton iteration   1 , energy = 0.29397208126965546<A u 1 , A u 1 >_{-1}^0.5 =  0.0007318010323065712
Newton iteration   2 , energy = 0.29397181345427403<A u 2 , A u 2 >_{-1}^0.5 =  2.186407862439894e-07
Newton iteration   3 , energy = 0.29397181345424994<A u 3 , A u 3 >_{-1}^0.5 =  3.1295008863429307e-14
t =  2.800000000000001
Newton iteration   0 , energy = 0.2928914743316308<A u 0 , A u 0 >_{-1}^0.5 =  0.04576794203672826
Newton iteration   1 , energy = 0.29184728156968315<A u 1 , A u 1 >_{-1}^0.5 =  0.000686742111735925
Newton iteration   2 , energy = 0.29184704572137365<A u 2 , A u 2 >_{-1}^0.5 =  1.9422870663940935e-07
Newton iteration   3 , energy = 0.2918470457213548<A u 3 , A u 3 >_{-1}^0.5 =  2.46941471604205e-14
t =  2.9000000000000012
Newton iteration   0 , energy = 0.29083567819288486<A u 0 , A u 0 >_{-1}^0.5 =  0.044285259097613536
Newton iteration   1 , energy = 0.2898578367622851<A u 1 , A u 1 >_{-1}^0.5 =  0.0006422196144522767
Newton iteration   2 , energy = 0.28985763050562163<A u 2 , A u 2 >_{-1}^0.5 =  1.6998740142047348e-07
Newton iteration   3 , energy = 0.2898576305056072<A u 3 , A u 3 >_{-1}^0.5 =  1.8604397228202713e-14
t =  3.0000000000000013
Newton iteration   0 , energy = 0.2889102357425571<A u 0 , A u 0 >_{-1}^0.5 =  0.04286943131183355
Newton iteration   1 , energy = 0.2879937232813035<A u 1 , A u 1 >_{-1}^0.5 =  0.0006001764642055075
Newton iteration   2 , energy = 0.28799354314800923<A u 2 , A u 2 >_{-1}^0.5 =  1.476022835027841e-07
Newton iteration   3 , energy = 0.2879935431479983<A u 3 , A u 3 >_{-1}^0.5 =  1.3715995885240702e-14
t =  3.1000000000000014
Newton iteration   0 , energy = 0.28710507593922074<A u 0 , A u 0 >_{-1}^0.5 =  0.04152710638542356
Newton iteration   1 , energy = 0.28624488104382<A u 1 , A u 1 >_{-1}^0.5 =  0.0005616042655960598
Newton iteration   2 , energy = 0.28624472332188655<A u 2 , A u 2 >_{-1}^0.5 =  1.2793173375886907e-07
Newton iteration   3 , energy = 0.2862447233218784<A u 3 , A u 3 >_{-1}^0.5 =  1.017767485992841e-14
t =  3.2000000000000015
Newton iteration   0 , energy = 0.2854102035604049<A u 0 , A u 0 >_{-1}^0.5 =  0.04026276563098501
Newton iteration   1 , energy = 0.2846014280926576<A u 1 , A u 1 >_{-1}^0.5 =  0.0005266329898658694
Newton iteration   2 , energy = 0.28460128940338236<A u 2 , A u 2 >_{-1}^0.5 =  1.1111894224950084e-07
Newton iteration   3 , energy = 0.28460128940337603<A u 3 , A u 3 >_{-1}^0.5 =  7.688700872263695e-15
t =  3.3000000000000016
Newton iteration   0 , energy = 0.28381589293035686<A u 0 , A u 0 >_{-1}^0.5 =  0.03907903877360717
Newton iteration   1 , energy = 0.28305382825382863<A u 1 , A u 1 >_{-1}^0.5 =  0.0004949003958734926
Newton iteration   2 , energy = 0.28305370577579064<A u 2 , A u 2 >_{-1}^0.5 =  9.693706220695981e-08
Newton iteration   3 , energy = 0.283053705775786<A u 3 , A u 3 >_{-1}^0.5 =  5.8865246202341805e-15
t =  3.4000000000000017
Newton iteration   0 , energy = 0.28231282848404776<A u 0 , A u 0 >_{-1}^0.5 =  0.03797696369333321
Newton iteration   1 , energy = 0.28159300999722553<A u 1 , A u 1 >_{-1}^0.5 =  0.00046593220017616645
Newton iteration   2 , energy = 0.2815929014385815<A u 2 , A u 2 >_{-1}^0.5 =  8.503037916305433e-08
Newton iteration   3 , energy = 0.2815929014385781<A u 3 , A u 3 >_{-1}^0.5 =  4.58961346476227e-15
t =  3.5000000000000018
Newton iteration   0 , energy = 0.28089220671892734<A u 0 , A u 0 >_{-1}^0.5 =  0.03695602245647635
Newton iteration   1 , energy = 0.2802104569017436<A u 1 , A u 1 >_{-1}^0.5 =  0.000439373993913176
Newton iteration   2 , energy = 0.2802103603668166<A u 2 , A u 2 >_{-1}^0.5 =  7.502750985811408e-08
Newton iteration   3 , energy = 0.28021036036681374<A u 3 , A u 3 >_{-1}^0.5 =  3.569275014501238e-15
t =  3.600000000000002
Newton iteration   0 , energy = 0.2795458185245448<A u 0 , A u 0 >_{-1}^0.5 =  0.03601407737177129
Newton iteration   1 , energy = 0.27889828343279555<A u 1 , A u 1 >_{-1}^0.5 =  0.00041504801952378526
Newton iteration   2 , energy = 0.27889819729183685<A u 2 , A u 2 >_{-1}^0.5 =  6.659068037859529e-08
Newton iteration   3 , energy = 0.2788981972918343<A u 3 , A u 3 >_{-1}^0.5 =  2.8416100223277972e-15
t =  3.700000000000002
Newton iteration   0 , energy = 0.2782661185254572<A u 0 , A u 0 >_{-1}^0.5 =  0.035147391207473996
Newton iteration   1 , energy = 0.27764929636628094<A u 1 , A u 1 >_{-1}^0.5 =  0.0003928970988056058
Newton iteration   2 , energy = 0.27764921917500446<A u 2 , A u 2 >_{-1}^0.5 =  5.943773728282141e-08
Newton iteration   3 , energy = 0.2776492191750029<A u 3 , A u 3 >_{-1}^0.5 =  2.25854712761631e-15
t =  3.800000000000002
Newton iteration   0 , energy = 0.2770462768575734<A u 0 , A u 0 >_{-1}^0.5 =  0.034350828814413564
Newton iteration   1 , energy = 0.27645703476470174<A u 1 , A u 1 >_{-1}^0.5 =  0.0003728959443679564
Newton iteration   2 , energy = 0.27645696523286195<A u 2 , A u 2 >_{-1}^0.5 =  5.33461511397152e-08
Newton iteration   3 , energy = 0.27645696523286034<A u 3 , A u 3 >_{-1}^0.5 =  1.8066697532327357e-15
t =  3.900000000000002
Newton iteration   0 , energy = 0.275880205800419<A u 0 , A u 0 >_{-1}^0.5 =  0.03361821934059966
Newton iteration   1 , energy = 0.2753157822798196<A u 1 , A u 1 >_{-1}^0.5 =  0.00035498198972022405
Newton iteration   2 , energy = 0.2753157192684304<A u 2 , A u 2 >_{-1}^0.5 =  4.8145095999505415e-08
Newton iteration   3 , energy = 0.2753157192684293<A u 3 , A u 3 >_{-1}^0.5 =  1.4605314748055044e-15
t =  4.000000000000002
Newton iteration   0 , energy = 0.27476255757051177<A u 0 , A u 0 >_{-1}^0.5 =  0.03294278640515583
Newton iteration   1 , energy = 0.2742205511483888<A u 1 , A u 1 >_{-1}^0.5 =  0.000339023246170779
Newton iteration   2 , energy = 0.2742204936754312<A u 2 , A u 2 >_{-1}^0.5 =  4.3703178056179965e-08
Newton iteration   3 , energy = 0.27422049367543033<A u 3 , A u 3 >_{-1}^0.5 =  1.1904761985580168e-15
t =  4.100000000000001
Newton iteration   0 , energy = 0.27368869577440547<A u 0 , A u 0 >_{-1}^0.5 =  0.03231754500512072
Newton iteration   1 , energy = 0.27316704305969997<A u 1 , A u 1 >_{-1}^0.5 =  0.0003248196902603274
Newton iteration   2 , energy = 0.2731669903017859<A u 2 , A u 2 >_{-1}^0.5 =  3.9916976680204036e-08
Newton iteration   3 , energy = 0.27316699030178504<A u 3 , A u 3 >_{-1}^0.5 =  9.874516609238332e-16
t =  4.200000000000001
Newton iteration   0 , energy = 0.27265464779020265<A u 0 , A u 0 >_{-1}^0.5 =  0.031735596747815106
Newton iteration   1 , energy = 0.27215159544937806<A u 1 , A u 1 >_{-1}^0.5 =  0.00031212697041423587
Newton iteration   2 , energy = 0.27215154673423064<A u 2 , A u 2 >_{-1}^0.5 =  3.670191557454999e-08
Newton iteration   3 , energy = 0.2721515467342299<A u 3 , A u 3 >_{-1}^0.5 =  8.532455574429426e-16
t =  4.300000000000001
Newton iteration   0 , energy = 0.27165704718733596<A u 0 , A u 0 >_{-1}^0.5 =  0.031190300717743875
Newton iteration   1 , energy = 0.27117112216649236<A u 1 , A u 1 >_{-1}^0.5 =  0.00030068977080269634
Newton iteration   2 , energy = 0.27117107695618625<A u 2 , A u 2 >_{-1}^0.5 =  3.398464733117151e-08
Newton iteration   3 , energy = 0.2711710769561857<A u 3 , A u 3 >_{-1}^0.5 =  7.321069030267074e-16
t =  4.4
Newton iteration   0 , energy = 0.2706930743897146<A u 0 , A u 0 >_{-1}^0.5 =  0.03067533793632621
Newton iteration   1 , energy = 0.27022305550491266<A u 1 , A u 1 >_{-1}^0.5 =  0.00029027274848975683
Newton iteration   2 , energy = 0.270223013372958<A u 2 , A u 2 >_{-1}^0.5 =  3.1696183161526076e-08
Newton iteration   3 , energy = 0.27022301337295757<A u 3 , A u 3 >_{-1}^0.5 =  6.611824519119984e-16
t =  4.5
Newton iteration   0 , energy = 0.26976040101080007<A u 0 , A u 0 >_{-1}^0.5 =  0.030184715732285206
Newton iteration   1 , energy = 0.26930529324912683<A u 1 , A u 1 >_{-1}^0.5 =  0.00028067922303949214
Newton iteration   2 , energy = 0.26930525385615395<A u 2 , A u 2 >_{-1}^0.5 =  2.976665057491281e-08
Newton iteration   3 , energy = 0.2693052538561537<A u 3 , A u 3 >_{-1}^0.5 =  6.002072812890395e-16
t =  4.6
Newton iteration   0 , energy = 0.2688571396159943<A u 0 , A u 0 >_{-1}^0.5 =  0.029712771473288546
Newton iteration   1 , energy = 0.2684161506253951<A u 1 , A u 1 >_{-1}^0.5 =  0.00027175253062368095
Newton iteration   2 , energy = 0.268416113698334<A u 2 , A u 2 >_{-1}^0.5 =  2.812317665278552e-08
Newton iteration   3 , energy = 0.2684161136983335<A u 3 , A u 3 >_{-1}^0.5 =  5.36835854090151e-16
t =  4.699999999999999
Newton iteration   0 , energy = 0.2679817970588855<A u 0 , A u 0 >_{-1}^0.5 =  0.029254230393482787
Newton iteration   1 , energy = 0.2675543138408366<A u 1 , A u 1 >_{-1}^0.5 =  0.00026336182513809814
Newton iteration   2 , energy = 0.26755427915895574<A u 2 , A u 2 >_{-1}^0.5 =  2.6690901307744062e-08
Newton iteration   3 , energy = 0.26755427915895547<A u 3 , A u 3 >_{-1}^0.5 =  5.313184157524331e-16
t =  4.799999999999999
Newton iteration   0 , energy = 0.26713322697045094<A u 0 , A u 0 >_{-1}^0.5 =  0.028804348501844337
Newton iteration   1 , energy = 0.2667187901902538<A u 1 , A u 1 >_{-1}^0.5 =  0.0002553810901392319
Newton iteration   2 , energy = 0.26671875757851427<A u 2 , A u 2 >_{-1}^0.5 =  2.539571969330238e-08
Newton iteration   3 , energy = 0.2667187575785139<A u 3 , A u 3 >_{-1}^0.5 =  4.637398234310579e-16
t =  4.899999999999999
Newton iteration   0 , energy = 0.2663105763289956<A u 0 , A u 0 >_{-1}^0.5 =  0.028359132867481276
Newton iteration   1 , energy = 0.26590885022061256<A u 1 , A u 1 >_{-1}^0.5 =  0.0002476739912745587
Newton iteration   2 , energy = 0.2659088195475744<A u 2 , A u 2 >_{-1}^0.5 =  2.4167900197642515e-08
Newton iteration   3 , energy = 0.2659088195475743<A u 3 , A u 3 >_{-1}^0.5 =  4.525079505118238e-16
t =  4.999999999999998
[18]:
Draw(gfu_t, mesh, interpolate_multidim=True, animate=True,
     min=-0.1, max=0.1, autoscale=False, deformation=True)
[18]:
WebGLScene

Supplementary 2: Minimal energy extension (postscript in unit-2.1.3 )

In unit-2.1.3 we discussed the BDDC preconditioner and characterized the coarse grid solution as the condensed problem with the continuity only w.r.t. the coarse grid dofs.

We can characterize this as a minimization problem involving

\[u \in V^{ho,disc}, \quad u^{lo,cont} \in V^{lo,cont}, \quad \lambda \in V^{lo,disc},\]

Here \(u\) is the solution to the coarse-grid (decoupled) problem where \(u^{lo,cont}\) represents the coarse (continuity-)dofs and \(\lambda\) is the corresponding Lagrange multiplier to enforce continuity of \(u\) w.r.t. the lo,cont-dofs.

[19]:
mesh = Mesh(geom.GenerateMesh(maxh=0.1))
fes_ho = Discontinuous(H1(mesh, order=10))
fes_lo = H1(mesh, order=1, dirichlet=".*")
fes_lam = Discontinuous(H1(mesh, order=1))
fes = fes_ho*fes_lo*fes_lam
uho, ulo, lam = fes.TrialFunction()

The energy that is to be minimized is:

\[\int_{\Omega} \frac12 \Vert \nabla u \Vert^2 - u + \sum_T \sum_{V \in V(T)} ((u-u^{lo})\cdot \lambda)|_{V} \longrightarrow \operatorname{min}!\]
[20]:
a = BilinearForm(fes)
a += Variation(0.5 * grad(uho)*grad(uho)*dx
               - 1*uho*dx
               + (uho-ulo)*lam*dx(element_vb=BBND))
gfu = GridFunction(fes)
NewtonMinimization(a=a, u=gfu)
Draw(gfu.components[0],mesh,deformation=True)
Newton iteration  0
Energy:  0.0
err =  0.39304052437503273
Newton iteration  1
Energy:  -0.07724042690050034
err =  2.450075216973763e-15
[20]:
WebGLScene

The minimization problem is solved by the solution of the PDE:

\[\int_{\Omega} \nabla u \cdot \nabla v = \int_{\Omega} 1 \cdot v \quad \forall ~ v \in V^{ho,disc}\]

under the constraint

\[u(v) = u^{lo}(v) \quad \text{ for all vertices } v \in V(T) \text{ for all } T.\]