{"id":24786,"date":"2025-12-19T17:09:54","date_gmt":"2025-12-19T16:09:54","guid":{"rendered":"https:\/\/info.gwdg.de\/news\/?p=24786"},"modified":"2026-01-15T19:13:27","modified_gmt":"2026-01-15T18:13:27","slug":"quantum-computing-for-condensed-matter-physics","status":"publish","type":"post","link":"https:\/\/info.gwdg.de\/news\/quantum-computing-for-condensed-matter-physics\/","title":{"rendered":"Quantum Computing for Condensed Matter Physics"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" lang=\"\" xml:lang=\"\"><br \/>\n<head><br \/>\n  <meta charset=\"utf-8\" \/><br \/>\n  <meta name=\"generator\" content=\"pandoc\" \/><br \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\" \/><br \/>\n  <!-- <title>20251217_quics-openfermion-use-case<\/title> --><\/p>\n<style>\n    \/* Default styles provided by pandoc.\n    ** See https:\/\/pandoc.org\/MANUAL.html#variables-for-html for config info.\n    *\/\n    html {\n      color: #1a1a1a;\n      background-color: #fdfdfd;\n    }\n    \/* body { *\/\n    \/*   margin: 0 auto; *\/\n    \/*   max-width: 36em; *\/\n    \/*   padding-left: 50px; *\/\n    \/*   padding-right: 50px; *\/\n    \/*   padding-top: 50px; *\/\n    \/*   padding-bottom: 50px; *\/\n    \/*   hyphens: auto; *\/\n    \/*   overflow-wrap: break-word; *\/\n    \/*   text-rendering: optimizeLegibility; *\/\n    \/*   font-kerning: normal; *\/\n    \/* } *\/\n    \/* @media (max-width: 600px) { *\/\n    \/*   body { *\/\n    \/*     font-size: 0.9em; *\/\n    \/*     padding: 12px; *\/\n    \/*   } *\/\n    \/*   h1 { *\/\n    \/*     font-size: 1.8em; *\/\n    \/*   } *\/\n    \/* } *\/\n    @media print {\n      html {\n        background-color: white;\n      }\n      body {\n        background-color: transparent;\n        color: black;\n        font-size: 12pt;\n      }\n      p, h2, h3 {\n        orphans: 3;\n        widows: 3;\n      }\n      h2, h3, h4 {\n        page-break-after: avoid;\n      }\n    }\n    p {\n      margin: 1em 0;\n    }\n    a {\n      color: #1a1a1a;\n    }\n    a:visited {\n      color: #1a1a1a;\n    }\n    img {\n      max-width: 100%;\n    }\n    svg {\n      height: auto;\n      max-width: 100%;\n    }\n    h1, h2, h3, h4, h5, h6 {\n      margin-top: 1.4em;\n    }\n    h5, h6 {\n      font-size: 1em;\n      font-style: italic;\n    }\n    h6 {\n      font-weight: normal;\n    }\n    ol, ul {\n      padding-left: 1.7em;\n      margin-top: 1em;\n    }\n    li > ol, li > ul {\n      margin-top: 0;\n    }\n    blockquote {\n      margin: 1em 0 1em 1.7em;\n      padding-left: 1em;\n      border-left: 2px solid #e6e6e6;\n      color: #606060;\n    }\n    code {\n      font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;\n      font-size: 85%;\n      margin: 0;\n      hyphens: manual;\n    }\n    pre {\n      margin: 1em 0;\n      overflow: auto;\n    }\n    pre code {\n      padding: 0;\n      overflow: visible;\n      overflow-wrap: normal;\n    }\n    .sourceCode {\n     background-color: transparent;\n     overflow: visible;\n    }\n    hr {\n      border: none;\n      border-top: 1px solid #1a1a1a;\n      height: 1px;\n      margin: 1em 0;\n    }\n    table {\n      margin: 1em 0;\n      border-collapse: collapse;\n      width: 100%;\n      overflow-x: auto;\n      display: block;\n      font-variant-numeric: lining-nums tabular-nums;\n    }\n    table caption {\n      margin-bottom: 0.75em;\n    }\n    tbody {\n      margin-top: 0.5em;\n      border-top: 1px solid #1a1a1a;\n      border-bottom: 1px solid #1a1a1a;\n    }\n    th {\n      border-top: 1px solid #1a1a1a;\n      padding: 0.25em 0.5em 0.25em 0.5em;\n    }\n    td {\n      padding: 0.125em 0.5em 0.25em 0.5em;\n    }\n    header {\n      margin-bottom: 4em;\n      text-align: left;\n    }\n    #TOC li {\n      list-style: none;\n    }\n    #TOC ul {\n      padding-left: 1.3em;\n    }\n    #TOC > ul {\n      padding-left: 0;\n    }\n    #TOC a:not(:hover) {\n      text-decoration: none;\n    }\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    div.columns{display: flex; gap: min(4vw, 1.5em);}\n    div.column{flex: auto; overflow-x: auto;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    \/* The extra [class] is a hack that increases specificity enough to\n       override a similar rule in reveal.js *\/\n    ul.task-list[class]{list-style: none;}\n    ul.task-list li input[type=\"checkbox\"] {\n      font-size: inherit;\n      width: 0.8em;\n      margin: 0 0.8em 0.2em -1.6em;\n      vertical-align: middle;\n    }\n    \/* CSS for syntax highlighting *\/\n    html { -webkit-text-size-adjust: 100%; }\n    pre > code.sourceCode { white-space: pre; position: relative; }\n    pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }\n    pre > code.sourceCode > span:empty { height: 1.2em; }\n    .sourceCode { overflow: visible; }\n    code.sourceCode > span { color: inherit; text-decoration: inherit; }\n    div.sourceCode { margin: 1em 0; }\n    pre.sourceCode { margin: 0; }\n    @media screen {\n    div.sourceCode { overflow: auto; }\n    }\n    @media print {\n    pre > code.sourceCode { white-space: pre-wrap; }\n    pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }\n    }\n    pre.numberSource code\n      { counter-reset: source-line 0; }\n    pre.numberSource code > span\n      { position: relative; left: -4em; counter-increment: source-line; }\n    pre.numberSource code > span > a:first-child::before\n      { content: counter(source-line);\n        position: relative; left: -1em; text-align: right; vertical-align: baseline;\n        border: none; display: inline-block;\n        -webkit-touch-callout: none; -webkit-user-select: none;\n        -khtml-user-select: none; -moz-user-select: none;\n        -ms-user-select: none; user-select: none;\n        padding: 0 4px; width: 4em;\n        color: #aaaaaa;\n      }\n    pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }\n    div.sourceCode\n      {  background-color: #f8f8f8; }\n    @media screen {\n    pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }\n    }\n    code span.al { color: #ef2929; } \/* Alert *\/\n    code span.an { color: #8f5902; font-weight: bold; font-style: italic; } \/* Annotation *\/\n    code span.at { color: #204a87; } \/* Attribute *\/\n    code span.bn { color: #0000cf; } \/* BaseN *\/\n    code span.cf { color: #204a87; font-weight: bold; } \/* ControlFlow *\/\n    code span.ch { color: #4e9a06; } \/* Char *\/\n    code span.cn { color: #8f5902; } \/* Constant *\/\n    code span.co { color: #8f5902; font-style: italic; } \/* Comment *\/\n    code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } \/* CommentVar *\/\n    code span.do { color: #8f5902; font-weight: bold; font-style: italic; } \/* Documentation *\/\n    code span.dt { color: #204a87; } \/* DataType *\/\n    code span.dv { color: #0000cf; } \/* DecVal *\/\n    code span.er { color: #a40000; font-weight: bold; } \/* Error *\/\n    code span.ex { } \/* Extension *\/\n    code span.fl { color: #0000cf; } \/* Float *\/\n    code span.fu { color: #204a87; font-weight: bold; } \/* Function *\/\n    code span.im { } \/* Import *\/\n    code span.in { color: #8f5902; font-weight: bold; font-style: italic; } \/* Information *\/\n    code span.kw { color: #204a87; font-weight: bold; } \/* Keyword *\/\n    code span.op { color: #ce5c00; font-weight: bold; } \/* Operator *\/\n    code span.ot { color: #8f5902; } \/* Other *\/\n    code span.pp { color: #8f5902; font-style: italic; } \/* Preprocessor *\/\n    code span.sc { color: #ce5c00; font-weight: bold; } \/* SpecialChar *\/\n    code span.ss { color: #4e9a06; } \/* SpecialString *\/\n    code span.st { color: #4e9a06; } \/* String *\/\n    code span.va { color: #000000; } \/* Variable *\/\n    code span.vs { color: #4e9a06; } \/* VerbatimString *\/\n    code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } \/* Warning *\/\n  <\/style>\n<p>  <script defer=\"\"\n  src=\"https:\/\/cdn.jsdelivr.net\/npm\/mathjax@3\/es5\/tex-chtml-full.js\"\n  type=\"text\/javascript\"><\/script><br \/>\n<\/head><br \/>\n<body><br \/>\n<!-- \n\n<h1 id=\"quantum-computing-for-condensed-matter-physics\">Quantum --><br \/>\n<!-- Computing for Condensed Matter Physics<\/h1>\n\n --><\/p>\n<p>In this blog post, we aim to encourage the use of quantum computing<br \/>\nin quantum many-body-physics. This post is published in the context of<br \/>\nthe QUICS project, which is a joint project of the Gesellschaft f\u00fcr<br \/>\nwissenschaftliche Datenverarbeitung G\u00f6ttingen, the Leibniz University<br \/>\nHannover, and the Physikalisch-Technische Bundesanstalt. The Federal<br \/>\nMinistry of Research, Technology and Space (BMFTR) funds QUICS to<br \/>\nprovide consultation and low-threshold access to different quantum<br \/>\nhardware and software for testing practical use cases, especially for<br \/>\nsmall and medium enterprises. For more information contact us at <a\nhref=\"mailto:quics-info@gwdg.de\">quics-info@gwdg.de<\/a>.<\/p>\n<p>To this end, we present the OpenFermion Python library. The main goal<br \/>\nof this library is to bridge the gap between quantum algorithm<br \/>\ndevelopers and quantum chemists and physicists. In their library, the<br \/>\ndevelopers intend to facilitate the development of algorithms for<br \/>\nquantum simulations by integrating these groups. With OpenFermion, one<br \/>\ncan easily describe the Hamiltonian of a molecule or a problem and then<br \/>\nuse quantum simulators via library plug-ins to study the properties of<br \/>\nthe quantum system. If you want to know more about this library, please<br \/>\nrefer to their <a\nhref=\"https:\/\/doi.org\/10.48550\/arXiv.1710.07629\" class=\"external\" rel=\"nofollow\">release paper<\/a>.<\/p>\n<p>In this blog post, we focus on condensed matter physics, where the<br \/>\nproperties of states of matter are studied using theoretical models or<br \/>\nexperiments, such as those involving cold atomic gases. Condensed matter<br \/>\nphysics includes topics such as high-temperature superconductivity and<br \/>\ntopological phases of matter. In the past, <a\nhref=\"https:\/\/doi.org\/10.1186\/s40712-024-00202-7\" class=\"external\" rel=\"nofollow\">research in condensed<br \/>\nmatter theory<\/a> has led to applications in nanoelectronics and<br \/>\nnanostructures, gas sensors, nitrogen-vacancy centers, and more.<\/p>\n<p>The simulation of quantum mechanical systems is one of the earliest<br \/>\nproposed applications of quantum computing. The dimension of the Hilbert<br \/>\nspace of such systems grows exponentially with the system size; thus,<br \/>\nsimulating a large quantum system using a classical computer is<br \/>\ninfeasible. Therefore, <a\nhref=\"https:\/\/doi.org\/10.1021\/acsengineeringau.1c00033\" class=\"external\" rel=\"nofollow\">Feynman<br \/>\nproposed<\/a> the quantum computer in the 1980s as a device to simulate<br \/>\nquantum mechanical systems: \u201cNature isn\u2019t classical and if you want to<br \/>\nmake a simulation of Nature, you\u2019d better make it quantum mechanical,<br \/>\nand by golly it\u2019s a wonderful problem, because it doesn\u2019t look so<br \/>\neasy.\u201d<\/p>\n<p>In this tutorial, we study the two phases of the Bose-Hubbard model.<br \/>\nWe chose this model because it has been widely studied in condensed<br \/>\nmatter theory, which allows us to compare our results with those in the<br \/>\nexisting literature. The Bose-Hubbard model describes interacting bosons<br \/>\non a lattice and exhibits a phase transition between the superfluid (SF)<br \/>\nand the Mott insulator (MI) phase. The Hamiltonian of the Bose-Hubbard<br \/>\nmodel is <span class=\"math display\">\\[H = -t\\sum\\limits_{\\langle ij<br \/>\n\\rangle} a_i^\\dagger a_j + \\frac{U}{2} \\sum\\limits_i n_i (n_i<br \/>\n-1),\\text{.}\\]<\/span> <span class=\"math inline\">\\(\\langle ij<br \/>\n\\rangle\\)<\/span> denotes the summation over neighboring lattice sites,<br \/>\nand <span class=\"math inline\">\\(a_i^\\dagger\\)<\/span> and <span\nclass=\"math inline\">\\(a_i\\)<\/span> are the bosonic creation and<br \/>\nannihilation operators, respectively. <span\nclass=\"math inline\">\\(t\\)<\/span> is the hopping amplitude and <span\nclass=\"math inline\">\\(U\\)<\/span> is the onsite interaction strength. As<br \/>\nreferences for the Bose-Hubbard model, we used the following two papers:<\/p>\n<ul>\n<li><a href=\"https:\/\/doi.org\/10.1038\/415039a\" class=\"external\" rel=\"nofollow\">Quantum phase transition<br \/>\nfrom a superfluid to a Mott insulator in a gas of ultracold atoms<\/a><\/li>\n<li><a href=\"https:\/\/doi.org\/10.1038\/nature00968\" class=\"external\" rel=\"nofollow\">Collapse and revival of<br \/>\nthe matter wave field of a Bose\u2013Einstein condensate<\/a><\/li>\n<\/ul>\n<p>The goal of this blog post is to introduce the OpenFermion Python<br \/>\nlibrary as a tool for simulating materials via quantum computing. For<br \/>\nthis, the Hamiltonian of the corresponding system is used. OpenFermion<br \/>\nprovides functions for specific Hamiltonians, such as<br \/>\n<code>bose_hubbard<\/code>,\u2019 and includes a framework to build operators<br \/>\nor Hamiltonians as desired. The library can also be used for quantum<br \/>\nchemistry problems, particularly to determine the electronic<br \/>\nconfiguration of molecules. The code is available as a notebook, which<br \/>\nis included in our OpenFermion Apptainer container in the directory<br \/>\n<code>\/opt\/notebooks\/<\/code>. Our quantum computing containers can be<br \/>\nfound <a\nhref=\"https:\/\/docs.hpc.gwdg.de\/services\/quantum-computing\/index.html\" class=\"external\" rel=\"nofollow\">here<\/a>.<br \/>\nLater, there will be the possibility of using quantum simulators within<br \/>\nthe HPC environment provided by the QUICS project.<\/p>\n<h2 id=\"study-the-two-phases\">Study the two phases<\/h2>\n<p>First we look at the border cases. In the SF phase, the interaction<br \/>\nstrength <span class=\"math inline\">\\(U\\)<\/span> is zero. In this case,<br \/>\nthe many-body wavefunction is delocalized. The <a\nhref=\"https:\/\/doi.org\/10.1143\/PTPS.184.187\" class=\"external\" rel=\"nofollow\">inverse participation<br \/>\nratio<\/a> (IPR) is a measure of localization and is defined as <span\nclass=\"math display\">\\[IPR = \\sum\\limits_\\alpha \\mid\\phi_\\alpha\\mid^4\\,<br \/>\n,\\]<\/span> where the sum is over all the Fock basis states <span\nclass=\"math inline\">\\(\\alpha\\)<\/span>. In an extended\/delocalized state,<br \/>\nthe IPR vanishes. The IPR is non-zero only in a localized state.<br \/>\nTherefore, in the SF phase, we expect the IPR to be small. For <span\nclass=\"math inline\">\\(t = 0\\)<\/span>, we have the MI phase. Here, the<br \/>\nmany-body wavefunction is expressed by localized atomic wavefunctions.<br \/>\nTherefore, we expect the IPR to be close to <span\nclass=\"math inline\">\\(1\\)<\/span>. This is how one can create the<br \/>\nBose-Hubbard Hamiltonian and calculate the IPR with the OpenFermion<br \/>\nlibrary:<\/p>\n<div class=\"sourceCode\" id=\"cb1\">\n<pre\nclass=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb1-1\"><a href=\"#cb1-1\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">import<\/span> numpy <span class=\"im\">as<\/span> np<\/span>\n<span id=\"cb1-2\"><a href=\"#cb1-2\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">from<\/span> openfermion.hamiltonians <span class=\"im\">import<\/span> bose_hubbard<\/span>\n<span id=\"cb1-3\"><a href=\"#cb1-3\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">from<\/span> openfermion.linalg <span class=\"im\">import<\/span> get_sparse_operator, get_ground_state<\/span>\n<span id=\"cb1-4\"><a href=\"#cb1-4\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><\/span>\n<span id=\"cb1-5\"><a href=\"#cb1-5\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>H <span class=\"op\">=<\/span> bose_hubbard(<\/span>\n<span id=\"cb1-6\"><a href=\"#cb1-6\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        x_dimension,<\/span>\n<span id=\"cb1-7\"><a href=\"#cb1-7\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        y_dimension,<\/span>\n<span id=\"cb1-8\"><a href=\"#cb1-8\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        tunneling,<\/span>\n<span id=\"cb1-9\"><a href=\"#cb1-9\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        interaction,<\/span>\n<span id=\"cb1-10\"><a href=\"#cb1-10\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        chemical_potential<span class=\"op\">=<\/span><span class=\"fl\">0.5<\/span>,<\/span>\n<span id=\"cb1-11\"><a href=\"#cb1-11\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        dipole<span class=\"op\">=<\/span><span class=\"fl\">0.0<\/span>,<\/span>\n<span id=\"cb1-12\"><a href=\"#cb1-12\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        periodic<span class=\"op\">=<\/span><span class=\"va\">True<\/span>,)<\/span>\n<span id=\"cb1-13\"><a href=\"#cb1-13\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><\/span>\n<span id=\"cb1-14\"><a href=\"#cb1-14\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>H_sparse <span class=\"op\">=<\/span> get_sparse_operator(H, trunc<span class=\"op\">=<\/span>trunc)<\/span>\n<span id=\"cb1-15\"><a href=\"#cb1-15\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>eigenenergy, eigenstate <span class=\"op\">=<\/span> get_ground_state(H_sparse)<\/span>\n<span id=\"cb1-16\"><a href=\"#cb1-16\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><\/span>\n<span id=\"cb1-17\"><a href=\"#cb1-17\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"co\"># Calculate the IPR:<\/span><\/span>\n<span id=\"cb1-18\"><a href=\"#cb1-18\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>IPR_SF <span class=\"op\">=<\/span> np.<span class=\"bu\">sum<\/span>(np.<span class=\"bu\">abs<\/span>(eigenstate)<span class=\"op\">**<\/span><span class=\"dv\">4<\/span>)<\/span><\/code><\/pre>\n<\/div>\n<p>Indeed, from this, we obtain <span class=\"math inline\">\\(IPR_{SF} =<br \/>\n0.00139\\)<\/span> and <span class=\"math inline\">\\(IPR_{MI} =<br \/>\n0.99999\\)<\/span>. You can try this yourself in the provided Python<br \/>\nnotebook. For the MI phase, localization alone is insufficient to<br \/>\ndetermine whether the MI phase has been found. It is also necessary to<br \/>\nensure that a gap appears in the excitation spectrum:<\/p>\n<div class=\"sourceCode\" id=\"cb2\">\n<pre\nclass=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb2-1\"><a href=\"#cb2-1\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">from<\/span> openfermion.linalg <span class=\"im\">import<\/span> get_gap,<\/span>\n<span id=\"cb2-2\"><a href=\"#cb2-2\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>gap <span class=\"op\">=<\/span> get_gap(H_sparse)<\/span>\n<span id=\"cb2-3\"><a href=\"#cb2-3\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"bu\">print<\/span>(<span class=\"st\">&quot;Gap in the excitation spectrum: &quot;<\/span>, gap)<\/span><\/code><\/pre>\n<\/div>\n<p>From this, one obtains\u2019 Gap in the excitation spectrum:<br \/>\n0.49999999999998135`, so we have indeed found the MI phase.<\/p>\n<h2 id=\"time-evolution-after-a-quench\">Time evolution after a<br \/>\nQuench<\/h2>\n<p>We now study the time evolution of the Bose-Hubbard model after a<br \/>\nquench at time zero. We consider a quench from the SF regime to the MI<br \/>\nphase and vice versa. To perform the time evolution of boson operators<br \/>\nvia OpenFermion, one can use the SFOpenBoson plugin or Strawberry Fields<br \/>\ntoolbox. To determine the localization over time, we calculated the IPR<br \/>\nusing the time-dependent state of the system. This is how the time<br \/>\nevolution is constructed with OpenFermion:<\/p>\n<div class=\"sourceCode\" id=\"cb3\">\n<pre\nclass=\"sourceCode python\"><code class=\"sourceCode python\"><span id=\"cb3-1\"><a href=\"#cb3-1\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">from<\/span> sfopenboson.ops <span class=\"im\">import<\/span> BoseHubbardPropagation<\/span>\n<span id=\"cb3-2\"><a href=\"#cb3-2\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">from<\/span> strawberryfields.ops <span class=\"im\">import<\/span> <span class=\"op\">*<\/span><\/span>\n<span id=\"cb3-3\"><a href=\"#cb3-3\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"im\">import<\/span> strawberryfields <span class=\"im\">as<\/span> sf<\/span>\n<span id=\"cb3-4\"><a href=\"#cb3-4\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><\/span>\n<span id=\"cb3-5\"><a href=\"#cb3-5\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>k <span class=\"op\">=<\/span> <span class=\"dv\">20<\/span> <span class=\"co\"># Lie product truncation<\/span><\/span>\n<span id=\"cb3-6\"><a href=\"#cb3-6\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"cf\">for<\/span> time <span class=\"kw\">in<\/span> total_time:<\/span>\n<span id=\"cb3-7\"><a href=\"#cb3-7\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    H_MI <span class=\"op\">=<\/span> bose_hubbard(<\/span>\n<span id=\"cb3-8\"><a href=\"#cb3-8\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               x_dimension,<\/span>\n<span id=\"cb3-9\"><a href=\"#cb3-9\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               y_dimension,<\/span>\n<span id=\"cb3-10\"><a href=\"#cb3-10\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               t_MI,<\/span>\n<span id=\"cb3-11\"><a href=\"#cb3-11\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               U_MI,<\/span>\n<span id=\"cb3-12\"><a href=\"#cb3-12\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               chemical_potential<span class=\"op\">=<\/span><span class=\"fl\">0.5<\/span>,<\/span>\n<span id=\"cb3-13\"><a href=\"#cb3-13\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               dipole<span class=\"op\">=<\/span><span class=\"fl\">0.0<\/span>,<\/span>\n<span id=\"cb3-14\"><a href=\"#cb3-14\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               periodic<span class=\"op\">=<\/span><span class=\"va\">True<\/span>,)<\/span>\n<span id=\"cb3-15\"><a href=\"#cb3-15\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    H_SF <span class=\"op\">=<\/span> bose_hubbard( <span class=\"co\"># Hamiltonian after quench<\/span><\/span>\n<span id=\"cb3-16\"><a href=\"#cb3-16\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               x_dimension,<\/span>\n<span id=\"cb3-17\"><a href=\"#cb3-17\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               y_dimension,<\/span>\n<span id=\"cb3-18\"><a href=\"#cb3-18\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               t_SF,<\/span>\n<span id=\"cb3-19\"><a href=\"#cb3-19\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               U_SF,<\/span>\n<span id=\"cb3-20\"><a href=\"#cb3-20\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               chemical_potential<span class=\"op\">=<\/span><span class=\"fl\">0.5<\/span>,<\/span>\n<span id=\"cb3-21\"><a href=\"#cb3-21\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               dipole<span class=\"op\">=<\/span><span class=\"fl\">0.0<\/span>,<\/span>\n<span id=\"cb3-22\"><a href=\"#cb3-22\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>               periodic<span class=\"op\">=<\/span><span class=\"va\">True<\/span>,)<\/span>\n<span id=\"cb3-23\"><a href=\"#cb3-23\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    prog <span class=\"op\">=<\/span> sf.Program(n_lattice_sites)<\/span>\n<span id=\"cb3-24\"><a href=\"#cb3-24\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    <span class=\"cf\">with<\/span> prog.context <span class=\"im\">as<\/span> q:<\/span>\n<span id=\"cb3-25\"><a href=\"#cb3-25\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        Ket(eigenstate_MI) <span class=\"op\">|<\/span> q<\/span>\n<span id=\"cb3-26\"><a href=\"#cb3-26\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        BoseHubbardPropagation(H_SF, time, k, mode<span class=\"op\">=<\/span><span class=\"st\">&#39;global&#39;<\/span>) <span class=\"op\">|<\/span> q<\/span>\n<span id=\"cb3-27\"><a href=\"#cb3-27\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>        <\/span>\n<span id=\"cb3-28\"><a href=\"#cb3-28\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    eng <span class=\"op\">=<\/span> sf.Engine(<span class=\"st\">&quot;fock&quot;<\/span>, backend_options<span class=\"op\">=<\/span>{<span class=\"st\">&quot;cutoff_dim&quot;<\/span>: trunc})<\/span>\n<span id=\"cb3-29\"><a href=\"#cb3-29\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    final_state <span class=\"op\">=<\/span> eng.run(prog).state<\/span>\n<span id=\"cb3-30\"><a href=\"#cb3-30\" aria-hidden=\"true\" tabindex=\"-1\"><\/a>    state_vector <span class=\"op\">=<\/span> final_state.ket()<\/span><\/code><\/pre>\n<\/div>\n<p>The time evolution is executed with the function<br \/>\n<code>BoseHubbardPropagation<\/code> using the Lie-product formula and<br \/>\ndecomposing the unitary operations into a combination of beam splitters,<br \/>\nKerr gates, and phase-space rotations.<\/p>\n<p><img\nsrc=\"https:\/\/gitlab-ce.gwdg.de\/hpc-team-public\/science-domains-blog\/-\/raw\/main\/20251217_quics-openfermion-use-case\/20251217_quics-openfermion-use-case.png?ref_type=heads&#038;inline=false\" \/><\/p>\n<p>The figure shows the time evolution of the IPR after a quench from<br \/>\nthe MI regime to the SF phase. It can be seen that the initial MI phase<br \/>\nvanishes over time but recurs later. The recurrence of a phase is also<br \/>\nshown in the second Bose-Hubbard paper cited above, where they quenched<br \/>\nfrom the SF phase into the MI phase in an experiment with cold atoms in<br \/>\nan optical lattice.<\/p>\n<p>As you can see, Hamiltonians can be easily implemented with<br \/>\nOpenFermion and their properties can be studied using quantum computing.<br \/>\nThis can lower the barrier for quantum chemists and physicists to enter<br \/>\nquantum computing and solve their problems using quantum computing.<br \/>\nThere are different models, other than the Bose-Hubbard model, already<br \/>\nimplemented in the OpenFermion library, such as d-wave models of<br \/>\nsuperconductivity, the Richardson-Gaudin model, or models for the<br \/>\nuniform electron gas (jellium). OpenFermion also includes different<br \/>\nmethods, such as the Hartree-Fock method, Davidson method, and Grassmann<br \/>\nwedge product. Therefore, you can try other Hamiltonians or setups in<br \/>\nthe library. As an outlook, there are different papers studying the<br \/>\nelectronic structure and ground state of different molecules and models<br \/>\nvia quantum computing: for example the <a\nhref=\"https:\/\/doi.org\/10.1021\/acs.jctc.4c00352\" class=\"external\" rel=\"nofollow\">FeMoco molecule and<br \/>\nCytochrome P450<\/a>, <a href=\"https:\/\/doi.org\/10.1063\/5.0054647\" class=\"external\" rel=\"nofollow\"><span\nclass=\"math inline\">\\(BeH_2\\)<\/span>, <span\nclass=\"math inline\">\\(CH_4\\)<\/span>, <span\nclass=\"math inline\">\\(H_2O\\)<\/span>, <span\nclass=\"math inline\">\\(HF\\)<\/span> and <span\nclass=\"math inline\">\\(NH_3\\)<\/span><\/a>, <a\nhref=\"https:\/\/doi.org\/10.1103\/PhysRevA.107.032407\" class=\"external\" rel=\"nofollow\">an <span\nclass=\"math inline\">\\(H_4\\)<\/span> square, an <span\nclass=\"math inline\">\\(H_4\\)<\/span> chain, and the Hubbard model<\/a>, or<br \/>\n<a href=\"https:\/\/doi.org\/10.1038\/s41534-025-00987-1\" class=\"external\" rel=\"nofollow\">uniform electron<br \/>\ngas, diamond, and nickel oxide<\/a>. All of them used the OpenFermion<br \/>\nlibrary at least partially in their calculations.<\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post, we aim to encourage the use of quantum computing in quantum many-body-physics. This post is published in the context of the QUICS project, which is a joint project of the Gesellschaft f\u00fcr wissenschaftliche Datenverarbeitung G\u00f6ttingen, the Leibniz University Hannover, and the Physikalisch-Technische Bundesanstalt. The Federal Ministry of Research, Technology and Space &#8230; <a title=\"Quantum Computing for Condensed Matter Physics\" class=\"read-more\" href=\"https:\/\/info.gwdg.de\/news\/quantum-computing-for-condensed-matter-physics\/\" aria-label=\"Mehr Informationen \u00fcber Quantum Computing for Condensed Matter Physics\">Weiterlesen<\/a><\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,143,158,136],"tags":[160],"class_list":["post-24786","post","type-post","status-publish","format-standard","hentry","category-all","category-quantum-computing","category-quics-en","category-science-domains","tag-quics"],"_links":{"self":[{"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/posts\/24786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/comments?post=24786"}],"version-history":[{"count":3,"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/posts\/24786\/revisions"}],"predecessor-version":[{"id":24802,"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/posts\/24786\/revisions\/24802"}],"wp:attachment":[{"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/media?parent=24786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/categories?post=24786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/info.gwdg.de\/news\/wp-json\/wp\/v2\/tags?post=24786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}