{ "cells": [ { "cell_type": "markdown", "id": "3bbe8002-bdf3-490c-bde0-80dd3713a3d0", "metadata": {}, "source": [ "## Association/Dissociation reaction `2A <-> C`\n", "#### with 2nd-order kinetics for `A`, \n", "#### and 1-st order kinetics for `C`\n", "\n", "Taken to equilibrium. (Adaptive variable time teps are used)\n", "\n", "_See also the experiment \"1D/reactions/reaction_7\"_ " ] }, { "cell_type": "code", "execution_count": 1, "id": "1faf5f58-9b4b-4d21-9f56-61a02ad8043c", "metadata": {}, "outputs": [], "source": [ "LAST_REVISED = \"Oct. 11, 2024\"\n", "LIFE123_VERSION = \"1.0.0.beta.39\" # Library version this experiment is based on" ] }, { "cell_type": "code", "execution_count": 2, "id": "b2f7a4de-72d5-4213-824a-ccdb58b9ba66", "metadata": {}, "outputs": [], "source": [ "#import set_path # Using MyBinder? Uncomment this before running the next cell!" ] }, { "cell_type": "code", "execution_count": 3, "id": "b708df90", "metadata": { "tags": [] }, "outputs": [], "source": [ "#import sys\n", "#sys.path.append(\"C:/some_path/my_env_or_install\") # CHANGE to the folder containing your venv or libraries installation!\n", "# NOTE: If any of the imports below can't find a module, uncomment the lines above, or try: import set_path \n", "\n", "from experiments.get_notebook_info import get_notebook_basename\n", "\n", "from life123 import UniformCompartment\n", "from life123 import GraphicLog" ] }, { "cell_type": "code", "execution_count": 4, "id": "83c3cc5f-de21-4f66-9988-2806fbf0666d", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-> Output will be LOGGED into the file 'react_4.log.htm'\n" ] } ], "source": [ "# Initialize the HTML logging (for the graphics)\n", "log_file = get_notebook_basename() + \".log.htm\" # Use the notebook base filename for the log file\n", "\n", "# Set up the use of some specified graphic (Vue) components\n", "GraphicLog.config(filename=log_file,\n", " components=[\"vue_cytoscape_2\"],\n", " extra_js=\"https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.21.2/cytoscape.umd.js\")" ] }, { "cell_type": "code", "execution_count": null, "id": "429c1b46-8a5e-45a1-a88e-5af3f278f5d8", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "475aa75c-9a1d-42dc-adfe-88614e8ad7fc", "metadata": {}, "source": [ "# PART 1 - The Simulation" ] }, { "cell_type": "markdown", "id": "9329208b-070f-4902-8f37-0f11ddf75ed6", "metadata": {}, "source": [ "# Initialize the System\n", "Specify the chemicals, the reactions, and the initial state" ] }, { "cell_type": "code", "execution_count": 5, "id": "72b4245c-de4e-480d-a501-3495b7ed8bc4", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of reactions: 1 (at temp. 25 C)\n", "0: 2 A <-> C (kF = 3 / kR = 2 / delta_G = -1,005.1 / K = 1.5) | 2-th order in reactant A\n", "Set of chemicals involved in the above reactions: {'A', 'C'}\n" ] } ], "source": [ "# Instantiate the simulator and specify the chemicals\n", "dynamics = UniformCompartment(names=[\"A\", \"C\"], preset=\"fast\")\n", "\n", "# Reaction 2A <-> C , with 2nd-order kinetics for A, and 1st-order kinetics for C\n", "dynamics.add_reaction(reactants=[(2, \"A\")], products=\"C\",\n", " forward_rate=3., reverse_rate=2.) \n", "# Note: the reaction order for a chemical defaults to its stoichiometry coefficient; \n", "# to specify it explicitly, pass it as 3rd term in tuple: (2, \"A\", 2)\n", "\n", "dynamics.describe_reactions()" ] }, { "cell_type": "code", "execution_count": 6, "id": "cb582868-431c-4022-aa0e-a2f554f80d6c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[GRAPHIC ELEMENT SENT TO LOG FILE `react_4.log.htm`]\n" ] } ], "source": [ "# Send a plot of the network of reactions to the HTML log file\n", "dynamics.plot_reaction_network(\"vue_cytoscape_2\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "ae304704-c8d9-4cef-9e0b-2587bb3909ef", "metadata": {}, "outputs": [], "source": [ "# Initial concentrations of all the chemicals, in their index order\n", "dynamics.set_conc([200., 40.], snapshot=True)" ] }, { "cell_type": "code", "execution_count": 8, "id": "a605dacf-2c67-403e-9aa9-5be25fc9f481", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SYSTEM STATE at Time t = 0:\n", "2 species:\n", " Species 0 (A). Conc: 200.0\n", " Species 1 (C). Conc: 40.0\n", "Set of chemicals involved in reactions: {'A', 'C'}\n" ] } ], "source": [ "dynamics.describe_state()" ] }, { "cell_type": "code", "execution_count": 9, "id": "0ff2c242-a15b-456d-ad56-0ba1041c0b4c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEACcaption
00.0200.040.0Initialized state
\n", "
" ], "text/plain": [ " SYSTEM TIME A C caption\n", "0 0.0 200.0 40.0 Initialized state" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_history()" ] }, { "cell_type": "markdown", "id": "fc516ca2-e62d-4784-b826-5372ff7f4c75", "metadata": { "tags": [] }, "source": [ "## Run the reaction" ] }, { "cell_type": "code", "execution_count": 10, "id": "2502cd11-0df9-4303-8895-98401a1df7b8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Some steps were backtracked and re-done, to prevent negative concentrations or excessively large concentration changes\n", "110 total step(s) taken\n", "Number of step re-do's because of negative concentrations: 2\n", "Number of step re-do's because of elective soft aborts: 8\n", "Norm usage: {'norm_A': 59, 'norm_B': 30, 'norm_C': 30, 'norm_D': 30}\n" ] } ], "source": [ "dynamics.enable_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n", "\n", "dynamics.single_compartment_react(initial_step=0.002, duration=0.03,\n", " snapshots={\"initial_caption\": \"1st reaction step\",\n", " \"final_caption\": \"last reaction step\"},\n", " variable_steps=True)" ] }, { "cell_type": "markdown", "id": "99a9a4b2-a588-4ba5-85c9-0a5a5d1dbaad", "metadata": {}, "source": [ "### Note how the (tentative) original time step that we provide, 0.002, turned out to be so large that the simulation backtracks several times, because of \"hard\" aborts (negative concentrations) or \"soft\" aborts (concentration changes surpassing the thresholds we provided)\n", "\n", "#### For example, the first step was automatically reduced from 0.002 to 0.000008" ] }, { "cell_type": "code", "execution_count": 11, "id": "80fbaee3-bd6f-4197-9270-23374d46a4a7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SYSTEM TIMEACcaption
00.000000200.00000040.000000Initialized state
10.000008197.98580441.0070981st reaction step
20.000015196.40678941.796605
30.000025194.07595342.962023
40.000033192.25534943.872326
...............
1060.01382913.032172133.483914
1070.01676211.608977134.195511
1080.02116310.412711134.793645
1090.0277659.677514135.161243
1100.0376669.466796135.266602last reaction step
\n", "

111 rows × 4 columns

\n", "
" ], "text/plain": [ " SYSTEM TIME A C caption\n", "0 0.000000 200.000000 40.000000 Initialized state\n", "1 0.000008 197.985804 41.007098 1st reaction step\n", "2 0.000015 196.406789 41.796605 \n", "3 0.000025 194.075953 42.962023 \n", "4 0.000033 192.255349 43.872326 \n", ".. ... ... ... ...\n", "106 0.013829 13.032172 133.483914 \n", "107 0.016762 11.608977 134.195511 \n", "108 0.021163 10.412711 134.793645 \n", "109 0.027765 9.677514 135.161243 \n", "110 0.037666 9.466796 135.266602 last reaction step\n", "\n", "[111 rows x 4 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_history()" ] }, { "cell_type": "code", "execution_count": 12, "id": "9af1fff4-8551-4c15-94fa-44c59cf9afe0", "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "A", "line": { "color": "darkturquoise", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 8.398079999999997e-06, 1.5116543999999995e-05, 2.5194239999999993e-05, 3.325639679999999e-05, 4.131855359999999e-05, 4.9380710399999987e-05, 5.7442867199999985e-05, 6.550502399999998e-05, 7.356718079999997e-05, 8.162933759999996e-05, 8.969149439999995e-05, 9.775365119999994e-05, 0.00010984688639999994, 0.00011952147455999994, 0.00012919606271999994, 0.00013887065087999994, 0.00014854523903999993, 0.00015821982719999993, 0.00016789441535999992, 0.00017756900351999992, 0.0001872435916799999, 0.00020175547391999992, 0.0002133649797119999, 0.0002249744855039999, 0.00023658399129599988, 0.0002481934970879999, 0.0002598030028799999, 0.00027141250867199993, 0.00028302201446399995, 0.00030043627315199994, 0.00031436768010239993, 0.0003282990870527999, 0.0003422304940031999, 0.0003561619009535999, 0.00037009330790399987, 0.00038402471485439986, 0.00040492182527999986, 0.0004216395136204799, 0.0004383572019609599, 0.0004550748903014399, 0.00047179257864191993, 0.0004885102669823999, 0.0005052279553228799, 0.0005303044878335998, 0.0005503657138421758, 0.0005704269398507519, 0.0005904881658593279, 0.000610549391867904, 0.00063061061787648, 0.000660702456889344, 0.0006847759280996351, 0.0007088493993099263, 0.0007329228705202174, 0.0007569963417305086, 0.0007810698129407998, 0.0008171800197562366, 0.000846068185208586, 0.0008749563506609355, 0.0009038445161132849, 0.0009327326815656344, 0.0009760649297441585, 0.0010107307282869779, 0.001045396526829797, 0.0010800623253726163, 0.0011147281239154356, 0.0011667268217296647, 0.001208325779981048, 0.0012499247382324313, 0.0012915236964838146, 0.0013539221338608894, 0.0014038408837625492, 0.001453759633664209, 0.0015036783835658688, 0.0015785565084183587, 0.0016384590083003505, 0.0016983615081823424, 0.00178821525800533, 0.0018600982578637203, 0.0019319812577221105, 0.002039805757509696, 0.0021260653573397644, 0.002212324957169833, 0.002341714356914935, 0.002445225876711017, 0.0025487373965070986, 0.0027040046762012216, 0.0028282184999565197, 0.0030145392355894673, 0.0031635958240958254, 0.0033871807068553625, 0.003566048613062992, 0.0038343504723744363, 0.004048991959823592, 0.004370954190997325, 0.004628523975936312, 0.005014878653344792, 0.005401233330753272, 0.005787588008161752, 0.006367120024274472, 0.006946652040387191, 0.007526184056499911, 0.00839548208066899, 0.009264780104838069, 0.010568727141091689, 0.011872674177345308, 0.013828594731725739, 0.016762475563296384, 0.02116329681065235, 0.027764528681686298, 0.03766637648823722 ], "xaxis": "x", "y": [ 200, 197.9858044928, 196.4067891314626, 194.07595334497333, 192.25534898661533, 190.46879740430532, 188.71534993819054, 186.99409292105136, 185.30414607674047, 183.64466100591383, 182.01481975354585, 180.413833453115, 178.8409410427091, 176.52264155159475, 174.7158686464458, 172.94596814009458, 171.21182008364218, 169.51234954024133, 167.84652434187538, 166.21335297917756, 164.61188261516287, 163.04119721445474, 160.7300250631269, 158.93326473964117, 157.1765542323314, 155.45856600172303, 153.77803069527553, 152.133733987297, 150.52451362294565, 148.94925665108212, 146.6357169224966, 144.84211135489045, 143.09225548651855, 141.38456387891168, 139.71752700678886, 138.08970675790684, 136.4997322498795, 134.16957778233262, 132.36879532470405, 130.61621777514426, 128.90993008249367, 127.24811762984149, 125.62905971933556, 124.05112355869569, 121.74357627793043, 119.96590134278878, 118.24001728379018, 116.56368739309407, 114.93480237154793, 113.351371359806, 111.04158489742949, 109.2687305903879, 107.55237706353577, 105.88985862493844, 104.27867529774959, 102.7164801024925, 100.44336119220299, 98.7050418479391, 97.02682657844456, 95.40564341405201, 93.83862706351552, 91.56533911676678, 89.83453130782063, 88.16914727211656, 86.56553760884185, 85.02032056253428, 82.78537648667351, 81.09121389710347, 79.46648786673279, 77.9070066041123, 75.65986265590448, 73.96572967479426, 72.34768795251657, 70.80071472427237, 68.57997565365879, 66.91489951075998, 65.3311102130008, 63.06862999277249, 61.38426396067837, 59.79055059290303, 57.52526128383666, 55.85096377632318, 54.2752007633405, 52.0466837978649, 50.41148777357389, 48.880683692615165, 46.726553773792986, 45.157276312252364, 42.9651397869594, 41.38484933300463, 39.193940122296404, 37.63146143283778, 35.48182042695287, 33.965438176115484, 31.895273567682466, 30.450914577527918, 28.494240237134733, 26.806442549712752, 25.336314685381662, 23.399376307880704, 21.792923050674183, 20.440773545233533, 18.712754345180954, 17.34062951686442, 15.673056180321085, 14.440546857084291, 13.032171680702598, 11.6089773772302, 10.412710546541897, 9.677513749893356, 9.466795875764356 ], "yaxis": "y" }, { "hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "C", "line": { "color": "green", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "C", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 8.398079999999997e-06, 1.5116543999999995e-05, 2.5194239999999993e-05, 3.325639679999999e-05, 4.131855359999999e-05, 4.9380710399999987e-05, 5.7442867199999985e-05, 6.550502399999998e-05, 7.356718079999997e-05, 8.162933759999996e-05, 8.969149439999995e-05, 9.775365119999994e-05, 0.00010984688639999994, 0.00011952147455999994, 0.00012919606271999994, 0.00013887065087999994, 0.00014854523903999993, 0.00015821982719999993, 0.00016789441535999992, 0.00017756900351999992, 0.0001872435916799999, 0.00020175547391999992, 0.0002133649797119999, 0.0002249744855039999, 0.00023658399129599988, 0.0002481934970879999, 0.0002598030028799999, 0.00027141250867199993, 0.00028302201446399995, 0.00030043627315199994, 0.00031436768010239993, 0.0003282990870527999, 0.0003422304940031999, 0.0003561619009535999, 0.00037009330790399987, 0.00038402471485439986, 0.00040492182527999986, 0.0004216395136204799, 0.0004383572019609599, 0.0004550748903014399, 0.00047179257864191993, 0.0004885102669823999, 0.0005052279553228799, 0.0005303044878335998, 0.0005503657138421758, 0.0005704269398507519, 0.0005904881658593279, 0.000610549391867904, 0.00063061061787648, 0.000660702456889344, 0.0006847759280996351, 0.0007088493993099263, 0.0007329228705202174, 0.0007569963417305086, 0.0007810698129407998, 0.0008171800197562366, 0.000846068185208586, 0.0008749563506609355, 0.0009038445161132849, 0.0009327326815656344, 0.0009760649297441585, 0.0010107307282869779, 0.001045396526829797, 0.0010800623253726163, 0.0011147281239154356, 0.0011667268217296647, 0.001208325779981048, 0.0012499247382324313, 0.0012915236964838146, 0.0013539221338608894, 0.0014038408837625492, 0.001453759633664209, 0.0015036783835658688, 0.0015785565084183587, 0.0016384590083003505, 0.0016983615081823424, 0.00178821525800533, 0.0018600982578637203, 0.0019319812577221105, 0.002039805757509696, 0.0021260653573397644, 0.002212324957169833, 0.002341714356914935, 0.002445225876711017, 0.0025487373965070986, 0.0027040046762012216, 0.0028282184999565197, 0.0030145392355894673, 0.0031635958240958254, 0.0033871807068553625, 0.003566048613062992, 0.0038343504723744363, 0.004048991959823592, 0.004370954190997325, 0.004628523975936312, 0.005014878653344792, 0.005401233330753272, 0.005787588008161752, 0.006367120024274472, 0.006946652040387191, 0.007526184056499911, 0.00839548208066899, 0.009264780104838069, 0.010568727141091689, 0.011872674177345308, 0.013828594731725739, 0.016762475563296384, 0.02116329681065235, 0.027764528681686298, 0.03766637648823722 ], "xaxis": "x", "y": [ 40, 41.0070977536, 41.796605434268706, 42.962023327513336, 43.87232550669233, 44.76560129784734, 45.642325030904736, 46.502953539474326, 47.34792696162977, 48.17766949704308, 48.99259012322707, 49.79308327344249, 50.57952947864544, 51.73867922420261, 52.64206567677707, 53.52701592995269, 54.39408995817889, 55.243825229879306, 56.076737829062274, 56.893323510411186, 57.69405869241852, 58.47940139277259, 59.634987468436506, 60.53336763017938, 61.41172288383427, 62.27071699913845, 63.1109846523622, 63.933133006351454, 64.73774318852713, 65.5253716744589, 66.68214153875165, 67.57894432255473, 68.45387225674068, 69.30771806054412, 70.14123649660553, 70.95514662104654, 71.75013387506021, 72.91521110883365, 73.81560233764793, 74.69189111242783, 75.54503495875312, 76.37594118507921, 77.18547014033219, 77.97443822065212, 79.12821186103476, 80.01704932860558, 80.87999135810489, 81.71815630345294, 82.53259881422602, 83.32431432009699, 84.47920755128524, 85.36563470480604, 86.22381146823211, 87.05507068753077, 87.8606623511252, 88.64175994875374, 89.77831940389851, 90.64747907603045, 91.48658671077771, 92.29717829297398, 93.08068646824222, 94.2173304416166, 95.08273434608968, 95.91542636394172, 96.71723119557907, 97.48983971873285, 98.60731175666324, 99.45439305144825, 100.26675606663359, 101.04649669794384, 102.17006867204775, 103.01713516260286, 103.8261560237417, 104.5996426378638, 105.71001217317058, 106.54255024461999, 107.33444489349958, 108.46568500361373, 109.30786801966079, 110.10472470354846, 111.23736935808164, 112.07451811183837, 112.86239961832972, 113.97665810106751, 114.79425611321302, 115.55965815369238, 116.63672311310347, 117.42136184387378, 118.51743010652027, 119.30757533349765, 120.40302993885176, 121.18426928358107, 122.25908978652353, 123.01728091194222, 124.05236321615872, 124.774542711236, 125.75287988143259, 126.59677872514358, 127.33184265730912, 128.3003118460596, 129.10353847466286, 129.77961322738318, 130.64362282740947, 131.32968524156774, 132.16347190983942, 132.77972657145781, 133.48391415964866, 134.19551131138485, 134.793644726729, 135.1612431250533, 135.26660206211778 ], "yaxis": "y" } ], "layout": { "autosize": true, "legend": { "title": { "text": "Chemical" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Reaction 2A <-> C (2nd order in A). Changes in concentrations with time" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ 0, 0.03766637648823722 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -1.1183821311376239, 210.58517800690197 ], "title": { "text": "Concentration" }, "type": "linear" } } }, "image/png": "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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dynamics.plot_history(colors=['darkturquoise', 'green'],\n", " title=\"Reaction 2A <-> C (2nd order in A). Changes in concentrations with time\")" ] }, { "cell_type": "markdown", "id": "b1366038-2dea-4d69-a655-ae464ca22922", "metadata": {}, "source": [ "### Note: \"A\" (now largely depleted) is the limiting reagent" ] }, { "cell_type": "code", "execution_count": null, "id": "0e7cdbbd-9165-495d-a371-56fefae847cd", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "fce512b2-bcc8-4721-85c9-2241ab3ae55e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "82daf161-82de-44a5-9310-da2333ba6faa", "metadata": {}, "source": [ "# PART 2 - Analysis and Validation" ] }, { "cell_type": "markdown", "id": "39cb26e8-c061-41ab-a91a-77df6f431efa", "metadata": {}, "source": [ "#### Let's take a look at time t=0.002, which in our simulation run had proposed as the first step:" ] }, { "cell_type": "code", "execution_count": 13, "id": "232349ed-fa23-4ebf-b4ba-d5bddcc8902c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
search_valueSYSTEM TIMEACcaption
800.0020.0020457.525261111.237369
\n", "
" ], "text/plain": [ " search_value SYSTEM TIME A C caption\n", "80 0.002 0.00204 57.525261 111.237369 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Locate the value closest to the original time step we had requested\n", "dynamics.get_history(t=0.002)" ] }, { "cell_type": "markdown", "id": "b03c9994-cade-48cf-8b14-4b894cc755cf", "metadata": {}, "source": [ "### Because of the very large changes happening between t=0 and 0.002, the simulation automatically slowed down and opted to actually take 80 steps in lieu of the 1 step we had (rather optimistically!) proposed \n", "The number of variable steps actually taken can be modulated by changing the _preset_ passed when the `UniformCompartment` class is first instantiated - or, alternatively, using calls to `use_adaptive_preset()`. For finer control, advanced users may tweak internal parameters such as \"norm thresholds\" and \"step factors\"" ] }, { "cell_type": "markdown", "id": "ce3cd198-de57-4e0f-80f2-8e07f2cd7f96", "metadata": {}, "source": [ "### Notice how, late in the simulation, the step sizes get BIGGER than the 0.002 we had originally proposed:" ] }, { "cell_type": "code", "execution_count": 14, "id": "071a9544-639a-40f7-92bc-3a20050c9c00", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "From time 0 to 8.398e-06, in 1 step of 8.4e-06\n", "From time 8.398e-06 to 1.512e-05, in 1 step of 6.72e-06\n", "From time 1.512e-05 to 2.519e-05, in 1 step of 1.01e-05\n", "From time 2.519e-05 to 9.775e-05, in 9 steps of 8.06e-06\n", "From time 9.775e-05 to 0.0001098, in 1 step of 1.21e-05\n", "From time 0.0001098 to 0.0001872, in 8 steps of 9.67e-06\n", "From time 0.0001872 to 0.0002018, in 1 step of 1.45e-05\n", "From time 0.0002018 to 0.000283, in 7 steps of 1.16e-05\n", "From time 0.000283 to 0.0003004, in 1 step of 1.74e-05\n", "From time 0.0003004 to 0.000384, in 6 steps of 1.39e-05\n", "From time 0.000384 to 0.0004049, in 1 step of 2.09e-05\n", "From time 0.0004049 to 0.0005052, in 6 steps of 1.67e-05\n", "From time 0.0005052 to 0.0005303, in 1 step of 2.51e-05\n", "From time 0.0005303 to 0.0006306, in 5 steps of 2.01e-05\n", "From time 0.0006306 to 0.0006607, in 1 step of 3.01e-05\n", "From time 0.0006607 to 0.0007811, in 5 steps of 2.41e-05\n", "From time 0.0007811 to 0.0008172, in 1 step of 3.61e-05\n", "From time 0.0008172 to 0.0009327, in 4 steps of 2.89e-05\n", "From time 0.0009327 to 0.0009761, in 1 step of 4.33e-05\n", "From time 0.0009761 to 0.001115, in 4 steps of 3.47e-05\n", "From time 0.001115 to 0.001167, in 1 step of 5.2e-05\n", "From time 0.001167 to 0.001292, in 3 steps of 4.16e-05\n", "From time 0.001292 to 0.001354, in 1 step of 6.24e-05\n", "From time 0.001354 to 0.001504, in 3 steps of 4.99e-05\n", "From time 0.001504 to 0.001579, in 1 step of 7.49e-05\n", "From time 0.001579 to 0.001698, in 2 steps of 5.99e-05\n", "From time 0.001698 to 0.001788, in 1 step of 8.99e-05\n", "From time 0.001788 to 0.001932, in 2 steps of 7.19e-05\n", "From time 0.001932 to 0.00204, in 1 step of 0.000108\n", "From time 0.00204 to 0.002212, in 2 steps of 8.63e-05\n", "From time 0.002212 to 0.002342, in 1 step of 0.000129\n", "From time 0.002342 to 0.002549, in 2 steps of 0.000104\n", "From time 0.002549 to 0.002704, in 1 step of 0.000155\n", "From time 0.002704 to 0.002828, in 1 step of 0.000124\n", "From time 0.002828 to 0.003015, in 1 step of 0.000186\n", "From time 0.003015 to 0.003164, in 1 step of 0.000149\n", "From time 0.003164 to 0.003387, in 1 step of 0.000224\n", "From time 0.003387 to 0.003566, in 1 step of 0.000179\n", "From time 0.003566 to 0.003834, in 1 step of 0.000268\n", "From time 0.003834 to 0.004049, in 1 step of 0.000215\n", "From time 0.004049 to 0.004371, in 1 step of 0.000322\n", "From time 0.004371 to 0.004629, in 1 step of 0.000258\n", "From time 0.004629 to 0.005788, in 3 steps of 0.000386\n", "From time 0.005788 to 0.007526, in 3 steps of 0.00058\n", "From time 0.007526 to 0.009265, in 2 steps of 0.000869\n", "From time 0.009265 to 0.01187, in 2 steps of 0.0013\n", "From time 0.01187 to 0.01383, in 1 step of 0.00196\n", "From time 0.01383 to 0.01676, in 1 step of 0.00293\n", "From time 0.01676 to 0.02116, in 1 step of 0.0044\n", "From time 0.02116 to 0.02776, in 1 step of 0.0066\n", "From time 0.02776 to 0.03767, in 1 step of 0.0099\n", "(110 steps total)\n" ] } ], "source": [ "dynamics.get_diagnostics().explain_time_advance()" ] }, { "cell_type": "markdown", "id": "9fb5f6b8-dde3-415d-9e90-b8d102bfd748", "metadata": {}, "source": [ "### One can see how the reaction proceeds in far-smaller steps in the early times, when the concentrations are changing much more rapidly" ] }, { "cell_type": "code", "execution_count": 15, "id": "12118fdd-5e81-42e5-b271-818f8d686b79", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([200., 40.], dtype=float32),\n", " array([197.98581, 41.0071 ], dtype=float32))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's look at the first two arrays of concentrations, from the run's history\n", "arr0 = dynamics.get_historical_concentrations(0) # The initial concentrations\n", "arr1 = dynamics.get_historical_concentrations(1) # After the first actual simulation step\n", "arr0, arr1" ] }, { "cell_type": "code", "execution_count": 16, "id": "a2450ae8-e342-4adf-9330-ce86a1dfcbeb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's verify that the reaction's stoichiometry is being respected\n", "dynamics.get_diagnostics().stoichiometry_checker(rxn_index=0, \n", " conc_arr_before = arr0, \n", " conc_arr_after = arr1)" ] }, { "cell_type": "markdown", "id": "bf6dc3ed-5999-4379-8ae1-05f73e2a670d", "metadata": {}, "source": [ "#### Indeed, it can be easy checked that the drop in [A] is twice the increase in [C], as dictated by the stoichiometry.\n", "The diagnostic data, enabled by our earlier call to `set_diagnostics()`, makes it convenient to check" ] }, { "cell_type": "code", "execution_count": 17, "id": "4ccfa79c-0bd4-40f0-be82-2da19523cd40", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reaction: 2 A <-> C\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
START_TIMEtime_stepabortedDelta ADelta Ccaptionrate
00.0000000.002000TrueNaNNaNaborted: neg. conc. in `A`NaN
10.0000000.001000TrueNaNNaNaborted: neg. conc. in `A`NaN
20.0000000.000500True-119.92000059.960000aborted: excessive norm value(s)119920.000000
30.0000000.000300True-71.95200035.976000aborted: excessive norm value(s)119920.000000
40.0000000.000180True-43.17120021.585600aborted: excessive norm value(s)119920.000000
50.0000000.000108True-25.90272012.951360aborted: excessive norm value(s)119920.000000
60.0000000.000065True-15.5416327.770816aborted: excessive norm value(s)119920.000000
70.0000000.000039True-9.3249794.662490aborted: excessive norm value(s)119920.000000
80.0000000.000023True-5.5949882.797494aborted: excessive norm value(s)119920.000000
90.0000000.000014True-3.3569931.678496aborted: excessive norm value(s)119920.000000
100.0000000.000008False-2.0141961.007098119920.000000
110.0000080.000007False-1.5790150.789508117513.122146
120.0000150.000010False-2.3308361.165418115643.287240
130.0000250.000008False-1.8206040.910302112910.502954
140.0000330.000008False-1.7865520.893276110798.612991
\n", "
" ], "text/plain": [ " START_TIME time_step aborted Delta A Delta C \\\n", "0 0.000000 0.002000 True NaN NaN \n", "1 0.000000 0.001000 True NaN NaN \n", "2 0.000000 0.000500 True -119.920000 59.960000 \n", "3 0.000000 0.000300 True -71.952000 35.976000 \n", "4 0.000000 0.000180 True -43.171200 21.585600 \n", "5 0.000000 0.000108 True -25.902720 12.951360 \n", "6 0.000000 0.000065 True -15.541632 7.770816 \n", "7 0.000000 0.000039 True -9.324979 4.662490 \n", "8 0.000000 0.000023 True -5.594988 2.797494 \n", "9 0.000000 0.000014 True -3.356993 1.678496 \n", "10 0.000000 0.000008 False -2.014196 1.007098 \n", "11 0.000008 0.000007 False -1.579015 0.789508 \n", "12 0.000015 0.000010 False -2.330836 1.165418 \n", "13 0.000025 0.000008 False -1.820604 0.910302 \n", "14 0.000033 0.000008 False -1.786552 0.893276 \n", "\n", " caption rate \n", "0 aborted: neg. conc. in `A` NaN \n", "1 aborted: neg. conc. in `A` NaN \n", "2 aborted: excessive norm value(s) 119920.000000 \n", "3 aborted: excessive norm value(s) 119920.000000 \n", "4 aborted: excessive norm value(s) 119920.000000 \n", "5 aborted: excessive norm value(s) 119920.000000 \n", "6 aborted: excessive norm value(s) 119920.000000 \n", "7 aborted: excessive norm value(s) 119920.000000 \n", "8 aborted: excessive norm value(s) 119920.000000 \n", "9 aborted: excessive norm value(s) 119920.000000 \n", "10 119920.000000 \n", "11 117513.122146 \n", "12 115643.287240 \n", "13 112910.502954 \n", "14 110798.612991 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_diagnostics().get_rxn_data(rxn_index=0, head=15)" ] }, { "cell_type": "markdown", "id": "a2f4d0e3-b259-4bd1-a94e-5751264775f7", "metadata": {}, "source": [ "### From the diagnostic data, it can be seen that the first step had several false starts - and the time was automatically repeatedly shrunk - but finally happened. `Delta A` indeed equals - 2 * `Delta C`, satisfying the stoichiometry" ] }, { "cell_type": "code", "execution_count": 18, "id": "014c9870-1e91-4979-a24b-6e9f1c216640", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_diagnostics().stoichiometry_checker_entire_run()" ] }, { "cell_type": "markdown", "id": "21ba52bf-0754-496f-bca7-e120b54ff403", "metadata": {}, "source": [ "### Check the final equilibrium" ] }, { "cell_type": "code", "execution_count": 19, "id": "820a5564-bd4e-49db-8289-c912a106a5d9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0: 2 A <-> C\n", "Final concentrations: [A] = 9.467 ; [C] = 135.3\n", "1. Ratio of reactant/product concentrations, adjusted for reaction orders: 1.50933\n", " Formula used: [C] / [A]^2 \n", "2. Ratio of forward/reverse reaction rates: 1.5\n", "Discrepancy between the two values: 0.6221 %\n", "Reaction IS in equilibrium (within 1% tolerance)\n", "\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verify that the reaction has reached equilibrium\n", "dynamics.is_in_equilibrium()" ] }, { "cell_type": "markdown", "id": "6ac3dd4e-9dd0-4d3a-aa83-76102bd79524", "metadata": { "tags": [] }, "source": [ "## Display the variable time steps" ] }, { "cell_type": "code", "execution_count": 20, "id": "21e4814e-5603-4d38-acc8-549b1d59ec93", "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Chemical=A
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "A", "line": { "color": "darkturquoise", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "A", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 8.398079999999997e-06, 1.5116543999999995e-05, 2.5194239999999993e-05, 3.325639679999999e-05, 4.131855359999999e-05, 4.9380710399999987e-05, 5.7442867199999985e-05, 6.550502399999998e-05, 7.356718079999997e-05, 8.162933759999996e-05, 8.969149439999995e-05, 9.775365119999994e-05, 0.00010984688639999994, 0.00011952147455999994, 0.00012919606271999994, 0.00013887065087999994, 0.00014854523903999993, 0.00015821982719999993, 0.00016789441535999992, 0.00017756900351999992, 0.0001872435916799999, 0.00020175547391999992, 0.0002133649797119999, 0.0002249744855039999, 0.00023658399129599988, 0.0002481934970879999, 0.0002598030028799999, 0.00027141250867199993, 0.00028302201446399995, 0.00030043627315199994, 0.00031436768010239993, 0.0003282990870527999, 0.0003422304940031999, 0.0003561619009535999, 0.00037009330790399987, 0.00038402471485439986, 0.00040492182527999986, 0.0004216395136204799, 0.0004383572019609599, 0.0004550748903014399, 0.00047179257864191993, 0.0004885102669823999, 0.0005052279553228799, 0.0005303044878335998, 0.0005503657138421758, 0.0005704269398507519, 0.0005904881658593279, 0.000610549391867904, 0.00063061061787648, 0.000660702456889344, 0.0006847759280996351, 0.0007088493993099263, 0.0007329228705202174, 0.0007569963417305086, 0.0007810698129407998, 0.0008171800197562366, 0.000846068185208586, 0.0008749563506609355, 0.0009038445161132849, 0.0009327326815656344, 0.0009760649297441585, 0.0010107307282869779, 0.001045396526829797, 0.0010800623253726163, 0.0011147281239154356, 0.0011667268217296647, 0.001208325779981048, 0.0012499247382324313, 0.0012915236964838146, 0.0013539221338608894, 0.0014038408837625492, 0.001453759633664209, 0.0015036783835658688, 0.0015785565084183587, 0.0016384590083003505, 0.0016983615081823424, 0.00178821525800533, 0.0018600982578637203, 0.0019319812577221105, 0.002039805757509696, 0.0021260653573397644, 0.002212324957169833, 0.002341714356914935, 0.002445225876711017, 0.0025487373965070986, 0.0027040046762012216, 0.0028282184999565197, 0.0030145392355894673, 0.0031635958240958254, 0.0033871807068553625, 0.003566048613062992, 0.0038343504723744363, 0.004048991959823592, 0.004370954190997325, 0.004628523975936312, 0.005014878653344792, 0.005401233330753272, 0.005787588008161752, 0.006367120024274472, 0.006946652040387191, 0.007526184056499911, 0.00839548208066899, 0.009264780104838069, 0.010568727141091689, 0.011872674177345308, 0.013828594731725739, 0.016762475563296384, 0.02116329681065235, 0.027764528681686298, 0.03766637648823722 ], "xaxis": "x", "y": [ 200, 197.9858044928, 196.4067891314626, 194.07595334497333, 192.25534898661533, 190.46879740430532, 188.71534993819054, 186.99409292105136, 185.30414607674047, 183.64466100591383, 182.01481975354585, 180.413833453115, 178.8409410427091, 176.52264155159475, 174.7158686464458, 172.94596814009458, 171.21182008364218, 169.51234954024133, 167.84652434187538, 166.21335297917756, 164.61188261516287, 163.04119721445474, 160.7300250631269, 158.93326473964117, 157.1765542323314, 155.45856600172303, 153.77803069527553, 152.133733987297, 150.52451362294565, 148.94925665108212, 146.6357169224966, 144.84211135489045, 143.09225548651855, 141.38456387891168, 139.71752700678886, 138.08970675790684, 136.4997322498795, 134.16957778233262, 132.36879532470405, 130.61621777514426, 128.90993008249367, 127.24811762984149, 125.62905971933556, 124.05112355869569, 121.74357627793043, 119.96590134278878, 118.24001728379018, 116.56368739309407, 114.93480237154793, 113.351371359806, 111.04158489742949, 109.2687305903879, 107.55237706353577, 105.88985862493844, 104.27867529774959, 102.7164801024925, 100.44336119220299, 98.7050418479391, 97.02682657844456, 95.40564341405201, 93.83862706351552, 91.56533911676678, 89.83453130782063, 88.16914727211656, 86.56553760884185, 85.02032056253428, 82.78537648667351, 81.09121389710347, 79.46648786673279, 77.9070066041123, 75.65986265590448, 73.96572967479426, 72.34768795251657, 70.80071472427237, 68.57997565365879, 66.91489951075998, 65.3311102130008, 63.06862999277249, 61.38426396067837, 59.79055059290303, 57.52526128383666, 55.85096377632318, 54.2752007633405, 52.0466837978649, 50.41148777357389, 48.880683692615165, 46.726553773792986, 45.157276312252364, 42.9651397869594, 41.38484933300463, 39.193940122296404, 37.63146143283778, 35.48182042695287, 33.965438176115484, 31.895273567682466, 30.450914577527918, 28.494240237134733, 26.806442549712752, 25.336314685381662, 23.399376307880704, 21.792923050674183, 20.440773545233533, 18.712754345180954, 17.34062951686442, 15.673056180321085, 14.440546857084291, 13.032171680702598, 11.6089773772302, 10.412710546541897, 9.677513749893356, 9.466795875764356 ], "yaxis": "y" }, { "hovertemplate": "Chemical=C
SYSTEM TIME=%{x}
Concentration=%{y}", "legendgroup": "C", "line": { "color": "green", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "C", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0, 8.398079999999997e-06, 1.5116543999999995e-05, 2.5194239999999993e-05, 3.325639679999999e-05, 4.131855359999999e-05, 4.9380710399999987e-05, 5.7442867199999985e-05, 6.550502399999998e-05, 7.356718079999997e-05, 8.162933759999996e-05, 8.969149439999995e-05, 9.775365119999994e-05, 0.00010984688639999994, 0.00011952147455999994, 0.00012919606271999994, 0.00013887065087999994, 0.00014854523903999993, 0.00015821982719999993, 0.00016789441535999992, 0.00017756900351999992, 0.0001872435916799999, 0.00020175547391999992, 0.0002133649797119999, 0.0002249744855039999, 0.00023658399129599988, 0.0002481934970879999, 0.0002598030028799999, 0.00027141250867199993, 0.00028302201446399995, 0.00030043627315199994, 0.00031436768010239993, 0.0003282990870527999, 0.0003422304940031999, 0.0003561619009535999, 0.00037009330790399987, 0.00038402471485439986, 0.00040492182527999986, 0.0004216395136204799, 0.0004383572019609599, 0.0004550748903014399, 0.00047179257864191993, 0.0004885102669823999, 0.0005052279553228799, 0.0005303044878335998, 0.0005503657138421758, 0.0005704269398507519, 0.0005904881658593279, 0.000610549391867904, 0.00063061061787648, 0.000660702456889344, 0.0006847759280996351, 0.0007088493993099263, 0.0007329228705202174, 0.0007569963417305086, 0.0007810698129407998, 0.0008171800197562366, 0.000846068185208586, 0.0008749563506609355, 0.0009038445161132849, 0.0009327326815656344, 0.0009760649297441585, 0.0010107307282869779, 0.001045396526829797, 0.0010800623253726163, 0.0011147281239154356, 0.0011667268217296647, 0.001208325779981048, 0.0012499247382324313, 0.0012915236964838146, 0.0013539221338608894, 0.0014038408837625492, 0.001453759633664209, 0.0015036783835658688, 0.0015785565084183587, 0.0016384590083003505, 0.0016983615081823424, 0.00178821525800533, 0.0018600982578637203, 0.0019319812577221105, 0.002039805757509696, 0.0021260653573397644, 0.002212324957169833, 0.002341714356914935, 0.002445225876711017, 0.0025487373965070986, 0.0027040046762012216, 0.0028282184999565197, 0.0030145392355894673, 0.0031635958240958254, 0.0033871807068553625, 0.003566048613062992, 0.0038343504723744363, 0.004048991959823592, 0.004370954190997325, 0.004628523975936312, 0.005014878653344792, 0.005401233330753272, 0.005787588008161752, 0.006367120024274472, 0.006946652040387191, 0.007526184056499911, 0.00839548208066899, 0.009264780104838069, 0.010568727141091689, 0.011872674177345308, 0.013828594731725739, 0.016762475563296384, 0.02116329681065235, 0.027764528681686298, 0.03766637648823722 ], "xaxis": "x", "y": [ 40, 41.0070977536, 41.796605434268706, 42.962023327513336, 43.87232550669233, 44.76560129784734, 45.642325030904736, 46.502953539474326, 47.34792696162977, 48.17766949704308, 48.99259012322707, 49.79308327344249, 50.57952947864544, 51.73867922420261, 52.64206567677707, 53.52701592995269, 54.39408995817889, 55.243825229879306, 56.076737829062274, 56.893323510411186, 57.69405869241852, 58.47940139277259, 59.634987468436506, 60.53336763017938, 61.41172288383427, 62.27071699913845, 63.1109846523622, 63.933133006351454, 64.73774318852713, 65.5253716744589, 66.68214153875165, 67.57894432255473, 68.45387225674068, 69.30771806054412, 70.14123649660553, 70.95514662104654, 71.75013387506021, 72.91521110883365, 73.81560233764793, 74.69189111242783, 75.54503495875312, 76.37594118507921, 77.18547014033219, 77.97443822065212, 79.12821186103476, 80.01704932860558, 80.87999135810489, 81.71815630345294, 82.53259881422602, 83.32431432009699, 84.47920755128524, 85.36563470480604, 86.22381146823211, 87.05507068753077, 87.8606623511252, 88.64175994875374, 89.77831940389851, 90.64747907603045, 91.48658671077771, 92.29717829297398, 93.08068646824222, 94.2173304416166, 95.08273434608968, 95.91542636394172, 96.71723119557907, 97.48983971873285, 98.60731175666324, 99.45439305144825, 100.26675606663359, 101.04649669794384, 102.17006867204775, 103.01713516260286, 103.8261560237417, 104.5996426378638, 105.71001217317058, 106.54255024461999, 107.33444489349958, 108.46568500361373, 109.30786801966079, 110.10472470354846, 111.23736935808164, 112.07451811183837, 112.86239961832972, 113.97665810106751, 114.79425611321302, 115.55965815369238, 116.63672311310347, 117.42136184387378, 118.51743010652027, 119.30757533349765, 120.40302993885176, 121.18426928358107, 122.25908978652353, 123.01728091194222, 124.05236321615872, 124.774542711236, 125.75287988143259, 126.59677872514358, 127.33184265730912, 128.3003118460596, 129.10353847466286, 129.77961322738318, 130.64362282740947, 131.32968524156774, 132.16347190983942, 132.77972657145781, 133.48391415964866, 134.19551131138485, 134.793644726729, 135.1612431250533, 135.26660206211778 ], "yaxis": "y" } ], "layout": { "autosize": true, "legend": { "title": { "text": "Chemical" }, "tracegroupgap": 0 }, "shapes": [ { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0, "x1": 0, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 8.398079999999997e-06, "x1": 8.398079999999997e-06, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 1.5116543999999995e-05, "x1": 1.5116543999999995e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 2.5194239999999993e-05, "x1": 2.5194239999999993e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 3.325639679999999e-05, "x1": 3.325639679999999e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 4.131855359999999e-05, "x1": 4.131855359999999e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 4.9380710399999987e-05, "x1": 4.9380710399999987e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 5.7442867199999985e-05, "x1": 5.7442867199999985e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 6.550502399999998e-05, "x1": 6.550502399999998e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 7.356718079999997e-05, "x1": 7.356718079999997e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 8.162933759999996e-05, "x1": 8.162933759999996e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 8.969149439999995e-05, "x1": 8.969149439999995e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 9.775365119999994e-05, "x1": 9.775365119999994e-05, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00010984688639999994, "x1": 0.00010984688639999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00011952147455999994, "x1": 0.00011952147455999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00012919606271999994, "x1": 0.00012919606271999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00013887065087999994, "x1": 0.00013887065087999994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00014854523903999993, "x1": 0.00014854523903999993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00015821982719999993, "x1": 0.00015821982719999993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00016789441535999992, "x1": 0.00016789441535999992, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00017756900351999992, "x1": 0.00017756900351999992, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0001872435916799999, "x1": 0.0001872435916799999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00020175547391999992, "x1": 0.00020175547391999992, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0002133649797119999, "x1": 0.0002133649797119999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0002249744855039999, "x1": 0.0002249744855039999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00023658399129599988, "x1": 0.00023658399129599988, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0002481934970879999, "x1": 0.0002481934970879999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0002598030028799999, "x1": 0.0002598030028799999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00027141250867199993, "x1": 0.00027141250867199993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00028302201446399995, "x1": 0.00028302201446399995, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00030043627315199994, "x1": 0.00030043627315199994, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00031436768010239993, "x1": 0.00031436768010239993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0003282990870527999, "x1": 0.0003282990870527999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0003422304940031999, "x1": 0.0003422304940031999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0003561619009535999, "x1": 0.0003561619009535999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00037009330790399987, "x1": 0.00037009330790399987, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00038402471485439986, "x1": 0.00038402471485439986, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00040492182527999986, "x1": 0.00040492182527999986, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0004216395136204799, "x1": 0.0004216395136204799, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0004383572019609599, "x1": 0.0004383572019609599, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0004550748903014399, "x1": 0.0004550748903014399, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00047179257864191993, "x1": 0.00047179257864191993, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0004885102669823999, "x1": 0.0004885102669823999, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0005052279553228799, "x1": 0.0005052279553228799, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0005303044878335998, "x1": 0.0005303044878335998, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0005503657138421758, "x1": 0.0005503657138421758, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0005704269398507519, "x1": 0.0005704269398507519, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0005904881658593279, "x1": 0.0005904881658593279, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.000610549391867904, "x1": 0.000610549391867904, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00063061061787648, "x1": 0.00063061061787648, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.000660702456889344, "x1": 0.000660702456889344, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0006847759280996351, "x1": 0.0006847759280996351, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0007088493993099263, "x1": 0.0007088493993099263, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0007329228705202174, "x1": 0.0007329228705202174, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0007569963417305086, "x1": 0.0007569963417305086, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0007810698129407998, "x1": 0.0007810698129407998, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0008171800197562366, "x1": 0.0008171800197562366, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.000846068185208586, "x1": 0.000846068185208586, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0008749563506609355, "x1": 0.0008749563506609355, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0009038445161132849, "x1": 0.0009038445161132849, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0009327326815656344, "x1": 0.0009327326815656344, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0009760649297441585, "x1": 0.0009760649297441585, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0010107307282869779, "x1": 0.0010107307282869779, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.001045396526829797, "x1": 0.001045396526829797, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0010800623253726163, "x1": 0.0010800623253726163, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0011147281239154356, "x1": 0.0011147281239154356, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0011667268217296647, "x1": 0.0011667268217296647, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.001208325779981048, "x1": 0.001208325779981048, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0012499247382324313, "x1": 0.0012499247382324313, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0012915236964838146, "x1": 0.0012915236964838146, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0013539221338608894, "x1": 0.0013539221338608894, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0014038408837625492, "x1": 0.0014038408837625492, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.001453759633664209, "x1": 0.001453759633664209, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0015036783835658688, "x1": 0.0015036783835658688, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0015785565084183587, "x1": 0.0015785565084183587, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0016384590083003505, "x1": 0.0016384590083003505, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0016983615081823424, "x1": 0.0016983615081823424, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00178821525800533, "x1": 0.00178821525800533, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0018600982578637203, "x1": 0.0018600982578637203, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0019319812577221105, "x1": 0.0019319812577221105, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.002039805757509696, "x1": 0.002039805757509696, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0021260653573397644, "x1": 0.0021260653573397644, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.002212324957169833, "x1": 0.002212324957169833, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.002341714356914935, "x1": 0.002341714356914935, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.002445225876711017, "x1": 0.002445225876711017, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0025487373965070986, "x1": 0.0025487373965070986, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0027040046762012216, "x1": 0.0027040046762012216, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0028282184999565197, "x1": 0.0028282184999565197, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0030145392355894673, "x1": 0.0030145392355894673, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0031635958240958254, "x1": 0.0031635958240958254, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0033871807068553625, "x1": 0.0033871807068553625, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.003566048613062992, "x1": 0.003566048613062992, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.0038343504723744363, "x1": 0.0038343504723744363, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.004048991959823592, "x1": 0.004048991959823592, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.004370954190997325, "x1": 0.004370954190997325, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.004628523975936312, "x1": 0.004628523975936312, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.005014878653344792, "x1": 0.005014878653344792, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.005401233330753272, "x1": 0.005401233330753272, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.005787588008161752, "x1": 0.005787588008161752, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.006367120024274472, "x1": 0.006367120024274472, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.006946652040387191, "x1": 0.006946652040387191, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.007526184056499911, "x1": 0.007526184056499911, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.00839548208066899, "x1": 0.00839548208066899, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.009264780104838069, "x1": 0.009264780104838069, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.010568727141091689, "x1": 0.010568727141091689, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.011872674177345308, "x1": 0.011872674177345308, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.013828594731725739, "x1": 0.013828594731725739, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.016762475563296384, "x1": 0.016762475563296384, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.02116329681065235, "x1": 0.02116329681065235, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.027764528681686298, "x1": 0.027764528681686298, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" }, { "line": { "color": "gray", "dash": "dot", "width": 1 }, "type": "line", "x0": 0.03766637648823722, "x1": 0.03766637648823722, "xref": "x", "y0": 0, "y1": 1, "yref": "y domain" } ], "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Reaction 2A <-> C (2nd order in A). Concentrations changes (time steps shown in dashed lines)" }, "xaxis": { "anchor": "y", "autorange": true, "domain": [ 0, 1 ], "range": [ -2.652561724523748e-05, 0.03769290210548246 ], "title": { "text": "SYSTEM TIME" }, "type": "linear" }, "yaxis": { "anchor": "x", "autorange": true, "domain": [ 0, 1 ], "range": [ -1.1183821311376239, 210.58517800690197 ], "title": { "text": "Concentration" }, "type": "linear" } } }, "image/png": "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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dynamics.plot_history(colors=['darkturquoise', 'green'], show_intervals=True,\n", " title=\"Reaction 2A <-> C (2nd order in A). Concentrations changes\")" ] }, { "cell_type": "markdown", "id": "fde6184c-b365-4ef3-aac7-ad7561671f2d", "metadata": {}, "source": [ "### The intersection of the two lines may be found as follows:" ] }, { "cell_type": "code", "execution_count": 21, "id": "e5370c40-4812-4bcd-aac0-949757513454", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0009423643313311743, 93.33333333333331)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.curve_intersect('A', 'C', t_start=0, t_end=0.01)" ] }, { "cell_type": "code", "execution_count": null, "id": "f288907f-4305-43c9-80f2-38f35d19fc56", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "5c3f8b4f-3a75-4a21-8579-13550bcebb3c", "metadata": {}, "source": [ "#### For additional diagnostic insight:\n", "`norm_A` and `norm_B` are computed quantities that are used to guide the adaptive time steps" ] }, { "cell_type": "code", "execution_count": 22, "id": "c75e9ff2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
START_TIMEactionstep_factorcaptiontime_stepDelta ADelta Cnorm_Anorm_Bnorm_Cnorm_D
00.000000ABORT0.50.002000NaNNaNNaNNaNNaNNaN
10.000000ABORT0.50.001000NaNNaNNaNNaNNaNNaN
20.000000ABORT0.6excessive norm value(s)0.000500-119.92000059.9600004494.002000NaNNaNNaN
30.000000ABORT0.6excessive norm value(s)0.000300-71.95200035.9760001617.840720NaNNaNNaN
40.000000ABORT0.6excessive norm value(s)0.000180-43.17120021.585600582.422659NaNNaNNaN
....................................
1150.011873OK (low)1.50.001956-1.4083750.7041880.6198500.097529NaNNaN
1160.013829OK (low)1.50.002934-1.4231940.7115970.6329630.109206NaNNaN
1170.016762OK (low)1.50.004401-1.1962670.5981330.4472040.103047NaNNaN
1180.021163OK (low)1.50.006601-0.7351970.3675980.1689110.070606NaNNaN
1190.027765OK (low)1.50.009902-0.2107180.1053590.0138760.021774NaNNaN
\n", "

120 rows × 11 columns

\n", "
" ], "text/plain": [ " START_TIME action step_factor caption time_step \\\n", "0 0.000000 ABORT 0.5 0.002000 \n", "1 0.000000 ABORT 0.5 0.001000 \n", "2 0.000000 ABORT 0.6 excessive norm value(s) 0.000500 \n", "3 0.000000 ABORT 0.6 excessive norm value(s) 0.000300 \n", "4 0.000000 ABORT 0.6 excessive norm value(s) 0.000180 \n", ".. ... ... ... ... ... \n", "115 0.011873 OK (low) 1.5 0.001956 \n", "116 0.013829 OK (low) 1.5 0.002934 \n", "117 0.016762 OK (low) 1.5 0.004401 \n", "118 0.021163 OK (low) 1.5 0.006601 \n", "119 0.027765 OK (low) 1.5 0.009902 \n", "\n", " Delta A Delta C norm_A norm_B norm_C norm_D \n", "0 NaN NaN NaN NaN NaN NaN \n", "1 NaN NaN NaN NaN NaN NaN \n", "2 -119.920000 59.960000 4494.002000 NaN NaN NaN \n", "3 -71.952000 35.976000 1617.840720 NaN NaN NaN \n", "4 -43.171200 21.585600 582.422659 NaN NaN NaN \n", ".. ... ... ... ... ... ... \n", "115 -1.408375 0.704188 0.619850 0.097529 NaN NaN \n", "116 -1.423194 0.711597 0.632963 0.109206 NaN NaN \n", "117 -1.196267 0.598133 0.447204 0.103047 NaN NaN \n", "118 -0.735197 0.367598 0.168911 0.070606 NaN NaN \n", "119 -0.210718 0.105359 0.013876 0.021774 NaN NaN \n", "\n", "[120 rows x 11 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dynamics.get_diagnostics().get_decisions_data()" ] }, { "cell_type": "code", "execution_count": null, "id": "b4226f78-aaad-44dd-9af7-e02df71acef9", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.13" } }, "nbformat": 4, "nbformat_minor": 5 }