{ "cells": [ { "cell_type": "markdown", "id": "8e645e9e", "metadata": {}, "source": [ "# Advanced Physical Modelling\n", "\n", "In the previous tutorial, we simply modelled the chemistry of a static cloud for 1 Myr. This is unlikely to meet everybody's modelling needs and UCLCHEM is capable of modelling much more complex environments such as hot cores and shocks. In this tutorial, we model both a hot core and a shock to explore how these models work and to demonstrate the workflow that the UCLCHEM team normally follow." ] }, { "cell_type": "code", "execution_count": 1, "id": "f70c75d0", "metadata": { "execution": { "iopub.execute_input": "2026-01-23T14:08:05.864523Z", "iopub.status.busy": "2026-01-23T14:08:05.864331Z", "iopub.status.idle": "2026-01-23T14:08:07.109903Z", "shell.execute_reply": "2026-01-23T14:08:07.109103Z" } }, "outputs": [], "source": [ "import uclchem\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "markdown", "id": "e1b2153e", "metadata": {}, "source": [ "## The Hot Core\n", "\n", "### Initial Conditions (Stage 1)\n", "UCLCHEM typically starts with the gas in atomic/ionic form with no molecules. However, this clearly is not appropriate when modelling an object such as a hot core. In these objects, the gas is already evolved and there should be molecules in the gas phase as well as ice mantles on the dust. To allow for this, one must provide some initial abundances to the model. There are many ways to do this but we typically chose to run a preliminary model to produce our abundances. In many UCLCHEM papers, we refer to the preliminary model as *stage 1* and the science model as *stage 2*. Stage 1 simply models a collapsing cloud and stage 2 models the object in question.\n", "\n", "To do this, we will use `uclchem.model.cloud()` to run a model where a cloud of gas collapses from a density of $10^2 cm^{-3}$ to our hot core density of $10^6 cm^{-3}$, keeping all other parameters constant. During this collapse, chemistry will occur and we can assume the final abundances of this model will be reasonable starting abundances for the hot core." ] }, { "cell_type": "code", "execution_count": 2, "id": "478960cc", "metadata": { "execution": { "iopub.execute_input": "2026-01-23T14:08:07.112339Z", "iopub.status.busy": "2026-01-23T14:08:07.112030Z", "iopub.status.idle": "2026-01-23T14:08:15.828253Z", "shell.execute_reply": "2026-01-23T14:08:15.827208Z" } }, "outputs": [], "source": [ "# set a parameter dictionary for cloud collapse model\n", "param_dict = {\n", " \"endAtFinalDensity\": False, # stop at finalTime\n", " \"freefall\": True, # increase density in freefall\n", " \"initialDens\": 1e2, # starting density\n", " \"finalDens\": 1e6, # final density\n", " \"initialTemp\": 10.0, # temperature of gas\n", " \"finalTime\": 6.0e6, # final time\n", " \"rout\": 0.1, # radius of cloud in pc\n", " \"baseAv\": 1.0, # visual extinction at cloud edge.\n", "}\n", "df_stage1_physics, df_stage1_chemistry, df_stage1_rates, final_abundances, result = (\n", " uclchem.model.cloud(\n", " param_dict=param_dict,\n", " return_dataframe=True,\n", " )\n", ")" ] }, { "cell_type": "code", "execution_count": 3, "id": "41ac9d0e", "metadata": { "execution": { "iopub.execute_input": "2026-01-23T14:08:15.830044Z", "iopub.status.busy": "2026-01-23T14:08:15.829848Z", "iopub.status.idle": "2026-01-23T14:08:15.858253Z", "shell.execute_reply": "2026-01-23T14:08:15.857535Z" } }, "outputs": [ { "data": { "text/html": [ "
| \n", " | H | \n", "H+ | \n", "H2 | \n", "H2+ | \n", "H3+ | \n", "HE | \n", "HE+ | \n", "HEH+ | \n", "C | \n", "C+ | \n", "... | \n", "@OCS | \n", "@C4N | \n", "@SIC3 | \n", "@SO2 | \n", "@S2 | \n", "@HS2 | \n", "@H2S2 | \n", "E- | \n", "BULK | \n", "SURFACE | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "5.000000e-01 | \n", "1.000000e-30 | \n", "0.250000 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "0.1 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-10 | \n", "1.770000e-04 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.823239e-04 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "
| 1 | \n", "5.000000e-01 | \n", "9.674341e-18 | \n", "0.250000 | \n", "9.479999e-18 | \n", "7.975011e-25 | \n", "0.1 | \n", "2.054000e-18 | \n", "1.993850e-26 | \n", "1.000005e-10 | \n", "1.770000e-04 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.823239e-04 | \n", "5.753474e-24 | \n", "7.485971e-15 | \n", "
| 2 | \n", "5.000000e-01 | \n", "9.674345e-17 | \n", "0.250000 | \n", "9.479987e-17 | \n", "7.800679e-23 | \n", "0.1 | \n", "2.054000e-17 | \n", "1.950169e-24 | \n", "1.000051e-10 | \n", "1.770000e-04 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.823239e-04 | \n", "5.479492e-22 | \n", "7.386762e-14 | \n", "
| 3 | \n", "5.000000e-01 | \n", "9.674388e-16 | \n", "0.250000 | \n", "9.479870e-16 | \n", "7.796568e-21 | \n", "0.1 | \n", "2.054000e-16 | \n", "1.949126e-22 | \n", "1.000514e-10 | \n", "1.770000e-04 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.823239e-04 | \n", "5.461842e-20 | \n", "7.376787e-13 | \n", "
| 4 | \n", "5.000000e-01 | \n", "9.674822e-15 | \n", "0.250000 | \n", "9.478701e-15 | \n", "7.795795e-19 | \n", "0.1 | \n", "2.054000e-15 | \n", "1.948788e-20 | \n", "1.005144e-10 | \n", "1.770000e-04 | \n", "... | \n", "1.000001e-30 | \n", "1.000001e-30 | \n", "1.000001e-30 | \n", "1.000001e-30 | \n", "1.000001e-30 | \n", "1.000001e-30 | \n", "1.000001e-30 | \n", "1.823239e-04 | \n", "5.458412e-18 | \n", "7.374509e-12 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 92 | \n", "2.771799e-08 | \n", "1.276230e-08 | \n", "0.040089 | \n", "6.657004e-15 | \n", "1.254442e-10 | \n", "0.1 | \n", "4.005204e-10 | \n", "1.496219e-15 | \n", "8.792586e-14 | \n", "2.268114e-13 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.065493e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825312e-08 | \n", "1.303557e-08 | \n", "4.601581e-01 | \n", "4.981617e-06 | \n", "
| 93 | \n", "2.771874e-08 | \n", "1.276193e-08 | \n", "0.040089 | \n", "6.656996e-15 | \n", "1.254478e-10 | \n", "0.1 | \n", "4.005205e-10 | \n", "1.496215e-15 | \n", "8.866789e-14 | \n", "2.214815e-13 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.092545e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825312e-08 | \n", "1.303519e-08 | \n", "4.601628e-01 | \n", "4.981617e-06 | \n", "
| 94 | \n", "2.771940e-08 | \n", "1.276161e-08 | \n", "0.040089 | \n", "6.656988e-15 | \n", "1.254510e-10 | \n", "0.1 | \n", "4.005206e-10 | \n", "1.496211e-15 | \n", "8.929956e-14 | \n", "2.168243e-13 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.116798e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825312e-08 | \n", "1.303486e-08 | \n", "4.601672e-01 | \n", "4.981617e-06 | \n", "
| 95 | \n", "2.771998e-08 | \n", "1.276133e-08 | \n", "0.040090 | \n", "6.656981e-15 | \n", "1.254537e-10 | \n", "0.1 | \n", "4.005207e-10 | \n", "1.496207e-15 | \n", "8.983887e-14 | \n", "2.127335e-13 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.138790e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303456e-08 | \n", "4.601713e-01 | \n", "4.981617e-06 | \n", "
| 96 | \n", "2.772049e-08 | \n", "1.276107e-08 | \n", "0.040090 | \n", "6.656975e-15 | \n", "1.254562e-10 | \n", "0.1 | \n", "4.005208e-10 | \n", "1.496204e-15 | \n", "9.030016e-14 | \n", "2.091235e-13 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.158645e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303430e-08 | \n", "4.601752e-01 | \n", "4.981617e-06 | \n", "
97 rows × 335 columns
\n", "| \n", " | Time | \n", "Density | \n", "gasTemp | \n", "dustTemp | \n", "Av | \n", "radfield | \n", "zeta | \n", "dstep | \n", "H | \n", "H+ | \n", "... | \n", "@OCS | \n", "@C4N | \n", "@SIC3 | \n", "@SO2 | \n", "@S2 | \n", "@HS2 | \n", "@H2S2 | \n", "E- | \n", "BULK | \n", "SURFACE | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "0.000000e+00 | \n", "1000000.0 | \n", "10.000000 | \n", "10.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.772049e-08 | \n", "1.276107e-08 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.158645e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303430e-08 | \n", "4.601752e-01 | \n", "4.981617e-06 | \n", "
| 1 | \n", "1.000000e-07 | \n", "1000000.0 | \n", "10.000000 | \n", "10.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.772049e-08 | \n", "1.276107e-08 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.158645e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303430e-08 | \n", "4.601752e-01 | \n", "4.981617e-06 | \n", "
| 2 | \n", "1.000000e-06 | \n", "1000000.0 | \n", "10.000000 | \n", "10.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.772049e-08 | \n", "1.276107e-08 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.158645e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303430e-08 | \n", "4.601752e-01 | \n", "4.981617e-06 | \n", "
| 3 | \n", "1.000000e-05 | \n", "1000000.0 | \n", "10.000000 | \n", "10.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.772049e-08 | \n", "1.276107e-08 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.158645e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303430e-08 | \n", "4.601752e-01 | \n", "4.981617e-06 | \n", "
| 4 | \n", "1.000000e-04 | \n", "1000000.0 | \n", "10.000003 | \n", "10.000003 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.772050e-08 | \n", "1.276107e-08 | \n", "... | \n", "7.695199e-07 | \n", "1.030074e-08 | \n", "1.158645e-30 | \n", "1.098211e-12 | \n", "1.481852e-08 | \n", "1.379987e-08 | \n", "2.825313e-08 | \n", "1.303430e-08 | \n", "4.601752e-01 | \n", "4.981617e-06 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 278 | \n", "9.600100e+05 | \n", "1000000.0 | \n", "300.000000 | \n", "300.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.603291e-06 | \n", "1.992348e-13 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "3.855009e-08 | \n", "8.935888e-29 | \n", "1.324098e-22 | \n", "
| 279 | \n", "9.700100e+05 | \n", "1000000.0 | \n", "300.000000 | \n", "300.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.606933e-06 | \n", "1.988969e-13 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "3.839686e-08 | \n", "8.944810e-29 | \n", "1.324098e-22 | \n", "
| 280 | \n", "9.800100e+05 | \n", "1000000.0 | \n", "300.000000 | \n", "300.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.610524e-06 | \n", "1.985598e-13 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "3.824463e-08 | \n", "8.953731e-29 | \n", "1.324098e-22 | \n", "
| 281 | \n", "9.900100e+05 | \n", "1000000.0 | \n", "300.000000 | \n", "300.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.614064e-06 | \n", "1.982234e-13 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "3.809338e-08 | \n", "8.962654e-29 | \n", "1.324098e-22 | \n", "
| 282 | \n", "1.000010e+06 | \n", "1000000.0 | \n", "300.000000 | \n", "300.000000 | \n", "193.875 | \n", "1.0 | \n", "1.0 | \n", "1.0 | \n", "2.617553e-06 | \n", "1.978879e-13 | \n", "... | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "1.000000e-30 | \n", "3.794308e-08 | \n", "8.971577e-29 | \n", "1.324098e-22 | \n", "
283 rows × 343 columns
\n", "