We solve the 2D Gross-Pitaevskii equation with a magnetic field. This is similar to the previous example (Gross-Pitaevskii equation in one dimension), but with an extra term for the magnetic field. We reproduce here the results of https://arxiv.org/pdf/1611.02045.pdf Fig. 10
using DFTK
using StaticArrays
using Plots
# Unit cell. Having one of the lattice vectors as zero means a 2D system
a = 15
lattice = a .* [[1 0 0.]; [0 1 0]; [0 0 0]];
# Confining scalar potential, and magnetic vector potential
pot(x, y, z) = ((x - a/2)^2 + (y - a/2)^2)/2
ω = .6
Apot(x, y, z) = ω * @SVector [y - a/2, -(x - a/2), 0]
Apot(X) = Apot(X...);
# Parameters
Ecut = 20 # Increase this for production
η = 500
C = η/2
α = 2
n_electrons = 1; # Increase this for fun
# Collect all the terms, build and run the model
terms = [Kinetic(),
ExternalFromReal(X -> pot(X...)),
LocalNonlinearity(ρ -> C * ρ^α),
Magnetic(Apot),
]
model = Model(lattice; n_electrons, terms, spin_polarization=:spinless) # spinless electrons
basis = PlaneWaveBasis(model; Ecut, kgrid=(1, 1, 1))
scfres = direct_minimization(basis, tol=1e-5) # Reduce tol for production
heatmap(scfres.ρ[:, :, 1, 1], c=:blues)
Iter Function value Gradient norm 0 3.029727e+01 7.277087e+00 * time: 0.004927873611450195 1 2.714988e+01 6.090159e+00 * time: 0.014632940292358398 2 2.710517e+01 1.353371e+01 * time: 0.03787398338317871 3 1.732697e+01 5.975572e+00 * time: 0.06557393074035645 4 1.242066e+01 2.145855e+00 * time: 0.09319901466369629 5 1.177662e+01 3.740385e+00 * time: 0.11169099807739258 6 1.079531e+01 2.428641e+00 * time: 0.1308889389038086 7 1.027271e+01 2.621279e+00 * time: 0.15029287338256836 8 9.464550e+00 1.770236e+00 * time: 0.16956090927124023 9 8.948249e+00 1.327452e+00 * time: 0.18882989883422852 10 8.806555e+00 1.037333e+00 * time: 0.2080700397491455 11 8.680631e+00 7.621556e-01 * time: 0.22749090194702148 12 8.617569e+00 4.089333e-01 * time: 0.24246001243591309 13 8.595580e+00 3.253824e-01 * time: 0.25714993476867676 14 8.579926e+00 2.478894e-01 * time: 0.27170896530151367 15 8.560862e+00 1.780827e-01 * time: 0.28620100021362305 16 8.558200e+00 1.705515e-01 * time: 0.3007829189300537 17 8.552687e+00 1.503738e-01 * time: 0.31540393829345703 18 8.547576e+00 1.989331e-01 * time: 0.32993197441101074 19 8.543197e+00 1.458953e-01 * time: 0.34454798698425293 20 8.542894e+00 1.006022e-01 * time: 0.3593180179595947 21 8.538131e+00 1.465741e-01 * time: 0.3745739459991455 22 8.533205e+00 1.881328e-01 * time: 0.38982605934143066 23 8.530288e+00 8.305813e-02 * time: 0.4052770137786865 24 8.524636e+00 9.840524e-02 * time: 0.4207789897918701 25 8.522453e+00 1.079799e-01 * time: 0.43636488914489746 26 8.520491e+00 6.014887e-02 * time: 0.45166993141174316 27 8.518853e+00 6.773988e-02 * time: 0.46700000762939453 28 8.518007e+00 6.731495e-02 * time: 0.5736539363861084 29 8.517302e+00 7.673625e-02 * time: 0.5877430438995361 30 8.516241e+00 6.200554e-02 * time: 0.6017050743103027 31 8.515526e+00 4.584172e-02 * time: 0.6155829429626465 32 8.514833e+00 6.136310e-02 * time: 0.6294019222259521 33 8.514602e+00 2.985688e-02 * time: 0.6479389667510986 34 8.514205e+00 3.781997e-02 * time: 0.6617748737335205 35 8.513718e+00 2.953043e-02 * time: 0.6756250858306885 36 8.513113e+00 3.301718e-02 * time: 0.6895098686218262 37 8.512782e+00 2.778672e-02 * time: 0.7033388614654541 38 8.512547e+00 2.329645e-02 * time: 0.7172040939331055 39 8.512357e+00 1.945132e-02 * time: 0.7309520244598389 40 8.512216e+00 1.881472e-02 * time: 0.7444770336151123 41 8.512169e+00 1.793595e-02 * time: 0.7583260536193848 42 8.512130e+00 1.458037e-02 * time: 0.7719740867614746 43 8.512057e+00 1.078752e-02 * time: 0.7857198715209961 44 8.512022e+00 1.296468e-02 * time: 0.7993419170379639 45 8.511978e+00 1.117038e-02 * time: 0.813060998916626 46 8.511954e+00 6.353316e-03 * time: 0.8264319896697998 47 8.511929e+00 8.156709e-03 * time: 0.8399059772491455 48 8.511903e+00 5.590825e-03 * time: 0.8535819053649902 49 8.511890e+00 4.846164e-03 * time: 0.8672900199890137 50 8.511880e+00 4.933957e-03 * time: 0.8811249732971191 51 8.511870e+00 3.279049e-03 * time: 0.8949649333953857 52 8.511865e+00 4.160331e-03 * time: 0.9086959362030029 53 8.511861e+00 4.479635e-03 * time: 0.9227349758148193 54 8.511856e+00 3.315607e-03 * time: 0.9366018772125244 55 8.511854e+00 2.701586e-03 * time: 0.9504499435424805 56 8.511853e+00 3.002228e-03 * time: 0.9644579887390137 57 8.511851e+00 2.254416e-03 * time: 0.9780700206756592 58 8.511849e+00 1.556914e-03 * time: 0.9918179512023926 59 8.511848e+00 1.387774e-03 * time: 1.005734920501709 60 8.511847e+00 1.052732e-03 * time: 1.0196490287780762 61 8.511847e+00 9.997167e-04 * time: 1.0338470935821533 62 8.511846e+00 7.443073e-04 * time: 1.048198938369751 63 8.511846e+00 8.770664e-04 * time: 1.0626740455627441 64 8.511846e+00 8.408076e-04 * time: 1.0770630836486816 65 8.511846e+00 6.707615e-04 * time: 1.0914089679718018 66 8.511846e+00 6.600849e-04 * time: 1.105733871459961 67 8.511846e+00 5.658636e-04 * time: 1.1200649738311768 68 8.511846e+00 4.944989e-04 * time: 1.1344590187072754 69 8.511845e+00 3.950944e-04 * time: 1.1489908695220947 70 8.511845e+00 3.166125e-04 * time: 1.1636199951171875 71 8.511845e+00 2.550969e-04 * time: 1.1782269477844238 72 8.511845e+00 2.210601e-04 * time: 1.1927909851074219 73 8.511845e+00 1.844223e-04 * time: 1.2072288990020752 74 8.511845e+00 1.614021e-04 * time: 1.221898078918457 75 8.511845e+00 1.975962e-04 * time: 1.2363760471343994 76 8.511845e+00 1.624466e-04 * time: 1.2508509159088135 77 8.511845e+00 1.355871e-04 * time: 1.2658488750457764 78 8.511845e+00 1.218384e-04 * time: 1.2809700965881348