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.519310473005075e-05<A u 0 , A u 0 >_{-1}^0.5 =  1.8746343188666652
Newton iteration   1 , energy = -1.7525741822566479<A u 1 , A u 1 >_{-1}^0.5 =  0.010379556074918205
Newton iteration   2 , energy = -1.752628053722505<A u 2 , A u 2 >_{-1}^0.5 =  1.122907759369698e-06
Newton iteration   3 , energy = -1.7526280537231351<A u 3 , A u 3 >_{-1}^0.5 =  1.3091870090779652e-14
energy =  -1.7526280537231351
[7]:
Draw(gfu,mesh,"u", deformation = True)
#Draw(gfu_it,mesh,"u", deformation = True)
[7]:
BaseWebGuiScene

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.519310473005075e-05
err =  1.874634318866665
Newton iteration  1
Energy:  -1.7525741822566476
err =  0.010379556074917643
Newton iteration  2
Energy:  -1.7526280537225047
err =  1.122907759377858e-06
Newton iteration  3
Energy:  -1.7526280537231351
err =  1.3160364281577543e-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.016677576264342846
Newton iteration   1 , energy = 8.750132555502532<A u 1 , A u 1 >_{-1}^0.5 =  0.023331411994163512
Newton iteration   2 , energy = 8.749861162926404<A u 2 , A u 2 >_{-1}^0.5 =  0.00010230249675550039
Newton iteration   3 , energy = 8.749861157693497<A u 3 , A u 3 >_{-1}^0.5 =  4.871920785848782e-08
Newton iteration   4 , energy = 8.749861157693497<A u 4 , A u 4 >_{-1}^0.5 =  2.4464652310410263e-13
Newton iteration   5 , energy = 8.749861157693497<A u 5 , A u 5 >_{-1}^0.5 =  6.728231307022672e-16
loadstep 1
Newton iteration   0 , energy = 8.74958392937972<A u 0 , A u 0 >_{-1}^0.5 =  0.0165954660918136
Newton iteration   1 , energy = 8.74971012034442<A u 1 , A u 1 >_{-1}^0.5 =  0.022957315907635195
Newton iteration   2 , energy = 8.749447347204873<A u 2 , A u 2 >_{-1}^0.5 =  0.00014210218682416293
Newton iteration   3 , energy = 8.749447337214049<A u 3 , A u 3 >_{-1}^0.5 =  2.3234209262621554e-06
Newton iteration   4 , energy = 8.749447337211349<A u 4 , A u 4 >_{-1}^0.5 =  6.31642196460835e-10
Newton iteration   5 , energy = 8.74944733721135<A u 5 , A u 5 >_{-1}^0.5 =  1.1257463612260816e-15
loadstep 2
Newton iteration   0 , energy = 8.748898240227216<A u 0 , A u 0 >_{-1}^0.5 =  0.016356374472686327
Newton iteration   1 , energy = 8.749005352400161<A u 1 , A u 1 >_{-1}^0.5 =  0.02189213631421223
Newton iteration   2 , energy = 8.74876636225574<A u 2 , A u 2 >_{-1}^0.5 =  0.0002082157010861589
Newton iteration   3 , energy = 8.748766340901735<A u 3 , A u 3 >_{-1}^0.5 =  4.890271862505709e-06
Newton iteration   4 , energy = 8.748766340889777<A u 4 , A u 4 >_{-1}^0.5 =  2.6642669247110375e-09
Newton iteration   5 , energy = 8.748766340889773<A u 5 , A u 5 >_{-1}^0.5 =  1.566353197052595e-15
loadstep 3
Newton iteration   0 , energy = 8.747955469377498<A u 0 , A u 0 >_{-1}^0.5 =  0.015981458713391142
Newton iteration   1 , energy = 8.74803559425133<A u 1 , A u 1 >_{-1}^0.5 =  0.020291659312592355
Newton iteration   2 , energy = 8.747830223845622<A u 2 , A u 2 >_{-1}^0.5 =  0.0002638431191830231
Newton iteration   3 , energy = 8.74783018953072<A u 3 , A u 3 >_{-1}^0.5 =  7.248709284476512e-06
Newton iteration   4 , energy = 8.747830189504448<A u 4 , A u 4 >_{-1}^0.5 =  4.744845814209267e-09
Newton iteration   5 , energy = 8.747830189504445<A u 5 , A u 5 >_{-1}^0.5 =  3.05360988253194e-15
loadstep 4
Newton iteration   0 , energy = 8.746771286107753<A u 0 , A u 0 >_{-1}^0.5 =  0.01550036811779049
Newton iteration   1 , energy =   8.746822124959<A u 1 , A u 1 >_{-1}^0.5 =  0.018358917419698986
Newton iteration   2 , energy = 8.746653966131944<A u 2 , A u 2 >_{-1}^0.5 =  0.00029912723109428975
Newton iteration   3 , energy = 8.746653921920165<A u 3 , A u 3 >_{-1}^0.5 =  8.723097601670917e-06
Newton iteration   4 , energy = 8.746653921882109<A u 4 , A u 4 >_{-1}^0.5 =  5.2443772420534016e-09
Newton iteration   5 , energy = 8.74665392188211<A u 5 , A u 5 >_{-1}^0.5 =  3.1230127883879408e-15
loadstep 5
Newton iteration   0 , energy = 8.74536310921779<A u 0 , A u 0 >_{-1}^0.5 =  0.014945400594483906
Newton iteration   1 , energy = 8.745386852156608<A u 1 , A u 1 >_{-1}^0.5 =  0.016291632099259202
Newton iteration   2 , energy = 8.745254390118404<A u 2 , A u 2 >_{-1}^0.5 =  0.0003132732942926823
Newton iteration   3 , energy = 8.74525434149641<A u 3 , A u 3 >_{-1}^0.5 =  9.045796640098746e-06
Newton iteration   4 , energy = 8.745254341455494<A u 4 , A u 4 >_{-1}^0.5 =  4.217685427096138e-09
Newton iteration   5 , energy = 8.745254341455492<A u 5 , A u 5 >_{-1}^0.5 =  3.164086056250463e-15
loadstep 6
Newton iteration   0 , energy = 8.743748918359696<A u 0 , A u 0 >_{-1}^0.5 =  0.014346728044001557
Newton iteration   1 , energy = 8.743750300287966<A u 1 , A u 1 >_{-1}^0.5 =  0.014247396333071325
Newton iteration   2 , energy = 8.743648961397433<A u 2 , A u 2 >_{-1}^0.5 =  0.00030940579652630516
Newton iteration   3 , energy = 8.743648913853507<A u 3 , A u 3 >_{-1}^0.5 =  8.386997601838576e-06
Newton iteration   4 , energy = 8.743648913818333<A u 4 , A u 4 >_{-1}^0.5 =  2.693775192153632e-09
Newton iteration   5 , energy = 8.74364891381833<A u 5 , A u 5 >_{-1}^0.5 =  3.105589242909484e-15
loadstep 7
Newton iteration   0 , energy = 8.741946371083369<A u 0 , A u 0 >_{-1}^0.5 =  0.013729582959763125
Newton iteration   1 , energy = 8.741930904094016<A u 1 , A u 1 >_{-1}^0.5 =  0.012331615870177219
Newton iteration   2 , energy = 8.741854960900016<A u 2 , A u 2 >_{-1}^0.5 =  0.0002921737763607832
Newton iteration   3 , energy = 8.741854918420376<A u 3 , A u 3 >_{-1}^0.5 =  7.131076290108139e-06
Newton iteration   4 , energy = 8.741854918394953<A u 4 , A u 4 >_{-1}^0.5 =  1.442905508954088e-09
Newton iteration   5 , energy = 8.741854918394957<A u 5 , A u 5 >_{-1}^0.5 =  2.4199724807971618e-15
loadstep 8
Newton iteration   0 , energy = 8.73997222836955<A u 0 , A u 0 >_{-1}^0.5 =  0.013113294150262914
Newton iteration   1 , energy = 8.73994505662944<A u 1 , A u 1 >_{-1}^0.5 =  0.010601916525023765
Newton iteration   2 , energy = 8.739888905462427<A u 2 , A u 2 >_{-1}^0.5 =  0.00026634235610807356
Newton iteration   3 , energy = 8.739888870108485<A u 3 , A u 3 >_{-1}^0.5 =  5.6628404664229314e-06
Newton iteration   4 , energy = 8.739888870092456<A u 4 , A u 4 >_{-1}^0.5 =  6.715028767019669e-10
Newton iteration   5 , energy = 8.739888870092447<A u 5 , A u 5 >_{-1}^0.5 =  3.4957426868316733e-15
loadstep 9
Newton iteration   0 , energy = 8.737842033792985<A u 0 , A u 0 >_{-1}^0.5 =  0.01251157062808797
Newton iteration   1 , energy = 8.737807402152734<A u 1 , A u 1 >_{-1}^0.5 =  0.009079950333291465
Newton iteration   2 , energy = 8.737766202546648<A u 2 , A u 2 >_{-1}^0.5 =  0.00023604509961364111
Newton iteration   3 , energy = 8.737766174747627<A u 3 , A u 3 >_{-1}^0.5 =  4.257949533245106e-06
Newton iteration   4 , energy = 8.737766174738567<A u 4 , A u 4 >_{-1}^0.5 =  2.775558172845189e-10
Newton iteration   5 , energy = 8.73776617473856<A u 5 , A u 5 >_{-1}^0.5 =  3.776496853720138e-15
loadstep 10
Newton iteration   0 , energy =  8.7355699759763<A u 0 , A u 0 >_{-1}^0.5 =  0.011933402986645896
Newton iteration   1 , energy = 8.735531115165209<A u 1 , A u 1 >_{-1}^0.5 =  0.007763989161492295
Newton iteration   2 , energy = 8.735500983375767<A u 2 , A u 2 >_{-1}^0.5 =  0.00020448718122475772
Newton iteration   3 , energy = 8.735500962496658<A u 3 , A u 3 >_{-1}^0.5 =  3.0640263134586843e-06
Newton iteration   4 , energy = 8.735500962491965<A u 4 , A u 4 >_{-1}^0.5 =  1.0299991841701099e-10
Newton iteration   5 , energy = 8.735500962491962<A u 5 , A u 5 >_{-1}^0.5 =  3.604259740269227e-15
loadstep 11
Newton iteration   0 , energy = 8.733168871252655<A u 0 , A u 0 >_{-1}^0.5 =  0.011384132971878767
Newton iteration   1 , energy = 8.733128098709695<A u 1 , A u 1 >_{-1}^0.5 =  0.006639150262727349
Newton iteration   2 , energy = 8.733106059301457<A u 2 , A u 2 >_{-1}^0.5 =  0.00017391939843348412
Newton iteration   3 , energy = 8.733106044189892<A u 3 , A u 3 >_{-1}^0.5 =  2.128423911796789e-06
Newton iteration   4 , energy = 8.733106044187638<A u 4 , A u 4 >_{-1}^0.5 =  3.4248233129757133e-11
Newton iteration   5 , energy = 8.733106044187638<A u 5 , A u 5 >_{-1}^0.5 =  4.3151728773050545e-15
loadstep 12
Newton iteration   0 , energy = 8.730650218396521<A u 0 , A u 0 >_{-1}^0.5 =  0.010866445201126167
Newton iteration   1 , energy = 8.730609117193008<A u 1 , A u 1 >_{-1}^0.5 =  0.00568451466364339
Newton iteration   2 , energy = 8.730592956105216<A u 2 , A u 2 >_{-1}^0.5 =  0.00014575256212591878
Newton iteration   3 , energy = 8.73059294548824<A u 3 , A u 3 >_{-1}^0.5 =  1.4375460765582752e-06
Newton iteration   4 , energy = 8.730592945487203<A u 4 , A u 4 >_{-1}^0.5 =  9.957298041098134e-12
Newton iteration   5 , energy = 8.730592945487203<A u 5 , A u 5 >_{-1}^0.5 =  3.9928249725925e-15
loadstep 13
Newton iteration   0 , energy = 8.728024292038453<A u 0 , A u 0 >_{-1}^0.5 =  0.01038118212697527
Newton iteration   1 , energy = 8.72798389392418<A u 1 , A u 1 >_{-1}^0.5 =  0.004877550807013663
Newton iteration   2 , energy = 8.727971992915265<A u 2 , A u 2 >_{-1}^0.5 =  0.00012072941420732477
Newton iteration   3 , energy = 8.727971985629157<A u 3 , A u 3 >_{-1}^0.5 =  9.498282893343037e-07
Newton iteration   4 , energy = 8.72797198562871<A u 4 , A u 4 >_{-1}^0.5 =  2.316382438496458e-12
Newton iteration   5 , energy = 8.727971985628704<A u 5 , A u 5 >_{-1}^0.5 =  4.345622550330805e-15
loadstep 14
Newton iteration   0 , energy = 8.725300253124713<A u 0 , A u 0 >_{-1}^0.5 =  0.009927966945110465
Newton iteration   1 , energy = 8.725261194642188<A u 1 , A u 1 >_{-1}^0.5 =  0.004196582779717749
Newton iteration   2 , energy = 8.725252383044767<A u 2 , A u 2 >_{-1}^0.5 =  9.910525941243588e-05
Newton iteration   3 , energy = 8.725252378134268<A u 3 , A u 3 >_{-1}^0.5 =  6.171908862588366e-07
Newton iteration   4 , energy = 8.725252378134075<A u 4 , A u 4 >_{-1}^0.5 =  2.679381142155385e-13
Newton iteration   5 , energy = 8.725252378134082<A u 5 , A u 5 >_{-1}^0.5 =  4.434621918430588e-15
loadstep 15
Newton iteration   0 , energy = 8.722486263184575<A u 0 , A u 0 >_{-1}^0.5 =  0.009505657096909238
Newton iteration   1 , energy = 8.722448907104587<A u 1 , A u 1 >_{-1}^0.5 =  0.003621986739034678
Newton iteration   2 , energy = 8.72244234223899<A u 2 , A u 2 >_{-1}^0.5 =  8.08104172089645e-05
Newton iteration   3 , energy = 8.722442338973822<A u 3 , A u 3 >_{-1}^0.5 =  3.9620372654476297e-07
Newton iteration   4 , energy = 8.722442338973744<A u 4 , A u 4 >_{-1}^0.5 =  1.534148068610875e-13
Newton iteration   5 , energy = 8.722442338973748<A u 5 , A u 5 >_{-1}^0.5 =  5.455405287681465e-15
loadstep 16
Newton iteration   0 , energy = 8.719589594803798<A u 0 , A u 0 >_{-1}^0.5 =  0.009112662778130682
Newton iteration   1 , energy = 8.719554119562648<A u 1 , A u 1 >_{-1}^0.5 =  0.0031366268412801918
Newton iteration   2 , energy = 8.719549195615222<A u 2 , A u 2 >_{-1}^0.5 =  6.558187032712647e-05
Newton iteration   3 , energy = 8.719549193464625<A u 3 , A u 3 >_{-1}^0.5 =  2.522495577856459e-07
Newton iteration   4 , energy = 8.71954919346459<A u 4 , A u 4 >_{-1}^0.5 =  1.510276664479125e-13
Newton iteration   5 , energy = 8.71954919346459<A u 5 , A u 5 >_{-1}^0.5 =  5.178570491904275e-15
loadstep 17
Newton iteration   0 , energy = 8.716616734316695<A u 0 , A u 0 >_{-1}^0.5 =  0.008747164090989756
Newton iteration   1 , energy = 8.716583197588527<A u 1 , A u 1 >_{-1}^0.5 =  0.0027258721261482943
Newton iteration   2 , energy = 8.716579478456657<A u 2 , A u 2 >_{-1}^0.5 =  5.3060978511129176e-05
Newton iteration   3 , energy = 8.716579477048818<A u 3 , A u 3 >_{-1}^0.5 =  1.5980211194789527e-07
Newton iteration   4 , energy = 8.716579477048807<A u 4 , A u 4 >_{-1}^0.5 =  9.190921156005798e-14
loadstep 18
Newton iteration   0 , energy =  8.7135734749587<A u 0 , A u 0 >_{-1}^0.5 =  0.00840725497587169
Newton iteration   1 , energy = 8.713541857731956<A u 1 , A u 1 >_{-1}^0.5 =  0.0023774056682059207
Newton iteration   2 , energy = 8.713539028499103<A u 2 , A u 2 >_{-1}^0.5 =  4.286004501664526e-05
Newton iteration   3 , energy = 8.71353902758053<A u 3 , A u 3 >_{-1}^0.5 =  1.010101130529266e-07
Newton iteration   4 , energy = 8.71353902758053<A u 4 , A u 4 >_{-1}^0.5 =  4.830316586026339e-14
loadstep 19
Newton iteration   0 , energy = 8.71046500004287<A u 0 , A u 0 >_{-1}^0.5 =  0.008091035662926769
Newton iteration   1 , energy = 8.710435236602544<A u 1 , A u 1 >_{-1}^0.5 =  0.0020809488782079825
Newton iteration   2 , energy = 8.71043306886654<A u 2 , A u 2 >_{-1}^0.5 =  3.460352035866788e-05
Newton iteration   3 , energy = 8.71043306826779<A u 3 , A u 3 >_{-1}^0.5 =  6.384901679223817e-08
Newton iteration   4 , energy = 8.710433068267786<A u 4 , A u 4 >_{-1}^0.5 =  2.4169626402240214e-14
loadstep 20
Newton iteration   0 , energy = 8.707295956466936<A u 0 , A u 0 >_{-1}^0.5 =  0.007796669673783573
Newton iteration   1 , energy = 8.707267954456581<A u 1 , A u 1 >_{-1}^0.5 =  0.001827968012887576
Newton iteration   2 , energy = 8.70726628169645<A u 2 , A u 2 >_{-1}^0.5 =  2.7950427159183654e-05
Newton iteration   3 , energy =  8.7072662813058<A u 3 , A u 3 >_{-1}^0.5 =  4.043331835477315e-08
Newton iteration   4 , energy = 8.707266281305802<A u 4 , A u 4 >_{-1}^0.5 =  1.2156701848253304e-14
loadstep 21
Newton iteration   0 , energy = 8.704070519242471<A u 0 , A u 0 >_{-1}^0.5 =  0.0075224168438173976
Newton iteration   1 , energy = 8.704044172869398<A u 1 , A u 1 >_{-1}^0.5 =  0.0016113965544864541
Newton iteration   2 , energy = 8.704042872977789<A u 2 , A u 2 >_{-1}^0.5 =  2.2604018457841957e-05
Newton iteration   3 , energy = 8.704042872722297<A u 3 , A u 3 >_{-1}^0.5 =  2.5688958931182027e-08
Newton iteration   4 , energy =  8.7040428727223<A u 4 , A u 4 >_{-1}^0.5 =  7.001919379764493e-15
loadstep 22
Newton iteration   0 , energy = 8.700792447905739<A u 0 , A u 0 >_{-1}^0.5 =  0.007266650406483379
Newton iteration   1 , energy = 8.700767646468895<A u 1 , A u 1 >_{-1}^0.5 =  0.0014253880610330112
Newton iteration   2 , energy = 8.700766629357547<A u 2 , A u 2 >_{-1}^0.5 =  1.831347778423405e-05
Newton iteration   3 , energy = 8.700766629189848<A u 3 , A u 3 >_{-1}^0.5 =  1.6393189774946642e-08
Newton iteration   4 , energy = 8.700766629189847<A u 4 , A u 4 >_{-1}^0.5 =  5.980560216844329e-15
loadstep 23
Newton iteration   0 , energy = 8.697465135711749<A u 0 , A u 0 >_{-1}^0.5 =  0.007027863693032766
Newton iteration   1 , energy = 8.697441768972116<A u 1 , A u 1 >_{-1}^0.5 =  0.0012651037492033253
Newton iteration   2 , energy = 8.697440967755599<A u 2 , A u 2 >_{-1}^0.5 =  1.4871148789390016e-05
Newton iteration   3 , energy = 8.697440967645008<A u 3 , A u 3 >_{-1}^0.5 =  1.0516289044462651e-08
Newton iteration   4 , energy = 8.69744096764501<A u 4 , A u 4 >_{-1}^0.5 =  4.984873834616798e-15
loadstep 24
Newton iteration   0 , energy = 8.694091652484273<A u 0 , A u 0 >_{-1}^0.5 =  0.006804670237692964
Newton iteration   1 , energy = 8.694069613924203<A u 1 , A u 1 >_{-1}^0.5 =  0.001126533835660911
Newton iteration   2 , energy = 8.69406897862575<A u 2 , A u 2 >_{-1}^0.5 =  1.2107625818588555e-05
Newton iteration   3 , energy = 8.694068978552448<A u 3 , A u 3 >_{-1}^0.5 =  6.7861023146130065e-09
Newton iteration   4 , energy = 8.69406897855245<A u 4 , A u 4 >_{-1}^0.5 =  6.120369715232884e-15
loadstep 25
Newton iteration   0 , energy = 8.690674781930706<A u 0 , A u 0 >_{-1}^0.5 =  0.00659579984595453
Newton iteration   1 , energy = 8.690653970615656<A u 1 , A u 1 >_{-1}^0.5 =  0.0010063493019051473
Newton iteration   2 , energy = 8.69065346365328<A u 2 , A u 2 >_{-1}^0.5 =  9.886146300341589e-06
Newton iteration   3 , energy = 8.690653463604407<A u 3 , A u 3 >_{-1}^0.5 =  4.406931554826087e-09
Newton iteration   4 , energy = 8.690653463604407<A u 4 , A u 4 >_{-1}^0.5 =  5.086350167379042e-15
loadstep 26
Newton iteration   0 , energy = 8.687217054149729<A u 0 , A u 0 >_{-1}^0.5 =  0.006400092333810086
Newton iteration   1 , energy = 8.687197375676268<A u 1 , A u 1 >_{-1}^0.5 =  0.0009017799445596528
Newton iteration   2 , energy = 8.687196968608973<A u 2 , A u 2 >_{-1}^0.5 =  8.097100455201792e-06
Newton iteration   3 , energy = 8.687196968576188<A u 3 , A u 3 >_{-1}^0.5 =  2.881021293727213e-09
Newton iteration   4 , energy = 8.68719696857619<A u 4 , A u 4 >_{-1}^0.5 =  5.467783929998368e-15
loadstep 27
Newton iteration   0 , energy = 8.683720773977395<A u 0 , A u 0 >_{-1}^0.5 =  0.006216490062901802
Newton iteration   1 , energy = 8.683702140832965<A u 1 , A u 1 >_{-1}^0.5 =  0.0008105145625623102
Newton iteration   2 , energy = 8.683701812002514<A u 2 , A u 2 >_{-1}^0.5 =  6.653065651032574e-06
Newton iteration   3 , energy = 8.683701811980386<A u 3 , A u 3 >_{-1}^0.5 =  1.896432685003824e-09
Newton iteration   4 , energy = 8.683701811980388<A u 4 , A u 4 >_{-1}^0.5 =  6.262381829510773e-15
loadstep 28
Newton iteration   0 , energy = 8.680188045735369<A u 0 , A u 0 >_{-1}^0.5 =  0.006044030000204326
Newton iteration   1 , energy = 8.680170377288432<A u 1 , A u 1 >_{-1}^0.5 =  0.0007306194904505745
Newton iteration   2 , energy =  8.6801701101003<A u 2 , A u 2 >_{-1}^0.5 =  5.484524155334694e-06
Newton iteration   3 , energy = 8.680170110085259<A u 3 , A u 3 >_{-1}^0.5 =  1.2570600021802893e-09
Newton iteration   4 , energy = 8.680170110085262<A u 4 , A u 4 >_{-1}^0.5 =  5.77056081632108e-15
loadstep 29
Newton iteration   0 , energy = 8.676620794871443<A u 0 , A u 0 >_{-1}^0.5 =  0.005881835763243135
Newton iteration   1 , energy = 8.67660401713726<A u 1 , A u 1 >_{-1}^0.5 =  0.0006604721820654122
Newton iteration   2 , energy = 8.676603798800276<A u 2 , A u 2 >_{-1}^0.5 =  4.536282787338742e-06
Newton iteration   3 , energy = 8.676603798789982<A u 3 , A u 3 >_{-1}^0.5 =  8.391094548075023e-10
Newton iteration   4 , energy = 8.676603798789984<A u 4 , A u 4 >_{-1}^0.5 =  5.501403478265541e-15
loadstep 30
Newton iteration   0 , energy = 8.673020786915279<A u 0 , A u 0 >_{-1}^0.5 =  0.005729109931948081
Newton iteration   1 , energy = 8.673004832193497<A u 1 , A u 1 >_{-1}^0.5 =  0.0005987070628820888
Newton iteration   2 , energy = 8.673004652790283<A u 2 , A u 2 >_{-1}^0.5 =  3.7645415168882576e-06
Newton iteration   3 , energy = 8.673004652783193<A u 3 , A u 3 >_{-1}^0.5 =  5.640505428657214e-10
Newton iteration   4 , energy = 8.673004652783195<A u 4 , A u 4 >_{-1}^0.5 =  5.611545959430645e-15
loadstep 31
Newton iteration   0 , energy = 8.669389644113318<A u 0 , A u 0 >_{-1}^0.5 =  0.005585126788893856
Newton iteration   1 , energy = 8.669374450560204<A u 1 , A u 1 >_{-1}^0.5 =  0.000544171346188244
Newton iteration   2 , energy = 8.669374302357593<A u 2 , A u 2 >_{-1}^0.5 =  3.1345278509444623e-06
Newton iteration   3 , energy = 8.669374302352676<A u 3 , A u 3 >_{-1}^0.5 =  3.8179103484430056e-10
Newton iteration   4 , energy = 8.66937430235268<A u 4 , A u 4 >_{-1}^0.5 =  7.016495204310889e-15
loadstep 32
Newton iteration   0 , energy = 8.665728860055804<A u 0 , A u 0 >_{-1}^0.5 =  0.005449225571033096
Newton iteration   1 , energy = 8.665714371231411<A u 1 , A u 1 >_{-1}^0.5 =  0.0004958889260441177
Newton iteration   2 , energy = 8.665714248165884<A u 2 , A u 2 >_{-1}^0.5 =  2.6186068464996527e-06
Newton iteration   3 , energy = 8.665714248162455<A u 3 , A u 3 >_{-1}^0.5 =  2.601986274263843e-10
Newton iteration   4 , energy = 8.665714248162454<A u 4 , A u 4 >_{-1}^0.5 =  6.394849498346297e-15
loadstep 33
Newton iteration   0 , energy = 8.662039812563956<A u 0 , A u 0 >_{-1}^0.5 =  0.005320804265371701
Newton iteration   1 , energy = 8.662025976979876<A u 1 , A u 1 >_{-1}^0.5 =  0.00045303081363287363
Newton iteration   2 , energy = 8.662025874271386<A u 2 , A u 2 >_{-1}^0.5 =  2.1947813865634766e-06
Newton iteration   3 , energy = 8.662025874268974<A u 3 , A u 3 >_{-1}^0.5 =  1.785288265750135e-10
Newton iteration   4 , energy = 8.662025874268975<A u 4 , A u 4 >_{-1}^0.5 =  4.984009122718039e-15
loadstep 34
Newton iteration   0 , energy = 8.65832377506779<A u 0 , A u 0 >_{-1}^0.5 =  0.0051993139487287315
Newton iteration   1 , energy = 8.658310545750746<A u 1 , A u 1 >_{-1}^0.5 =  0.00041489087654311485
Newton iteration   2 , energy = 8.658310459611275<A u 2 , A u 2 >_{-1}^0.5 =  1.8455074797357352e-06
Newton iteration   3 , energy = 8.658310459609574<A u 3 , A u 3 >_{-1}^0.5 =  1.2330352552244925e-10
Newton iteration   4 , energy = 8.658310459609568<A u 4 , A u 4 >_{-1}^0.5 =  6.890828678037778e-15
loadstep 35
Newton iteration   0 , energy = 8.654581926672057<A u 0 , A u 0 >_{-1}^0.5 =  0.005084253652474394
Newton iteration   1 , energy = 8.654569260752206<A u 1 , A u 1 >_{-1}^0.5 =  0.0003808658804647568
Newton iteration   2 , energy = 8.654569188164595<A u 2 , A u 2 >_{-1}^0.5 =  1.5567609867537983e-06
Newton iteration   3 , energy = 8.654569188163384<A u 3 , A u 3 >_{-1}^0.5 =  8.571104455515346e-11
Newton iteration   4 , energy = 8.654569188163382<A u 4 , A u 4 >_{-1}^0.5 =  6.880477158468773e-15
loadstep 36
Newton iteration   0 , energy = 8.650815361079921<A u 0 , A u 0 >_{-1}^0.5 =  0.004975165721714703
Newton iteration   1 , energy = 8.650803219408408<A u 1 , A u 1 >_{-1}^0.5 =  0.00035043902690459094
Newton iteration   2 , energy = 8.650803157957592<A u 2 , A u 2 >_{-1}^0.5 =  1.3173034639717023e-06
Newton iteration   3 , energy = 8.650803157956725<A u 3 , A u 3 >_{-1}^0.5 =  5.995727188797121e-11
Newton iteration   4 , energy = 8.650803157956728<A u 4 , A u 4 >_{-1}^0.5 =  6.621256088296012e-15
loadstep 37
Newton iteration   0 , energy = 8.64702509452036<A u 0 , A u 0 >_{-1}^0.5 =  0.004871631632849401
Newton iteration   1 , energy = 8.647013441317718<A u 1 , A u 1 >_{-1}^0.5 =  0.0003231663372825177
Newton iteration   2 , energy = 8.647013389061293<A u 2 , A u 2 >_{-1}^0.5 =  1.1181048740707936e-06
Newton iteration   3 , energy = 8.647013389060666<A u 3 , A u 3 >_{-1}^0.5 =  4.220090019438439e-11
Newton iteration   4 , energy = 8.64701338906067<A u 4 , A u 4 >_{-1}^0.5 =  5.6252478559886266e-15
loadstep 38
Newton iteration   0 , energy = 8.643212072804852<A u 0 , A u 0 >_{-1}^0.5 =  0.004773268231212815
Newton iteration   1 , energy = 8.643200875340225<A u 1 , A u 1 >_{-1}^0.5 =  0.0002986653596195382
Newton iteration   2 , energy = 8.643200830708626<A u 2 , A u 2 >_{-1}^0.5 =  9.518894912422343e-07
Newton iteration   3 , energy = 8.643200830708171<A u 3 , A u 3 >_{-1}^0.5 =  2.98825089309042e-11
Newton iteration   4 , energy = 8.64320083070817<A u 4 , A u 4 >_{-1}^0.5 =  6.144479590456766e-15
loadstep 39
Newton iteration   0 , energy = 8.639377177621562<A u 0 , A u 0 >_{-1}^0.5 =  0.004679724350609488
Newton iteration   1 , energy = 8.639366405921615<A u 1 , A u 1 >_{-1}^0.5 =  0.00027660577499441757
Newton iteration   2 , energy =  8.6393663676408<A u 2 , A u 2 >_{-1}^0.5 =  8.127783551725265e-07
Newton iteration   3 , energy = 8.639366367640479<A u 3 , A u 3 >_{-1}^0.5 =  2.128163840041004e-11
Newton iteration   4 , energy = 8.639366367640472<A u 4 , A u 4 >_{-1}^0.5 =  5.879013507630547e-15
loadstep 40
Newton iteration   0 , energy = 8.63552123216055<A u 0 , A u 0 >_{-1}^0.5 =  0.004590677778037394
Newton iteration   1 , energy = 8.635510858746294<A u 1 , A u 1 >_{-1}^0.5 =  0.00025670156192300267
Newton iteration   2 , energy = 8.635510825777576<A u 2 , A u 2 >_{-1}^0.5 =  6.960073432756556e-07
Newton iteration   3 , energy = 8.635510825777333<A u 3 , A u 3 >_{-1}^0.5 =  1.5244663337067602e-11
Newton iteration   4 , energy = 8.635510825777331<A u 4 , A u 4 >_{-1}^0.5 =  6.38038502795659e-15
loadstep 41
Newton iteration   0 , energy = 8.631645006150972<A u 0 , A u 0 >_{-1}^0.5 =  0.0045058325290220635
Newton iteration   1 , energy = 8.631635005800424<A u 1 , A u 1 >_{-1}^0.5 =  0.00023870444162520224
Newton iteration   2 , energy = 8.631634977293333<A u 2 , A u 2 >_{-1}^0.5 =  5.977044728413088e-07
Newton iteration   3 , energy = 8.631634977293155<A u 3 , A u 3 >_{-1}^0.5 =  1.0982049681071272e-11
Newton iteration   4 , energy = 8.63163497729316<A u 4 , A u 4 >_{-1}^0.5 =  7.400213303123985e-15
loadstep 42
Newton iteration   0 , energy = 8.627749220380105<A u 0 , A u 0 >_{-1}^0.5 =  0.004424916401743933
Newton iteration   1 , energy = 8.627739569914766<A u 1 , A u 1 >_{-1}^0.5 =  0.0002223983794006615
Newton iteration   2 , energy = 8.627739545170039<A u 2 , A u 2 >_{-1}^0.5 =  5.147136146751431e-07
Newton iteration   3 , energy = 8.627739545169911<A u 3 , A u 3 >_{-1}^0.5 =  7.952066879034781e-12
Newton iteration   4 , energy = 8.627739545169907<A u 4 , A u 4 >_{-1}^0.5 =  5.9983138710150994e-15
loadstep 43
Newton iteration   0 , energy = 8.623834550755328<A u 0 , A u 0 >_{-1}^0.5 =  0.004347678780730824
Newton iteration   1 , energy = 8.623825228848096<A u 1 , A u 1 >_{-1}^0.5 =  0.0002075949590001996
Newton iteration   2 , energy = 8.62382520728849<A u 2 , A u 2 >_{-1}^0.5 =  4.444546392989598e-07
Newton iteration   3 , energy = 8.623825207288391<A u 3 , A u 3 >_{-1}^0.5 =  5.788296160833907e-12
Newton iteration   4 , energy = 8.623825207288391<A u 4 , A u 4 >_{-1}^0.5 =  8.058022071408814e-15
loadstep 44
Newton iteration   0 , energy = 8.619901631961804<A u 0 , A u 0 >_{-1}^0.5 =  0.004273888663751974
Newton iteration   1 , energy = 8.61989261896443<A u 1 , A u 1 >_{-1}^0.5 =  0.0001941294807764128
Newton iteration   2 , energy = 8.619892600111507<A u 2 , A u 2 >_{-1}^0.5 =  3.8481218229942534e-07
Newton iteration   3 , energy = 8.619892600111434<A u 3 , A u 3 >_{-1}^0.5 =  4.236471485456452e-12
Newton iteration   4 , energy = 8.619892600111429<A u 4 , A u 4 >_{-1}^0.5 =  7.158096492167602e-15
loadstep 45
Newton iteration   0 , energy = 8.61595106076194<A u 0 , A u 0 >_{-1}^0.5 =  0.004203332888076695
Newton iteration   1 , energy = 8.615942338550006<A u 1 , A u 1 >_{-1}^0.5 =  0.00018185766139678218
Newton iteration   2 , energy = 8.615942322005727<A u 2 , A u 2 >_{-1}^0.5 =  3.340469558075188e-07
Newton iteration   3 , energy = 8.615942322005674<A u 3 , A u 3 >_{-1}^0.5 =  3.114691989089926e-12
Newton iteration   4 , energy = 8.615942322005672<A u 4 , A u 4 >_{-1}^0.5 =  6.909051400570377e-15
loadstep 46
Newton iteration   0 , energy = 8.611983398977026<A u 0 , A u 0 >_{-1}^0.5 =  0.004135814534794483
Newton iteration   1 , energy = 8.611974950810671<A u 1 , A u 1 >_{-1}^0.5 =  0.00017065283506230729
Newton iteration   2 , energy = 8.61197493624263<A u 2 , A u 2 >_{-1}^0.5 =  2.907248429927063e-07
Newton iteration   3 , energy = 8.611974936242593<A u 3 , A u 3 >_{-1}^0.5 =  2.302581505172894e-12
Newton iteration   4 , energy = 8.611974936242593<A u 4 , A u 4 >_{-1}^0.5 =  6.9543130093688855e-15
loadstep 47
Newton iteration   0 , energy = 8.607999176186144<A u 0 , A u 0 >_{-1}^0.5 =  0.0040711514921029065
Newton iteration   1 , energy = 8.60799098658488<A u 1 , A u 1 >_{-1}^0.5 =  0.00016040357381715776
Newton iteration   2 , energy = 8.607990973714475<A u 2 , A u 2 >_{-1}^0.5 =  2.536600638885374e-07
Newton iteration   3 , energy = 8.607990973714443<A u 3 , A u 3 >_{-1}^0.5 =  1.7080449907839108e-12
Newton iteration   4 , energy = 8.607990973714443<A u 4 , A u 4 >_{-1}^0.5 =  6.543657372574808e-15
loadstep 48
Newton iteration   0 , energy = 8.603998892173234<A u 0 , A u 0 >_{-1}^0.5 =  0.004009175160548535
Newton iteration   1 , energy = 8.603990946803393<A u 1 , A u 1 >_{-1}^0.5 =  0.00015101165910335408
Newton iteration   2 , energy = 8.603990935396281<A u 2 , A u 2 >_{-1}^0.5 =  2.2186948326014551e-07
Newton iteration   3 , energy = 8.603990935396258<A u 3 , A u 3 >_{-1}^0.5 =  1.2753355383348344e-12
Newton iteration   4 , energy = 8.603990935396252<A u 4 , A u 4 >_{-1}^0.5 =  6.771400795806722e-15
loadstep 49
Newton iteration   0 , energy = 8.599983019149457<A u 0 , A u 0 >_{-1}^0.5 =  0.00394972928507277
Newton iteration   1 , energy = 8.599975304722873<A u 1 , A u 1 >_{-1}^0.5 =  0.00014239034842211857
Newton iteration   2 , energy = 8.599975294581272<A u 2 , A u 2 >_{-1}^0.5 =  1.945357962030641e-07
Newton iteration   3 , energy = 8.599975294581245<A u 3 , A u 3 >_{-1}^0.5 =  9.547243066170645e-13
Newton iteration   4 , energy = 8.599975294581252<A u 4 , A u 4 >_{-1}^0.5 =  6.4675496594601486e-15
[13]:
Draw(gfu_l,mesh, interpolate_multidim=True, animate=True,
     deformation=True, min=0, max=1, autoscale=False)
[13]:
BaseWebGuiScene

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.491890887887099<A u 0 , A u 0 >_{-1}^0.5 =  3.9555214718583307
Newton iteration   1 , energy = 3.1288443768344183<A u 1 , A u 1 >_{-1}^0.5 =  0.617589466234008
Newton iteration   2 , energy = 2.929547543125832<A u 2 , A u 2 >_{-1}^0.5 =  0.054026199167799244
Newton iteration   3 , energy = 2.928071948387486<A u 3 , A u 3 >_{-1}^0.5 =  0.001056189064023409
Newton iteration   4 , energy = 2.928071390329594<A u 4 , A u 4 >_{-1}^0.5 =  9.411807306645738e-07
Newton iteration   5 , energy = 2.928071390329154<A u 5 , A u 5 >_{-1}^0.5 =  1.2784588316700495e-12
Newton iteration   6 , energy = 2.928071390329153<A u 6 , A u 6 >_{-1}^0.5 =  3.2726869893109607e-16
t =  0.1
Newton iteration   0 , energy = 1.5236905377731316<A u 0 , A u 0 >_{-1}^0.5 =  0.8318868318359606
Newton iteration   1 , energy = 1.1702598099036825<A u 1 , A u 1 >_{-1}^0.5 =  0.04424398436916609
Newton iteration   2 , energy = 1.1692762199894422<A u 2 , A u 2 >_{-1}^0.5 =  0.000382607324885163
Newton iteration   3 , energy = 1.1692761467874708<A u 3 , A u 3 >_{-1}^0.5 =  7.201124500118737e-08
Newton iteration   4 , energy = 1.1692761467874684<A u 4 , A u 4 >_{-1}^0.5 =  5.1135119131793234e-15
t =  0.2
Newton iteration   0 , energy = 1.0430761177262586<A u 0 , A u 0 >_{-1}^0.5 =  0.349491908073184
Newton iteration   1 , energy = 0.9818639339750148<A u 1 , A u 1 >_{-1}^0.5 =  0.00953083315008756
Newton iteration   2 , energy = 0.9818184573461862<A u 2 , A u 2 >_{-1}^0.5 =  2.1132398353461298e-05
Newton iteration   3 , energy = 0.9818184571228957<A u 3 , A u 3 >_{-1}^0.5 =  2.0495761174251036e-10
Newton iteration   4 , energy = 0.981818457122895<A u 4 , A u 4 >_{-1}^0.5 =  1.568224301259793e-16
t =  0.30000000000000004
Newton iteration   0 , energy = 0.9428350592928819<A u 0 , A u 0 >_{-1}^0.5 =  0.2511669817658177
Newton iteration   1 , energy = 0.9117910047734952<A u 1 , A u 1 >_{-1}^0.5 =  0.009489817064654097
Newton iteration   2 , energy = 0.9117458808599814<A u 2 , A u 2 >_{-1}^0.5 =  3.286105561097373e-05
Newton iteration   3 , energy = 0.9117458803200503<A u 3 , A u 3 >_{-1}^0.5 =  6.108346729281577e-10
Newton iteration   4 , energy = 0.9117458803200507<A u 4 , A u 4 >_{-1}^0.5 =  1.4701277672541557e-16
t =  0.4
Newton iteration   0 , energy = 0.8825485359273036<A u 0 , A u 0 >_{-1}^0.5 =  0.24549499153930232
Newton iteration   1 , energy = 0.8533887944563312<A u 1 , A u 1 >_{-1}^0.5 =  0.013814916788098442
Newton iteration   2 , energy = 0.8532930045689965<A u 2 , A u 2 >_{-1}^0.5 =  8.495130173586184e-05
Newton iteration   3 , energy = 0.8532930009605082<A u 3 , A u 3 >_{-1}^0.5 =  4.812207613258164e-09
Newton iteration   4 , energy = 0.8532930009605088<A u 4 , A u 4 >_{-1}^0.5 =  1.6126931510607207e-16
t =  0.5
Newton iteration   0 , energy = 0.822859424457485<A u 0 , A u 0 >_{-1}^0.5 =  0.25288444858868686
Newton iteration   1 , energy = 0.7922606907464347<A u 1 , A u 1 >_{-1}^0.5 =  0.017310084961438738
Newton iteration   2 , energy = 0.7921101612911245<A u 2 , A u 2 >_{-1}^0.5 =  0.00013082310935335457
Newton iteration   3 , energy = 0.7921101527333604<A u 3 , A u 3 >_{-1}^0.5 =  1.0114306944424334e-08
Newton iteration   4 , energy = 0.7921101527333603<A u 4 , A u 4 >_{-1}^0.5 =  1.881798527436377e-16
t =  0.6
Newton iteration   0 , energy = 0.7612937137396455<A u 0 , A u 0 >_{-1}^0.5 =  0.24667484887448524
Newton iteration   1 , energy = 0.7322260613743791<A u 1 , A u 1 >_{-1}^0.5 =  0.01731182435727959
Newton iteration   2 , energy = 0.7320754474308212<A u 2 , A u 2 >_{-1}^0.5 =  0.0001458528315026924
Newton iteration   3 , energy = 0.7320754367935242<A u 3 , A u 3 >_{-1}^0.5 =  1.711610446667943e-08
Newton iteration   4 , energy = 0.7320754367935237<A u 4 , A u 4 >_{-1}^0.5 =  4.0140392232088174e-16
t =  0.7
Newton iteration   0 , energy = 0.7047466329381263<A u 0 , A u 0 >_{-1}^0.5 =  0.224816531741391
Newton iteration   1 , energy = 0.68042289030315<A u 1 , A u 1 >_{-1}^0.5 =  0.013257868633850218
Newton iteration   2 , energy = 0.6803347052576816<A u 2 , A u 2 >_{-1}^0.5 =  7.356730490846073e-05
Newton iteration   3 , energy = 0.6803347025515281<A u 3 , A u 3 >_{-1}^0.5 =  3.461746172213633e-09
Newton iteration   4 , energy = 0.6803347025515281<A u 4 , A u 4 >_{-1}^0.5 =  2.0649088284078278e-16
t =  0.7999999999999999
Newton iteration   0 , energy = 0.6585292681349105<A u 0 , A u 0 >_{-1}^0.5 =  0.19784418981960603
Newton iteration   1 , energy = 0.6395570798159652<A u 1 , A u 1 >_{-1}^0.5 =  0.009721207698186215
Newton iteration   2 , energy = 0.6395097090815723<A u 2 , A u 2 >_{-1}^0.5 =  4.1540147902205815e-05
Newton iteration   3 , energy = 0.639509708218762<A u 3 , A u 3 >_{-1}^0.5 =  1.494163161464235e-09
Newton iteration   4 , energy = 0.6395097082187616<A u 4 , A u 4 >_{-1}^0.5 =  2.1299873554895631e-16
t =  0.8999999999999999
Newton iteration   0 , energy = 0.6226726033001583<A u 0 , A u 0 >_{-1}^0.5 =  0.17418883106530447
Newton iteration   1 , energy = 0.6079024092166269<A u 1 , A u 1 >_{-1}^0.5 =  0.007822252947133058
Newton iteration   2 , energy = 0.607871733714799<A u 2 , A u 2 >_{-1}^0.5 =  3.716128865528011e-05
Newton iteration   3 , energy = 0.6078717330242976<A u 3 , A u 3 >_{-1}^0.5 =  1.74068890441231e-09
Newton iteration   4 , energy = 0.6078717330242978<A u 4 , A u 4 >_{-1}^0.5 =  2.340015898828096e-16
t =  0.9999999999999999
Newton iteration   0 , energy = 0.594546321610656<A u 0 , A u 0 >_{-1}^0.5 =  0.15684859627426093
Newton iteration   1 , energy = 0.5825305547887867<A u 1 , A u 1 >_{-1}^0.5 =  0.006507024407807038
Newton iteration   2 , energy = 0.5825093366653236<A u 2 , A u 2 >_{-1}^0.5 =  2.4904052512634778e-05
Newton iteration   3 , energy = 0.5825093363552127<A u 3 , A u 3 >_{-1}^0.5 =  6.426604241266484e-10
Newton iteration   4 , energy = 0.582509336355213<A u 4 , A u 4 >_{-1}^0.5 =  2.1961786982806853e-16
t =  1.0999999999999999
Newton iteration   0 , energy = 0.5713178189707434<A u 0 , A u 0 >_{-1}^0.5 =  0.14629439525468765
Newton iteration   1 , energy = 0.5608418685267202<A u 1 , A u 1 >_{-1}^0.5 =  0.005730862470527143
Newton iteration   2 , energy = 0.5608254135378812<A u 2 , A u 2 >_{-1}^0.5 =  1.9794291918248147e-05
Newton iteration   3 , energy = 0.5608254133419721<A u 3 , A u 3 >_{-1}^0.5 =  3.9207620869479045e-10
Newton iteration   4 , energy = 0.5608254133419724<A u 4 , A u 4 >_{-1}^0.5 =  2.479705412608197e-16
t =  1.2
Newton iteration   0 , energy = 0.5507023753070027<A u 0 , A u 0 >_{-1}^0.5 =  0.14155223075050297
Newton iteration   1 , energy = 0.5408972396764403<A u 1 , A u 1 >_{-1}^0.5 =  0.005509950518164664
Newton iteration   2 , energy = 0.5408820299759135<A u 2 , A u 2 >_{-1}^0.5 =  1.831000280793815e-05
Newton iteration   3 , energy = 0.5408820298082834<A u 3 , A u 3 >_{-1}^0.5 =  3.6622220266822196e-10
Newton iteration   4 , energy = 0.5408820298082831<A u 4 , A u 4 >_{-1}^0.5 =  2.382898812602617e-16
t =  1.3
Newton iteration   0 , energy = 0.5311472234181713<A u 0 , A u 0 >_{-1}^0.5 =  0.14002776268417838
Newton iteration   1 , energy = 0.5215922942655572<A u 1 , A u 1 >_{-1}^0.5 =  0.006457701161293983
Newton iteration   2 , energy = 0.521571384451794<A u 2 , A u 2 >_{-1}^0.5 =  3.0040755000402455e-05
Newton iteration   3 , energy = 0.5215713840005611<A u 3 , A u 3 >_{-1}^0.5 =  9.599496977323723e-10
Newton iteration   4 , energy = 0.5215713840005612<A u 4 , A u 4 >_{-1}^0.5 =  2.5034801456724435e-16
t =  1.4000000000000001
Newton iteration   0 , energy = 0.5120740872850119<A u 0 , A u 0 >_{-1}^0.5 =  0.13743302627247042
Newton iteration   1 , energy = 0.5028965182973574<A u 1 , A u 1 >_{-1}^0.5 =  0.007263027133069867
Newton iteration   2 , energy = 0.5028700345755763<A u 2 , A u 2 >_{-1}^0.5 =  4.9544009978314025e-05
Newton iteration   3 , energy = 0.5028700333482182<A u 3 , A u 3 >_{-1}^0.5 =  3.3169096276559485e-09
Newton iteration   4 , energy = 0.5028700333482179<A u 4 , A u 4 >_{-1}^0.5 =  2.503586569109002e-16
t =  1.5000000000000002
Newton iteration   0 , energy = 0.4939431797362317<A u 0 , A u 0 >_{-1}^0.5 =  0.13159781769317344
Newton iteration   1 , energy = 0.48549469220581076<A u 1 , A u 1 >_{-1}^0.5 =  0.006249462490523484
Newton iteration   2 , energy = 0.48547510368284996<A u 2 , A u 2 >_{-1}^0.5 =  3.2593918341691636e-05
Newton iteration   3 , energy = 0.4854751031516538<A u 3 , A u 3 >_{-1}^0.5 =  1.332574778859733e-09
Newton iteration   4 , energy = 0.4854751031516537<A u 4 , A u 4 >_{-1}^0.5 =  2.342907300004739e-16
t =  1.6000000000000003
Newton iteration   0 , energy = 0.47738610607330717<A u 0 , A u 0 >_{-1}^0.5 =  0.12485338850377642
Newton iteration   1 , energy = 0.4697329839553955<A u 1 , A u 1 >_{-1}^0.5 =  0.004787042888467244
Newton iteration   2 , energy = 0.46972150685086983<A u 2 , A u 2 >_{-1}^0.5 =  1.3508676195793117e-05
Newton iteration   3 , energy = 0.469721506759627<A u 3 , A u 3 >_{-1}^0.5 =  1.7903781252022858e-10
Newton iteration   4 , energy = 0.4697215067596269<A u 4 , A u 4 >_{-1}^0.5 =  2.700895060175196e-16
t =  1.7000000000000004
Newton iteration   0 , energy = 0.4623430703435351<A u 0 , A u 0 >_{-1}^0.5 =  0.12011070915484146
Newton iteration   1 , energy = 0.45522806769704527<A u 1 , A u 1 >_{-1}^0.5 =  0.004023545789483371
Newton iteration   2 , energy = 0.4552199646563577<A u 2 , A u 2 >_{-1}^0.5 =  6.97033704944967e-06
Newton iteration   3 , energy = 0.45521996463206493<A u 3 , A u 3 >_{-1}^0.5 =  3.496055274720365e-11
Newton iteration   4 , energy = 0.45521996463206477<A u 4 , A u 4 >_{-1}^0.5 =  2.5800877085509983e-16
t =  1.8000000000000005
Newton iteration   0 , energy = 0.4482133032412433<A u 0 , A u 0 >_{-1}^0.5 =  0.11837151498432974
Newton iteration   1 , energy = 0.4412851002448923<A u 1 , A u 1 >_{-1}^0.5 =  0.003931203756522822
Newton iteration   2 , energy = 0.4412773653620619<A u 2 , A u 2 >_{-1}^0.5 =  6.354965352653142e-06
Newton iteration   3 , energy = 0.44127736534186973<A u 3 , A u 3 >_{-1}^0.5 =  2.438870609230378e-11
Newton iteration   4 , energy = 0.4412773653418694<A u 4 , A u 4 >_{-1}^0.5 =  2.5879116154042885e-16
t =  1.9000000000000006
Newton iteration   0 , energy = 0.4342879754653371<A u 0 , A u 0 >_{-1}^0.5 =  0.11961046028277654
Newton iteration   1 , energy = 0.4272065529611257<A u 1 , A u 1 >_{-1}^0.5 =  0.004288220618686489
Newton iteration   2 , energy = 0.4271973479272149<A u 2 , A u 2 >_{-1}^0.5 =  8.023297146664251e-06
Newton iteration   3 , energy = 0.4271973478950282<A u 3 , A u 3 >_{-1}^0.5 =  4.1283384299216076e-11
Newton iteration   4 , energy = 0.4271973478950282<A u 4 , A u 4 >_{-1}^0.5 =  2.557068501676467e-16
t =  2.0000000000000004
Newton iteration   0 , energy = 0.41988202167909827<A u 0 , A u 0 >_{-1}^0.5 =  0.12377863727587259
Newton iteration   1 , energy = 0.412312311160806<A u 1 , A u 1 >_{-1}^0.5 =  0.00494556212158324
Newton iteration   2 , energy = 0.4123000657563023<A u 2 , A u 2 >_{-1}^0.5 =  1.064132024906768e-05
Newton iteration   3 , energy = 0.41230006569968297<A u 3 , A u 3 >_{-1}^0.5 =  7.750596116624397e-11
Newton iteration   4 , energy = 0.4123000656996828<A u 4 , A u 4 >_{-1}^0.5 =  2.624973449937927e-16
t =  2.1000000000000005
Newton iteration   0 , energy = 0.40433469742260103<A u 0 , A u 0 >_{-1}^0.5 =  0.12997807125741387
Newton iteration   1 , energy = 0.39608012261339415<A u 1 , A u 1 >_{-1}^0.5 =  0.006345667093671249
Newton iteration   2 , energy = 0.39605992899842507<A u 2 , A u 2 >_{-1}^0.5 =  2.9992126144211277e-05
Newton iteration   3 , energy = 0.3960599285486537<A u 3 , A u 3 >_{-1}^0.5 =  7.81286779863766e-10
Newton iteration   4 , energy = 0.3960599285486535<A u 4 , A u 4 >_{-1}^0.5 =  2.513327985210632e-16
t =  2.2000000000000006
Newton iteration   0 , energy = 0.38749679347636506<A u 0 , A u 0 >_{-1}^0.5 =  0.13219513012376718
Newton iteration   1 , energy = 0.37915742930315394<A u 1 , A u 1 >_{-1}^0.5 =  0.010458727703747972
Newton iteration   2 , energy = 0.37910232684035067<A u 2 , A u 2 >_{-1}^0.5 =  0.00012169623563905929
Newton iteration   3 , energy = 0.3791023194346424<A u 3 , A u 3 >_{-1}^0.5 =  1.792542077749337e-08
Newton iteration   4 , energy = 0.3791023194346421<A u 4 , A u 4 >_{-1}^0.5 =  4.794352070264674e-16
t =  2.3000000000000007
Newton iteration   0 , energy = 0.3711279786456356<A u 0 , A u 0 >_{-1}^0.5 =  0.12085875685028064
Newton iteration   1 , energy = 0.36417369091644786<A u 1 , A u 1 >_{-1}^0.5 =  0.010188004827912196
Newton iteration   2 , energy = 0.3641213569971834<A u 2 , A u 2 >_{-1}^0.5 =  0.00013388176225337013
Newton iteration   3 , energy = 0.36412134803387564<A u 3 , A u 3 >_{-1}^0.5 =  2.5861850842274054e-08
Newton iteration   4 , energy = 0.36412134803387536<A u 4 , A u 4 >_{-1}^0.5 =  1.0392392426625511e-15
t =  2.400000000000001
Newton iteration   0 , energy = 0.3581043995013958<A u 0 , A u 0 >_{-1}^0.5 =  0.1010577749882044
Newton iteration   1 , energy = 0.3531329482947072<A u 1 , A u 1 >_{-1}^0.5 =  0.0053840406861597355
Newton iteration   2 , energy = 0.353118396929167<A u 2 , A u 2 >_{-1}^0.5 =  3.417686052276421e-05
Newton iteration   3 , energy = 0.35311839634511916<A u 3 , A u 3 >_{-1}^0.5 =  1.67669398378317e-09
Newton iteration   4 , energy = 0.3531183963451193<A u 4 , A u 4 >_{-1}^0.5 =  2.648461173264612e-16
t =  2.500000000000001
Newton iteration   0 , energy = 0.34890500792712215<A u 0 , A u 0 >_{-1}^0.5 =  0.08560033977139007
Newton iteration   1 , energy = 0.3452834766175034<A u 1 , A u 1 >_{-1}^0.5 =  0.0024709276312231934
Newton iteration   2 , energy = 0.3452804206875387<A u 2 , A u 2 >_{-1}^0.5 =  4.413881171786551e-06
Newton iteration   3 , energy = 0.3452804206777973<A u 3 , A u 3 >_{-1}^0.5 =  2.374666626487907e-11
Newton iteration   4 , energy = 0.3452804206777975<A u 4 , A u 4 >_{-1}^0.5 =  2.602248555179627e-16
t =  2.600000000000001
Newton iteration   0 , energy = 0.34203581164220853<A u 0 , A u 0 >_{-1}^0.5 =  0.0774859054568568
Newton iteration   1 , energy = 0.339053907155097<A u 1 , A u 1 >_{-1}^0.5 =  0.0017060639412826459
Newton iteration   2 , energy = 0.33905245111230725<A u 2 , A u 2 >_{-1}^0.5 =  1.465926032454383e-06
Newton iteration   3 , energy = 0.3390524511112327<A u 3 , A u 3 >_{-1}^0.5 =  2.305746301319464e-12
Newton iteration   4 , energy = 0.3390524511112328<A u 4 , A u 4 >_{-1}^0.5 =  2.6883777108300525e-16
t =  2.700000000000001
Newton iteration   0 , energy = 0.3362335161487431<A u 0 , A u 0 >_{-1}^0.5 =  0.07364716338871968
Newton iteration   1 , energy = 0.3335367267248001<A u 1 , A u 1 >_{-1}^0.5 =  0.0015551778254830708
Newton iteration   2 , energy = 0.3335355168913364<A u 2 , A u 2 >_{-1}^0.5 =  1.235020713920438e-06
Newton iteration   3 , energy = 0.33353551689057365<A u 3 , A u 3 >_{-1}^0.5 =  1.6845124378294538e-12
Newton iteration   4 , energy = 0.33353551689057365<A u 4 , A u 4 >_{-1}^0.5 =  2.6021430933629563e-16
t =  2.800000000000001
Newton iteration   0 , energy = 0.33092026496720894<A u 0 , A u 0 >_{-1}^0.5 =  0.0714801887963354
Newton iteration   1 , energy = 0.3283789502568887<A u 1 , A u 1 >_{-1}^0.5 =  0.0014798010650238886
Newton iteration   2 , energy = 0.32837785490146404<A u 2 , A u 2 >_{-1}^0.5 =  1.0585920118008087e-06
Newton iteration   3 , energy = 0.32837785490090365<A u 3 , A u 3 >_{-1}^0.5 =  1.1489140559161613e-12
Newton iteration   4 , energy = 0.32837785490090365<A u 4 , A u 4 >_{-1}^0.5 =  2.5300137731393214e-16
t =  2.9000000000000012
Newton iteration   0 , energy = 0.32589200310392924<A u 0 , A u 0 >_{-1}^0.5 =  0.06984330085441884
Newton iteration   1 , energy = 0.32346529895422405<A u 1 , A u 1 >_{-1}^0.5 =  0.001416817561857269
Newton iteration   2 , energy = 0.3234642948858981<A u 2 , A u 2 >_{-1}^0.5 =  9.206075187088258e-07
Newton iteration   3 , energy = 0.3234642948854744<A u 3 , A u 3 >_{-1}^0.5 =  7.753579178638979e-13
Newton iteration   4 , energy = 0.3234642948854745<A u 4 , A u 4 >_{-1}^0.5 =  2.4869722529393193e-16
t =  3.0000000000000013
Newton iteration   0 , energy = 0.3210859875805414<A u 0 , A u 0 >_{-1}^0.5 =  0.06832772950235567
Newton iteration   1 , energy = 0.31876316342896<A u 1 , A u 1 >_{-1}^0.5 =  0.0013642541364598327
Newton iteration   2 , energy = 0.3187622324985127<A u 2 , A u 2 >_{-1}^0.5 =  8.227319985475943e-07
Newton iteration   3 , energy = 0.318762232498174<A u 3 , A u 3 >_{-1}^0.5 =  5.457675603562877e-13
Newton iteration   4 , energy = 0.31876223249817404<A u 4 , A u 4 >_{-1}^0.5 =  2.5121894943007606e-16
t =  3.1000000000000014
Newton iteration   0 , energy = 0.3164870121547469<A u 0 , A u 0 >_{-1}^0.5 =  0.06679156854877664
Newton iteration   1 , energy = 0.3142671369458832<A u 1 , A u 1 >_{-1}^0.5 =  0.0013192772813609005
Newton iteration   2 , energy = 0.3142662664002198<A u 2 , A u 2 >_{-1}^0.5 =  7.502267846966156e-07
Newton iteration   3 , energy = 0.3142662663999383<A u 3 , A u 3 >_{-1}^0.5 =  4.0984812312614005e-13
Newton iteration   4 , energy = 0.31426626639993827<A u 4 , A u 4 >_{-1}^0.5 =  2.5841916123990097e-16
t =  3.2000000000000015
Newton iteration   0 , energy = 0.3120949123662973<A u 0 , A u 0 >_{-1}^0.5 =  0.06519851300377273
Newton iteration   1 , energy = 0.3099791806086375<A u 1 , A u 1 >_{-1}^0.5 =  0.001273516686539121
Newton iteration   2 , energy = 0.309978369420863<A u 2 , A u 2 >_{-1}^0.5 =  6.868624409239317e-07
Newton iteration   3 , energy = 0.3099783694206269<A u 3 , A u 3 >_{-1}^0.5 =  3.2336589033908946e-13
Newton iteration   4 , energy = 0.30997836942062706<A u 4 , A u 4 >_{-1}^0.5 =  2.6424124399534467e-16
t =  3.3000000000000016
Newton iteration   0 , energy = 0.3079116566296402<A u 0 , A u 0 >_{-1}^0.5 =  0.06356883470417247
Newton iteration   1 , energy = 0.30589971827101514<A u 1 , A u 1 >_{-1}^0.5 =  0.0012196734497721385
Newton iteration   2 , energy = 0.30589897423861606<A u 2 , A u 2 >_{-1}^0.5 =  6.235460634034231e-07
Newton iteration   3 , energy = 0.30589897423842183<A u 3 , A u 3 >_{-1}^0.5 =  2.596360511400929e-13
Newton iteration   4 , energy = 0.3058989742384217<A u 4 , A u 4 >_{-1}^0.5 =  2.4257775860168754e-16
t =  3.4000000000000017
Newton iteration   0 , energy = 0.30393513696120833<A u 0 , A u 0 >_{-1}^0.5 =  0.0619500148818447
Newton iteration   1 , energy = 0.3020236785082067<A u 1 , A u 1 >_{-1}^0.5 =  0.001157502402389253
Newton iteration   2 , energy = 0.3020230084056407<A u 2 , A u 2 >_{-1}^0.5 =  5.599804099226994e-07
Newton iteration   3 , energy = 0.3020230084054839<A u 3 , A u 3 >_{-1}^0.5 =  2.087324352912309e-13
Newton iteration   4 , energy = 0.30202300840548396<A u 4 , A u 4 >_{-1}^0.5 =  2.7455811603627693e-16
t =  3.5000000000000018
Newton iteration   0 , energy = 0.30015730638089433<A u 0 , A u 0 >_{-1}^0.5 =  0.060386860697755916
Newton iteration   1 , energy = 0.2983405415857909<A u 1 , A u 1 >_{-1}^0.5 =  0.0010931258401066727
Newton iteration   2 , energy = 0.2983399439570787<A u 2 , A u 2 >_{-1}^0.5 =  5.018148894112679e-07
Newton iteration   3 , energy = 0.2983399439569526<A u 3 , A u 3 >_{-1}^0.5 =  1.6951501263674018e-13
Newton iteration   4 , energy = 0.2983399439569527<A u 4 , A u 4 >_{-1}^0.5 =  2.5473881551548026e-16
t =  3.600000000000002
Newton iteration   0 , energy = 0.29656587362385706<A u 0 , A u 0 >_{-1}^0.5 =  0.0588991574593093
Newton iteration   1 , energy = 0.29483721015631514<A u 1 , A u 1 >_{-1}^0.5 =  0.0010344214318564707
Newton iteration   2 , energy = 0.2948366749993806<A u 2 , A u 2 >_{-1}^0.5 =  4.546403103589512e-07
Newton iteration   3 , energy = 0.2948366749992774<A u 3 , A u 3 >_{-1}^0.5 =  1.4172739354665903e-13
Newton iteration   4 , energy = 0.2948366749992774<A u 4 , A u 4 >_{-1}^0.5 =  2.4675851281788083e-16
t =  3.700000000000002
Newton iteration   0 , energy = 0.29314786370736395<A u 0 , A u 0 >_{-1}^0.5 =  0.057474948074341045
Newton iteration   1 , energy = 0.2915017178754641<A u 1 , A u 1 >_{-1}^0.5 =  0.0009868447138053002
Newton iteration   2 , energy = 0.2915012308182631<A u 2 , A u 2 >_{-1}^0.5 =  4.2005048517149105e-07
Newton iteration   3 , energy = 0.2915012308181746<A u 3 , A u 3 >_{-1}^0.5 =  1.2380015877342813e-13
Newton iteration   4 , energy = 0.2915012308181746<A u 4 , A u 4 >_{-1}^0.5 =  2.543970966524381e-16
t =  3.800000000000002
Newton iteration   0 , energy = 0.28989302826659014<A u 0 , A u 0 >_{-1}^0.5 =  0.05607848307677885
Newton iteration   1 , energy = 0.2883259913257588<A u 1 , A u 1 >_{-1}^0.5 =  0.0009510305443112451
Newton iteration   2 , energy = 0.28832553898209856<A u 2 , A u 2 >_{-1}^0.5 =  3.962086022997586e-07
Newton iteration   3 , energy = 0.2883255389820201<A u 3 , A u 3 >_{-1}^0.5 =  1.132371209263812e-13
Newton iteration   4 , energy = 0.28832553898202<A u 4 , A u 4 >_{-1}^0.5 =  2.5039167372177116e-16
t =  3.900000000000002
Newton iteration   0 , energy = 0.2867957236350986<A u 0 , A u 0 >_{-1}^0.5 =  0.05466621748627245
Newton iteration   1 , energy = 0.2853067500146116<A u 1 , A u 1 >_{-1}^0.5 =  0.0009225470959756842
Newton iteration   2 , energy = 0.28530632436204273<A u 2 , A u 2 >_{-1}^0.5 =  3.80086816077456e-07
Newton iteration   3 , energy = 0.28530632436197023<A u 3 , A u 3 >_{-1}^0.5 =  1.0717177494170779e-13
Newton iteration   4 , energy = 0.28530632436197007<A u 4 , A u 4 >_{-1}^0.5 =  2.5170391574685467e-16
t =  4.000000000000002
Newton iteration   0 , energy = 0.2838548202867312<A u 0 , A u 0 >_{-1}^0.5 =  0.05320329878294829
Newton iteration   1 , energy = 0.28244454106045236<A u 1 , A u 1 >_{-1}^0.5 =  0.0008943447705820982
Newton iteration   2 , energy = 0.2824441410348158<A u 2 , A u 2 >_{-1}^0.5 =  3.675826156653108e-07
Newton iteration   3 , energy = 0.2824441410347484<A u 3 , A u 3 >_{-1}^0.5 =  1.0288766630372588e-13
Newton iteration   4 , energy = 0.28244414103474835<A u 4 , A u 4 >_{-1}^0.5 =  2.475518639349184e-16
t =  4.100000000000001
Newton iteration   0 , energy = 0.2810720215920084<A u 0 , A u 0 >_{-1}^0.5 =  0.051674356872346436
Newton iteration   1 , energy = 0.27974158857633935<A u 1 , A u 1 >_{-1}^0.5 =  0.0008606847605914772
Newton iteration   2 , energy = 0.27974121809560737<A u 2 , A u 2 >_{-1}^0.5 =  3.525184772024024e-07
Newton iteration   3 , energy = 0.2797412180955448<A u 3 , A u 3 >_{-1}^0.5 =  9.757255539023565e-14
t =  4.200000000000001
Newton iteration   0 , energy = 0.2784494899373552<A u 0 , A u 0 >_{-1}^0.5 =  0.050085501188120475
Newton iteration   1 , energy = 0.2771994577011342<A u 1 , A u 1 >_{-1}^0.5 =  0.0008197163596856316
Newton iteration   2 , energy = 0.2771991216522575<A u 2 , A u 2 >_{-1}^0.5 =  3.2955743458382943e-07
Newton iteration   3 , energy = 0.2771991216522033<A u 3 , A u 3 >_{-1}^0.5 =  8.806796768209915e-14
t =  4.300000000000001
Newton iteration   0 , energy = 0.2759877662249545<A u 0 , A u 0 >_{-1}^0.5 =  0.048458759677651994
Newton iteration   1 , energy = 0.2748173852773048<A u 1 , A u 1 >_{-1}^0.5 =  0.0007732238144759549
Newton iteration   2 , energy = 0.2748170862703446<A u 2 , A u 2 >_{-1}^0.5 =  2.9819267163119265e-07
Newton iteration   3 , energy = 0.2748170862703002<A u 3 , A u 3 >_{-1}^0.5 =  7.374651827049924e-14
t =  4.4
Newton iteration   0 , energy = 0.27368460789987115<A u 0 , A u 0 >_{-1}^0.5 =  0.04682333620947004
Newton iteration   1 , energy = 0.27259163095177064<A u 1 , A u 1 >_{-1}^0.5 =  0.0007245407869678481
Newton iteration   2 , energy = 0.2725913684148521<A u 2 , A u 2 >_{-1}^0.5 =  2.622180323322382e-07
Newton iteration   3 , energy = 0.2725913684148179<A u 3 , A u 3 >_{-1}^0.5 =  5.733940873050694e-14
t =  4.5
Newton iteration   0 , energy = 0.27153482120416156<A u 0 , A u 0 >_{-1}^0.5 =  0.04520798765637697
Newton iteration   1 , energy = 0.2705156994079796<A u 1 , A u 1 >_{-1}^0.5 =  0.0006765227176158948
Newton iteration   2 , energy = 0.2705154705202685<A u 2 , A u 2 >_{-1}^0.5 =  2.2632954611248561e-07
Newton iteration   3 , energy = 0.2705154705202428<A u 3 , A u 3 >_{-1}^0.5 =  4.2353141236795205e-14
t =  4.6
Newton iteration   0 , energy = 0.26953078025053395<A u 0 , A u 0 >_{-1}^0.5 =  0.04363637071302488
Newton iteration   1 , energy = 0.26858105426236695<A u 1 , A u 1 >_{-1}^0.5 =  0.0006306940006190356
Newton iteration   2 , energy = 0.2685808553379586<A u 2 , A u 2 >_{-1}^0.5 =  1.9372872054959798e-07
Newton iteration   3 , energy = 0.26858085533793963<A u 3 , A u 3 >_{-1}^0.5 =  3.060195357652105e-14
t =  4.699999999999999
Newton iteration   0 , energy = 0.2676632519758766<A u 0 , A u 0 >_{-1}^0.5 =  0.04212489421186804
Newton iteration   1 , energy = 0.2667779898211434<A u 1 , A u 1 >_{-1}^0.5 =  0.0005875042180962966
Newton iteration   2 , energy = 0.26677781721107563<A u 2 , A u 2 >_{-1}^0.5 =  1.657862274274515e-07
Newton iteration   3 , energy = 0.2667778172110618<A u 3 , A u 3 >_{-1}^0.5 =  2.2181364175430385e-14
t =  4.799999999999999
Newton iteration   0 , energy = 0.2659222673085123<A u 0 , A u 0 >_{-1}^0.5 =  0.040681920034712944
Newton iteration   1 , energy = 0.26509647386351554<A u 1 , A u 1 >_{-1}^0.5 =  0.0005469955754972235
Newton iteration   2 , energy = 0.2650963242378606<A u 2 , A u 2 >_{-1}^0.5 =  1.4274006462315329e-07
Newton iteration   3 , energy = 0.2650963242378505<A u 3 , A u 3 >_{-1}^0.5 =  1.6426428698063973e-14
t =  4.899999999999999
Newton iteration   0 , energy = 0.2642979143746181<A u 0 , A u 0 >_{-1}^0.5 =  0.039307701015381065
Newton iteration   1 , energy = 0.26352687861469176<A u 1 , A u 1 >_{-1}^0.5 =  0.000509288929467951
Newton iteration   2 , energy = 0.26352674890804234<A u 2 , A u 2 >_{-1}^0.5 =  1.242887300304803e-07
Newton iteration   3 , energy = 0.2635267489080345<A u 3 , A u 3 >_{-1}^0.5 =  1.256388637654419e-14
t =  4.999999999999998
[18]:
Draw(gfu_t, mesh, interpolate_multidim=True, animate=True,
     min=-0.1, max=0.1, autoscale=False, deformation=True)
[18]:
BaseWebGuiScene

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.3932494925913631
Newton iteration  1
Energy:  -0.07732258171168223
err =  1.9518780474919402e-15
[20]:
BaseWebGuiScene

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.\]