{ "cells": [ { "cell_type": "markdown", "id": "a27d63fc-7bef-48af-ad11-1cb14fb6b4ec", "metadata": {}, "source": [ "# Time Evolution using Renormalizer" ] }, { "cell_type": "markdown", "id": "196a8dc4-7e25-4cd2-8472-8ced3d2e46d3", "metadata": {}, "source": [ "## Overview\n", "\n", "In this notebook we will simulate the charge transfer between two molecules using the Marcus model\n", "\n", "$$\n", " \\hat H = -V(a^\\dagger_0 a_1 + a^\\dagger_1 a_0) + \\Delta G a^\\dagger_1 a_1 + \\omega \\sum_{i=0, 1} b^\\dagger_i b_i + g \\omega \\sum_{i=0, 1} a^\\dagger_i a_i (b^\\dagger_i + b_i)\n", "$$\n", "\n", "with transfer integral $V=-0.1$, dimensionless coupling constant $g=1$, vibration frequency $\\omega=0.5$.\n", "\n", "We will first show how to use Renormalizer to simulation the time evolution at $\\Delta G = 0$.\n", "Then, we will show that, by decreasing the reaction Gibbs free energy change $\\Delta G$, the reaction rate will first increase and then decrease, as predicted by the Marcus theory." ] }, { "cell_type": "markdown", "id": "99aa0961-8036-4204-9374-acabb1808943", "metadata": {}, "source": [ "## Preparation: Setting Up Logger" ] }, { "cell_type": "code", "execution_count": 1, "id": "56f1fde2-97fb-43f7-b7fa-a2fa0fb38497", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:28.335079Z", "iopub.status.busy": "2026-10-14T01:46:28.334868Z", "iopub.status.idle": "2026-10-14T01:46:29.371308Z", "shell.execute_reply": "2026-10-14T01:46:29.370406Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:28,593[INFO] Use numpy as backend\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:28,594[INFO] numpy random seed is 9012\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:28,594[INFO] backend random seed is 2019\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:28,595[INFO] random seed is 1092\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:28,603[INFO] Git Commit Hash: 3507afde83fd6f408c1c2198aad4dfe455d88312\n" ] } ], "source": [ "from renormalizer.utils.log import package_logger as logger" ] }, { "cell_type": "code", "execution_count": 2, "id": "873c875c-669a-4b88-9158-098713f07bd4", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.373503Z", "iopub.status.busy": "2026-10-14T01:46:29.373279Z", "iopub.status.idle": "2026-10-14T01:46:29.376956Z", "shell.execute_reply": "2026-10-14T01:46:29.376230Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,374[DEBUG] logger output\n" ] } ], "source": [ "logger.debug(\"logger output\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "319fd86f-834f-4c7f-89d8-d5d914321f63", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.378811Z", "iopub.status.busy": "2026-10-14T01:46:29.378639Z", "iopub.status.idle": "2026-10-14T01:46:29.381576Z", "shell.execute_reply": "2026-10-14T01:46:29.380776Z" } }, "outputs": [], "source": [ "from renormalizer.utils.log import set_stream_level, INFO" ] }, { "cell_type": "code", "execution_count": 4, "id": "8d8232f3-dba4-4783-9a42-5df16dbd31ec", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.383334Z", "iopub.status.busy": "2026-10-14T01:46:29.383167Z", "iopub.status.idle": "2026-10-14T01:46:29.385921Z", "shell.execute_reply": "2026-10-14T01:46:29.385031Z" } }, "outputs": [], "source": [ "# filter logger output\n", "set_stream_level(INFO)" ] }, { "cell_type": "code", "execution_count": 5, "id": "30e8e422-0a2e-42e3-92d9-6689cc87d64f", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.387505Z", "iopub.status.busy": "2026-10-14T01:46:29.387333Z", "iopub.status.idle": "2026-10-14T01:46:29.390239Z", "shell.execute_reply": "2026-10-14T01:46:29.389495Z" } }, "outputs": [], "source": [ "logger.debug(\"This message will not be shown\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "25cf11f4-9538-4f85-aaba-ed5cdc7f611c", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.392099Z", "iopub.status.busy": "2026-10-14T01:46:29.391924Z", "iopub.status.idle": "2026-10-14T01:46:29.395433Z", "shell.execute_reply": "2026-10-14T01:46:29.394690Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,392[INFO] Logger output\n" ] } ], "source": [ "logger.info(\"Logger output\")" ] }, { "cell_type": "markdown", "id": "43e4b11c-f5ec-4e65-8838-ef91e87e11ee", "metadata": {}, "source": [ "## Define the Model and Initial State" ] }, { "cell_type": "code", "execution_count": 7, "id": "f0e54566-edab-423e-81d6-e9d9365e331c", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.397316Z", "iopub.status.busy": "2026-10-14T01:46:29.397163Z", "iopub.status.idle": "2026-10-14T01:46:29.400039Z", "shell.execute_reply": "2026-10-14T01:46:29.399142Z" } }, "outputs": [], "source": [ "from renormalizer import Op, BasisMultiElectron, BasisSHO, Model\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 8, "id": "35139f14-b5f6-4720-96b2-100c57106271", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.401549Z", "iopub.status.busy": "2026-10-14T01:46:29.401391Z", "iopub.status.idle": "2026-10-14T01:46:29.404269Z", "shell.execute_reply": "2026-10-14T01:46:29.403442Z" } }, "outputs": [], "source": [ "v = -0.1\n", "g = 1\n", "omega = 0.5\n", "nbas = 16" ] }, { "cell_type": "code", "execution_count": 9, "id": "8dadf496-f732-4442-9c4e-71417950924f", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.405930Z", "iopub.status.busy": "2026-10-14T01:46:29.405745Z", "iopub.status.idle": "2026-10-14T01:46:29.410100Z", "shell.execute_reply": "2026-10-14T01:46:29.409160Z" } }, "outputs": [], "source": [ "def get_model(delta_g):\n", " ham_terms = v * Op(r\"a^\\dagger a\", [\"e0\", \"e1\"]) + v * Op(r\"a^\\dagger a\", [\"e1\", \"e0\"])\n", " ham_terms += delta_g * Op(r\"a^\\dagger a\", \"e1\")\n", " for i in range(2):\n", " ham_terms += omega * Op(r\"b^\\dagger b\", f\"v{i}\")\n", " ham_terms += g * omega * Op(r\"a^\\dagger a\", f\"e{i}\") * Op(r\"b^\\dagger+b\", f\"v{i}\")\n", " basis = [BasisMultiElectron([\"e0\", \"e1\"], [0, 0]), BasisSHO(\"v0\", omega, nbas), BasisSHO(\"v1\", omega, nbas)]\n", " return Model(basis, ham_terms)" ] }, { "cell_type": "code", "execution_count": 10, "id": "c847063d-c59e-4e71-931e-a69064a61a24", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.411685Z", "iopub.status.busy": "2026-10-14T01:46:29.411536Z", "iopub.status.idle": "2026-10-14T01:46:29.415455Z", "shell.execute_reply": "2026-10-14T01:46:29.414649Z" } }, "outputs": [], "source": [ "# using a relaxed initial state\n", "def get_init_condition():\n", " basis = BasisSHO(0, omega, nbas)\n", " state = np.linalg.eigh(basis.op_mat(r\"b^\\dagger b\") + g * basis.op_mat(r\"b^\\dagger+b\"))[1][:, 0]\n", " return {\"v0\": state}\n", "init_condition = get_init_condition()" ] }, { "cell_type": "markdown", "id": "5e306a49-9390-4770-ba9e-bbb749b312ca", "metadata": {}, "source": [ "## Time Evolution with the Default Configuration\n", "Next, we run the simulation using the `evolve` method in the `Mps` class. At this phase, we keep $\\Delta G = 0$. " ] }, { "cell_type": "code", "execution_count": 11, "id": "bd6aea7e-a63d-4a3f-b140-81f67c887bda", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.417247Z", "iopub.status.busy": "2026-10-14T01:46:29.417099Z", "iopub.status.idle": "2026-10-14T01:46:29.420137Z", "shell.execute_reply": "2026-10-14T01:46:29.419259Z" } }, "outputs": [], "source": [ "delta_g = 0\n", "model = get_model(delta_g)" ] }, { "cell_type": "code", "execution_count": 12, "id": "2ed5d9b2-f6c2-498d-b4a0-efb2c19baefc", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.421620Z", "iopub.status.busy": "2026-10-14T01:46:29.421473Z", "iopub.status.idle": "2026-10-14T01:46:29.424409Z", "shell.execute_reply": "2026-10-14T01:46:29.423437Z" } }, "outputs": [], "source": [ "from renormalizer import Mps, Mpo" ] }, { "cell_type": "code", "execution_count": 13, "id": "a94d9e55-b1b2-4668-a47b-571f5fb74320", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.425945Z", "iopub.status.busy": "2026-10-14T01:46:29.425774Z", "iopub.status.idle": "2026-10-14T01:46:29.433300Z", "shell.execute_reply": "2026-10-14T01:46:29.432467Z" } }, "outputs": [], "source": [ "# Hamiltonian MPO\n", "mpo = Mpo(model)\n", "# The occupation of e0\n", "n_op = Mpo(model, Op(r\"a^\\dagger a\", \"e0\"))" ] }, { "cell_type": "code", "execution_count": 14, "id": "0779c802-815b-4c7a-8c17-163bbd3437ee", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.434846Z", "iopub.status.busy": "2026-10-14T01:46:29.434697Z", "iopub.status.idle": "2026-10-14T01:46:29.953934Z", "shell.execute_reply": "2026-10-14T01:46:29.952937Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,437[INFO] Step 0. Time 0.00. $n$ 0.9999999999999997\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,448[INFO] Step 1. Time 0.20. $n$ 0.9996030537865599\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,458[INFO] Step 2. Time 0.40. $n$ 0.9984313966561627\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,468[INFO] Step 3. Time 0.60. $n$ 0.9965532876450582\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,478[INFO] Step 4. Time 0.80. $n$ 0.9940731362639054\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,488[INFO] Step 5. Time 1.00. $n$ 0.9911161868842484\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,498[INFO] Step 6. Time 1.20. $n$ 0.9878132450238745\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,508[INFO] Step 7. Time 1.40. $n$ 0.9842873078294339\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,518[INFO] Step 8. Time 1.60. $n$ 0.9806441927926957\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,528[INFO] Step 9. Time 1.80. $n$ 0.9769677466243794\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,538[INFO] Step 10. Time 2.00. $n$ 0.9733182226560815\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,548[INFO] Step 11. Time 2.20. $n$ 0.9697373081106375\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,558[INFO] Step 12. Time 2.40. $n$ 0.9662497016753411\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,568[INFO] Step 13. Time 2.60. $n$ 0.9628671609457058\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,578[INFO] Step 14. Time 2.80. $n$ 0.9595919026133976\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,588[INFO] Step 15. Time 3.00. $n$ 0.956419752167962\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,598[INFO] Step 16. Time 3.20. $n$ 0.9533423734970332\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,609[INFO] Step 17. Time 3.40. $n$ 0.9503492089387037\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,619[INFO] Step 18. Time 3.60. $n$ 0.9474287391824951\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,628[INFO] Step 19. Time 3.80. $n$ 0.9445692798814911\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,639[INFO] Step 20. Time 4.00. $n$ 0.9417594196434944\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,651[INFO] Step 21. Time 4.20. $n$ 0.9389883140168832\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,661[INFO] Step 22. Time 4.40. $n$ 0.9362456942950406\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,671[INFO] Step 23. Time 4.60. $n$ 0.9335221984937241\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,681[INFO] Step 24. Time 4.80. $n$ 0.9308095732941706\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,692[INFO] Step 25. Time 5.00. $n$ 0.9281008849250421\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,702[INFO] Step 26. Time 5.20. $n$ 0.9253906107085335\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,712[INFO] Step 27. Time 5.40. $n$ 0.922673847165473\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,723[INFO] Step 28. Time 5.60. $n$ 0.9199478805518423\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,733[INFO] Step 29. Time 5.80. $n$ 0.9172094618331411\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,743[INFO] Step 30. Time 6.00. $n$ 0.9144551950424464\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,753[INFO] Step 31. Time 6.20. $n$ 0.9116816732036945\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,763[INFO] Step 32. Time 6.40. $n$ 0.9088859026726788\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,773[INFO] Step 33. Time 6.60. $n$ 0.9060659656334908\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,784[INFO] Step 34. Time 6.80. $n$ 0.9032210121837201\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,795[INFO] Step 35. Time 7.00. $n$ 0.9003515623906608\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,805[INFO] Step 36. Time 7.20. $n$ 0.8974590790192777\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,816[INFO] Step 37. Time 7.40. $n$ 0.8945453849965332\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,826[INFO] Step 38. Time 7.60. $n$ 0.8916120979060874\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,837[INFO] Step 39. Time 7.80. $n$ 0.8886602437062088\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,847[INFO] Step 40. Time 8.00. $n$ 0.8856902107426251\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,858[INFO] Step 41. Time 8.20. $n$ 0.8827020259679251\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,868[INFO] Step 42. Time 8.40. $n$ 0.8796958667524071\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,879[INFO] Step 43. Time 8.60. $n$ 0.8766726737398555\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,889[INFO] Step 44. Time 8.80. $n$ 0.8736347299848457\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,899[INFO] Step 45. Time 9.00. $n$ 0.8705861034366988\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,910[INFO] Step 46. Time 9.20. $n$ 0.867532873755651\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,920[INFO] Step 47. Time 9.40. $n$ 0.8644830817098138\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,931[INFO] Step 48. Time 9.60. $n$ 0.8614463370235246\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:29,941[INFO] Step 49. Time 9.80. $n$ 0.858433004390228\n" ] } ], "source": [ "# initialize the MPS\n", "mps = Mps.hartree_product_state(model, condition=init_condition)\n", "# time evolution step\n", "dt = 0.2\n", "# record the electronic occupation\n", "n_list = []\n", "for i_step in range(50):\n", " n = mps.expectation(n_op)\n", " logger.info(f\"Step {i_step}. Time {i_step * dt:.2f}. $n$ {n}\")\n", " # perform time evolution. Note that the evolution is not in-place.\n", " mps = mps.evolve(mpo, dt)\n", " n_list.append(n)" ] }, { "cell_type": "code", "execution_count": 15, "id": "273abac9-cdd0-451f-adaf-54aa4318dacb", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:29.955585Z", "iopub.status.busy": "2026-10-14T01:46:29.955407Z", "iopub.status.idle": "2026-10-14T01:46:31.864687Z", "shell.execute_reply": "2026-10-14T01:46:31.863699Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plotting the occupation\n", "from matplotlib import pyplot as plt\n", "plt.style.use(\"mm.mplstyle\")\n", "\n", "plt.plot(np.arange(len(n_list)) * dt, n_list, label=\"Default\")\n", "plt.xlabel(\"$t$\")\n", "plt.ylabel(r\"Occupation $\\langle a^\\dagger_0 a_0 \\rangle$\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "114ac58a-b89c-4fe0-841b-1d9d0c1df335", "metadata": {}, "source": [ "In this example, the time evolution is performed with default time evolution configuration and MPS compression configuration.\n", "\n", "Renormalizer by default uses the RK4 \"propagation and compression\" method for time evolution.\n", "The advantage of the method is that it is easy to understand and setup. \n", "\n", "> Please refer to our [recent review](https://weitangligroup.com/pdf/2022time.pdf) for a discussion of the different time evolution schemes." ] }, { "cell_type": "code", "execution_count": 16, "id": "68b39110-309b-4f10-87bd-2fbfe0244d8e", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.866525Z", "iopub.status.busy": "2026-10-14T01:46:31.866280Z", "iopub.status.idle": "2026-10-14T01:46:31.870375Z", "shell.execute_reply": "2026-10-14T01:46:31.869415Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mps.evolve_config.method" ] }, { "cell_type": "markdown", "id": "7a3b01b7-3b13-48be-a9a0-7a8f99cb9ba4", "metadata": {}, "source": [ "Regarding MPS compression/truncation configuration, Renormalizer by default employs a truncation scheme based on the the singular value threshold." ] }, { "cell_type": "code", "execution_count": 17, "id": "4a87c29d-66c4-4980-a68d-f6f9b54ec97c", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.871972Z", "iopub.status.busy": "2026-10-14T01:46:31.871800Z", "iopub.status.idle": "2026-10-14T01:46:31.875452Z", "shell.execute_reply": "2026-10-14T01:46:31.874637Z" } }, "outputs": [ { "data": { "text/plain": [ "(, 0.001)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mps.compress_config.criteria, mps.compress_config.threshold" ] }, { "cell_type": "markdown", "id": "2f909ca0-1086-4fa2-9dcd-3d0c701f0749", "metadata": {}, "source": [ "Inspection of the dimension of the final mps after time evolution shows that the compression is efficient." ] }, { "cell_type": "code", "execution_count": 18, "id": "695d929a-e9ac-40a0-ab81-ed5132754aa6", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.877187Z", "iopub.status.busy": "2026-10-14T01:46:31.877042Z", "iopub.status.idle": "2026-10-14T01:46:31.880883Z", "shell.execute_reply": "2026-10-14T01:46:31.879985Z" } }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 4, 1]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mps.bond_dims" ] }, { "cell_type": "markdown", "id": "1612b953-9ef9-4823-9098-76d2c5b79ca5", "metadata": {}, "source": [ "## Configuring Time Evolution\n", "In order to configure the time evolution, you should update the `evolve_config` and `compress_config` attributes of an MPS instance. \n", "These attributes are instances of the `EvolveConfig` class and the `CompressConfig` class.\n", "Please see the API referece for full options of the configuration classes." ] }, { "cell_type": "code", "execution_count": 19, "id": "3a2bde08-4e11-4300-a5c7-22599d161bdd", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.882436Z", "iopub.status.busy": "2026-10-14T01:46:31.882292Z", "iopub.status.idle": "2026-10-14T01:46:31.885282Z", "shell.execute_reply": "2026-10-14T01:46:31.884353Z" } }, "outputs": [], "source": [ "from renormalizer.utils.configs import CompressConfig, CompressCriteria" ] }, { "cell_type": "code", "execution_count": 20, "id": "43784000-c652-41c1-9045-3cc8d462ad64", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.886785Z", "iopub.status.busy": "2026-10-14T01:46:31.886642Z", "iopub.status.idle": "2026-10-14T01:46:31.889615Z", "shell.execute_reply": "2026-10-14T01:46:31.888809Z" } }, "outputs": [], "source": [ "# update the compresssion configuration. Adopt a fixed bond dimension of 8\n", "mps.compress_config = CompressConfig(CompressCriteria.fixed, max_bonddim=8)" ] }, { "cell_type": "markdown", "id": "91b2bd01-2a38-4963-aa88-a6b6799309cd", "metadata": {}, "source": [ "Next, we perform one more step of the time evolution, and the bond dimension in the middle of the MPS is increased from 4 to 8, according to the updated compression configuration." ] }, { "cell_type": "code", "execution_count": 21, "id": "69af3e7f-0f3c-4d3f-9ee8-1dcc7fa85861", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.891219Z", "iopub.status.busy": "2026-10-14T01:46:31.891073Z", "iopub.status.idle": "2026-10-14T01:46:31.905600Z", "shell.execute_reply": "2026-10-14T01:46:31.904643Z" } }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 8, 1]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_mps = mps.evolve(mpo, dt)\n", "new_mps.bond_dims" ] }, { "cell_type": "markdown", "id": "fd789f50-9d8b-4e6b-990b-16771212e1ee", "metadata": {}, "source": [ "Recent studies have shown that methods based on time dependent variantional principle (TDVP) show higher accuracy and efficiency.\n", "In our production runs, we usually employ one-site TDVP with projector splitting (TDVP-PS) for time evolution.\n", "TDVP-PS allows much larger time evolution step size and reduces memory consumption.\n", "However, its setup is a little more complex than propagation and compression, since one-site TDVP generally can not adjust bond dimension during time evolution." ] }, { "cell_type": "code", "execution_count": 22, "id": "e62d1b1d-bfad-40e0-8df5-21023c822510", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.907427Z", "iopub.status.busy": "2026-10-14T01:46:31.907249Z", "iopub.status.idle": "2026-10-14T01:46:31.910577Z", "shell.execute_reply": "2026-10-14T01:46:31.909706Z" } }, "outputs": [], "source": [ "from renormalizer.utils.configs import EvolveConfig, EvolveMethod" ] }, { "cell_type": "code", "execution_count": 23, "id": "9bff686c-aeb0-463b-8208-d810c9a8f027", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.912475Z", "iopub.status.busy": "2026-10-14T01:46:31.912300Z", "iopub.status.idle": "2026-10-14T01:46:31.915832Z", "shell.execute_reply": "2026-10-14T01:46:31.914661Z" } }, "outputs": [], "source": [ "mps.evolve_config = EvolveConfig(EvolveMethod.tdvp_ps)" ] }, { "cell_type": "markdown", "id": "d7dde4b8-49ff-447b-8bc1-0bf0431dac74", "metadata": {}, "source": [ "Next, we perform one more step of the time evolution using TDVP-PS.\n", "\n", "Note that the bond dimension in the middle of the MPS does not increase from 4 to 8.\n", "This is because one-site TDVP-PS does not alter the bond dimension.\n", "\n", "In order to perform one-site TDVP-PS time evolution, it is imperative to increase the bond dimension of the MPS first, and then perform the time evolution. " ] }, { "cell_type": "code", "execution_count": 24, "id": "a41f442d-56ca-4979-8c1d-886339f22c96", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.917559Z", "iopub.status.busy": "2026-10-14T01:46:31.917389Z", "iopub.status.idle": "2026-10-14T01:46:31.935597Z", "shell.execute_reply": "2026-10-14T01:46:31.934778Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 4, 1]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_mps = mps.evolve(mpo, dt)\n", "new_mps.bond_dims" ] }, { "cell_type": "markdown", "id": "1b296770-ae0a-48f1-8f1c-b2dd7b834c3f", "metadata": {}, "source": [ "The `expand_bond_dimension` function increases the bond dimension to target value specified by the `compress_config`.\n", "In short, the function adds the vectors in the Krylov space $H^n|\\psi\\rangle$ to the input wavefunction $|\\psi\\rangle$, and then compresses it to the target bond dimension.\n", "`expand_bond_dimension` works with fixed bond dimension compression configuration, instead of singular value truncation threshold.\n", "\n", "The `include_ex` option is specifically designed for systems with quantum number conservation. If the initial wavefunction does not include contributions from a certain symmetry sector, these contributions will not reappear during time evolution due to the projection error in TDVP.\n", "Setting `include_ex=True` will add a small perturbation to the initial state to help recover the missing symmetry sector contributions.\n", "In our case, the quantum number conservation is disabled, so we set `include_ex=False`." ] }, { "cell_type": "code", "execution_count": 25, "id": "5f2a1509-ab7c-4e70-9d4c-5d26bb2e8502", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.937271Z", "iopub.status.busy": "2026-10-14T01:46:31.937120Z", "iopub.status.idle": "2026-10-14T01:46:31.947106Z", "shell.execute_reply": "2026-10-14T01:46:31.946025Z" } }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 8, 1]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_mps = mps.expand_bond_dimension(mpo, include_ex=False)\n", "new_mps.bond_dims" ] }, { "cell_type": "markdown", "id": "1327a932-169a-41ac-8378-bc6ec1f23922", "metadata": {}, "source": [ "## Observing Marcus Inverted Region" ] }, { "cell_type": "markdown", "id": "037ddca4-7cd6-49f6-86cf-eb46e4419787", "metadata": {}, "source": [ "Next, we put everything together and perform time evolution with different $\\Delta G$ using TDVP-PS.\n", "Since the initial state of time evolution is a Hartree product state, we must expand the bond dimension before performing the time evolution." ] }, { "cell_type": "code", "execution_count": 26, "id": "0dde7c58-04dc-478e-813d-8402ddfc929e", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:31.948785Z", "iopub.status.busy": "2026-10-14T01:46:31.948632Z", "iopub.status.idle": "2026-10-14T01:46:33.378125Z", "shell.execute_reply": "2026-10-14T01:46:33.377131Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:31,952[INFO] Initial MPS bond dimension: [1, 1, 1, 1]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:31,967[INFO] MPS bond dimension after expanding: [1, 2, 8, 1]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:31,968[INFO] Step 0. Time 0.00. $n$ 1.0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:31,983[INFO] Step 1. Time 0.50. $n$ 0.9975776788496071\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:31,997[INFO] Step 2. Time 1.00. $n$ 0.9911341778211986\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,011[INFO] Step 3. Time 1.50. $n$ 0.982498183827564\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,025[INFO] Step 4. Time 2.00. $n$ 0.9733283418283689\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,038[INFO] Step 5. Time 2.50. $n$ 0.9645218516469468\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,051[INFO] Step 6. Time 3.00. $n$ 0.9563382368491798\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,065[INFO] Step 7. Time 3.50. $n$ 0.9487304333892244\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,079[INFO] Step 8. Time 4.00. $n$ 0.9415533981895283\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,092[INFO] Step 9. Time 4.50. $n$ 0.9346400325048942\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,105[INFO] Step 10. Time 5.00. $n$ 0.9278351842224875\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,118[INFO] Step 11. Time 5.50. $n$ 0.921029899617328\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,132[INFO] Step 12. Time 6.00. $n$ 0.9141749831328395\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,145[INFO] Step 13. Time 6.50. $n$ 0.9072563582335615\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,158[INFO] Step 14. Time 7.00. $n$ 0.9002591285942482\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,171[INFO] Step 15. Time 7.50. $n$ 0.893152108533183\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,184[INFO] Step 16. Time 8.00. $n$ 0.8858943878858218\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,198[INFO] Step 17. Time 8.50. $n$ 0.87845535986051\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,211[INFO] Step 18. Time 9.00. $n$ 0.8708472420376305\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,224[INFO] Step 19. Time 9.50. $n$ 0.863161654921283\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,249[INFO] MPS bond dimension after expanding: [1, 2, 8, 1]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,250[INFO] Step 0. Time 0.00. $n$ 0.9999999999999999\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,263[INFO] Step 1. Time 0.50. $n$ 0.9975401925879047\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,277[INFO] Step 2. Time 1.00. $n$ 0.9906013628490247\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,290[INFO] Step 3. Time 1.50. $n$ 0.9802488858640304\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,303[INFO] Step 4. Time 2.00. $n$ 0.9676593608104599\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,317[INFO] Step 5. Time 2.50. $n$ 0.9537696503059964\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,330[INFO] Step 6. Time 3.00. $n$ 0.9392072948520427\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,343[INFO] Step 7. Time 3.50. $n$ 0.9243586104259068\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,357[INFO] Step 8. Time 4.00. $n$ 0.9094397848357549\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,370[INFO] Step 9. Time 4.50. $n$ 0.8945511232281894\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,383[INFO] Step 10. Time 5.00. $n$ 0.8797430038663074\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,397[INFO] Step 11. Time 5.50. $n$ 0.8650797798242396\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,410[INFO] Step 12. Time 6.00. $n$ 0.8506519218061608\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,423[INFO] Step 13. Time 6.50. $n$ 0.8365374567167934\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,436[INFO] Step 14. Time 7.00. $n$ 0.8227688239626167\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,449[INFO] Step 15. Time 7.50. $n$ 0.8093300617625527\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,463[INFO] Step 16. Time 8.00. $n$ 0.7961632960751635\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,476[INFO] Step 17. Time 8.50. $n$ 0.7831685752127828\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,489[INFO] Step 18. Time 9.00. $n$ 0.7702000677808496\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,503[INFO] Step 19. Time 9.50. $n$ 0.7570646850942878\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,528[INFO] MPS bond dimension after expanding: [1, 2, 8, 1]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,529[INFO] Step 0. Time 0.00. $n$ 1.0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,544[INFO] Step 1. Time 0.50. $n$ 0.9975277339592459\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,557[INFO] Step 2. Time 1.00. $n$ 0.9904261839751389\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,570[INFO] Step 3. Time 1.50. $n$ 0.9795268047068697\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,583[INFO] Step 4. Time 2.00. $n$ 0.9659170449060868\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,598[INFO] Step 5. Time 2.50. $n$ 0.9506850089406372\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,612[INFO] Step 6. Time 3.00. $n$ 0.9347455146608092\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,625[INFO] Step 7. Time 3.50. $n$ 0.918742272664204\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,642[INFO] Step 8. Time 4.00. $n$ 0.9030158921696358\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,656[INFO] Step 9. Time 4.50. $n$ 0.8876520609099995\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,669[INFO] Step 10. Time 5.00. $n$ 0.8725982798020762\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,682[INFO] Step 11. Time 5.50. $n$ 0.8577742342545667\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,696[INFO] Step 12. Time 6.00. $n$ 0.8431151893145141\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,710[INFO] Step 13. Time 6.50. $n$ 0.8285809886858968\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,723[INFO] Step 14. Time 7.00. $n$ 0.8141772509580619\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,737[INFO] Step 15. Time 7.50. $n$ 0.7999687732324235\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,750[INFO] Step 16. Time 8.00. $n$ 0.7860556760300724\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,766[INFO] Step 17. Time 8.50. $n$ 0.7725203376735785\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,779[INFO] Step 18. Time 9.00. $n$ 0.7593659426994879\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,792[INFO] Step 19. Time 9.50. $n$ 0.746461560509593\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,819[INFO] MPS bond dimension after expanding: [1, 2, 8, 1]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,820[INFO] Step 0. Time 0.00. $n$ 1.0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,834[INFO] Step 1. Time 0.50. $n$ 0.9975406090105956\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,849[INFO] Step 2. Time 1.00. $n$ 0.9906249611406759\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,863[INFO] Step 3. Time 1.50. $n$ 0.9804700824710505\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,877[INFO] Step 4. Time 2.00. $n$ 0.9686190882357345\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,891[INFO] Step 5. Time 2.50. $n$ 0.9564506630039392\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,905[INFO] Step 6. Time 3.00. $n$ 0.9448244017405336\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,919[INFO] Step 7. Time 3.50. $n$ 0.9339798618067823\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,932[INFO] Step 8. Time 4.00. $n$ 0.9236970054408269\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,946[INFO] Step 9. Time 4.50. $n$ 0.9136118419975218\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,960[INFO] Step 10. Time 5.00. $n$ 0.9034945341226438\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,973[INFO] Step 11. Time 5.50. $n$ 0.8933290940569689\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:32,987[INFO] Step 12. Time 6.00. $n$ 0.8832123669504437\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,001[INFO] Step 13. Time 6.50. $n$ 0.8732206640594663\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,014[INFO] Step 14. Time 7.00. $n$ 0.8633414313841793\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,029[INFO] Step 15. Time 7.50. $n$ 0.8534881636839358\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,043[INFO] Step 16. Time 8.00. $n$ 0.8435889218011109\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,057[INFO] Step 17. Time 8.50. $n$ 0.8336922461638034\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,070[INFO] Step 18. Time 9.00. $n$ 0.8239993937768332\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,084[INFO] Step 19. Time 9.50. $n$ 0.8147658347612909\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,109[INFO] MPS bond dimension after expanding: [1, 2, 8, 1]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,110[INFO] Step 0. Time 0.00. $n$ 0.9999999999999999\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,124[INFO] Step 1. Time 0.50. $n$ 0.9975784978846652\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,137[INFO] Step 2. Time 1.00. $n$ 0.9911783314788788\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,151[INFO] Step 3. Time 1.50. $n$ 0.9828793267407698\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,164[INFO] Step 4. Time 2.00. $n$ 0.974804737510624\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,177[INFO] Step 5. Time 2.50. $n$ 0.9681008008243928\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,190[INFO] Step 6. Time 3.00. $n$ 0.9626946118364176\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,203[INFO] Step 7. Time 3.50. $n$ 0.9578334887382711\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,216[INFO] Step 8. Time 4.00. $n$ 0.9528636883612388\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,230[INFO] Step 9. Time 4.50. $n$ 0.9476402488995558\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,243[INFO] Step 10. Time 5.00. $n$ 0.9423714783197507\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,256[INFO] Step 11. Time 5.50. $n$ 0.9372226613902708\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,270[INFO] Step 12. Time 6.00. $n$ 0.932143487387623\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,283[INFO] Step 13. Time 6.50. $n$ 0.9270168710144905\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,296[INFO] Step 14. Time 7.00. $n$ 0.9218472771077\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,309[INFO] Step 15. Time 7.50. $n$ 0.9167421622551066\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,323[INFO] Step 16. Time 8.00. $n$ 0.911727659809429\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,336[INFO] Step 17. Time 8.50. $n$ 0.906647971798646\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,349[INFO] Step 18. Time 9.00. $n$ 0.9013355144296522\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2026-10-14 01:46:33,363[INFO] Step 19. Time 9.50. $n$ 0.8959335401053742\n" ] } ], "source": [ "# time evolution step\n", "dt = 0.5\n", "\n", "# initialize the MPS in the Hartree product state\n", "init_mps = Mps.hartree_product_state(model, condition=init_condition)\n", "logger.info(f\"Initial MPS bond dimension: {init_mps.bond_dims}\")\n", "# setup compression configuration\n", "init_mps.compress_config = CompressConfig(CompressCriteria.fixed, max_bonddim=8)\n", "# setup time evolution configuration\n", "init_mps.evolve_config = EvolveConfig(EvolveMethod.tdvp_ps)\n", "\n", "\n", "# record the electronic occupation\n", "n_list_list = []\n", "\n", "delta_g_list = np.linspace(0, -2, 5)\n", "for delta_g in delta_g_list:\n", " # reconstruct the Hamiltonian. We can reuse the occupation operator though\n", " model = get_model(delta_g)\n", " mpo = Mpo(model)\n", " # since using TDVP-PS, expand the bond dimension to target value.\n", " # otherwise the time evolution is limited to the Hartree product state.\n", " mps = init_mps.expand_bond_dimension(mpo, include_ex=False)\n", " logger.info(f\"MPS bond dimension after expanding: {mps.bond_dims}\")\n", " n_list = []\n", " for i_step in range(20):\n", " n = mps.expectation(n_op)\n", " logger.info(f\"Step {i_step}. Time {i_step * dt:.2f}. $n$ {n}\")\n", " # perform time evolution. Note that the evolution is not in-place.\n", " mps = mps.evolve(mpo, dt)\n", " n_list.append(n)\n", " n_list_list.append(n_list)" ] }, { "cell_type": "markdown", "id": "350fdecf-24ac-4555-96f9-9139dd061ac2", "metadata": {}, "source": [ "By plotting the figure, we see that when $\\Delta G=-1$, the charge transfer rate is highest." ] }, { "cell_type": "code", "execution_count": 27, "id": "60df9730-334d-4fe7-af4f-a237afedd7d7", "metadata": { "execution": { "iopub.execute_input": "2026-10-14T01:46:33.380044Z", "iopub.status.busy": "2026-10-14T01:46:33.379833Z", "iopub.status.idle": "2026-10-14T01:46:34.587861Z", "shell.execute_reply": "2026-10-14T01:46:34.586909Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = np.arange(len(n_list_list[0])) * dt\n", "for i, n_list in enumerate(n_list_list):\n", " label = r\"$\\Delta G =\" + str(delta_g_list[i]) + \"$\"\n", " plt.plot(t, n_list, label=label, linestyle=\"--\")\n", "plt.xlabel(\"$t$\")\n", "plt.ylabel(r\"Occupation $\\langle a^\\dagger_0 a_0 \\rangle$\")\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "974d31d5-004a-49bf-a785-43814d20e7b7", "metadata": {}, "source": [ "The prediction is consistent with the Marcus theory ,where the Marcus rate is\n", "\n", "$$\n", "k = \\frac{V^2}{\\hbar} \\sqrt{\\frac{\\pi\\beta}{\\lambda}} \\exp{\\left (-\\frac{\\beta(\\lambda + \\Delta G)^2}{4\\lambda} \\right )}\n", "$$\n", "Here $\\lambda = 2g^2\\omega = 1$ is the reorganization energy." ] }, { "cell_type": "markdown", "id": "e08d40a5-f445-436d-a0ba-19262d921da3", "metadata": {}, "source": [ "## Features of Time Evolution Schemes\n", "Renormalizer has a lot of different time evolution schemes, the most commonly used ones are\n", "1. Propagation and Compression: `EvolveMethod.prop_and_compress`\n", "2. Single-site TDVP-PS: `EvolveMethod.tdvp_ps`\n", "3. Two-site TDVP-PS: `EvolveMethod.tdvp_ps2`\n", "4. TDVP with varianble mean field (VMF): `EvolveMethod.tdvp_vmf`" ] }, { "cell_type": "markdown", "id": "c3831bf8-71f4-4ecc-ab2f-9cc9855b2c1e", "metadata": {}, "source": [ "The features of these methods are as follows\n", "\n", "| Name | Accuracy | Computational Cost | Adaptive Step-Size | Adaptive Bond Dimension | Projection Error |\n", "|--------------------|----------|--------------------|--------------------|-------------------------|------------------|\n", "| `prop_and_compress`| Low | High | partial | Yes | No |\n", "| `tdvp_ps` | High | Low | No | No | Yes |\n", "| `tdvp_ps2` | High | High | No | Yes | Partial |\n", "| `tdvp_vmf` | High | High | Yes | No | Yes |\n" ] }, { "cell_type": "markdown", "id": "5db04c05-c923-4412-9930-003a2ab1d6a8", "metadata": {}, "source": [ "\"Adaptive Step-Size\" refers to the ability to dynamically adjust the time-evolution step size based on a predefined error threshold. In practice, this means the method automatically takes smaller steps when the wavefunction changes abruptly and larger steps when it evolves smoothly. For example, `tdvp_vmf` performs multiple small steps within a single call to the `evolve` method. This capability removes the need for users to manually check step-size convergence in TD-DMRG by testing multiple step sizes.\n", "\n", "\"Adaptive Bond Dimension\" refers to the ability to dynamically adjust the bond dimension during time evolution. Typically, the initial state is a Hartree product state. For `tdvp_ps` and `tdvp_vmf`, the `expand_bond_dimension` method should be called before starting the time evolution. Otherwise, the simulation will proceed with a bond dimension of 1 rather than the value specified in the optimization settings.\n", "\n", "\"Projection Error\" is the error introduced when projecting the time derivative onto the MPS manifold.\n", "\n", "Empirically, we recommend `tdvp_ps` for production level calculations." ] }, { "cell_type": "code", "execution_count": null, "id": "2ff2ddce-c83f-4b46-a9e3-59f3861cd3d5", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.17" } }, "nbformat": 4, "nbformat_minor": 5 }