Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
M
MeanFi
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Quantum Tinkerer
MeanFi
Commits
52f36c5d
Commit
52f36c5d
authored
11 months ago
by
Johanna Zijderveld
Browse files
Options
Downloads
Patches
Plain Diff
delete another unused example file
parent
eeecb4c7
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!4
Interface refactoring
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
examples/testInterface.ipynb
+0
-106
0 additions, 106 deletions
examples/testInterface.ipynb
with
0 additions
and
106 deletions
examples/testInterface.ipynb
deleted
100644 → 0
+
0
−
106
View file @
eeecb4c7
{
"cells": [
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"from codes.tb.transforms import tb2kfunc\n",
"from codes.model import Model\n",
"import numpy as np\n",
"from codes.solvers import solver"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# 1D\n",
"filling = 2\n",
"\n",
"hopp = np.kron(np.array([[0, 1], [0, 0]]), np.eye(2))\n",
"h_0 = {(0, ): hopp + hopp.T.conj(), (1,): hopp, (-1,): hopp.T.conj()}\n",
"h_int = {\n",
" (0,): 4 * np.kron(np.eye(2), np.ones((2, 2))),\n",
"}\n",
"\n",
"\n",
"guess = np.random.rand(4, 4) * np.exp(1j * 2 * np.pi * np.random.rand(4, 4))\n",
"guess += guess.T.conj()\n",
"guess /= 2\n",
"mf_model = {(0,) : guess}\n",
"tb = Model(h_0, h_int, filling)\n",
"mf_sol = solver(tb, mf_model, nK=100)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[16], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m mf_model \u001b[38;5;241m=\u001b[39m {(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0\u001b[39m) : guess}\n\u001b[1;32m 9\u001b[0m tb \u001b[38;5;241m=\u001b[39m Model(h_0, h_int, filling)\n\u001b[0;32m---> 10\u001b[0m mf_sol \u001b[38;5;241m=\u001b[39m \u001b[43msolver\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmf_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnK\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m20\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# does not converge as fast, something is wrong in 2D\u001b[39;00m\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/solvers.py:59\u001b[0m, in \u001b[0;36msolver\u001b[0;34m(Model, mf_guess, nK, optimizer, optimizer_kwargs)\u001b[0m\n\u001b[1;32m 56\u001b[0m mf_params \u001b[38;5;241m=\u001b[39m mf2rParams(mf_guess)\n\u001b[1;32m 57\u001b[0m f \u001b[38;5;241m=\u001b[39m partial(cost, Model\u001b[38;5;241m=\u001b[39mModel, nK\u001b[38;5;241m=\u001b[39mnK)\n\u001b[1;32m 58\u001b[0m result \u001b[38;5;241m=\u001b[39m rParams2mf(\n\u001b[0;32m---> 59\u001b[0m \u001b[43moptimizer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmf_params\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43moptimizer_kwargs\u001b[49m\u001b[43m)\u001b[49m, \u001b[38;5;28mlist\u001b[39m(Model\u001b[38;5;241m.\u001b[39mh_int), shape\n\u001b[1;32m 60\u001b[0m )\n\u001b[1;32m 61\u001b[0m Model\u001b[38;5;241m.\u001b[39mcalculateEF(nK\u001b[38;5;241m=\u001b[39mnK)\n\u001b[1;32m 62\u001b[0m local_key \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtuple\u001b[39m(np\u001b[38;5;241m.\u001b[39mzeros((Model\u001b[38;5;241m.\u001b[39m_ndim,), dtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mint\u001b[39m))\n",
"File \u001b[0;32m<string>:6\u001b[0m, in \u001b[0;36manderson\u001b[0;34m(F, xin, iter, alpha, w0, M, verbose, maxiter, f_tol, f_rtol, x_tol, x_rtol, tol_norm, line_search, callback, **kw)\u001b[0m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:214\u001b[0m, in \u001b[0;36mnonlin_solve\u001b[0;34m(F, x0, jacobian, iter, verbose, maxiter, f_tol, f_rtol, x_tol, x_rtol, tol_norm, line_search, callback, full_output, raise_exception)\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[38;5;66;03m# Line search, or Newton step\u001b[39;00m\n\u001b[1;32m 213\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m line_search:\n\u001b[0;32m--> 214\u001b[0m s, x, Fx, Fx_norm_new \u001b[38;5;241m=\u001b[39m \u001b[43m_nonlin_line_search\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mFx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdx\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 215\u001b[0m \u001b[43m \u001b[49m\u001b[43mline_search\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 217\u001b[0m s \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1.0\u001b[39m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:293\u001b[0m, in \u001b[0;36m_nonlin_line_search\u001b[0;34m(func, x, Fx, dx, search_type, rdiff, smin)\u001b[0m\n\u001b[1;32m 290\u001b[0m s, phi1, phi0 \u001b[38;5;241m=\u001b[39m scalar_search_wolfe1(phi, derphi, tmp_phi[\u001b[38;5;241m0\u001b[39m],\n\u001b[1;32m 291\u001b[0m xtol\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1e-2\u001b[39m, amin\u001b[38;5;241m=\u001b[39msmin)\n\u001b[1;32m 292\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m search_type \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124marmijo\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m--> 293\u001b[0m s, phi1 \u001b[38;5;241m=\u001b[39m \u001b[43mscalar_search_armijo\u001b[49m\u001b[43m(\u001b[49m\u001b[43mphi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtmp_phi\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43mtmp_phi\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 294\u001b[0m \u001b[43m \u001b[49m\u001b[43mamin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msmin\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 296\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m s \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 297\u001b[0m \u001b[38;5;66;03m# XXX: No suitable step length found. Take the full Newton step,\u001b[39;00m\n\u001b[1;32m 298\u001b[0m \u001b[38;5;66;03m# and hope for the best.\u001b[39;00m\n\u001b[1;32m 299\u001b[0m s \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1.0\u001b[39m\n",
"File \u001b[0;32m~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_linesearch.py:692\u001b[0m, in \u001b[0;36mscalar_search_armijo\u001b[0;34m(phi, phi0, derphi0, c1, alpha0, amin)\u001b[0m\n\u001b[1;32m 678\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mscalar_search_armijo\u001b[39m(phi, phi0, derphi0, c1\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1e-4\u001b[39m, alpha0\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, amin\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m):\n\u001b[1;32m 679\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Minimize over alpha, the function ``phi(alpha)``.\u001b[39;00m\n\u001b[1;32m 680\u001b[0m \n\u001b[1;32m 681\u001b[0m \u001b[38;5;124;03m Uses the interpolation algorithm (Armijo backtracking) as suggested by\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 690\u001b[0m \n\u001b[1;32m 691\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 692\u001b[0m phi_a0 \u001b[38;5;241m=\u001b[39m \u001b[43mphi\u001b[49m\u001b[43m(\u001b[49m\u001b[43malpha0\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 693\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m phi_a0 \u001b[38;5;241m<\u001b[39m\u001b[38;5;241m=\u001b[39m phi0 \u001b[38;5;241m+\u001b[39m c1\u001b[38;5;241m*\u001b[39malpha0\u001b[38;5;241m*\u001b[39mderphi0:\n\u001b[1;32m 694\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m alpha0, phi_a0\n",
"File \u001b[0;32m~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:277\u001b[0m, in \u001b[0;36m_nonlin_line_search.<locals>.phi\u001b[0;34m(s, store)\u001b[0m\n\u001b[1;32m 275\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m tmp_phi[\u001b[38;5;241m0\u001b[39m]\n\u001b[1;32m 276\u001b[0m xt \u001b[38;5;241m=\u001b[39m x \u001b[38;5;241m+\u001b[39m s\u001b[38;5;241m*\u001b[39mdx\n\u001b[0;32m--> 277\u001b[0m v \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mxt\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 278\u001b[0m p \u001b[38;5;241m=\u001b[39m _safe_norm(v)\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m\n\u001b[1;32m 279\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m store:\n",
"File \u001b[0;32m~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:168\u001b[0m, in \u001b[0;36mnonlin_solve.<locals>.func\u001b[0;34m(z)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfunc\u001b[39m(z):\n\u001b[0;32m--> 168\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _as_inexact(\u001b[43mF\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_array_like\u001b[49m\u001b[43m(\u001b[49m\u001b[43mz\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx0\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m)\u001b[38;5;241m.\u001b[39mflatten()\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/solvers.py:25\u001b[0m, in \u001b[0;36mcost\u001b[0;34m(mf_param, Model, nK)\u001b[0m\n\u001b[1;32m 23\u001b[0m shape \u001b[38;5;241m=\u001b[39m Model\u001b[38;5;241m.\u001b[39m_size\n\u001b[1;32m 24\u001b[0m mf_tb \u001b[38;5;241m=\u001b[39m rParams2mf(mf_param, \u001b[38;5;28mlist\u001b[39m(Model\u001b[38;5;241m.\u001b[39mh_int), shape)\n\u001b[0;32m---> 25\u001b[0m mf_tb_new \u001b[38;5;241m=\u001b[39m \u001b[43mModel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmfieldFFT\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmf_tb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnK\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnK\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 26\u001b[0m mf_params_new \u001b[38;5;241m=\u001b[39m mf2rParams(mf_tb_new)\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m mf_params_new \u001b[38;5;241m-\u001b[39m mf_param\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/model.py:34\u001b[0m, in \u001b[0;36mModel.mfieldFFT\u001b[0;34m(self, mf_model, nK)\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmfieldFFT\u001b[39m(\u001b[38;5;28mself\u001b[39m, mf_model, nK\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m200\u001b[39m):\n\u001b[0;32m---> 34\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdensity_matrix \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmakedensity_matrix\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmf_model\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m addTb(\n\u001b[1;32m 36\u001b[0m meanFieldFFT(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdensity_matrix, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mh_int, n\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ndim, nK\u001b[38;5;241m=\u001b[39mnK),\n\u001b[1;32m 37\u001b[0m {\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_local_key: \u001b[38;5;241m-\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mEF \u001b[38;5;241m*\u001b[39m np\u001b[38;5;241m.\u001b[39meye(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_size)},\n\u001b[1;32m 38\u001b[0m )\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/model.py:20\u001b[0m, in \u001b[0;36mModel.makedensity_matrix\u001b[0;34m(self, mf_model, nK)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmakedensity_matrix\u001b[39m(\u001b[38;5;28mself\u001b[39m, mf_model, nK\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m200\u001b[39m):\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhkfunc \u001b[38;5;241m=\u001b[39m tb2kfunc(addTb(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mh_0, mf_model))\n\u001b[0;32m---> 20\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcalculateEF\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnK\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnK\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m density_matrixGenerator(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhkfunc, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mEF)\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/model.py:24\u001b[0m, in \u001b[0;36mModel.calculateEF\u001b[0;34m(self, nK)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcalculateEF\u001b[39m(\u001b[38;5;28mself\u001b[39m, nK\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m200\u001b[39m):\n\u001b[0;32m---> 24\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mEF \u001b[38;5;241m=\u001b[39m \u001b[43mfermi_on_grid\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhkfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfilling\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnK\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnK\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mndim\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_ndim\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/mf.py:54\u001b[0m, in \u001b[0;36mfermi_on_grid\u001b[0;34m(hkfunc, filling, nK, ndim)\u001b[0m\n\u001b[1;32m 52\u001b[0m hkarray \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([hkfunc(k) \u001b[38;5;28;01mfor\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m ks])\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[0;32m---> 54\u001b[0m hkarray \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray(\u001b[43m[\u001b[49m\u001b[43m[\u001b[49m\u001b[43mhkfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mky\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkx\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mks\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mky\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mks\u001b[49m\u001b[43m]\u001b[49m)\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m ndim \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFermi energy calculation is not implemented for ndim > 2\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/mf.py:54\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 52\u001b[0m hkarray \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([hkfunc(k) \u001b[38;5;28;01mfor\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m ks])\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[0;32m---> 54\u001b[0m hkarray \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([\u001b[43m[\u001b[49m\u001b[43mhkfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mky\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkx\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mks\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m ky \u001b[38;5;129;01min\u001b[39;00m ks])\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m ndim \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFermi energy calculation is not implemented for ndim > 2\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/mf.py:54\u001b[0m, in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 52\u001b[0m hkarray \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([hkfunc(k) \u001b[38;5;28;01mfor\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m ks])\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[0;32m---> 54\u001b[0m hkarray \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([[\u001b[43mhkfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mky\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m kx \u001b[38;5;129;01min\u001b[39;00m ks] \u001b[38;5;28;01mfor\u001b[39;00m ky \u001b[38;5;129;01min\u001b[39;00m ks])\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m ndim \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m2\u001b[39m:\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFermi energy calculation is not implemented for ndim > 2\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
"File \u001b[0;32m~/Projects/kwant-scf/examples/codes/tb/transforms.py:24\u001b[0m, in \u001b[0;36mtb2kfunc.<locals>.bloch_ham\u001b[0;34m(k)\u001b[0m\n\u001b[1;32m 22\u001b[0m ham \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m vector \u001b[38;5;129;01min\u001b[39;00m h_0\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m---> 24\u001b[0m ham \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m h_0[vector] \u001b[38;5;241m*\u001b[39m np\u001b[38;5;241m.\u001b[39mexp(\n\u001b[1;32m 25\u001b[0m \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39mj \u001b[38;5;241m*\u001b[39m np\u001b[38;5;241m.\u001b[39mdot(k, np\u001b[38;5;241m.\u001b[39marray(vector, dtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mfloat\u001b[39m))\n\u001b[1;32m 26\u001b[0m )\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ham\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"# 2D\n",
"hopp = np.kron(np.array([[0, 1], [0, 0]]), np.eye(2))\n",
"h_0 = {(0, 0): hopp + hopp.T.conj(), (1, 0): hopp, (-1, 0 ): hopp.T.conj(), (0, 1): hopp, (0, -1): hopp.T.conj()}\n",
"h_int = {\n",
" (0, 0): 2 * np.kron(np.eye(2), np.ones((2, 2))),\n",
"}\n",
"\n",
"mf_model = {(0, 0) : guess}\n",
"tb = Model(h_0, h_int, filling)\n",
"mf_sol = solver(tb, mf_model, nK=20) # does not run as fast, something is wrong in 2D"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
%% Cell type:code id: tags:
```
python
from
codes.tb.transforms
import
tb2kfunc
from
codes.model
import
Model
import
numpy
as
np
from
codes.solvers
import
solver
```
%% Cell type:code id: tags:
```
python
# 1D
filling
=
2
hopp
=
np
.
kron
(
np
.
array
([[
0
,
1
],
[
0
,
0
]]),
np
.
eye
(
2
))
h_0
=
{(
0
,
):
hopp
+
hopp
.
T
.
conj
(),
(
1
,):
hopp
,
(
-
1
,):
hopp
.
T
.
conj
()}
h_int
=
{
(
0
,):
4
*
np
.
kron
(
np
.
eye
(
2
),
np
.
ones
((
2
,
2
))),
}
guess
=
np
.
random
.
rand
(
4
,
4
)
*
np
.
exp
(
1j
*
2
*
np
.
pi
*
np
.
random
.
rand
(
4
,
4
))
guess
+=
guess
.
T
.
conj
()
guess
/=
2
mf_model
=
{(
0
,)
:
guess
}
tb
=
Model
(
h_0
,
h_int
,
filling
)
mf_sol
=
solver
(
tb
,
mf_model
,
nK
=
100
)
```
%% Cell type:code id: tags:
```
python
# 2D
hopp
=
np
.
kron
(
np
.
array
([[
0
,
1
],
[
0
,
0
]]),
np
.
eye
(
2
))
h_0
=
{(
0
,
0
):
hopp
+
hopp
.
T
.
conj
(),
(
1
,
0
):
hopp
,
(
-
1
,
0
):
hopp
.
T
.
conj
(),
(
0
,
1
):
hopp
,
(
0
,
-
1
):
hopp
.
T
.
conj
()}
h_int
=
{
(
0
,
0
):
2
*
np
.
kron
(
np
.
eye
(
2
),
np
.
ones
((
2
,
2
))),
}
mf_model
=
{(
0
,
0
)
:
guess
}
tb
=
Model
(
h_0
,
h_int
,
filling
)
mf_sol
=
solver
(
tb
,
mf_model
,
nK
=
20
)
# does not run as fast, something is wrong in 2D
```
%% Output
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
Cell In[16], line 10
8 mf_model = {(0, 0) : guess}
9 tb = Model(h_0, h_int, filling)
---> 10 mf_sol = solver(tb, mf_model, nK=20) # does not converge as fast, something is wrong in 2D
File ~/Projects/kwant-scf/examples/codes/solvers.py:59, in solver(Model, mf_guess, nK, optimizer, optimizer_kwargs)
56 mf_params = mf2rParams(mf_guess)
57 f = partial(cost, Model=Model, nK=nK)
58 result = rParams2mf(
---> 59 optimizer(f, mf_params,
**
optimizer_kwargs), list(Model.h_int), shape
60 )
61 Model.calculateEF(nK=nK)
62 local_key = tuple(np.zeros((Model._ndim,), dtype=int))
File
<string>
:6, in anderson(F, xin, iter, alpha, w0, M, verbose, maxiter, f_tol, f_rtol, x_tol, x_rtol, tol_norm, line_search, callback,
**
kw)
File ~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:214, in nonlin_solve(F, x0, jacobian, iter, verbose, maxiter, f_tol, f_rtol, x_tol, x_rtol, tol_norm, line_search, callback, full_output, raise_exception)
212 # Line search, or Newton step
213 if line_search:
--> 214 s, x, Fx, Fx_norm_new = _nonlin_line_search(func, x, Fx, dx,
215 line_search)
216 else:
217 s = 1.0
File ~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:293, in _nonlin_line_search(func, x, Fx, dx, search_type, rdiff, smin)
290 s, phi1, phi0 = scalar_search_wolfe1(phi, derphi, tmp_phi[0],
291 xtol=1e-2, amin=smin)
292 elif search_type == 'armijo':
--> 293 s, phi1 = scalar_search_armijo(phi, tmp_phi[0], -tmp_phi[0],
294 amin=smin)
296 if s is None:
297 # XXX: No suitable step length found. Take the full Newton step,
298 # and hope for the best.
299 s = 1.0
File ~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_linesearch.py:692, in scalar_search_armijo(phi, phi0, derphi0, c1, alpha0, amin)
678 def scalar_search_armijo(phi, phi0, derphi0, c1=1e-4, alpha0=1, amin=0):
679 """Minimize over alpha, the function
``phi(alpha)``
.
680
681 Uses the interpolation algorithm (Armijo backtracking) as suggested by
(...)
690
691 """
--> 692 phi_a0 = phi(alpha0)
693 if phi_a0 <= phi0 + c1
*alpha0*
derphi0:
694 return alpha0, phi_a0
File ~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:277, in _nonlin_line_search.
<locals>
.phi(s, store)
275 return tmp_phi[0]
276 xt = x + s
*
dx
--> 277 v = func(xt)
278 p = _safe_norm(v)
**
2
279 if store:
File ~/mambaforge/lib/python3.11/site-packages/scipy/optimize/_nonlin.py:168, in nonlin_solve.
<locals>
.func(z)
167 def func(z):
--> 168 return _as_inexact(F(_array_like(z, x0))).flatten()
File ~/Projects/kwant-scf/examples/codes/solvers.py:25, in cost(mf_param, Model, nK)
23 shape = Model._size
24 mf_tb = rParams2mf(mf_param, list(Model.h_int), shape)
---> 25 mf_tb_new = Model.mfieldFFT(mf_tb, nK=nK)
26 mf_params_new = mf2rParams(mf_tb_new)
27 return mf_params_new - mf_param
File ~/Projects/kwant-scf/examples/codes/model.py:34, in Model.mfieldFFT(self, mf_model, nK)
33 def mfieldFFT(self, mf_model, nK=200):
---> 34 self.density_matrix = self.makedensity_matrix(mf_model)
35 return addTb(
36 meanFieldFFT(self.density_matrix, self.h_int, n=self._ndim, nK=nK),
37 {self._local_key: -self.EF
*
np.eye(self._size)},
38 )
File ~/Projects/kwant-scf/examples/codes/model.py:20, in Model.makedensity_matrix(self, mf_model, nK)
18 def makedensity_matrix(self, mf_model, nK=200):
19 self.hkfunc = tb2kfunc(addTb(self.h_0, mf_model))
---> 20 self.calculateEF(nK=nK)
21 return density_matrixGenerator(self.hkfunc, self.EF)
File ~/Projects/kwant-scf/examples/codes/model.py:24, in Model.calculateEF(self, nK)
23 def calculateEF(self, nK=200):
---> 24 self.EF = fermi_on_grid(self.hkfunc, self.filling, nK=nK, ndim=self._ndim)
File ~/Projects/kwant-scf/examples/codes/mf.py:54, in fermi_on_grid(hkfunc, filling, nK, ndim)
52 hkarray = np.array([hkfunc(k) for k in ks])
53 if ndim == 2:
---> 54 hkarray = np.array([[hkfunc((kx, ky)) for kx in ks] for ky in ks])
55 elif ndim > 2:
56 raise NotImplementedError("Fermi energy calculation is not implemented for ndim > 2")
File ~/Projects/kwant-scf/examples/codes/mf.py:54, in
<listcomp>
(.0)
52 hkarray = np.array([hkfunc(k) for k in ks])
53 if ndim == 2:
---> 54 hkarray = np.array([[hkfunc((kx, ky)) for kx in ks] for ky in ks])
55 elif ndim > 2:
56 raise NotImplementedError("Fermi energy calculation is not implemented for ndim > 2")
File ~/Projects/kwant-scf/examples/codes/mf.py:54, in
<listcomp>
(.0)
52 hkarray = np.array([hkfunc(k) for k in ks])
53 if ndim == 2:
---> 54 hkarray = np.array([[hkfunc((kx, ky)) for kx in ks] for ky in ks])
55 elif ndim > 2:
56 raise NotImplementedError("Fermi energy calculation is not implemented for ndim > 2")
File ~/Projects/kwant-scf/examples/codes/tb/transforms.py:24, in tb2kfunc.
<locals>
.bloch_ham(k)
22 ham = 0
23 for vector in h_0.keys():
---> 24 ham += h_0[vector]
*
np.exp(
25 -1j
*
np.dot(k, np.array(vector, dtype=float))
26 )
27 return ham
KeyboardInterrupt:
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment