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.099788e+01 6.116984e+00 * time: 0.004317045211791992 1 2.691010e+01 3.922713e+00 * time: 0.012609004974365234 2 2.254508e+01 6.512151e+00 * time: 0.03277111053466797 3 1.335793e+01 1.979179e+00 * time: 0.05796694755554199 4 1.205233e+01 1.203847e+00 * time: 0.07844901084899902 5 1.114881e+01 8.827009e-01 * time: 0.09951591491699219 6 1.076293e+01 1.207446e+00 * time: 0.11600708961486816 7 1.042888e+01 5.836201e-01 * time: 0.13241910934448242 8 1.013778e+01 5.526818e-01 * time: 0.14917898178100586 9 9.955479e+00 7.352275e-01 * time: 0.16536903381347656 10 9.818391e+00 6.283512e-01 * time: 0.18167710304260254 11 9.666933e+00 4.394054e-01 * time: 0.19826793670654297 12 9.540123e+00 6.213487e-01 * time: 0.21120500564575195 13 9.449217e+00 4.928176e-01 * time: 0.22431206703186035 14 9.338689e+00 5.947827e-01 * time: 0.23704004287719727 15 9.209000e+00 5.497079e-01 * time: 0.2513151168823242 16 9.061924e+00 4.757460e-01 * time: 0.2642250061035156 17 8.907827e+00 5.779805e-01 * time: 0.3481109142303467 18 8.815952e+00 4.871571e-01 * time: 0.3613889217376709 19 8.784493e+00 5.918396e-01 * time: 0.37372899055480957 20 8.749661e+00 5.343363e-01 * time: 0.386944055557251 21 8.705717e+00 4.570461e-01 * time: 0.39934611320495605 22 8.655241e+00 4.795930e-01 * time: 0.41168808937072754 23 8.610672e+00 2.811325e-01 * time: 0.4238431453704834 24 8.583581e+00 3.116545e-01 * time: 0.4360971450805664 25 8.564811e+00 1.439107e-01 * time: 0.44854307174682617 26 8.549999e+00 1.710718e-01 * time: 0.46181201934814453 27 8.531525e+00 1.076546e-01 * time: 0.4742560386657715 28 8.515105e+00 1.231673e-01 * time: 0.4868040084838867 29 8.501319e+00 1.256690e-01 * time: 0.49924397468566895 30 8.493459e+00 2.355565e-01 * time: 0.5119380950927734 31 8.483944e+00 1.467024e-01 * time: 0.524104118347168 32 8.473073e+00 1.680108e-01 * time: 0.5364689826965332 33 8.459393e+00 2.017228e-01 * time: 0.5488741397857666 34 8.447167e+00 1.013763e-01 * time: 0.5626459121704102 35 8.441930e+00 1.229784e-01 * time: 0.5749590396881104 36 8.431801e+00 1.112461e-01 * time: 0.5873849391937256 37 8.411176e+00 1.735535e-01 * time: 0.6002750396728516 38 8.385674e+00 1.209362e-01 * time: 0.6132221221923828 39 8.359474e+00 1.099458e-01 * time: 0.6256780624389648 40 8.337680e+00 1.329525e-01 * time: 0.6381571292877197 41 8.314685e+00 1.160096e-01 * time: 0.6504909992218018 42 8.287493e+00 9.857422e-02 * time: 0.6642551422119141 43 8.257994e+00 2.990935e-01 * time: 0.6774659156799316 44 8.235790e+00 1.849781e-01 * time: 0.6896250247955322 45 8.220807e+00 2.764824e-01 * time: 0.7021269798278809 46 8.210301e+00 3.131298e-01 * time: 0.714954137802124 47 8.196624e+00 2.009719e-01 * time: 0.7275559902191162 48 8.187040e+00 1.158681e-01 * time: 0.7400341033935547 49 8.184173e+00 1.363978e-01 * time: 0.7528059482574463 50 8.179223e+00 1.774656e-01 * time: 0.7675590515136719 51 8.177658e+00 1.473323e-01 * time: 0.7814490795135498 52 8.176886e+00 9.391334e-02 * time: 0.7966580390930176 53 8.175235e+00 1.017094e-01 * time: 0.8118901252746582 54 8.174395e+00 3.558007e-02 * time: 0.8943359851837158 55 8.174395e+00 3.243617e-02 * time: 0.9147469997406006 56 8.173836e+00 5.044451e-02 * time: 0.9272620677947998 57 8.173836e+00 5.044451e-02 * time: 1.0395660400390625