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.107107e+01 7.291843e+00 * time: 0.004687786102294922 1 2.876062e+01 5.700959e+00 * time: 0.013830900192260742 2 2.304645e+01 8.538451e+00 * time: 0.035635948181152344 3 1.369228e+01 3.329003e+00 * time: 0.06287288665771484 4 1.344589e+01 4.949706e+00 * time: 0.07953095436096191 5 1.267577e+01 2.016079e+00 * time: 0.09606385231018066 6 1.030306e+01 1.828672e+00 * time: 0.11199092864990234 7 9.804730e+00 1.001051e+00 * time: 0.12796688079833984 8 9.348828e+00 1.100985e+00 * time: 0.14391088485717773 9 9.085456e+00 9.168852e-01 * time: 0.16001176834106445 10 8.894131e+00 5.946768e-01 * time: 0.17604899406433105 11 8.780160e+00 5.250814e-01 * time: 0.18827080726623535 12 8.722700e+00 5.630382e-01 * time: 0.20036077499389648 13 8.643762e+00 3.687352e-01 * time: 0.2127208709716797 14 8.596611e+00 2.993913e-01 * time: 0.2248549461364746 15 8.579058e+00 1.886540e-01 * time: 0.23724794387817383 16 8.569429e+00 1.507300e-01 * time: 0.24960684776306152 17 8.558628e+00 1.775237e-01 * time: 0.26216983795166016 18 8.552135e+00 1.312452e-01 * time: 0.27478480339050293 19 8.548353e+00 1.458555e-01 * time: 0.3371129035949707 20 8.537814e+00 1.403037e-01 * time: 0.34923481941223145 21 8.536068e+00 1.913872e-01 * time: 0.36132287979125977 22 8.533663e+00 1.213611e-01 * time: 0.3736109733581543 23 8.531155e+00 1.087756e-01 * time: 0.3859109878540039 24 8.528869e+00 8.732103e-02 * time: 0.39804577827453613 25 8.525036e+00 7.347369e-02 * time: 0.41023993492126465 26 8.523419e+00 6.792758e-02 * time: 0.42258691787719727 27 8.522093e+00 8.064870e-02 * time: 0.43480682373046875 28 8.519904e+00 9.278107e-02 * time: 0.4468247890472412 29 8.518735e+00 6.592605e-02 * time: 0.45891880989074707 30 8.517826e+00 5.937242e-02 * time: 0.4708578586578369 31 8.516552e+00 6.000060e-02 * time: 0.48300695419311523 32 8.515120e+00 7.825918e-02 * time: 0.4949328899383545 33 8.514677e+00 5.167538e-02 * time: 0.5069518089294434 34 8.514196e+00 5.071020e-02 * time: 0.5190749168395996 35 8.513556e+00 3.271990e-02 * time: 0.5310459136962891 36 8.512923e+00 2.751282e-02 * time: 0.5431389808654785 37 8.512733e+00 3.217487e-02 * time: 0.5551638603210449 38 8.512515e+00 2.426274e-02 * time: 0.567166805267334 39 8.512408e+00 1.659509e-02 * time: 0.5791699886322021 40 8.512355e+00 1.780821e-02 * time: 0.5912129878997803 41 8.512252e+00 1.697188e-02 * time: 0.6032118797302246 42 8.512147e+00 1.524332e-02 * time: 0.6154689788818359 43 8.512066e+00 1.338087e-02 * time: 0.6278908252716064 44 8.512043e+00 1.209438e-02 * time: 0.6402428150177002 45 8.512022e+00 1.011911e-02 * time: 0.6899709701538086 46 8.511975e+00 8.841898e-03 * time: 0.7020578384399414 47 8.511932e+00 7.106516e-03 * time: 0.7141478061676025 48 8.511911e+00 8.613331e-03 * time: 0.7266199588775635 49 8.511889e+00 8.436513e-03 * time: 0.7390577793121338 50 8.511876e+00 4.374544e-03 * time: 0.7510759830474854 51 8.511871e+00 4.957880e-03 * time: 0.7632238864898682 52 8.511863e+00 4.498580e-03 * time: 0.7753629684448242 53 8.511857e+00 3.170509e-03 * time: 0.7872359752655029 54 8.511854e+00 2.437927e-03 * time: 0.7992448806762695 55 8.511853e+00 2.246858e-03 * time: 0.8112249374389648 56 8.511853e+00 3.645975e-03 * time: 0.823185920715332 57 8.511851e+00 2.312424e-03 * time: 0.8352530002593994 58 8.511849e+00 1.738604e-03 * time: 0.8471779823303223 59 8.511848e+00 1.317958e-03 * time: 0.8592209815979004 60 8.511848e+00 8.898985e-04 * time: 0.8712368011474609 61 8.511847e+00 1.677463e-03 * time: 0.883171796798706 62 8.511847e+00 1.617500e-03 * time: 0.895258903503418 63 8.511846e+00 1.070956e-03 * time: 0.9072108268737793 64 8.511846e+00 9.476841e-04 * time: 0.9191999435424805 65 8.511846e+00 7.572531e-04 * time: 0.9311749935150146 66 8.511846e+00 6.234727e-04 * time: 0.9431848526000977 67 8.511846e+00 6.651777e-04 * time: 0.9551668167114258 68 8.511846e+00 5.189622e-04 * time: 0.9671077728271484 69 8.511845e+00 4.145397e-04 * time: 0.9792499542236328 70 8.511845e+00 3.287611e-04 * time: 1.0219318866729736 71 8.511845e+00 3.203461e-04 * time: 1.0339758396148682 72 8.511845e+00 2.453704e-04 * time: 1.0459418296813965 73 8.511845e+00 2.266407e-04 * time: 1.0580909252166748 74 8.511845e+00 2.465120e-04 * time: 1.070326805114746 75 8.511845e+00 1.801527e-04 * time: 1.0823619365692139 76 8.511845e+00 1.499721e-04 * time: 1.0944569110870361 77 8.511845e+00 1.511243e-04 * time: 1.1066389083862305 78 8.511845e+00 1.294225e-04 * time: 1.1186778545379639 79 8.511845e+00 1.227820e-04 * time: 1.1305859088897705