{
"cells": [
{
"cell_type": "markdown",
"id": "49bcb5b0-f19d-4b96-a5f1-e0ae30f66d8f",
"metadata": {},
"source": [
"## Validation of the independence of the automatically-picked variable time steps from the presence of extraneous chemicals not participating in the dynamical changes.\n",
"\n",
"Just as in experiment `variable_steps_1` : 2 coupled reactions: `2 S <-> U` and `S <-> X` \n",
"\n",
"However, here:\n",
"\n",
"* in part 1 there are a few extra chemicals in the system that don't participate in any of the reactions \n",
"* in part 2 there's a hypothetical enzyme (with concentration 1) that catalyzes the first reaction \n",
"\n",
"In either case, the extra chemicals and the enzyme don't vary in concentration - and thus **get automatically excluded from considerations about the adaptive variable step sizes** , which remain exactly as they were in experiment `variable_steps_1`\n",
"\n",
"LAST REVISED: June 23, 2024 (using v. 1.0 beta34.1)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "d545a787-f84c-4d63-97a1-36a29f6c5dd6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Added 'D:\\Docs\\- MY CODE\\BioSimulations\\life123-Win7' to sys.path\n"
]
}
],
"source": [
"import set_path # Importing this module will add the project's home directory to sys.path"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "386fc233",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from experiments.get_notebook_info import get_notebook_basename\n",
"\n",
"from life123 import ChemData as chem\n",
"from life123 import UniformCompartment\n",
"\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1d2a65ac-1ed4-44b2-bb4b-6815fdaca946",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "bf0e6ff0-34c9-4ed2-a617-594d91e335b3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "d6d3ca49-589d-49b7-8424-37c7b01bcacf",
"metadata": {},
"source": [
"# PART 1 : \n",
"#### Notice the \"EXTRA\" group of chemicals, that don't participate in any of the reactions "
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "23c15e66-52e4-495b-aa3d-ecddd8d16942",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 2 (at temp. 25 C)\n",
"0: 2 S <-> U (kF = 8 / kR = 2 / delta_G = -3,436.6 / K = 4) | 1st order in all reactants & products\n",
"1: S <-> X (kF = 6 / kR = 3 / delta_G = -1,718.3 / K = 2) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions: {'X', 'S', 'U'}\n"
]
}
],
"source": [
"# Initialize the system. \n",
"chem_data = chem(names=[\"EXTRA 1\", \"U\", \"EXTRA 2\", \"X\", \"S\", \"EXTRA 3\"])\n",
"\n",
"# Reaction 2 S <-> U , with 1st-order kinetics for all species (mostly forward)\n",
"chem_data.add_reaction(reactants=[(2, \"S\", 1)], products=\"U\",\n",
" forward_rate=8., reverse_rate=2.)\n",
"\n",
"# Reaction S <-> X , with 1st-order kinetics for all species (mostly forward)\n",
"chem_data.add_reaction(reactants=\"S\", products=\"X\",\n",
" forward_rate=6., reverse_rate=3.)\n",
"\n",
"chem_data.describe_reactions()"
]
},
{
"cell_type": "markdown",
"id": "d1d0eabb-b5b1-4e15-846d-5e483a5a24a7",
"metadata": {},
"source": [
"### Set the initial concentrations of all the chemicals"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e80645d6-eb5b-4c78-8b46-ae126d2cb2cf",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"6 species:\n",
" Species 0 (EXTRA 1). Conc: 0.0\n",
" Species 1 (U). Conc: 50.0\n",
" Species 2 (EXTRA 2). Conc: 55.0\n",
" Species 3 (X). Conc: 100.0\n",
" Species 4 (S). Conc: 0.0\n",
" Species 5 (EXTRA 3). Conc: 100.0\n",
"Set of chemicals involved in reactions: {'X', 'S', 'U'}\n"
]
}
],
"source": [
"dynamics = UniformCompartment(chem_data=chem_data, preset=None)\n",
"dynamics.set_conc(conc={\"U\": 50., \"X\": 100., \"EXTRA 2\": 55., \"EXTRA 3\": 100. }) # The EXTRA's are junk for testing\n",
"dynamics.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "83f9904b-af1e-4c65-9219-34d93e3e1059",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameters used for the automated adaptive time step sizes -\n",
" THRESHOLDS: [{'norm': 'norm_A', 'low': 0.25, 'high': 0.64, 'abort': 1.44}]\n",
" STEP FACTORS: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n"
]
}
],
"source": [
"dynamics.set_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n",
"\n",
"# These adaptive-time settings (normally specified with a preset) are being set explicitly\n",
"dynamics.set_thresholds(norm=\"norm_A\", low=0.25, high=0.64, abort=1.44)\n",
"dynamics.set_step_factors(upshift=2.0, downshift=0.5, abort=0.5, error=0.5) \n",
" # Note: upshift=2.0 seems to often be excessive. About 1.4 is currently recommended\n",
"\n",
"dynamics.show_adaptive_parameters()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1c10d43d-53ca-43d8-9439-ec469e20bbb2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"(STEP 0 aborted) SYSTEM TIME 0 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: None\n",
" Baseline: [ 0. 50. 55. 100. 0. 100.]\n",
" Deltas: [ 0. -1. 0. -3. 5. 0.]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 3.888888888888889}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | abort 1.44 | (VALUE 3.8889)\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'ABORT' (with step size factor of 0.5)\n",
" * INFO: the tentative time step (0.01) leads to a value of ['norm_A'] > its ABORT threshold:\n",
" -> will backtrack, and re-do step with a SMALLER Δt, x0.5 (now set to 0.005) [Step started at t=0, and will rewind there]\n",
"\n",
"(STEP 0 completed) SYSTEM TIME 0 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: None\n",
" Baseline: [ 0. 50. 55. 100. 0. 100.]\n",
" Deltas: [ 0. -0.5 0. -1.5 2.5 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.9722222222222222}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.97222) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0, and will continue to 0.005]\n",
"\n",
"(STEP 1 completed) SYSTEM TIME 0.005 : Examining Conc. changes due to tentative Δt=0.0025 ...\n",
" Previous: [ 0. 50. 55. 100. 0. 100.]\n",
" Baseline: [ 0. 49.5 55. 98.5 2.5 100. ]\n",
" Deltas: [ 0. -0.1975 0. -0.70125 1.09625 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.19250243055555555}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.1925) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.005, and will continue to 0.0075]\n",
"\n",
"(STEP 2 completed) SYSTEM TIME 0.0075 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 49.5 55. 98.5 2.5 100. ]\n",
" Baseline: [ 0. 49.3025 55. 97.79875 3.59625 100. ]\n",
" Deltas: [ 0. -0.349175 0. -1.35909375 2.05744375 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.6891259762586809}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.68913) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.0075, and will continue to 0.0125]\n",
"\n",
"(STEP 3 completed) SYSTEM TIME 0.0125 : Examining Conc. changes due to tentative Δt=0.0025 ...\n",
" Previous: [ 0. 49.3025 55. 97.79875 3.59625 100. ]\n",
" Baseline: [ 0. 48.953325 55. 96.43965625 5.65369375\n",
" 100. ]\n",
" Deltas: [ 0. -0.13169275 0. -0.63849202 0.90187752 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.1375997875121511}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.1376) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.0125, and will continue to 0.015]\n",
"\n",
"(STEP 4 completed) SYSTEM TIME 0.015 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 48.953325 55. 96.43965625 5.65369375\n",
" 100. ]\n",
" Baseline: [ 0. 48.82163225 55. 95.80116423 6.55557127\n",
" 100. ]\n",
" Deltas: [ 0. -0.22599347 0. -1.24035033 1.69233727 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.494838601385062}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.49484) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.015, and will continue to 0.02]\n",
"\n",
"(STEP 5 completed) SYSTEM TIME 0.02 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 48.82163225 55. 95.80116423 6.55557127\n",
" 100. ]\n",
" Baseline: [ 0. 48.59563878 55. 94.56081391 8.24790853\n",
" 100. ]\n",
" Deltas: [ 0. -0.15604005 0. -1.17097495 1.48305505 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.3994425670227834}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.39944) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.02, and will continue to 0.025]\n",
"\n",
"(STEP 6 completed) SYSTEM TIME 0.025 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 48.59563878 55. 94.56081391 8.24790853\n",
" 100. ]\n",
" Baseline: [ 0. 48.43959873 55. 93.38983896 9.73096358\n",
" 100. ]\n",
" Deltas: [ 0. -0.09515744 0. -1.10891868 1.29923357 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.32519593644806855}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.3252) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.025, and will continue to 0.03]\n",
"\n",
"(STEP 7 completed) SYSTEM TIME 0.03 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 48.43959873 55. 93.38983896 9.73096358\n",
" 100. ]\n",
" Baseline: [ 0. 48.34444129 55. 92.28092028 11.03019715\n",
" 100. ]\n",
" Deltas: [ 0. -0.04223653 0. -1.05330789 1.13778094 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.2673096568217399}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.26731) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.03, and will continue to 0.035]\n",
"\n",
"(STEP 8 completed) SYSTEM TIME 0.035 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 48.34444129 55. 92.28092028 11.03019715\n",
" 100. ]\n",
" Baseline: [ 0. 48.30220476 55. 91.22761239 12.16797809\n",
" 100. ]\n",
" Deltas: [ 0. 0.00369708 0. -1.00337484 0.99598069 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.22208358683873192}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.22208) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.035, and will continue to 0.04]\n",
"\n",
"(STEP 9 completed) SYSTEM TIME 0.04 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 48.30220476 55. 91.22761239 12.16797809\n",
" 100. ]\n",
" Baseline: [ 0. 48.30590184 55. 90.22423755 13.16395878\n",
" 100. ]\n",
" Deltas: [ 0. 0.08699867 0. -1.9168896 1.74289227 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.7466342181101149}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.74663) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.005) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.04, and will continue to 0.05]\n",
"\n",
"(STEP 10 completed) SYSTEM TIME 0.05 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [ 0. 48.30590184 55. 90.22423755 13.16395878\n",
" 100. ]\n",
" Baseline: [ 0. 48.3929005 55. 88.30734795 14.90685105\n",
" 100. ]\n",
" Deltas: [ 0. 0.11234504 0. -0.87740469 0.65271461 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.13427741784149083}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.13428) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.05, and will continue to 0.055]\n",
"\n",
"(STEP 11 completed) SYSTEM TIME 0.055 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 48.3929005 55. 88.30734795 14.90685105\n",
" 100. ]\n",
" Baseline: [ 0. 48.50524554 55. 87.42994326 15.55956566\n",
" 100. ]\n",
" Deltas: [ 0. 0.27466034 0. -1.68932436 1.14000367 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.4698737184351335}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.46987) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.055, and will continue to 0.065]\n",
"\n",
"(STEP 12 completed) SYSTEM TIME 0.065 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 48.50524554 55. 87.42994326 15.55956566\n",
" 100. ]\n",
" Baseline: [ 0. 48.77990588 55. 85.7406189 16.69956934\n",
" 100. ]\n",
" Deltas: [ 0. 0.36036743 0. -1.57024441 0.84950955 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.3685776282283221}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.36858) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.065, and will continue to 0.075]\n",
"\n",
"(STEP 13 completed) SYSTEM TIME 0.075 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 48.77990588 55. 85.7406189 16.69956934\n",
" 100. ]\n",
" Baseline: [ 0. 49.14027331 55. 84.17037449 17.54907888\n",
" 100. ]\n",
" Deltas: [ 0. 0.42112084 0. -1.4721665 0.62992481 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.3046024715786003}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.3046) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.075, and will continue to 0.085]\n",
"\n",
"(STEP 14 completed) SYSTEM TIME 0.085 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 49.14027331 55. 84.17037449 17.54907888\n",
" 100. ]\n",
" Baseline: [ 0. 49.56139416 55. 82.69820799 18.1790037\n",
" 100. ]\n",
" Deltas: [ 0. 0.46309241 0. -1.39020602 0.46402119 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.2624936691312418}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.26249) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.085, and will continue to 0.095]\n",
"\n",
"(STEP 15 completed) SYSTEM TIME 0.095 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 49.56139416 55. 82.69820799 18.1790037\n",
" 100. ]\n",
" Baseline: [ 0. 50.02448657 55. 81.30800197 18.64302489\n",
" 100. ]\n",
" Deltas: [ 0. 0.49095226 0. -1.32065857 0.33875405 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.23332527475445466}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.23333) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.095, and will continue to 0.105]\n",
"\n",
"(STEP 16 completed) SYSTEM TIME 0.105 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 50.02448657 55. 81.30800197 18.64302489\n",
" 100. ]\n",
" Baseline: [ 0. 50.51543883 55. 79.98734341 18.98177894\n",
" 100. ]\n",
" Deltas: [ 0. 1.01646708 0. -2.52142713 0.48849298 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.847713943482735}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.84771) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.105, and will continue to 0.125]\n",
"\n",
"(STEP 17 completed) SYSTEM TIME 0.125 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 50.51543883 55. 79.98734341 18.98177894\n",
" 100. ]\n",
" Baseline: [ 0. 51.5319059 55. 77.46591628 19.47027191\n",
" 100. ]\n",
" Deltas: [ 0. 0.52698364 0. -1.15576117 0.1017939 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.18042862670354223}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.18043) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.125, and will continue to 0.135]\n",
"\n",
"(STEP 18 completed) SYSTEM TIME 0.135 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 51.5319059 55. 77.46591628 19.47027191\n",
" 100. ]\n",
" Baseline: [ 0. 52.05888954 55. 76.3101551 19.57206582\n",
" 100. ]\n",
" Deltas: [ 0. 1.04917495 0. -2.22996141 0.13161151 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.676757504987934}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.67676) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.135, and will continue to 0.155]\n",
"\n",
"(STEP 19 completed) SYSTEM TIME 0.155 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [ 0. 52.05888954 55. 76.3101551 19.57206582\n",
" 100. ]\n",
" Baseline: [ 0. 53.10806449 55. 74.08019369 19.70367733\n",
" 100. ]\n",
" Deltas: [ 0. 0.5141329 0. -1.04018517 0.01191938 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.149606655239135}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.14961) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.155, and will continue to 0.165]\n",
"\n",
"(STEP 20 completed) SYSTEM TIME 0.165 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 53.10806449 55. 74.08019369 19.70367733\n",
" 100. ]\n",
" Baseline: [ 0. 53.62219739 55. 73.04000852 19.71559671\n",
" 100. ]\n",
" Deltas: [ 0. 1.00960758 0. -2.01652891 -0.00268625 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.5650781675774635}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.56508) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.165, and will continue to 0.185]\n",
"\n",
"(STEP 21 completed) SYSTEM TIME 0.185 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 53.62219739 55. 73.04000852 19.71559671\n",
" 100. ]\n",
" Baseline: [ 0. 54.63180496 55. 71.02347962 19.71291046\n",
" 100. ]\n",
" Deltas: [ 0. 0.96879347 0. -1.89585952 -0.04172743 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.5038428113796767}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.50384) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.185, and will continue to 0.205]\n",
"\n",
"(STEP 22 completed) SYSTEM TIME 0.205 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 54.63180496 55. 71.02347962 19.71291046\n",
" 100. ]\n",
" Baseline: [ 0. 55.60059844 55. 69.12762009 19.67118303\n",
" 100. ]\n",
" Deltas: [ 0. 0.92336535 0. -1.78711524 -0.05961545 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.4499931616991674}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.44999) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.205, and will continue to 0.225]\n",
"\n",
"(STEP 23 completed) SYSTEM TIME 0.225 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 55.60059844 55. 69.12762009 19.67118303\n",
" 100. ]\n",
" Baseline: [ 0. 56.52396378 55. 67.34050485 19.61156758\n",
" 100. ]\n",
" Deltas: [ 0. 0.87689226 0. -1.68704218 -0.06674234 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.4021673223106198}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.40217) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.225, and will continue to 0.245]\n",
"\n",
"(STEP 24 completed) SYSTEM TIME 0.245 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 56.52396378 55. 67.34050485 19.61156758\n",
" 100. ]\n",
" Baseline: [ 0. 57.40085605 55. 65.65346267 19.54482524\n",
" 100. ]\n",
" Deltas: [ 0. 0.8311378 0. -1.59382873 -0.06844686 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.3595294483481833}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.35953) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.245, and will continue to 0.265]\n",
"\n",
"(STEP 25 completed) SYSTEM TIME 0.265 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 57.40085605 55. 65.65346267 19.54482524\n",
" 100. ]\n",
" Baseline: [ 0. 58.23199384 55. 64.05963394 19.47637838\n",
" 100. ]\n",
" Deltas: [ 0. 0.78694079 0. -1.50641263 -0.06746894 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.32145631944741265}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.32146) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.265, and will continue to 0.285]\n",
"\n",
"(STEP 26 completed) SYSTEM TIME 0.285 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 58.23199384 55. 64.05963394 19.47637838\n",
" 100. ]\n",
" Baseline: [ 0. 59.01893463 55. 62.55322131 19.40890943\n",
" 100. ]\n",
" Deltas: [ 0. 0.74466812 0. -1.42412415 -0.0652121 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.2874347575511702}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.28743) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.285, and will continue to 0.305]\n",
"\n",
"(STEP 27 completed) SYSTEM TIME 0.305 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 59.01893463 55. 62.55322131 19.40890943\n",
" 100. ]\n",
" Baseline: [ 0. 59.76360275 55. 61.12909716 19.34369733\n",
" 100. ]\n",
" Deltas: [ 0. 0.70444746 0. -1.34650215 -0.06239278 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.25702301402562294}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.25702) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.305, and will continue to 0.325]\n",
"\n",
"(STEP 28 completed) SYSTEM TIME 0.325 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 59.76360275 55. 61.12909716 19.34369733\n",
" 100. ]\n",
" Baseline: [ 0. 60.46805022 55. 59.78259501 19.28130456\n",
" 100. ]\n",
" Deltas: [ 0. 0.66628672 0. -1.27319915 -0.05937429 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.22983326503644058}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.22983) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.325, and will continue to 0.345]\n",
"\n",
"(STEP 29 completed) SYSTEM TIME 0.345 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 60.46805022 55. 59.78259501 19.28130456\n",
" 100. ]\n",
" Baseline: [ 0. 61.13433694 55. 58.50939586 19.22193027\n",
" 100. ]\n",
" Deltas: [ 0. 1.26027073 0. -2.40786424 -0.11267722 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.8220876292375117}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.82209) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.02) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.345, and will continue to 0.385]\n",
"\n",
"(STEP 30 completed) SYSTEM TIME 0.385 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [ 0. 61.13433694 55. 58.50939586 19.22193027\n",
" 100. ]\n",
" Baseline: [ 0. 62.39460767 55. 56.10153162 19.10925305\n",
" 100. ]\n",
" Deltas: [ 0. 0.56169618 0. -1.07298153 -0.05041083 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.16325924649115092}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.16326) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.385, and will continue to 0.405]\n",
"\n",
"(STEP 31 completed) SYSTEM TIME 0.405 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 62.39460767 55. 56.10153162 19.10925305\n",
" 100. ]\n",
" Baseline: [ 0. 62.95630385 55. 55.02855009 19.05884222\n",
" 100. ]\n",
" Deltas: [ 0. 1.0623252 0. -2.02930388 -0.09534652 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.5839666694455721}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.58397) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.405, and will continue to 0.445]\n",
"\n",
"(STEP 32 completed) SYSTEM TIME 0.445 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 62.95630385 55. 55.02855009 19.05884222\n",
" 100. ]\n",
" Baseline: [ 0. 64.01862905 55. 52.99924621 18.96349569\n",
" 100. ]\n",
" Deltas: [ 0. 0.9468283 0. -1.80867058 -0.08498602 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.4638884123583411}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.46389) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.445, and will continue to 0.485]\n",
"\n",
"(STEP 33 completed) SYSTEM TIME 0.485 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 64.01862905 55. 52.99924621 18.96349569\n",
" 100. ]\n",
" Baseline: [ 0. 64.96545735 55. 51.19057563 18.87850968\n",
" 100. ]\n",
" Deltas: [ 0. 0.84388651 0. -1.61202675 -0.07574626 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.36850135438022225}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.3685) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.485, and will continue to 0.525]\n",
"\n",
"(STEP 34 completed) SYSTEM TIME 0.525 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 64.96545735 55. 51.19057563 18.87850968\n",
" 100. ]\n",
" Baseline: [ 0. 65.80934386 55. 49.57854888 18.80276341\n",
" 100. ]\n",
" Deltas: [ 0. 0.75213678 0. -1.43676265 -0.06751092 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.29272826302332505}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.29273) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.525, and will continue to 0.565]\n",
"\n",
"(STEP 35 completed) SYSTEM TIME 0.565 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 65.80934386 55. 49.57854888 18.80276341\n",
" 100. ]\n",
" Baseline: [ 0. 66.56148064 55. 48.14178623 18.73525249\n",
" 100. ]\n",
" Deltas: [ 0. 0.67036235 0. -1.28055375 -0.06017094 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.23253601370675195}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.23254) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.565, and will continue to 0.605]\n",
"\n",
"(STEP 36 completed) SYSTEM TIME 0.605 : Examining Conc. changes due to tentative Δt=0.08 ...\n",
" Previous: [ 0. 66.56148064 55. 48.14178623 18.73525249\n",
" 100. ]\n",
" Baseline: [ 0. 67.23184299 55. 46.86123248 18.67508155\n",
" 100. ]\n",
" Deltas: [ 0. 1.19495731 0. -2.28265665 -0.10725798 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.7388831828204337}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.73888) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.04) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.605, and will continue to 0.685]\n",
"\n",
"(STEP 37 completed) SYSTEM TIME 0.685 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [ 0. 67.23184299 55. 46.86123248 18.67508155\n",
" 100. ]\n",
" Baseline: [ 0. 68.4268003 55. 44.57857583 18.56782357\n",
" 100. ]\n",
" Deltas: [ 0. 0.46755952 0. -0.89315144 -0.0419676 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.11312140907262146}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.11312) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.685, and will continue to 0.725]\n",
"\n",
"(STEP 38 completed) SYSTEM TIME 0.725 : Examining Conc. changes due to tentative Δt=0.08 ...\n",
" Previous: [ 0. 68.4268003 55. 44.57857583 18.56782357\n",
" 100. ]\n",
" Baseline: [ 0. 68.89435982 55. 43.68542439 18.52585598\n",
" 100. ]\n",
" Deltas: [ 0. 0.83345025 0. -1.59209098 -0.07480952 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.3594432769718806}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.35944) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.725, and will continue to 0.805]\n",
"\n",
"(STEP 39 completed) SYSTEM TIME 0.805 : Examining Conc. changes due to tentative Δt=0.08 ...\n",
" Previous: [ 0. 68.89435982 55. 43.68542439 18.52585598\n",
" 100. ]\n",
" Baseline: [ 0. 69.72781007 55. 42.0933334 18.45104645\n",
" 100. ]\n",
" Deltas: [ 0. 0.65222012 0. -1.24589772 -0.05854252 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.2201199373223358}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.22012) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.16) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.805, and will continue to 0.885]\n",
"\n",
"(STEP 40 completed) SYSTEM TIME 0.885 : Examining Conc. changes due to tentative Δt=0.16 ...\n",
" Previous: [ 0. 69.72781007 55. 42.0933334 18.45104645\n",
" 100. ]\n",
" Baseline: [ 0. 70.38003019 55. 40.84743568 18.39250394\n",
" 100. ]\n",
" Deltas: [ 0. 1.02079538 0. -1.94996535 -0.0916254 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.5391981423603522}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.5392) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.885, and will continue to 1.045]\n",
"\n",
"(STEP 41 completed) SYSTEM TIME 1.045 : Examining Conc. changes due to tentative Δt=0.16 ...\n",
" Previous: [ 0. 70.38003019 55. 40.84743568 18.39250394\n",
" 100. ]\n",
" Baseline: [ 0. 71.40082557 55. 38.89747033 18.30087853\n",
" 100. ]\n",
" Deltas: [ 0. 0.57686034 0. -1.10194237 -0.05177831 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.17219175887655633}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.17219) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.32) at the next round, because all norms are low\n",
" [The current step started at System Time: 1.045, and will continue to 1.205]\n",
"\n",
"(STEP 42 completed) SYSTEM TIME 1.205 : Examining Conc. changes due to tentative Δt=0.32 ...\n",
" Previous: [ 0. 71.40082557 55. 38.89747033 18.30087853\n",
" 100. ]\n",
" Baseline: [ 0. 71.97768591 55. 37.79552796 18.24910022\n",
" 100. ]\n",
" Deltas: [ 0. 0.65197758 0. -1.24543442 -0.05852075 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.21995626094117085}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.21996) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.64) at the next round, because all norms are low\n",
" [The current step started at System Time: 1.205, and will continue to 1.525]\n",
"\n",
"(STEP 43 completed) SYSTEM TIME 1.525 : Examining Conc. changes due to tentative Δt=0.64 ...\n",
" Previous: [ 0. 71.97768591 55. 37.79552796 18.24910022\n",
" 100. ]\n",
" Baseline: [ 0. 72.62966349 55. 36.55009354 18.19057947\n",
" 100. ]\n",
" Deltas: [ 0. 0.16979763 0. -0.32435443 -0.01524084 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [1, 3, 4]\n",
" Norms: {'norm_A': 0.01491881249157113}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.014919) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 1.28) at the next round, because all norms are low\n",
" [The current step started at System Time: 1.525, and will continue to 2.165]\n",
"44 total step(s) taken\n",
"Number of step re-do's because of negative concentrations: 0\n",
"Number of step re-do's because of elective soft aborts: 1\n",
"Norm usage: {'norm_A': 23, 'norm_B': 15, 'norm_C': 15, 'norm_D': 15}\n"
]
}
],
"source": [
"dynamics.single_compartment_react(initial_step=0.01, target_end_time=2.0, \n",
" variable_steps=True, explain_variable_steps=[0, 2])"
]
},
{
"cell_type": "markdown",
"id": "8d588746-92b1-42c0-8154-c68d18910565",
"metadata": {},
"source": [
"## Compare the above printout with its counterpart from the experiment `variable_steps_1`\n",
"Notice the extra lines we have this time, saying _\"Restricting adaptive time step analysis to 3 chemicals only\"_"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "8a57c6d4-32cc-4351-8ad8-2e8b30e9fecf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" EXTRA 1 | \n",
" U | \n",
" EXTRA 2 | \n",
" X | \n",
" S | \n",
" EXTRA 3 | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 0.0 | \n",
" 50.000000 | \n",
" 55.0 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" 100.0 | \n",
" Initialized state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0050 | \n",
" 0.0 | \n",
" 49.500000 | \n",
" 55.0 | \n",
" 98.500000 | \n",
" 2.500000 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0075 | \n",
" 0.0 | \n",
" 49.302500 | \n",
" 55.0 | \n",
" 97.798750 | \n",
" 3.596250 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0125 | \n",
" 0.0 | \n",
" 48.953325 | \n",
" 55.0 | \n",
" 96.439656 | \n",
" 5.653694 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0150 | \n",
" 0.0 | \n",
" 48.821632 | \n",
" 55.0 | \n",
" 95.801164 | \n",
" 6.555571 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.0200 | \n",
" 0.0 | \n",
" 48.595639 | \n",
" 55.0 | \n",
" 94.560814 | \n",
" 8.247909 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.0250 | \n",
" 0.0 | \n",
" 48.439599 | \n",
" 55.0 | \n",
" 93.389839 | \n",
" 9.730964 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.0300 | \n",
" 0.0 | \n",
" 48.344441 | \n",
" 55.0 | \n",
" 92.280920 | \n",
" 11.030197 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.0350 | \n",
" 0.0 | \n",
" 48.302205 | \n",
" 55.0 | \n",
" 91.227612 | \n",
" 12.167978 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.0400 | \n",
" 0.0 | \n",
" 48.305902 | \n",
" 55.0 | \n",
" 90.224238 | \n",
" 13.163959 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.0500 | \n",
" 0.0 | \n",
" 48.392901 | \n",
" 55.0 | \n",
" 88.307348 | \n",
" 14.906851 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.0550 | \n",
" 0.0 | \n",
" 48.505246 | \n",
" 55.0 | \n",
" 87.429943 | \n",
" 15.559566 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.0650 | \n",
" 0.0 | \n",
" 48.779906 | \n",
" 55.0 | \n",
" 85.740619 | \n",
" 16.699569 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.0750 | \n",
" 0.0 | \n",
" 49.140273 | \n",
" 55.0 | \n",
" 84.170374 | \n",
" 17.549079 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.0850 | \n",
" 0.0 | \n",
" 49.561394 | \n",
" 55.0 | \n",
" 82.698208 | \n",
" 18.179004 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.0950 | \n",
" 0.0 | \n",
" 50.024487 | \n",
" 55.0 | \n",
" 81.308002 | \n",
" 18.643025 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.1050 | \n",
" 0.0 | \n",
" 50.515439 | \n",
" 55.0 | \n",
" 79.987343 | \n",
" 18.981779 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.1250 | \n",
" 0.0 | \n",
" 51.531906 | \n",
" 55.0 | \n",
" 77.465916 | \n",
" 19.470272 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.1350 | \n",
" 0.0 | \n",
" 52.058890 | \n",
" 55.0 | \n",
" 76.310155 | \n",
" 19.572066 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.1550 | \n",
" 0.0 | \n",
" 53.108064 | \n",
" 55.0 | \n",
" 74.080194 | \n",
" 19.703677 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.1650 | \n",
" 0.0 | \n",
" 53.622197 | \n",
" 55.0 | \n",
" 73.040009 | \n",
" 19.715597 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.1850 | \n",
" 0.0 | \n",
" 54.631805 | \n",
" 55.0 | \n",
" 71.023480 | \n",
" 19.712910 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.2050 | \n",
" 0.0 | \n",
" 55.600598 | \n",
" 55.0 | \n",
" 69.127620 | \n",
" 19.671183 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.2250 | \n",
" 0.0 | \n",
" 56.523964 | \n",
" 55.0 | \n",
" 67.340505 | \n",
" 19.611568 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.2450 | \n",
" 0.0 | \n",
" 57.400856 | \n",
" 55.0 | \n",
" 65.653463 | \n",
" 19.544825 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.2650 | \n",
" 0.0 | \n",
" 58.231994 | \n",
" 55.0 | \n",
" 64.059634 | \n",
" 19.476378 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 26 | \n",
" 0.2850 | \n",
" 0.0 | \n",
" 59.018935 | \n",
" 55.0 | \n",
" 62.553221 | \n",
" 19.408909 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 27 | \n",
" 0.3050 | \n",
" 0.0 | \n",
" 59.763603 | \n",
" 55.0 | \n",
" 61.129097 | \n",
" 19.343697 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 28 | \n",
" 0.3250 | \n",
" 0.0 | \n",
" 60.468050 | \n",
" 55.0 | \n",
" 59.782595 | \n",
" 19.281305 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 29 | \n",
" 0.3450 | \n",
" 0.0 | \n",
" 61.134337 | \n",
" 55.0 | \n",
" 58.509396 | \n",
" 19.221930 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 30 | \n",
" 0.3850 | \n",
" 0.0 | \n",
" 62.394608 | \n",
" 55.0 | \n",
" 56.101532 | \n",
" 19.109253 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 31 | \n",
" 0.4050 | \n",
" 0.0 | \n",
" 62.956304 | \n",
" 55.0 | \n",
" 55.028550 | \n",
" 19.058842 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 32 | \n",
" 0.4450 | \n",
" 0.0 | \n",
" 64.018629 | \n",
" 55.0 | \n",
" 52.999246 | \n",
" 18.963496 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 33 | \n",
" 0.4850 | \n",
" 0.0 | \n",
" 64.965457 | \n",
" 55.0 | \n",
" 51.190576 | \n",
" 18.878510 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 34 | \n",
" 0.5250 | \n",
" 0.0 | \n",
" 65.809344 | \n",
" 55.0 | \n",
" 49.578549 | \n",
" 18.802763 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 35 | \n",
" 0.5650 | \n",
" 0.0 | \n",
" 66.561481 | \n",
" 55.0 | \n",
" 48.141786 | \n",
" 18.735252 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 36 | \n",
" 0.6050 | \n",
" 0.0 | \n",
" 67.231843 | \n",
" 55.0 | \n",
" 46.861232 | \n",
" 18.675082 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 37 | \n",
" 0.6850 | \n",
" 0.0 | \n",
" 68.426800 | \n",
" 55.0 | \n",
" 44.578576 | \n",
" 18.567824 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 38 | \n",
" 0.7250 | \n",
" 0.0 | \n",
" 68.894360 | \n",
" 55.0 | \n",
" 43.685424 | \n",
" 18.525856 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 39 | \n",
" 0.8050 | \n",
" 0.0 | \n",
" 69.727810 | \n",
" 55.0 | \n",
" 42.093333 | \n",
" 18.451046 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 40 | \n",
" 0.8850 | \n",
" 0.0 | \n",
" 70.380030 | \n",
" 55.0 | \n",
" 40.847436 | \n",
" 18.392504 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 41 | \n",
" 1.0450 | \n",
" 0.0 | \n",
" 71.400826 | \n",
" 55.0 | \n",
" 38.897470 | \n",
" 18.300879 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 42 | \n",
" 1.2050 | \n",
" 0.0 | \n",
" 71.977686 | \n",
" 55.0 | \n",
" 37.795528 | \n",
" 18.249100 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 43 | \n",
" 1.5250 | \n",
" 0.0 | \n",
" 72.629663 | \n",
" 55.0 | \n",
" 36.550094 | \n",
" 18.190579 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
" | 44 | \n",
" 2.1650 | \n",
" 0.0 | \n",
" 72.799461 | \n",
" 55.0 | \n",
" 36.225739 | \n",
" 18.175339 | \n",
" 100.0 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME EXTRA 1 U EXTRA 2 X S EXTRA 3 \\\n",
"0 0.0000 0.0 50.000000 55.0 100.000000 0.000000 100.0 \n",
"1 0.0050 0.0 49.500000 55.0 98.500000 2.500000 100.0 \n",
"2 0.0075 0.0 49.302500 55.0 97.798750 3.596250 100.0 \n",
"3 0.0125 0.0 48.953325 55.0 96.439656 5.653694 100.0 \n",
"4 0.0150 0.0 48.821632 55.0 95.801164 6.555571 100.0 \n",
"5 0.0200 0.0 48.595639 55.0 94.560814 8.247909 100.0 \n",
"6 0.0250 0.0 48.439599 55.0 93.389839 9.730964 100.0 \n",
"7 0.0300 0.0 48.344441 55.0 92.280920 11.030197 100.0 \n",
"8 0.0350 0.0 48.302205 55.0 91.227612 12.167978 100.0 \n",
"9 0.0400 0.0 48.305902 55.0 90.224238 13.163959 100.0 \n",
"10 0.0500 0.0 48.392901 55.0 88.307348 14.906851 100.0 \n",
"11 0.0550 0.0 48.505246 55.0 87.429943 15.559566 100.0 \n",
"12 0.0650 0.0 48.779906 55.0 85.740619 16.699569 100.0 \n",
"13 0.0750 0.0 49.140273 55.0 84.170374 17.549079 100.0 \n",
"14 0.0850 0.0 49.561394 55.0 82.698208 18.179004 100.0 \n",
"15 0.0950 0.0 50.024487 55.0 81.308002 18.643025 100.0 \n",
"16 0.1050 0.0 50.515439 55.0 79.987343 18.981779 100.0 \n",
"17 0.1250 0.0 51.531906 55.0 77.465916 19.470272 100.0 \n",
"18 0.1350 0.0 52.058890 55.0 76.310155 19.572066 100.0 \n",
"19 0.1550 0.0 53.108064 55.0 74.080194 19.703677 100.0 \n",
"20 0.1650 0.0 53.622197 55.0 73.040009 19.715597 100.0 \n",
"21 0.1850 0.0 54.631805 55.0 71.023480 19.712910 100.0 \n",
"22 0.2050 0.0 55.600598 55.0 69.127620 19.671183 100.0 \n",
"23 0.2250 0.0 56.523964 55.0 67.340505 19.611568 100.0 \n",
"24 0.2450 0.0 57.400856 55.0 65.653463 19.544825 100.0 \n",
"25 0.2650 0.0 58.231994 55.0 64.059634 19.476378 100.0 \n",
"26 0.2850 0.0 59.018935 55.0 62.553221 19.408909 100.0 \n",
"27 0.3050 0.0 59.763603 55.0 61.129097 19.343697 100.0 \n",
"28 0.3250 0.0 60.468050 55.0 59.782595 19.281305 100.0 \n",
"29 0.3450 0.0 61.134337 55.0 58.509396 19.221930 100.0 \n",
"30 0.3850 0.0 62.394608 55.0 56.101532 19.109253 100.0 \n",
"31 0.4050 0.0 62.956304 55.0 55.028550 19.058842 100.0 \n",
"32 0.4450 0.0 64.018629 55.0 52.999246 18.963496 100.0 \n",
"33 0.4850 0.0 64.965457 55.0 51.190576 18.878510 100.0 \n",
"34 0.5250 0.0 65.809344 55.0 49.578549 18.802763 100.0 \n",
"35 0.5650 0.0 66.561481 55.0 48.141786 18.735252 100.0 \n",
"36 0.6050 0.0 67.231843 55.0 46.861232 18.675082 100.0 \n",
"37 0.6850 0.0 68.426800 55.0 44.578576 18.567824 100.0 \n",
"38 0.7250 0.0 68.894360 55.0 43.685424 18.525856 100.0 \n",
"39 0.8050 0.0 69.727810 55.0 42.093333 18.451046 100.0 \n",
"40 0.8850 0.0 70.380030 55.0 40.847436 18.392504 100.0 \n",
"41 1.0450 0.0 71.400826 55.0 38.897470 18.300879 100.0 \n",
"42 1.2050 0.0 71.977686 55.0 37.795528 18.249100 100.0 \n",
"43 1.5250 0.0 72.629663 55.0 36.550094 18.190579 100.0 \n",
"44 2.1650 0.0 72.799461 55.0 36.225739 18.175339 100.0 \n",
"\n",
" caption \n",
"0 Initialized state \n",
"1 \n",
"2 \n",
"3 \n",
"4 \n",
"5 \n",
"6 \n",
"7 \n",
"8 \n",
"9 \n",
"10 \n",
"11 \n",
"12 \n",
"13 \n",
"14 \n",
"15 \n",
"16 \n",
"17 \n",
"18 \n",
"19 \n",
"20 \n",
"21 \n",
"22 \n",
"23 \n",
"24 \n",
"25 \n",
"26 \n",
"27 \n",
"28 \n",
"29 \n",
"30 \n",
"31 \n",
"32 \n",
"33 \n",
"34 \n",
"35 \n",
"36 \n",
"37 \n",
"38 \n",
"39 \n",
"40 \n",
"41 \n",
"42 \n",
"43 \n",
"44 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "12da63da-9b3b-4c43-a68b-7dfb6585b9d0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"From time 0 to 0.005, in 1 step of 0.005\n",
"From time 0.005 to 0.0075, in 1 step of 0.0025\n",
"From time 0.0075 to 0.0125, in 1 step of 0.005\n",
"From time 0.0125 to 0.015, in 1 step of 0.0025\n",
"From time 0.015 to 0.04, in 5 steps of 0.005\n",
"From time 0.04 to 0.05, in 1 step of 0.01\n",
"From time 0.05 to 0.055, in 1 step of 0.005\n",
"From time 0.055 to 0.105, in 5 steps of 0.01\n",
"From time 0.105 to 0.125, in 1 step of 0.02\n",
"From time 0.125 to 0.135, in 1 step of 0.01\n",
"From time 0.135 to 0.155, in 1 step of 0.02\n",
"From time 0.155 to 0.165, in 1 step of 0.01\n",
"From time 0.165 to 0.345, in 9 steps of 0.02\n",
"From time 0.345 to 0.385, in 1 step of 0.04\n",
"From time 0.385 to 0.405, in 1 step of 0.02\n",
"From time 0.405 to 0.605, in 5 steps of 0.04\n",
"From time 0.605 to 0.685, in 1 step of 0.08\n",
"From time 0.685 to 0.725, in 1 step of 0.04\n",
"From time 0.725 to 0.885, in 2 steps of 0.08\n",
"From time 0.885 to 1.205, in 2 steps of 0.16\n",
"From time 1.205 to 1.525, in 1 step of 0.32\n",
"From time 1.525 to 2.165, in 1 step of 0.64\n",
"(44 steps total)\n"
]
}
],
"source": [
"(transition_times, step_sizes) = dynamics.explain_time_advance(return_times=True)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "438e4ec0-44f7-4c0d-b6a6-4a435da6e683",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.005 , 0.0025, 0.005 , 0.0025, 0.005 , 0.01 , 0.005 , 0.01 ,\n",
" 0.02 , 0.01 , 0.02 , 0.01 , 0.02 , 0.04 , 0.02 , 0.04 ,\n",
" 0.08 , 0.04 , 0.08 , 0.16 , 0.32 , 0.64 ])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(step_sizes)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "74d500e5-0b59-419c-90ae-4948eb7c8611",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 0.005 , 0.0075, 0.0125, 0.015 , 0.04 , 0.05 , 0.055 ,\n",
" 0.105 , 0.125 , 0.135 , 0.155 , 0.165 , 0.345 , 0.385 , 0.405 ,\n",
" 0.605 , 0.685 , 0.725 , 0.885 , 1.205 , 1.525 , 2.165 ])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(transition_times) # Note: there will be one more transition time (the end time) than step sizes"
]
},
{
"cell_type": "markdown",
"id": "cbf6c9c7-8cec-400f-9e70-49ff1a9f485c",
"metadata": {
"tags": []
},
"source": [
"## Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "c388dae7-c4a6-4644-a390-958e3862d102",
"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=EXTRA 1
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "EXTRA 1",
"line": {
"color": "lightgray",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "EXTRA 1",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=U
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "U",
"line": {
"color": "green",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "U",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
50,
49.5,
49.3025,
48.953325,
48.82163225,
48.595638778125,
48.439598731740624,
48.34444128763423,
48.30220476057483,
48.30590183654385,
48.39290050226037,
48.5052455391863,
48.7799058814107,
49.14027331067588,
49.56139415522215,
50.02448656789047,
50.51543882771388,
51.5319059043599,
52.05888953946266,
53.10806448877514,
53.6221973851961,
54.631804962718874,
55.60059843741017,
56.52396378475239,
57.400856045782184,
58.231993841938426,
59.018934628561645,
59.76360275298115,
60.468050216020096,
61.13433693633931,
62.39460766762712,
62.95630384813689,
64.01862904935517,
64.96545734689445,
65.8093438554794,
66.56148063896055,
67.23184298514343,
68.4268002988057,
68.89435981841929,
69.72781007217334,
70.38003019051833,
71.40082556698592,
71.97768590721373,
72.62966349214221,
72.7994611238083
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=EXTRA 2
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "EXTRA 2",
"line": {
"color": "lightgray",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "EXTRA 2",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55,
55
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "X",
"line": {
"color": "orange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "X",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
100,
98.5,
97.79875,
96.43965625,
95.801164234375,
94.56081390882812,
93.38983895624335,
92.28092027930796,
91.22761238948105,
90.22423754631991,
88.30734794676586,
87.42994325902578,
85.7406189010111,
84.17037449415082,
82.69820799239614,
81.30800197445382,
79.98734340860611,
77.46591627640568,
76.31015510300598,
74.08019369499387,
73.0400085237914,
71.02347961706188,
69.12762009493821,
67.34050485287088,
65.65346267101354,
64.05963393924337,
62.55322130811434,
61.12909716179896,
59.782595011959664,
58.5093958579621,
56.10153161965286,
55.02855008788483,
52.99924620914057,
51.19057563015947,
49.578548876792716,
48.14178623051722,
46.86123248082995,
44.57857582889467,
43.685424387065844,
42.0933334026959,
40.84743568346842,
38.897470333478665,
37.79552796465638,
36.5500935427452,
36.2257391168805
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=S
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "S",
"line": {
"color": "darkturquoise",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "S",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
0,
2.5,
3.59625,
5.65369375,
6.555571265625001,
8.247908534921876,
9.730963580275391,
11.03019714542356,
12.167978089369273,
13.163958780592365,
14.906851048713396,
15.559565662601617,
16.699569336167485,
17.5490788844974,
18.179003697159533,
18.643024889765208,
18.981778935966094,
19.470271914874488,
19.572065818068666,
19.703677327455825,
19.715596705816367,
19.712910457500335,
19.671183030241412,
19.611567577624296,
19.54482523742205,
19.476378376879737,
19.40890943476233,
19.343697332238698,
19.2813045560001,
19.221930269359245,
19.10925304509285,
19.058842215841338,
18.963495692149042,
18.878509676051582,
18.80276341224844,
18.735252491561642,
18.67508154888315,
18.56782357349389,
18.52585597609554,
18.451046452957367,
18.392503935494886,
18.300878532549454,
18.24910022091612,
18.190579472970335,
18.17533863550288
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=EXTRA 3
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "EXTRA 3",
"line": {
"color": "lightgray",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "EXTRA 3",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100
],
"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": "Changes in concentration for `2 S <-> U` and `S <-> X`"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
2.165
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-5.555555555555555,
105.55555555555556
],
"title": {
"text": "Concentration"
},
"type": "linear"
}
}
},
"image/png": "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Vl9BfvlY6XrbtatUL+3X9w26x3I9V15HAAEEEEAAAQQQQAABBKIkQCgboBqV9mEtDxLCBKiloYx2r239uglCb//dP5y3h16YNrWd8r1NNTz4Y7Oa972Xvn3BqtdKN/vRNkrDm0rzDhI8tCqULf2P9NKyVQu2/HMqhephQlltp9L+uuVBV6Vz9NrS8YUJZctv8OOvIqu3Mq/85kY6zkr9lr8P/eCj3vvOpmulb79aqwDLjSvVttWhbL09hIPuj1rpJlTl34MBfjzF5pRK3x+tDNvKf37p9+Fnf+cr3l83+Nu3hAllK/380Vqfc9Zy2fXoU/O+z20Upfz702+zFSG2jfE22kb5LzjL2/G/n1v5Xml07FyHAAIIIIAAAggggAACCDQjQCjbjF4MrtXgh/+YjUGhGCICCCCAAAIIIIAAAggggAACCCCAQGoECGUTUuryP5PXabV6xWBC6JgGAggggAACCCCAAAIIIIAAAggggAACTgUIZZ1yt66zSn8abPMO7K0bOS0jgAACCCCAAAIIIIAAAggggAACCCCQLgFC2XTVm9kigAACCCCAAAIIIIAAAggggAACCCCAQJsFCGXbXAC6RwABBBBAAAEEEEAAAQQQQAABBBBAAIF0CRDKpqvezBYBBBBAAAEEEEAAAQQQQAABBBBAAAEE2ixAKNvmAtA9AggggAACCCCAAAIIIIAAAggggAACCKRLgFA2XfVmtggggAACCCCAAAIIIIAAAggggAACCCDQZgFC2TYXgO4RQAABBBBAAAEEEEAAAQQQQAABBBBAIF0ChLLpqjezRQABBBBAAAEEEEAAAQQQQAABBBBAAIE2CxDKtrkAdI8AAggggAACCCCAAAIIIIAAAggggAAC6RIglE1XvZktAggggAACCCCAAAIIIIAAAggggAACCLRZgFC2zQWgewQQQAABBBBAAAEEEEAAAQQQQAABBBBIlwChbLrqzWwRQAABBBBAAAEEEEAAAQQQQAABBBBAoM0ChLJtLgDdI4AAAggggAACCCCAAAIIIIAAAggggEC6BAhl01VvZosAAggggAACCCCAAAIIIIAAAggggAACbRYglG1zAegeAQQQQAABBBBAAAEEEEAAAQQQQAABBNIlQCibrnozWwQQQAABBBBAAAEEEEAAAQQQQAABBBBoswChbJsLQPcIIIAAAggggAACCCCA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SAgoaBMkhRIstBA0iv4DcgbOMJmdj3t3Zi/zvnmmy87MOe953pMQfjk599Y//w2HWV/b5wEci6L6PoEEArP+bPD3jAQNtgQCeyxQ/1Fn0jTuld1jfMMTmCAglLUtCBAgQIAAAQIECBAgQIAAAQIECBAg0KOAULZHbFMRIECAAAECBAgQIECAAAECBAgQIEBAKGsPECBAgAABAgQIECBAgAABAgQIECBAoEcBoWyP2KYiQIAAAQIECBAgQIAAAQIECBAgQICAUNYeIECAAAECBAgQIECAAAECBAgQIECAQI8CQtkesU1FgAABAgQIECBAgAABAgQIECBAgAABoaw9QIAAAQIECBAgQIAAAQIECBAgQIAAgR4FhLI9YpuKAAECBAgQIECAAAECBAgQIECAAAECQll7gAABAgQIECBAgAABAgQIECBAgAABAj0KCGV7xDYVAQIECBAgQIAAAQIECBAgQIAAAQIEhLL2AAECBAgQIECAAAECBAgQIECAAAECBHoUEMr2iG0qAgQIECBAgAABAgQIECBAgAABAgQICGXtAQIECBAgQIAAAQIECBAgQIAAAQIECPQoIJTtEdtUBAgQIECAAAECBAgQIECAAAECBAgQEMraAwQIECBAgAABAgQIECBAgAABAgQIEOhRQCjbI7apCBAgQIAAAQIECBAgQIAAAQIECBAgIJS1BwgQIECAAAECBAgQIECAAAECBAgQINCjgFC2R2xTESBAgAABAgQIECBAgAABAgQIECBAQChrDxAgQIAAAQIECBAgQIAAAQIECBAgQKBHAaFsj9imIkCAAAECBAi0ETj7yZfNuQvbOz768nNHmpMvPNs8cfTk4L0rF8/u+Ex5b31tf/P1+TOD9+aN9eiTx2eWtL62bzDP86+823z3442Jnz3z2ovN0acPN88cP9X88uvvTf11/fDFb642p975uHnowfuGdY0P1KaOw48darYvXRt+9chTjzdvv/FSp3nbrKNNj3yGAAECBAgQIECAwCICQtlF9HyXAAECBAgQILBkgRoafv7Bm82hjQPD0Uu4evnKD8NQs4SYW5sbzafvvTr8zOtvfdhc/f76MKxtO9Z4eDoeqpb3y1h/3fp3aqhaPlND2fG66s9nhbKjjDXEnVTHpPe6zNtmHUtuqeEIECBAgAABAgQI7BAQytoUBAgQIECAAIEVEihhaz0BOqus8XDy+o2bzbETp287pdp2rGWGsnev7x+cqK2hcq2rBLXzQt02dUwLZdvOK5Rdoc2uFAIECBAgQIDAHSwglL2Dm2/pBAgQIECAwOoJlOsHHj5w/20nYKdVWQLGn2/+NjgZW06LlmBy9ORsl7HKHLNOqLYJM0sNBx95oPnjz7+be++5a3C1QDm9W17lZ3sZyradt806Vm9XqIgAAQIECBAgQCCbgFA2W0ethwABAgQIEAgtUIPRuoh6p+u0RY3exfrTt+dv+1jXseaFsm3ulC3h6NbmwcEdsqWeUl85Nfv+R1/seSjbZl53yob+7aF4AgQIECBAgEAaAaFsmlZaCAECBAgQIJBNoP7X/7quSdca1CC1PgRsmkGXsRa5U7aEsvXhW6WWenq3ywnV3dwp23beLnVk20/WQ4AAAQIECBAgsDoCQtnV6YVKCBAgQIAAAQJTBco1ANuXrg1On46+Jt0lO49x2ljzTsrOu36gXl9QQtnyYLJzF7aHd9x2CUMXCWXnzduljnmO3idAgAABAgQIECCwWwGh7G7lfI8AAQIECBAgsGSBErB+9tXlwUnT8VcNG+sDtOr700LZ3Yy1zFC21FfutC333ZZXlzB0kVB23rxd6lhyew1HgAABAgQIECBAYCgglLUZCBAgQIAAAQIrIjB6xcDoidj6863NjR0PAJsVyh47cXqwsrZjLTuUHWXtEoYuGsrOmrdLHSuyLZRBgAABAgQIECCQUEAom7CplkSAAAECBAjEFhh9eFddybQ7Y+ddX9BlrHmhbNsHfU066dslDJ1WR712oZrUO3ZHr00Y7/z4vB70Ffv3huoJECBAgAABAlkEhLJZOmkdBAgQIECAAAECBAgQIECAAAECBAiEEBDKhmiTIgkQIECAAAECBAgQIECAAAECBAgQyCIglM3SSesgQIAAAQIECBAgQIAAAQIECBAgQCCEgFA2RJsUSYAAAQIECBAgQIAAAQIECBAgQIBAFgGhbJZOWgcBAgQIECBAgAABAgQIECBAgAABAiEEhLIh2qRIAgQIECBAgAABAgQIECBAgAABAgSyCAhls3TSOggQIECAAAECBAgQIECAAAECBAgQCCEglA3RJkUSIECAAAECBAgQIECAAAECBAgQIJBFQCibpZPWQYAAAQIECBAgQIAAAQIECBAgQIBACAGhbIg2KZIAAQIECBAgQIAAAQIECBAgQIAAgSwCQtksnbQOAgQIECBAgAABAgQIECBAgAABAgRCCAhlQ7RJkQQIECBAgAABAgQIECBAgAABAgQIZBEQymbppHUQIECAAAECBAgQIECAAAECBAgQIBBCQCgbok2KJECAAAECBAgQIECAAAECBAgQIEAgi4BQNksnrYMAAQIECBAgQIAAAQIECBAgQIAAgRACQtkQbVIkAQIECBAgQIAAAQIECBAgQIAAAQJZBISyWTppHQQIECBAgAABAgQIECBAgAABAgQIhBAQyoZokyIJECBAgAABAgQIECBAgAABAgQIEMgiIJTN0knrIECAAAECBAgQIECAAAECBAgQIEAghIBQNkSbFEmAAAECBAgQIECAAAECBAgQIECAQBYBoWyWTloHAQIECBAgQIAAAQIECBAgQIAAAQIhBISyIdqkSAIECBAgQIAAAQIECBAgQIAAAQIEsggIZbN00joIECBAgAABAgQIECBAgAABAgQIEAghIJQN0SZFEiBAgAABAgQIECBAgAABAgQIECCQRUAom6WT1kGAAAECBAgQIECAAAECBAgQIECAQAgBoWyINimSAAECBAgQIECAAAECBAgQIECAAIEsAkLZLJ20DgIECBAgQIAAAQIECBAgQIAAAQIEQggIZUO0SZEECBAgQIAAAQIECBAgQIAAAQIECGQREMpm6aR1ECBAgAABAgQIECBAgAABAgQIECAQQkAoG6JNiiRAgAABAgQIECBAgAABAgQIECBAIIuAUDZLJ62DAAECBAgQIECAAAECBAgQIECAAIEQAkLZEG1SJAECBAgQIECAAAECBAgQIECAAAECWQSEslk6aR0ECBAgQIAAAQIECBAgQIAAAQIECIQQEMqGaJMiCRAgQIAAAQIECBAgQIAAAQIECBDIIiCUzdJJ6yBAgAABAgQIECBAgAABAgQIECBAIISAUDZEmxRJgAABAgQIECBAgAABAgQIECBAgEAWAaFslk5aBwECBAgQIECAAAECBAgQIECAAAECIQSEsiHapEgCBAgQIECAAAECBAgQIECAAAECBLII/A/Bq7s+9DpCOAAAAABJRU5ErkJggg==",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dynamics.plot_history(colors=['lightgray', 'green', 'lightgray', 'orange', 'darkturquoise', 'lightgray'])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "2f07ad6b-a1c9-4d99-8108-72b16727303d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.3183157284824908, 60.23261431038145)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.curve_intersect(\"U\", \"X\", t_start=0.3, t_end=0.35)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "94832b6d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce9f20d8-c922-4e9c-9e29-39dc95f845e3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "2bcf7587-5d3d-42fd-8c48-871e1af49891",
"metadata": {},
"source": [
"# PART 2 : \n",
"#### Notice the fictitious enzyme \"E\" in the first reaction, with concentration 1 (not affecting any of the kinetic parameters)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "d4d7a985-a365-412e-8d51-9cabbbb18ec1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of reactions: 2 (at temp. 25 C)\n",
"0: 2 S + E <-> U + E (kF = 8 / kR = 2 / delta_G = -3,436.6 / K = 4) | Enzyme: E | 1st order in all reactants & products\n",
"1: S <-> X (kF = 6 / kR = 3 / delta_G = -1,718.3 / K = 2) | 1st order in all reactants & products\n",
"Set of chemicals involved in the above reactions (not counting enzymes): {'X', 'S', 'U'}\n",
"Set of enzymes involved in the above reactions: {'E'}\n"
]
}
],
"source": [
"# Initialize the system\n",
"chem_data = chem(names=[\"U\", \"X\", \"S\", \"E\"])\n",
"\n",
"# Reaction 2 S <-> U , with 1st-order kinetics for all species (mostly forward)\n",
"chem_data.add_reaction(reactants=[(2, \"S\", 1), \"E\"], products=[\"U\", \"E\"],\n",
" forward_rate=8., reverse_rate=2.)\n",
"\n",
"# Reaction S <-> X , with 1st-order kinetics for all species (mostly forward)\n",
"chem_data.add_reaction(reactants=\"S\", products=\"X\",\n",
" forward_rate=6., reverse_rate=3.)\n",
"\n",
"chem_data.describe_reactions()"
]
},
{
"cell_type": "markdown",
"id": "abcbc23f-77f4-4c8b-9352-a07e3056681c",
"metadata": {},
"source": [
"### Set the initial concentrations of all the chemicals"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "0f21468d-0344-496a-8cfa-cd55562dc2e0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SYSTEM STATE at Time t = 0:\n",
"4 species:\n",
" Species 0 (U). Conc: 50.0\n",
" Species 1 (X). Conc: 100.0\n",
" Species 2 (S). Conc: 0.0\n",
" Species 3 (E). Conc: 1.0\n",
"Set of chemicals involved in reactions (not counting enzymes): {'X', 'S', 'U'}\n",
"Set of enzymes involved in reactions: {'E'}\n"
]
}
],
"source": [
"dynamics = UniformCompartment(chem_data=chem_data, preset=None)\n",
"dynamics.set_conc(conc={\"U\": 50., \"X\": 100., \"E\": 1. })\n",
"dynamics.describe_state()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "4705ef92-3e78-44c5-b390-19ad2db10eba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameters used for the automated adaptive time step sizes -\n",
" THRESHOLDS: [{'norm': 'norm_A', 'low': 0.25, 'high': 0.64, 'abort': 1.44}]\n",
" STEP FACTORS: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n"
]
}
],
"source": [
"dynamics.set_diagnostics() # To save diagnostic information about the call to single_compartment_react()\n",
"\n",
"# These adaptive-time settings (normally specified with a preset) are being set explicitly\n",
"dynamics.set_thresholds(norm=\"norm_A\", low=0.25, high=0.64, abort=1.44)\n",
"dynamics.set_step_factors(upshift=2.0, downshift=0.5, abort=0.5, error=0.5)\n",
"\n",
"dynamics.show_adaptive_parameters()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "1e2e764a-f78c-488c-9bdc-6b474bb5a883",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"(STEP 0 aborted) SYSTEM TIME 0 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: None\n",
" Baseline: [ 50. 100. 0. 1.]\n",
" Deltas: [-1. -3. 5. 0.]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 3.888888888888889}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | abort 1.44 | (VALUE 3.8889)\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'ABORT' (with step size factor of 0.5)\n",
" * INFO: the tentative time step (0.01) leads to a value of ['norm_A'] > its ABORT threshold:\n",
" -> will backtrack, and re-do step with a SMALLER Δt, x0.5 (now set to 0.005) [Step started at t=0, and will rewind there]\n",
"\n",
"(STEP 0 completed) SYSTEM TIME 0 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: None\n",
" Baseline: [ 50. 100. 0. 1.]\n",
" Deltas: [-0.5 -1.5 2.5 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.9722222222222222}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.97222) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0, and will continue to 0.005]\n",
"\n",
"(STEP 1 completed) SYSTEM TIME 0.005 : Examining Conc. changes due to tentative Δt=0.0025 ...\n",
" Previous: [ 50. 100. 0. 1.]\n",
" Baseline: [49.5 98.5 2.5 1. ]\n",
" Deltas: [-0.1975 -0.70125 1.09625 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.19250243055555555}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.1925) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.005, and will continue to 0.0075]\n",
"\n",
"(STEP 2 completed) SYSTEM TIME 0.0075 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [49.5 98.5 2.5 1. ]\n",
" Baseline: [49.3025 97.79875 3.59625 1. ]\n",
" Deltas: [-0.349175 -1.35909375 2.05744375 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.6891259762586809}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.68913) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.0025) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.0075, and will continue to 0.0125]\n",
"\n",
"(STEP 3 completed) SYSTEM TIME 0.0125 : Examining Conc. changes due to tentative Δt=0.0025 ...\n",
" Previous: [49.3025 97.79875 3.59625 1. ]\n",
" Baseline: [48.953325 96.43965625 5.65369375 1. ]\n",
" Deltas: [-0.13169275 -0.63849202 0.90187752 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.1375997875121511}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.1376) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.005) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.0125, and will continue to 0.015]\n",
"\n",
"(STEP 4 completed) SYSTEM TIME 0.015 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [48.953325 96.43965625 5.65369375 1. ]\n",
" Baseline: [48.82163225 95.80116423 6.55557127 1. ]\n",
" Deltas: [-0.22599347 -1.24035033 1.69233727 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.494838601385062}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.49484) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.015, and will continue to 0.02]\n",
"\n",
"(STEP 5 completed) SYSTEM TIME 0.02 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [48.82163225 95.80116423 6.55557127 1. ]\n",
" Baseline: [48.59563878 94.56081391 8.24790853 1. ]\n",
" Deltas: [-0.15604005 -1.17097495 1.48305505 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.3994425670227834}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.39944) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.02, and will continue to 0.025]\n",
"\n",
"(STEP 6 completed) SYSTEM TIME 0.025 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [48.59563878 94.56081391 8.24790853 1. ]\n",
" Baseline: [48.43959873 93.38983896 9.73096358 1. ]\n",
" Deltas: [-0.09515744 -1.10891868 1.29923357 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.32519593644806855}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.3252) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.025, and will continue to 0.03]\n",
"\n",
"(STEP 7 completed) SYSTEM TIME 0.03 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [48.43959873 93.38983896 9.73096358 1. ]\n",
" Baseline: [48.34444129 92.28092028 11.03019715 1. ]\n",
" Deltas: [-0.04223653 -1.05330789 1.13778094 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.2673096568217399}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.26731) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.03, and will continue to 0.035]\n",
"\n",
"(STEP 8 completed) SYSTEM TIME 0.035 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [48.34444129 92.28092028 11.03019715 1. ]\n",
" Baseline: [48.30220476 91.22761239 12.16797809 1. ]\n",
" Deltas: [ 0.00369708 -1.00337484 0.99598069 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.22208358683873192}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.22208) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.035, and will continue to 0.04]\n",
"\n",
"(STEP 9 completed) SYSTEM TIME 0.04 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [48.30220476 91.22761239 12.16797809 1. ]\n",
" Baseline: [48.30590184 90.22423755 13.16395878 1. ]\n",
" Deltas: [ 0.08699867 -1.9168896 1.74289227 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.7466342181101149}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.74663) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.005) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.04, and will continue to 0.05]\n",
"\n",
"(STEP 10 completed) SYSTEM TIME 0.05 : Examining Conc. changes due to tentative Δt=0.005 ...\n",
" Previous: [48.30590184 90.22423755 13.16395878 1. ]\n",
" Baseline: [48.3929005 88.30734795 14.90685105 1. ]\n",
" Deltas: [ 0.11234504 -0.87740469 0.65271461 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.13427741784149083}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.13428) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.01) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.05, and will continue to 0.055]\n",
"\n",
"(STEP 11 completed) SYSTEM TIME 0.055 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [48.3929005 88.30734795 14.90685105 1. ]\n",
" Baseline: [48.50524554 87.42994326 15.55956566 1. ]\n",
" Deltas: [ 0.27466034 -1.68932436 1.14000367 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.4698737184351335}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.46987) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.055, and will continue to 0.065]\n",
"\n",
"(STEP 12 completed) SYSTEM TIME 0.065 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [48.50524554 87.42994326 15.55956566 1. ]\n",
" Baseline: [48.77990588 85.7406189 16.69956934 1. ]\n",
" Deltas: [ 0.36036743 -1.57024441 0.84950955 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.3685776282283221}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.36858) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.065, and will continue to 0.075]\n",
"\n",
"(STEP 13 completed) SYSTEM TIME 0.075 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [48.77990588 85.7406189 16.69956934 1. ]\n",
" Baseline: [49.14027331 84.17037449 17.54907888 1. ]\n",
" Deltas: [ 0.42112084 -1.4721665 0.62992481 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.3046024715786003}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.3046) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.075, and will continue to 0.085]\n",
"\n",
"(STEP 14 completed) SYSTEM TIME 0.085 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [49.14027331 84.17037449 17.54907888 1. ]\n",
" Baseline: [49.56139416 82.69820799 18.1790037 1. ]\n",
" Deltas: [ 0.46309241 -1.39020602 0.46402119 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.2624936691312418}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.26249) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.085, and will continue to 0.095]\n",
"\n",
"(STEP 15 completed) SYSTEM TIME 0.095 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [49.56139416 82.69820799 18.1790037 1. ]\n",
" Baseline: [50.02448657 81.30800197 18.64302489 1. ]\n",
" Deltas: [ 0.49095226 -1.32065857 0.33875405 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.23332527475445466}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.23333) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.095, and will continue to 0.105]\n",
"\n",
"(STEP 16 completed) SYSTEM TIME 0.105 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [50.02448657 81.30800197 18.64302489 1. ]\n",
" Baseline: [50.51543883 79.98734341 18.98177894 1. ]\n",
" Deltas: [ 1.01646708 -2.52142713 0.48849298 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.847713943482735}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.84771) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.105, and will continue to 0.125]\n",
"\n",
"(STEP 17 completed) SYSTEM TIME 0.125 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [50.51543883 79.98734341 18.98177894 1. ]\n",
" Baseline: [51.5319059 77.46591628 19.47027191 1. ]\n",
" Deltas: [ 0.52698364 -1.15576117 0.1017939 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.18042862670354223}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.18043) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.125, and will continue to 0.135]\n",
"\n",
"(STEP 18 completed) SYSTEM TIME 0.135 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [51.5319059 77.46591628 19.47027191 1. ]\n",
" Baseline: [52.05888954 76.3101551 19.57206582 1. ]\n",
" Deltas: [ 1.04917495 -2.22996141 0.13161151 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.676757504987934}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.67676) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.01) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.135, and will continue to 0.155]\n",
"\n",
"(STEP 19 completed) SYSTEM TIME 0.155 : Examining Conc. changes due to tentative Δt=0.01 ...\n",
" Previous: [52.05888954 76.3101551 19.57206582 1. ]\n",
" Baseline: [53.10806449 74.08019369 19.70367733 1. ]\n",
" Deltas: [ 0.5141329 -1.04018517 0.01191938 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.149606655239135}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.14961) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.02) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.155, and will continue to 0.165]\n",
"\n",
"(STEP 20 completed) SYSTEM TIME 0.165 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [53.10806449 74.08019369 19.70367733 1. ]\n",
" Baseline: [53.62219739 73.04000852 19.71559671 1. ]\n",
" Deltas: [ 1.00960758 -2.01652891 -0.00268625 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.5650781675774635}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.56508) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.165, and will continue to 0.185]\n",
"\n",
"(STEP 21 completed) SYSTEM TIME 0.185 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [53.62219739 73.04000852 19.71559671 1. ]\n",
" Baseline: [54.63180496 71.02347962 19.71291046 1. ]\n",
" Deltas: [ 0.96879347 -1.89585952 -0.04172743 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.5038428113796767}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.50384) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.185, and will continue to 0.205]\n",
"\n",
"(STEP 22 completed) SYSTEM TIME 0.205 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [54.63180496 71.02347962 19.71291046 1. ]\n",
" Baseline: [55.60059844 69.12762009 19.67118303 1. ]\n",
" Deltas: [ 0.92336535 -1.78711524 -0.05961545 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.4499931616991674}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.44999) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.205, and will continue to 0.225]\n",
"\n",
"(STEP 23 completed) SYSTEM TIME 0.225 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [55.60059844 69.12762009 19.67118303 1. ]\n",
" Baseline: [56.52396378 67.34050485 19.61156758 1. ]\n",
" Deltas: [ 0.87689226 -1.68704218 -0.06674234 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.4021673223106198}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.40217) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.225, and will continue to 0.245]\n",
"\n",
"(STEP 24 completed) SYSTEM TIME 0.245 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [56.52396378 67.34050485 19.61156758 1. ]\n",
" Baseline: [57.40085605 65.65346267 19.54482524 1. ]\n",
" Deltas: [ 0.8311378 -1.59382873 -0.06844686 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.3595294483481833}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.35953) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.245, and will continue to 0.265]\n",
"\n",
"(STEP 25 completed) SYSTEM TIME 0.265 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [57.40085605 65.65346267 19.54482524 1. ]\n",
" Baseline: [58.23199384 64.05963394 19.47637838 1. ]\n",
" Deltas: [ 0.78694079 -1.50641263 -0.06746894 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.32145631944741265}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.32146) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.265, and will continue to 0.285]\n",
"\n",
"(STEP 26 completed) SYSTEM TIME 0.285 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [58.23199384 64.05963394 19.47637838 1. ]\n",
" Baseline: [59.01893463 62.55322131 19.40890943 1. ]\n",
" Deltas: [ 0.74466812 -1.42412415 -0.0652121 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.2874347575511702}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.28743) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.285, and will continue to 0.305]\n",
"\n",
"(STEP 27 completed) SYSTEM TIME 0.305 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [59.01893463 62.55322131 19.40890943 1. ]\n",
" Baseline: [59.76360275 61.12909716 19.34369733 1. ]\n",
" Deltas: [ 0.70444746 -1.34650215 -0.06239278 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.25702301402562294}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.25702) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.305, and will continue to 0.325]\n",
"\n",
"(STEP 28 completed) SYSTEM TIME 0.325 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [59.76360275 61.12909716 19.34369733 1. ]\n",
" Baseline: [60.46805022 59.78259501 19.28130456 1. ]\n",
" Deltas: [ 0.66628672 -1.27319915 -0.05937429 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.22983326503644058}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.22983) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.325, and will continue to 0.345]\n",
"\n",
"(STEP 29 completed) SYSTEM TIME 0.345 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [60.46805022 59.78259501 19.28130456 1. ]\n",
" Baseline: [61.13433694 58.50939586 19.22193027 1. ]\n",
" Deltas: [ 1.26027073 -2.40786424 -0.11267722 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.8220876292375117}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.82209) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.02) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.345, and will continue to 0.385]\n",
"\n",
"(STEP 30 completed) SYSTEM TIME 0.385 : Examining Conc. changes due to tentative Δt=0.02 ...\n",
" Previous: [61.13433694 58.50939586 19.22193027 1. ]\n",
" Baseline: [62.39460767 56.10153162 19.10925305 1. ]\n",
" Deltas: [ 0.56169618 -1.07298153 -0.05041083 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.16325924649115092}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.16326) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.04) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.385, and will continue to 0.405]\n",
"\n",
"(STEP 31 completed) SYSTEM TIME 0.405 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [62.39460767 56.10153162 19.10925305 1. ]\n",
" Baseline: [62.95630385 55.02855009 19.05884222 1. ]\n",
" Deltas: [ 1.0623252 -2.02930388 -0.09534652 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.5839666694455721}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.58397) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.405, and will continue to 0.445]\n",
"\n",
"(STEP 32 completed) SYSTEM TIME 0.445 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [62.95630385 55.02855009 19.05884222 1. ]\n",
" Baseline: [64.01862905 52.99924621 18.96349569 1. ]\n",
" Deltas: [ 0.9468283 -1.80867058 -0.08498602 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.4638884123583411}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.46389) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.445, and will continue to 0.485]\n",
"\n",
"(STEP 33 completed) SYSTEM TIME 0.485 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [64.01862905 52.99924621 18.96349569 1. ]\n",
" Baseline: [64.96545735 51.19057563 18.87850968 1. ]\n",
" Deltas: [ 0.84388651 -1.61202675 -0.07574626 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.36850135438022225}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.3685) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.485, and will continue to 0.525]\n",
"\n",
"(STEP 34 completed) SYSTEM TIME 0.525 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [64.96545735 51.19057563 18.87850968 1. ]\n",
" Baseline: [65.80934386 49.57854888 18.80276341 1. ]\n",
" Deltas: [ 0.75213678 -1.43676265 -0.06751092 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.29272826302332505}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.29273) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.525, and will continue to 0.565]\n",
"\n",
"(STEP 35 completed) SYSTEM TIME 0.565 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [65.80934386 49.57854888 18.80276341 1. ]\n",
" Baseline: [66.56148064 48.14178623 18.73525249 1. ]\n",
" Deltas: [ 0.67036235 -1.28055375 -0.06017094 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.23253601370675195}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.23254) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.565, and will continue to 0.605]\n",
"\n",
"(STEP 36 completed) SYSTEM TIME 0.605 : Examining Conc. changes due to tentative Δt=0.08 ...\n",
" Previous: [66.56148064 48.14178623 18.73525249 1. ]\n",
" Baseline: [67.23184299 46.86123248 18.67508155 1. ]\n",
" Deltas: [ 1.19495731 -2.28265665 -0.10725798 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.7388831828204337}\n",
" Thresholds: \n",
" norm_A : low 0.25 | high 0.64 | (VALUE 0.73888) | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'HIGH' (with step size factor of 0.5)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL SMALLER, multiplied by 0.5 (set to 0.04) at the next round, because ['norm_A'] is high\n",
" [The current step started at System Time: 0.605, and will continue to 0.685]\n",
"\n",
"(STEP 37 completed) SYSTEM TIME 0.685 : Examining Conc. changes due to tentative Δt=0.04 ...\n",
" Previous: [67.23184299 46.86123248 18.67508155 1. ]\n",
" Baseline: [68.4268003 44.57857583 18.56782357 1. ]\n",
" Deltas: [ 0.46755952 -0.89315144 -0.0419676 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.11312140907262146}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.11312) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.08) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.685, and will continue to 0.725]\n",
"\n",
"(STEP 38 completed) SYSTEM TIME 0.725 : Examining Conc. changes due to tentative Δt=0.08 ...\n",
" Previous: [68.4268003 44.57857583 18.56782357 1. ]\n",
" Baseline: [68.89435982 43.68542439 18.52585598 1. ]\n",
" Deltas: [ 0.83345025 -1.59209098 -0.07480952 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.3594432769718806}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.35944) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.725, and will continue to 0.805]\n",
"\n",
"(STEP 39 completed) SYSTEM TIME 0.805 : Examining Conc. changes due to tentative Δt=0.08 ...\n",
" Previous: [68.89435982 43.68542439 18.52585598 1. ]\n",
" Baseline: [69.72781007 42.0933334 18.45104645 1. ]\n",
" Deltas: [ 0.65222012 -1.24589772 -0.05854252 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.2201199373223358}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.22012) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.16) at the next round, because all norms are low\n",
" [The current step started at System Time: 0.805, and will continue to 0.885]\n",
"\n",
"(STEP 40 completed) SYSTEM TIME 0.885 : Examining Conc. changes due to tentative Δt=0.16 ...\n",
" Previous: [69.72781007 42.0933334 18.45104645 1. ]\n",
" Baseline: [70.38003019 40.84743568 18.39250394 1. ]\n",
" Deltas: [ 1.02079538 -1.94996535 -0.0916254 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.5391981423603522}\n",
" Thresholds: \n",
" norm_A : low 0.25 | (VALUE 0.5392) | high 0.64 | abort 1.44\n",
" => Action: 'STAY' (with step size factor of 1)\n",
" INFO: COMPLETE NORMALLY - we're inside the target range of all norms. No change to step size.\n",
" [The current step started at System Time: 0.885, and will continue to 1.045]\n",
"\n",
"(STEP 41 completed) SYSTEM TIME 1.045 : Examining Conc. changes due to tentative Δt=0.16 ...\n",
" Previous: [70.38003019 40.84743568 18.39250394 1. ]\n",
" Baseline: [71.40082557 38.89747033 18.30087853 1. ]\n",
" Deltas: [ 0.57686034 -1.10194237 -0.05177831 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.17219175887655633}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.17219) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.32) at the next round, because all norms are low\n",
" [The current step started at System Time: 1.045, and will continue to 1.205]\n",
"\n",
"(STEP 42 completed) SYSTEM TIME 1.205 : Examining Conc. changes due to tentative Δt=0.32 ...\n",
" Previous: [71.40082557 38.89747033 18.30087853 1. ]\n",
" Baseline: [71.97768591 37.79552796 18.24910022 1. ]\n",
" Deltas: [ 0.65197758 -1.24543442 -0.05852075 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.21995626094117085}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.21996) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 0.64) at the next round, because all norms are low\n",
" [The current step started at System Time: 1.205, and will continue to 1.525]\n",
"\n",
"(STEP 43 completed) SYSTEM TIME 1.525 : Examining Conc. changes due to tentative Δt=0.64 ...\n",
" Previous: [71.97768591 37.79552796 18.24910022 1. ]\n",
" Baseline: [72.62966349 36.55009354 18.19057947 1. ]\n",
" Deltas: [ 0.16979763 -0.32435443 -0.01524084 0. ]\n",
" Restricting adaptive time step analysis to 3 chemicals only: {'X', 'S', 'U'} , with indexes: [0, 1, 2]\n",
" Norms: {'norm_A': 0.01491881249157113}\n",
" Thresholds: \n",
" norm_A : (VALUE 0.014919) | low 0.25 | high 0.64 | abort 1.44\n",
" Step Factors: {'upshift': 2.0, 'downshift': 0.5, 'abort': 0.5, 'error': 0.5}\n",
" => Action: 'LOW' (with step size factor of 2.0)\n",
" INFO: COMPLETE STEP NORMALLY and MAKE THE INTERVAL LARGER, multiplied by 2.0 (set to 1.28) at the next round, because all norms are low\n",
" [The current step started at System Time: 1.525, and will continue to 2.165]\n",
"44 total step(s) taken\n",
"Number of step re-do's because of negative concentrations: 0\n",
"Number of step re-do's because of elective soft aborts: 1\n",
"Norm usage: {'norm_A': 23, 'norm_B': 15, 'norm_C': 15, 'norm_D': 15}\n"
]
}
],
"source": [
"dynamics.single_compartment_react(initial_step=0.01, target_end_time=2.0, \n",
" variable_steps=True, explain_variable_steps=[0,2])"
]
},
{
"cell_type": "markdown",
"id": "d44576e5-5198-40c7-9c10-8bd8e90a37cc",
"metadata": {},
"source": [
"## Compare the above printout with its counterpart from the experiment `variable_steps_1`\n",
"Notice the extra lines we have this time, saying _\"Restricting adaptive time step analysis to 3 chemicals only\"_"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "5e1a5aa2-973d-4f3e-8844-d8ab81509562",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" SYSTEM TIME | \n",
" U | \n",
" X | \n",
" S | \n",
" E | \n",
" caption | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0.0000 | \n",
" 50.000000 | \n",
" 100.000000 | \n",
" 0.000000 | \n",
" 1.0 | \n",
" Initialized state | \n",
"
\n",
" \n",
" | 1 | \n",
" 0.0050 | \n",
" 49.500000 | \n",
" 98.500000 | \n",
" 2.500000 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 0.0075 | \n",
" 49.302500 | \n",
" 97.798750 | \n",
" 3.596250 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 0.0125 | \n",
" 48.953325 | \n",
" 96.439656 | \n",
" 5.653694 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 0.0150 | \n",
" 48.821632 | \n",
" 95.801164 | \n",
" 6.555571 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 5 | \n",
" 0.0200 | \n",
" 48.595639 | \n",
" 94.560814 | \n",
" 8.247909 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 6 | \n",
" 0.0250 | \n",
" 48.439599 | \n",
" 93.389839 | \n",
" 9.730964 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 7 | \n",
" 0.0300 | \n",
" 48.344441 | \n",
" 92.280920 | \n",
" 11.030197 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 8 | \n",
" 0.0350 | \n",
" 48.302205 | \n",
" 91.227612 | \n",
" 12.167978 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 9 | \n",
" 0.0400 | \n",
" 48.305902 | \n",
" 90.224238 | \n",
" 13.163959 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 10 | \n",
" 0.0500 | \n",
" 48.392901 | \n",
" 88.307348 | \n",
" 14.906851 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 11 | \n",
" 0.0550 | \n",
" 48.505246 | \n",
" 87.429943 | \n",
" 15.559566 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 12 | \n",
" 0.0650 | \n",
" 48.779906 | \n",
" 85.740619 | \n",
" 16.699569 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 13 | \n",
" 0.0750 | \n",
" 49.140273 | \n",
" 84.170374 | \n",
" 17.549079 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 14 | \n",
" 0.0850 | \n",
" 49.561394 | \n",
" 82.698208 | \n",
" 18.179004 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 15 | \n",
" 0.0950 | \n",
" 50.024487 | \n",
" 81.308002 | \n",
" 18.643025 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 16 | \n",
" 0.1050 | \n",
" 50.515439 | \n",
" 79.987343 | \n",
" 18.981779 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 17 | \n",
" 0.1250 | \n",
" 51.531906 | \n",
" 77.465916 | \n",
" 19.470272 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 18 | \n",
" 0.1350 | \n",
" 52.058890 | \n",
" 76.310155 | \n",
" 19.572066 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 19 | \n",
" 0.1550 | \n",
" 53.108064 | \n",
" 74.080194 | \n",
" 19.703677 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 20 | \n",
" 0.1650 | \n",
" 53.622197 | \n",
" 73.040009 | \n",
" 19.715597 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 21 | \n",
" 0.1850 | \n",
" 54.631805 | \n",
" 71.023480 | \n",
" 19.712910 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 22 | \n",
" 0.2050 | \n",
" 55.600598 | \n",
" 69.127620 | \n",
" 19.671183 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 23 | \n",
" 0.2250 | \n",
" 56.523964 | \n",
" 67.340505 | \n",
" 19.611568 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 24 | \n",
" 0.2450 | \n",
" 57.400856 | \n",
" 65.653463 | \n",
" 19.544825 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 25 | \n",
" 0.2650 | \n",
" 58.231994 | \n",
" 64.059634 | \n",
" 19.476378 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 26 | \n",
" 0.2850 | \n",
" 59.018935 | \n",
" 62.553221 | \n",
" 19.408909 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 27 | \n",
" 0.3050 | \n",
" 59.763603 | \n",
" 61.129097 | \n",
" 19.343697 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 28 | \n",
" 0.3250 | \n",
" 60.468050 | \n",
" 59.782595 | \n",
" 19.281305 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 29 | \n",
" 0.3450 | \n",
" 61.134337 | \n",
" 58.509396 | \n",
" 19.221930 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 30 | \n",
" 0.3850 | \n",
" 62.394608 | \n",
" 56.101532 | \n",
" 19.109253 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 31 | \n",
" 0.4050 | \n",
" 62.956304 | \n",
" 55.028550 | \n",
" 19.058842 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 32 | \n",
" 0.4450 | \n",
" 64.018629 | \n",
" 52.999246 | \n",
" 18.963496 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 33 | \n",
" 0.4850 | \n",
" 64.965457 | \n",
" 51.190576 | \n",
" 18.878510 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 34 | \n",
" 0.5250 | \n",
" 65.809344 | \n",
" 49.578549 | \n",
" 18.802763 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 35 | \n",
" 0.5650 | \n",
" 66.561481 | \n",
" 48.141786 | \n",
" 18.735252 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 36 | \n",
" 0.6050 | \n",
" 67.231843 | \n",
" 46.861232 | \n",
" 18.675082 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 37 | \n",
" 0.6850 | \n",
" 68.426800 | \n",
" 44.578576 | \n",
" 18.567824 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 38 | \n",
" 0.7250 | \n",
" 68.894360 | \n",
" 43.685424 | \n",
" 18.525856 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 39 | \n",
" 0.8050 | \n",
" 69.727810 | \n",
" 42.093333 | \n",
" 18.451046 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 40 | \n",
" 0.8850 | \n",
" 70.380030 | \n",
" 40.847436 | \n",
" 18.392504 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 41 | \n",
" 1.0450 | \n",
" 71.400826 | \n",
" 38.897470 | \n",
" 18.300879 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 42 | \n",
" 1.2050 | \n",
" 71.977686 | \n",
" 37.795528 | \n",
" 18.249100 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 43 | \n",
" 1.5250 | \n",
" 72.629663 | \n",
" 36.550094 | \n",
" 18.190579 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
" | 44 | \n",
" 2.1650 | \n",
" 72.799461 | \n",
" 36.225739 | \n",
" 18.175339 | \n",
" 1.0 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" SYSTEM TIME U X S E caption\n",
"0 0.0000 50.000000 100.000000 0.000000 1.0 Initialized state\n",
"1 0.0050 49.500000 98.500000 2.500000 1.0 \n",
"2 0.0075 49.302500 97.798750 3.596250 1.0 \n",
"3 0.0125 48.953325 96.439656 5.653694 1.0 \n",
"4 0.0150 48.821632 95.801164 6.555571 1.0 \n",
"5 0.0200 48.595639 94.560814 8.247909 1.0 \n",
"6 0.0250 48.439599 93.389839 9.730964 1.0 \n",
"7 0.0300 48.344441 92.280920 11.030197 1.0 \n",
"8 0.0350 48.302205 91.227612 12.167978 1.0 \n",
"9 0.0400 48.305902 90.224238 13.163959 1.0 \n",
"10 0.0500 48.392901 88.307348 14.906851 1.0 \n",
"11 0.0550 48.505246 87.429943 15.559566 1.0 \n",
"12 0.0650 48.779906 85.740619 16.699569 1.0 \n",
"13 0.0750 49.140273 84.170374 17.549079 1.0 \n",
"14 0.0850 49.561394 82.698208 18.179004 1.0 \n",
"15 0.0950 50.024487 81.308002 18.643025 1.0 \n",
"16 0.1050 50.515439 79.987343 18.981779 1.0 \n",
"17 0.1250 51.531906 77.465916 19.470272 1.0 \n",
"18 0.1350 52.058890 76.310155 19.572066 1.0 \n",
"19 0.1550 53.108064 74.080194 19.703677 1.0 \n",
"20 0.1650 53.622197 73.040009 19.715597 1.0 \n",
"21 0.1850 54.631805 71.023480 19.712910 1.0 \n",
"22 0.2050 55.600598 69.127620 19.671183 1.0 \n",
"23 0.2250 56.523964 67.340505 19.611568 1.0 \n",
"24 0.2450 57.400856 65.653463 19.544825 1.0 \n",
"25 0.2650 58.231994 64.059634 19.476378 1.0 \n",
"26 0.2850 59.018935 62.553221 19.408909 1.0 \n",
"27 0.3050 59.763603 61.129097 19.343697 1.0 \n",
"28 0.3250 60.468050 59.782595 19.281305 1.0 \n",
"29 0.3450 61.134337 58.509396 19.221930 1.0 \n",
"30 0.3850 62.394608 56.101532 19.109253 1.0 \n",
"31 0.4050 62.956304 55.028550 19.058842 1.0 \n",
"32 0.4450 64.018629 52.999246 18.963496 1.0 \n",
"33 0.4850 64.965457 51.190576 18.878510 1.0 \n",
"34 0.5250 65.809344 49.578549 18.802763 1.0 \n",
"35 0.5650 66.561481 48.141786 18.735252 1.0 \n",
"36 0.6050 67.231843 46.861232 18.675082 1.0 \n",
"37 0.6850 68.426800 44.578576 18.567824 1.0 \n",
"38 0.7250 68.894360 43.685424 18.525856 1.0 \n",
"39 0.8050 69.727810 42.093333 18.451046 1.0 \n",
"40 0.8850 70.380030 40.847436 18.392504 1.0 \n",
"41 1.0450 71.400826 38.897470 18.300879 1.0 \n",
"42 1.2050 71.977686 37.795528 18.249100 1.0 \n",
"43 1.5250 72.629663 36.550094 18.190579 1.0 \n",
"44 2.1650 72.799461 36.225739 18.175339 1.0 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.get_history()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "6daa736f-466a-4786-8560-4c780863a0d7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"From time 0 to 0.005, in 1 step of 0.005\n",
"From time 0.005 to 0.0075, in 1 step of 0.0025\n",
"From time 0.0075 to 0.0125, in 1 step of 0.005\n",
"From time 0.0125 to 0.015, in 1 step of 0.0025\n",
"From time 0.015 to 0.04, in 5 steps of 0.005\n",
"From time 0.04 to 0.05, in 1 step of 0.01\n",
"From time 0.05 to 0.055, in 1 step of 0.005\n",
"From time 0.055 to 0.105, in 5 steps of 0.01\n",
"From time 0.105 to 0.125, in 1 step of 0.02\n",
"From time 0.125 to 0.135, in 1 step of 0.01\n",
"From time 0.135 to 0.155, in 1 step of 0.02\n",
"From time 0.155 to 0.165, in 1 step of 0.01\n",
"From time 0.165 to 0.345, in 9 steps of 0.02\n",
"From time 0.345 to 0.385, in 1 step of 0.04\n",
"From time 0.385 to 0.405, in 1 step of 0.02\n",
"From time 0.405 to 0.605, in 5 steps of 0.04\n",
"From time 0.605 to 0.685, in 1 step of 0.08\n",
"From time 0.685 to 0.725, in 1 step of 0.04\n",
"From time 0.725 to 0.885, in 2 steps of 0.08\n",
"From time 0.885 to 1.205, in 2 steps of 0.16\n",
"From time 1.205 to 1.525, in 1 step of 0.32\n",
"From time 1.525 to 2.165, in 1 step of 0.64\n",
"(44 steps total)\n"
]
}
],
"source": [
"(transition_times, step_sizes) = dynamics.explain_time_advance(return_times=True)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "ef4384d4-37bb-4ed0-bc82-487060b41b84",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.005 , 0.0025, 0.005 , 0.0025, 0.005 , 0.01 , 0.005 , 0.01 ,\n",
" 0.02 , 0.01 , 0.02 , 0.01 , 0.02 , 0.04 , 0.02 , 0.04 ,\n",
" 0.08 , 0.04 , 0.08 , 0.16 , 0.32 , 0.64 ])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(step_sizes)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "f099e57e-3869-4d91-afb0-548727b787c4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 0.005 , 0.0075, 0.0125, 0.015 , 0.04 , 0.05 , 0.055 ,\n",
" 0.105 , 0.125 , 0.135 , 0.155 , 0.165 , 0.345 , 0.385 , 0.405 ,\n",
" 0.605 , 0.685 , 0.725 , 0.885 , 1.205 , 1.525 , 2.165 ])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(transition_times) # Note: there will be one more transition time (the end time) than step sizes"
]
},
{
"cell_type": "markdown",
"id": "d7f758cb-6af3-4d30-bc2c-26dcb52e306e",
"metadata": {
"tags": []
},
"source": [
"## Plots of changes of concentration with time"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "7dedbcc8-f1fb-48af-b0e1-2941c3a83d88",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Chemical=U
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "U",
"line": {
"color": "green",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "U",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
50,
49.5,
49.3025,
48.953325,
48.82163225,
48.595638778125,
48.439598731740624,
48.34444128763423,
48.30220476057483,
48.30590183654385,
48.39290050226037,
48.5052455391863,
48.7799058814107,
49.14027331067588,
49.56139415522215,
50.02448656789047,
50.51543882771388,
51.5319059043599,
52.05888953946266,
53.10806448877514,
53.6221973851961,
54.631804962718874,
55.60059843741017,
56.52396378475239,
57.400856045782184,
58.231993841938426,
59.018934628561645,
59.76360275298115,
60.468050216020096,
61.13433693633931,
62.39460766762712,
62.95630384813689,
64.01862904935517,
64.96545734689445,
65.8093438554794,
66.56148063896055,
67.23184298514343,
68.4268002988057,
68.89435981841929,
69.72781007217334,
70.38003019051833,
71.40082556698592,
71.97768590721373,
72.62966349214221,
72.7994611238083
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=X
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "X",
"line": {
"color": "orange",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "X",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
100,
98.5,
97.79875,
96.43965625,
95.801164234375,
94.56081390882812,
93.38983895624335,
92.28092027930796,
91.22761238948105,
90.22423754631991,
88.30734794676586,
87.42994325902578,
85.7406189010111,
84.17037449415082,
82.69820799239614,
81.30800197445382,
79.98734340860611,
77.46591627640568,
76.31015510300598,
74.08019369499387,
73.0400085237914,
71.02347961706188,
69.12762009493821,
67.34050485287088,
65.65346267101354,
64.05963393924337,
62.55322130811434,
61.12909716179896,
59.782595011959664,
58.5093958579621,
56.10153161965286,
55.02855008788483,
52.99924620914057,
51.19057563015947,
49.578548876792716,
48.14178623051722,
46.86123248082995,
44.57857582889467,
43.685424387065844,
42.0933334026959,
40.84743568346842,
38.897470333478665,
37.79552796465638,
36.5500935427452,
36.2257391168805
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=S
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "S",
"line": {
"color": "darkturquoise",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "S",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
0,
2.5,
3.59625,
5.65369375,
6.555571265625001,
8.247908534921876,
9.730963580275391,
11.03019714542356,
12.167978089369273,
13.163958780592365,
14.906851048713396,
15.559565662601617,
16.699569336167485,
17.5490788844974,
18.179003697159533,
18.643024889765208,
18.981778935966094,
19.470271914874488,
19.572065818068666,
19.703677327455825,
19.715596705816367,
19.712910457500335,
19.671183030241412,
19.611567577624296,
19.54482523742205,
19.476378376879737,
19.40890943476233,
19.343697332238698,
19.2813045560001,
19.221930269359245,
19.10925304509285,
19.058842215841338,
18.963495692149042,
18.878509676051582,
18.80276341224844,
18.735252491561642,
18.67508154888315,
18.56782357349389,
18.52585597609554,
18.451046452957367,
18.392503935494886,
18.300878532549454,
18.24910022091612,
18.190579472970335,
18.17533863550288
],
"yaxis": "y"
},
{
"hovertemplate": "Chemical=E
SYSTEM TIME=%{x}
Concentration=%{y}",
"legendgroup": "E",
"line": {
"color": "gray",
"dash": "solid"
},
"marker": {
"symbol": "circle"
},
"mode": "lines",
"name": "E",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": [
0,
0.005,
0.0075,
0.0125,
0.015000000000000001,
0.02,
0.025,
0.030000000000000002,
0.035,
0.04,
0.05,
0.055,
0.065,
0.075,
0.08499999999999999,
0.09499999999999999,
0.10499999999999998,
0.12499999999999999,
0.13499999999999998,
0.15499999999999997,
0.16499999999999998,
0.18499999999999997,
0.20499999999999996,
0.22499999999999995,
0.24499999999999994,
0.26499999999999996,
0.285,
0.305,
0.325,
0.34500000000000003,
0.385,
0.405,
0.445,
0.485,
0.525,
0.5650000000000001,
0.6050000000000001,
0.685,
0.7250000000000001,
0.805,
0.885,
1.045,
1.2049999999999998,
1.525,
2.165
],
"xaxis": "x",
"y": [
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
],
"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": "Changes in concentration for `2 S + E <-> U + E` and `S <-> X`"
},
"xaxis": {
"anchor": "y",
"autorange": true,
"domain": [
0,
1
],
"range": [
0,
2.165
],
"title": {
"text": "SYSTEM TIME"
},
"type": "linear"
},
"yaxis": {
"anchor": "x",
"autorange": true,
"domain": [
0,
1
],
"range": [
-5.555555555555555,
105.55555555555556
],
"title": {
"text": "Concentration"
},
"type": "linear"
}
}
},
"image/png": "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yXkggAACCCCAAAIIIIAAAggggAACCCCAgBcChLJedBONRAABBBBAAAEEEEAAAQQQQAABBBBAAIGsCBDKZqUnOQ8EEEAAAQQQQAABBBBAAAEEEEAAAQQQ8EKAUNaLbqKRCCCAAAIIIIAAAggggAACCCCAAAIIIJAVAULZrPQk54EAAggggAACCCCAAAIIIIAAAggggAACXggQynrRTTQSAQQQQAABBBBAAAEEEEAAAQQQQAABBLIiQCiblZ7kPBBAAAEEEEAAAQQQQAABBBBAAAEEEEDACwFCWS+6iUYigAACCCCAAAIIIIAAAggggAACCCCAQFYECGWz0pOcBwIIIIAAAggggAACCCCAAAIIIIAAAgh4IUAo60U30UgEEEAAAQQQQAABBBBAAAEEEEAAAQQQyIoAoWxWepLzQAABBBBAAAEEEEAAAQQQQAABBBBAAAEvBAhlvegmGokAAggggAACCCCAAAIIIIAAAggggAACWREglM1KT3IeCCCAAAIIIIAAAggggAACCCCAAAIIIOCFAKGsF91EIxFAAAEEEEAAAQQQQAABBBBAAAEEEEAgKwKEslnpSc4DAQQQQAABBBBAAAEEEEAAAQQQQAABBLwQIJT1optoJAIIIIAAAggggAACCCCAAAIIIIAAAghkRYBQNis9yXkggAACCCCAAAIIIIAAAggggAACCCCAgBcChLJedBONRAABBBBAAAEEEEAAAQQQQAABBBBAAIGsCBDKZqUnOQ8EEEAAAQQQQEAJ7LzvW3LPA4+eZHH91ZfLtmuvlM1btgXvPbV750n76PcGVw3II7t2BO81Kuu8S7Yuaz64qj+o55ob75Bnn3+55r47vnCdbLnsYrli63Z5Zc8+Cf8c7rz78adl++33yjlnbVhsV3VBcdpx8YXny6N/9czioZd/4qPylS9+tql645wHFyECCCCAAAIIIIAAAnEECGXjKLEPAv9/e3evGkUUxQF8n0DwA2wEIaCQgE2avEpeIU8gNhYpLLVUFEQQRLAQUkoKQbEQrIJYCKlsBD/AJ5C7cJfJurNzbvZscDe/LXcP5975zaT5c3OGAAECBAgQWAGBGhq+fHh3dGtzY7LjEq4evvs0CTVLiLmzvTl6ev/2pObOvcej9x+PJmFttNd0eDodqpbfS6+fv/70hqqlpoay0/uq388LZbu3poa4s/Yx67eW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",
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"dynamics.plot_history(colors=['green', 'orange', 'darkturquoise', 'gray'])"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "e93b4549-9889-4002-b883-cc2abb06d2a4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.3183157284824908, 60.23261431038145)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dynamics.curve_intersect(\"U\", \"X\", t_start=0.3, t_end=0.35)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cce31c35-5955-4d33-b4e9-24df6de40003",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"jupytext": {
"formats": "ipynb,py:percent"
},
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}