bondscell_resultsd$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22queued¤logsrunning¦outputbody

It looks like the ECS distribution is not normally distributed, even though $B$ is.

👉 How does $\overline{\text{ECS}(B)}$ compare to $\text{ECS}(\overline{B})$? What is the probability that $\text{ECS}(B)$ lies above $\text{ECS}(\overline{B})$?

mimetext/htmlrootassigneelast_run_timestampA0ypersist_js_state·has_pluto_hook_features§cell_id$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22depends_on_disabled_cells§runtimedpublished_object_keysdepends_on_skipped_cells§errored$f2e55166-25ff-11eb-0297-796e97c62b07queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$f2e55166-25ff-11eb-0297-796e97c62b07depends_on_disabled_cells§runtime׵published_object_keysdepends_on_skipped_cells§errored$36f8c1e8-2433-11eb-1f6e-69dc552a4a07queued¤logsrunning¦outputbody%hint (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA;zpersist_js_state·has_pluto_hook_features§cell_id$36f8c1e8-2433-11eb-1f6e-69dc552a4a07depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$3a35598a-2527-11eb-37e5-3b3e4c63c4f7queued¤logsrunning¦outputbody

Exercise XX: Lecture transcript

(MIT students only)

Please see the link for hw 9 transcript document on Canvas. We want each of you to correct about 500 lines, but don’t spend more than 20 minutes on it. See the the beginning of the document for more instructions. :point_right: Please mention the name of the video(s) and the line ranges you edited:

mimetext/htmlrootassigneelast_run_timestampA0=persist_js_state·has_pluto_hook_features§cell_id$3a35598a-2527-11eb-37e5-3b3e4c63c4f7depends_on_disabled_cells§runtimempublished_object_keysdepends_on_skipped_cells§errored$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneeco2_to_melt_snowballlast_run_timestampA;(persist_js_state·has_pluto_hook_features§cell_id$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0depends_on_disabled_cells§runtime<ҵpublished_object_keysdepends_on_skipped_cells§errored$2bbf5a70-2676-11eb-1085-7130d4a30443queued¤logsrunning¦outputbody1000000mimetext/plainrootassigneeCO2maxlast_run_timestampA;WCpersist_js_state·has_pluto_hook_features§cell_id$2bbf5a70-2676-11eb-1085-7130d4a30443depends_on_disabled_cells§runtime+published_object_keysdepends_on_skipped_cells§errored$371352ec-2433-11eb-153d-379afa8ed15equeued¤logsrunning¦outputbody/still_missing (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA;8mpersist_js_state·has_pluto_hook_features§cell_id$371352ec-2433-11eb-153d-379afa8ed15edepends_on_disabled_cells§runtime h׵published_object_keysdepends_on_skipped_cells§errored$09901de6-2672-11eb-3d50-05b176b729e7queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneelast_run_timestampA:ң۰persist_js_state·has_pluto_hook_features§cell_id$09901de6-2672-11eb-3d50-05b176b729e7depends_on_disabled_cells§runtimeC(published_object_keysdepends_on_skipped_cells§errored$607058ec-253c-11eb-0fb6-add8cfb73a4fqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA;:persist_js_state·has_pluto_hook_features§cell_id$607058ec-253c-11eb-0fb6-add8cfb73a4fdepends_on_disabled_cells§runtime ݵpublished_object_keysdepends_on_skipped_cells§errored$372002e4-2433-11eb-0b25-39ce1b1dd3d1queued¤logsrunning¦outputbody.keep_working (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA;`Fpersist_js_state·has_pluto_hook_features§cell_id$372002e4-2433-11eb-0b25-39ce1b1dd3d1depends_on_disabled_cells§runtime I`published_object_keysdepends_on_skipped_cells§errored$736515ba-2685-11eb-38cb-65bfcf8d1b8dqueued¤logsrunning¦outputbody,step_model! (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA;TŰpersist_js_state·has_pluto_hook_features§cell_id$736515ba-2685-11eb-38cb-65bfcf8d1b8ddepends_on_disabled_cells§runtimeGٵpublished_object_keysdepends_on_skipped_cells§errored$5b5f25f0-266c-11eb-25d4-17e411c850c9queued¤logsrunning¦outputbody

Exercise 1.5 - Running the model

In the lecture notebook we introduced a mutable struct EBM (energy balance model), which contains:

EBM also contains the simulation results, in two arrays:

mimetext/htmlrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$5b5f25f0-266c-11eb-25d4-17e411c850c9depends_on_disabled_cells§runtime bpublished_object_keysdepends_on_skipped_cells§errored$049a866e-2672-11eb-29f7-bfea7ad8f572queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneelast_run_timestampA::ְpersist_js_state·has_pluto_hook_features§cell_id$049a866e-2672-11eb-29f7-bfea7ad8f572depends_on_disabled_cells§runtime>0published_object_keysdepends_on_skipped_cells§errored$02173c7a-2695-11eb-251c-65efb5b4a45fqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA0Xpersist_js_state·has_pluto_hook_features§cell_id$02173c7a-2695-11eb-251c-65efb5b4a45fdepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$49cb5174-1fc3-11eb-3670-c3868c9b0255queued¤logsrunning¦outputbodyȨ mimeimage/svg+xmlrootassigneelast_run_timestampA:persist_js_state·has_pluto_hook_features§cell_id$49cb5174-1fc3-11eb-3670-c3868c9b0255depends_on_disabled_cells§runtime|published_object_keysdepends_on_skipped_cells§errored$09ce27ca-268c-11eb-0cdd-c9801db876f8queued¤logsrunning¦outputbody0
Parameters
mimetext/htmlrootassigneelast_run_timestampA0Gpersist_js_state·has_pluto_hook_features§cell_id$09ce27ca-268c-11eb-0cdd-c9801db876f8depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$53c2eaf6-268b-11eb-0899-b91c03713da4queued¤logsrunning¦outputbody

Hint

@bind log_CO2 Slider(❓)
CO2 = 10^log_CO2
mimetext/htmlrootassigneelast_run_timestampA;ȗpersist_js_state·has_pluto_hook_features§cell_id$53c2eaf6-268b-11eb-0899-b91c03713da4depends_on_disabled_cells§runtime"published_object_keysdepends_on_skipped_cells§errored$9c32db5c-1fc9-11eb-029a-d5d554de1067queued¤logsrunning¦outputbodyL

Exercise 1.6 - Application to policy relevant questions

We talked about two emissions scenarios: RCP2.6 (strong mitigation - controlled CO2 concentrations) and RCP8.5 (no mitigation - high CO2 concentrations). These are given by the following functions:

mimetext/htmlrootassigneelast_run_timestampA0~persist_js_state·has_pluto_hook_features§cell_id$9c32db5c-1fc9-11eb-029a-d5d554de1067depends_on_disabled_cells§runtime6published_object_keysdepends_on_skipped_cells§errored$37552044-2433-11eb-1984-d16e355a7c10queued¤logsrunning¦outputbody[TODOmimetext/htmlrootassigneeTODOlast_run_timestampA< ֶpersist_js_state·has_pluto_hook_features§cell_id$37552044-2433-11eb-1984-d16e355a7c10depends_on_disabled_cells§runtime\>published_object_keysdepends_on_skipped_cells§errored$16348b6a-1fc2-11eb-0b9c-65df528db2a1queued¤logsrunning¦outputbodyy
Exercise 1.1 - Develop understanding for feedbacks and climate sensitivity
mimetext/htmlrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$16348b6a-1fc2-11eb-0b9c-65df528db2a1depends_on_disabled_cells§runtime+published_object_keysdepends_on_skipped_cells§errored$21524c08-2433-11eb-0c55-47b1bdc9e459queued¤logsrunning¦outputbodyم

Homework 9: Climate modeling I

18.S191, fall 2020

mimetext/htmlrootassigneelast_run_timestampA/persist_js_state·has_pluto_hook_features§cell_id$21524c08-2433-11eb-0c55-47b1bdc9e459depends_on_disabled_cells§runtimeopublished_object_keysdepends_on_skipped_cells§errored$1f148d9a-1fc8-11eb-158e-9d784e390b24queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA0`persist_js_state·has_pluto_hook_features§cell_id$1f148d9a-1fc8-11eb-158e-9d784e390b24depends_on_disabled_cells§runtime>published_object_keysdepends_on_skipped_cells§errored$11096250-2544-11eb-057b-d7112f20b05cqueued¤logsrunning¦outputbody٤

Exercise 2.2

👉 Find the lowest CO₂ concentration necessary to melt the Snowball, programatically.

mimetext/htmlrootassigneelast_run_timestampA0kpersist_js_state·has_pluto_hook_features§cell_id$11096250-2544-11eb-057b-d7112f20b05cdepends_on_disabled_cells§runtimeHpublished_object_keysdepends_on_skipped_cells§errored$7d815988-1fc7-11eb-322a-4509e7128ce3queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA6Dpersist_js_state·has_pluto_hook_features§cell_id$7d815988-1fc7-11eb-322a-4509e7128ce3depends_on_disabled_cells§runtimef\published_object_keysdepends_on_skipped_cells§errored$1e06178a-1fbf-11eb-32b3-61769a79b7c0queued¤logslinemsg, Activating new project at `/tmp/jl_fDHAPN`  Updating registry at `~/.julia/registries/General.toml`  Resolving package versions...  Updating `/tmp/jl_fDHAPN/Project.toml`  [31c24e10] + Distributions v0.25.118  [b964fa9f] + LaTeXStrings v1.4.0  [91a5bcdd] + Plots v1.40.14  [7f904dfe] + PlutoUI v0.7.64  [9a3f8284] + Random  Updating `/tmp/jl_fDHAPN/Manifest.toml`  [6e696c72] + AbstractPlutoDingetjes v1.3.2  [66dad0bd] + AliasTables v1.1.3  [d1d4a3ce] + BitFlags v0.1.9  [d360d2e6] + ChainRulesCore v1.25.1  [9e997f8a] + ChangesOfVariables v0.1.10  [944b1d66] + CodecZlib v0.7.8  [35d6a980] + ColorSchemes v3.29.0  [3da002f7] + ColorTypes v0.12.1  [c3611d14] + ColorVectorSpace v0.11.0  [5ae59095] + Colors v0.13.1  [34da2185] + Compat v4.16.0  [f0e56b4a] + ConcurrentUtilities v2.5.0  [187b0558] + ConstructionBase v1.5.8  [d38c429a] + Contour v0.6.3  [9a962f9c] + DataAPI v1.16.0  [864edb3b] + DataStructures v0.18.22  [b429d917] + DensityInterface v0.4.0  [31c24e10] + Distributions v0.25.118  [ffbed154] + DocStringExtensions v0.9.5  [460bff9d] + ExceptionUnwrapping v0.1.11  [c87230d0] + FFMPEG v0.4.2  [1a297f60] + FillArrays v1.13.0  [53c48c17] + FixedPointNumbers v0.8.5  [1fa38f19] + Format v1.3.7  [28b8d3ca] + GR v0.73.6  [42e2da0e] + Grisu v1.0.2  [cd3eb016] + HTTP v1.10.16  [34004b35] + HypergeometricFunctions v0.3.28  [47d2ed2b] + Hyperscript v0.0.5  [ac1192a8] + HypertextLiteral v0.9.5  [b5f81e59] + IOCapture v0.2.5  [3587e190] + InverseFunctions v0.1.17  [92d709cd] + IrrationalConstants v0.2.4  [1019f520] + JLFzf v0.1.11  [692b3bcd] + JLLWrappers v1.7.0  [682c06a0] + JSON v0.21.4  [b964fa9f] + LaTeXStrings v1.4.0  [23fbe1c1] + Latexify v0.16.8  [2ab3a3ac] + LogExpFunctions v0.3.28  [e6f89c97] + LoggingExtras v1.1.0  [6c6e2e6c] + MIMEs v1.1.0  [1914dd2f] + MacroTools v0.5.16  [739be429] + MbedTLS v1.1.9  [442fdcdd] + Measures v0.3.2  [e1d29d7a] + Missings v1.2.0  [77ba4419] + NaNMath v1.0.3  [4d8831e6] + OpenSSL v1.5.0  [bac558e1] + OrderedCollections v1.8.1  [90014a1f] + PDMats v0.11.31  [69de0a69] + Parsers v2.8.3  [ccf2f8ad] + PlotThemes v3.3.0  [995b91a9] + PlotUtils v1.4.3  [91a5bcdd] + Plots v1.40.14  [7f904dfe] + PlutoUI v0.7.64  [aea7be01] + PrecompileTools v1.2.1  [21216c6a] + Preferences v1.4.3  [43287f4e] + PtrArrays v1.3.0  [1fd47b50] + QuadGK v2.11.2  [3cdcf5f2] + RecipesBase v1.3.4  [01d81517] + RecipesPipeline v0.6.12  [189a3867] + Reexport v1.2.2  [05181044] + RelocatableFolders v1.0.1  [ae029012] + Requires v1.3.1  [79098fc4] + Rmath v0.8.0  [6c6a2e73] + Scratch v1.2.1  [992d4aef] + Showoff v1.0.3  [777ac1f9] + SimpleBufferStream v1.2.0  [a2af1166] + SortingAlgorithms v1.2.1  [276daf66] + SpecialFunctions v2.5.1  [860ef19b] + StableRNGs v1.0.3  [82ae8749] + StatsAPI v1.7.1  [2913bbd2] + StatsBase v0.34.4  [4c63d2b9] + StatsFuns v1.4.0  [62fd8b95] + TensorCore v0.1.1  [3bb67fe8] + TranscodingStreams v0.11.3  [410a4b4d] + Tricks v0.1.10  [5c2747f8] + URIs v1.5.2  [1cfade01] + UnicodeFun v0.4.1  [1986cc42] + Unitful v1.23.1  [45397f5d] + UnitfulLatexify v1.7.0  [41fe7b60] + Unzip v0.2.0  [6e34b625] + Bzip2_jll v1.0.9+0  [83423d85] + Cairo_jll v1.18.5+0  [ee1fde0b] + Dbus_jll v1.16.2+0  [2702e6a9] + EpollShim_jll v0.0.20230411+1  [2e619515] + Expat_jll v2.6.5+0  [b22a6f82] + FFMPEG_jll v4.4.4+1  [a3f928ae] + Fontconfig_jll v2.16.0+0  [d7e528f0] + FreeType2_jll v2.13.4+0  [559328eb] + FriBidi_jll v1.0.17+0  [0656b61e] + GLFW_jll v3.4.0+2  [d2c73de3] + GR_jll v0.73.6+0  [78b55507] + Gettext_jll v0.21.0+0  [7746bdde] + Glib_jll v2.84.0+0  [3b182d85] + Graphite2_jll v1.3.15+0  [2e76f6c2] + HarfBuzz_jll v8.5.1+0  [aacddb02] + JpegTurbo_jll v3.1.1+0  [c1c5ebd0] + LAME_jll v3.100.2+0  [88015f11] + LERC_jll v3.0.0+1  [1d63c593] + LLVMOpenMP_jll v18.1.8+0  [dd4b983a] + LZO_jll v2.10.3+0  [e9f186c6] + Libffi_jll v3.4.7+0  [7e76a0d4] + Libglvnd_jll v1.7.1+1  [94ce4f54] + Libiconv_jll v1.18.0+0  [4b2f31a3] + Libmount_jll v2.41.0+0  [89763e89] + Libtiff_jll v4.5.1+1  [38a345b3] + Libuuid_jll v2.41.0+0  [e7412a2a] + Ogg_jll v1.3.5+1  [458c3c95] + OpenSSL_jll v3.5.0+0  [efe28fd5] + OpenSpecFun_jll v0.5.6+0  [91d4177d] + Opus_jll v1.3.3+0  [36c8627f] + Pango_jll v1.56.3+0  [30392449] + Pixman_jll v0.44.2+0  [c0090381] + Qt6Base_jll v6.7.1+1  [f50d1b31] + Rmath_jll v0.5.1+0  [a44049a8] + Vulkan_Loader_jll v1.3.243+0  [a2964d1f] + Wayland_jll v1.23.1+0  [2381bf8a] + Wayland_protocols_jll v1.44.0+0  [02c8fc9c] + XML2_jll v2.13.6+1  [ffd25f8a] + XZ_jll v5.8.1+0  [f67eecfb] + Xorg_libICE_jll v1.1.2+0  [c834827a] + Xorg_libSM_jll v1.2.6+0  [4f6342f7] + Xorg_libX11_jll v1.8.12+0  [0c0b7dd1] + Xorg_libXau_jll v1.0.13+0  [935fb764] + Xorg_libXcursor_jll v1.2.4+0  [a3789734] + Xorg_libXdmcp_jll v1.1.6+0  [1082639a] + Xorg_libXext_jll v1.3.7+0  [d091e8ba] + Xorg_libXfixes_jll v6.0.1+0  [a51aa0fd] + Xorg_libXi_jll v1.8.3+0  [d1454406] + Xorg_libXinerama_jll v1.1.6+0  [ec84b674] + Xorg_libXrandr_jll v1.5.5+0  [ea2f1a96] + Xorg_libXrender_jll v0.9.12+0  [c7cfdc94] + Xorg_libxcb_jll v1.17.1+0  [cc61e674] + Xorg_libxkbfile_jll v1.1.3+0  [e920d4aa] + Xorg_xcb_util_cursor_jll v0.1.4+0  [12413925] + Xorg_xcb_util_image_jll v0.4.1+0  [2def613f] + Xorg_xcb_util_jll v0.4.1+0  [975044d2] + Xorg_xcb_util_keysyms_jll v0.4.1+0  [0d47668e] + Xorg_xcb_util_renderutil_jll v0.3.10+0  [c22f9ab0] + Xorg_xcb_util_wm_jll v0.4.2+0  [35661453] + Xorg_xkbcomp_jll v1.4.7+0  [33bec58e] + Xorg_xkeyboard_config_jll v2.44.0+0  [c5fb5394] + Xorg_xtrans_jll v1.6.0+0  [3161d3a3] + Zstd_jll v1.5.7+1  [35ca27e7] + eudev_jll v3.2.14+0  [214eeab7] + fzf_jll v0.61.1+0  [a4ae2306] + libaom_jll v3.11.0+0  [0ac62f75] + libass_jll v0.15.2+0  [1183f4f0] + libdecor_jll v0.2.2+0  [2db6ffa8] + libevdev_jll v1.13.4+0  [f638f0a6] + libfdk_aac_jll v2.0.3+0  [36db933b] + libinput_jll v1.28.1+0  [b53b4c65] + libpng_jll v1.6.49+0  [f27f6e37] + libvorbis_jll v1.3.7+2  [009596ad] + mtdev_jll v1.1.7+0  [1270edf5] + x264_jll v2021.5.5+0  [dfaa095f] + x265_jll v3.5.0+0  [d8fb68d0] + xkbcommon_jll v1.8.1+0  [0dad84c5] + ArgTools  [56f22d72] + Artifacts  [2a0f44e3] + Base64  [ade2ca70] + Dates  [8bb1440f] + DelimitedFiles  [f43a241f] + Downloads  [7b1f6079] + FileWatching  [b77e0a4c] + InteractiveUtils  [b27032c2] + LibCURL  [76f85450] + LibGit2  [8f399da3] + Libdl  [37e2e46d] + LinearAlgebra  [56ddb016] + Logging  [d6f4376e] + Markdown  [a63ad114] + Mmap  [ca575930] + NetworkOptions  [44cfe95a] + Pkg  [de0858da] + Printf  [3fa0cd96] + REPL  [9a3f8284] + Random  [ea8e919c] + SHA  [9e88b42a] + Serialization  [6462fe0b] + Sockets  [2f01184e] + SparseArrays  [10745b16] + Statistics  [4607b0f0] + SuiteSparse  [fa267f1f] + TOML  [a4e569a6] + Tar  [8dfed614] + Test  [cf7118a7] + UUIDs  [4ec0a83e] + Unicode  [e66e0078] + CompilerSupportLibraries_jll  [deac9b47] + LibCURL_jll  [29816b5a] + LibSSH2_jll  [c8ffd9c3] + MbedTLS_jll  [14a3606d] + MozillaCACerts_jll  [4536629a] + OpenBLAS_jll  [05823500] + OpenLibm_jll  [efcefdf7] + PCRE2_jll  [83775a58] + Zlib_jll  [8e850b90] + libblastrampoline_jll  [8e850ede] + nghttp2_jll  [3f19e933] + p7zip_jll text/plaincell_id$1e06178a-1fbf-11eb-32b3-61769a79b7c0kwargsidPlutoRunner_d1acb81efileP/home/runner/.julia/packages/Pluto/6smog/src/runner/PlutoRunner/src/io/stdout.jlgroupstdoutlevelLogLevel(-555)running¦outputbodymimetext/plainrootassigneelast_run_timestampA5|Npersist_js_state·has_pluto_hook_features§cell_id$1e06178a-1fbf-11eb-32b3-61769a79b7c0depends_on_disabled_cells§runtime!bpublished_object_keysdepends_on_skipped_cells§errored$169727be-2433-11eb-07ae-ab7976b5be90queued¤logsrunning¦outputbodyB

homework 9, version 1

mimetext/htmlrootassigneelast_run_timestampA/ٶpersist_js_state·has_pluto_hook_features§cell_id$169727be-2433-11eb-07ae-ab7976b5be90depends_on_disabled_cells§runtimey4published_object_keysdepends_on_skipped_cells§errored$3e310cf8-25ec-11eb-07da-cb4a2c71ae34queued¤logsrunning¦outputbody

We talked about a second theory – a large increase in CO₂ (by volcanoes) could have caused a strong enough greenhouse effect to melt the Snowball. If we imagine that the CO₂ then decreased (e.g. by getting sequestered by the now liquid ocean), we might be able to explain how we transitioned from a hostile Snowball Earth to today's habitable "Waterball" Earth.

In this exercise, you will estimate how much CO₂ would be needed to melt the Snowball and visualize a possible trajectory for Earth's climate over the past 700 million years by making an interactive bifurcation diagram.

Exercise 2.1

In the lecture notebook (video above), we had a bifurcation diagram of $S$ (solar insolation) vs $T$ (temperature). We increased $S$, watched our point move right in the diagram until we found the tipping point. This time we will do the same, but we vary the CO₂ concentration, and keep $S$ fixed at its default (present day) value.

mimetext/htmlrootassigneelast_run_timestampA0&persist_js_state·has_pluto_hook_features§cell_id$3e310cf8-25ec-11eb-07da-cb4a2c71ae34depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$298deff4-2676-11eb-2595-e7e22f613ea1queued¤logsrunning¦outputbody10mimetext/plainrootassigneeCO2minlast_run_timestampA;WhQpersist_js_state·has_pluto_hook_features§cell_id$298deff4-2676-11eb-2595-e7e22f613ea1depends_on_disabled_cells§runtime+published_object_keysdepends_on_skipped_cells§errored$f688f9f2-2671-11eb-1d71-a57c9817433fqueued¤logsrunning¦outputbody6temperature_response (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA:~persist_js_state·has_pluto_hook_features§cell_id$f688f9f2-2671-11eb-1d71-a57c9817433fdepends_on_disabled_cells§runtimeؕpublished_object_keysdepends_on_skipped_cells§errored$51e2e742-25a1-11eb-2511-ab3434eacc3equeued¤logsrunning¦outputbody٢

Hint

The function findfirst might be helpful.

mimetext/htmlrootassigneelast_run_timestampA;ƾpersist_js_state·has_pluto_hook_features§cell_id$51e2e742-25a1-11eb-2511-ab3434eacc3edepends_on_disabled_cells§runtimedpublished_object_keysdepends_on_skipped_cells§errored$746aa5bc-266c-11eb-14c9-63ccc313f5dequeued¤logsrunning¦outputbodyprefixMain.workspace#3.Model.EBMelementsTprefixFloat64elements14.0text/plaintypeArrayprefix_shortobjectid66f283b72f05f104!application/vnd.pluto.tree+objecttprefixFloat64elements1850.0text/plaintypeArrayprefix_shortobjectid75ae6b6efd6b321!application/vnd.pluto.tree+objectΔt1.0text/plainCO2##9 (generic function with 1 method)text/plainC51.0text/plaina5.0text/plainA221.2text/plainB-1.3text/plainCO2_PI280.0text/plainα0.3text/plainS1368.0text/plaintypestructprefix_shortEBMobjectidc3def3a0ff291f57mime!application/vnd.pluto.tree+objectrootassigneeempty_ebmlast_run_timestampA:³persist_js_state·has_pluto_hook_features§cell_id$746aa5bc-266c-11eb-14c9-63ccc313f5dedepends_on_disabled_cells§runtime ڵpublished_object_keysdepends_on_skipped_cells§errored$68b2a560-2536-11eb-0cc4-27793b4d6a70queued¤logsrunning¦outputbody4add_cold_hot_areas! (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA;?Ȏpersist_js_state·has_pluto_hook_features§cell_id$68b2a560-2536-11eb-0cc4-27793b4d6a70depends_on_disabled_cells§runtime'published_object_keysdepends_on_skipped_cells§errored$23335418-2433-11eb-05e4-2b35dc6cca0equeued¤logsrunning¦outputbodyelementsname"Jazzy Doe"text/plainkerberos_id"jazz"text/plaintypeNamedTupleobjectideb71b675ed8a366bmime!application/vnd.pluto.tree+objectrootassigneestudentlast_run_timestampA5͎persist_js_state·has_pluto_hook_features§cell_id$23335418-2433-11eb-05e4-2b35dc6cca0edepends_on_disabled_cells§runtime?4published_object_keysdepends_on_skipped_cells§errored$25f92dec-1fc4-11eb-055d-f34deea81d0equeued¤logsrunning¦outputbody1@ mimeimage/svg+xmlrootassigneelast_run_timestampA9ѣDpersist_js_state·has_pluto_hook_features§cell_id$25f92dec-1fc4-11eb-055d-f34deea81d0edepends_on_disabled_cells§runtime_\published_object_keysdepends_on_skipped_cells§errored$aea0d0b4-2672-11eb-231e-395c863827d3queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneelast_run_timestampA:persist_js_state·has_pluto_hook_features§cell_id$aea0d0b4-2672-11eb-231e-395c863827d3depends_on_disabled_cells§runtime?fpublished_object_keysdepends_on_skipped_cells§errored$18be4f7c-2433-11eb-33cb-8d90ca6f124cqueued¤logsrunning¦outputbodym

Submission by: Jazzy Doe (jazz@mit.edu)

mimetext/htmlrootassigneelast_run_timestampA6' persist_js_state·has_pluto_hook_features§cell_id$18be4f7c-2433-11eb-33cb-8d90ca6f124cdepends_on_disabled_cells§runtime Dܵpublished_object_keysdepends_on_skipped_cells§errored$5041cdee-2527-11eb-154f-0b0c68e11fe3queued¤logsrunning¦outputbodyّ

Abstraction, lines 1-219; Array Basics, lines 1-137; Course Intro, lines 1-144 (for example)

mimetext/htmlrootassigneelines_i_editedlast_run_timestampA;Jpersist_js_state·has_pluto_hook_features§cell_id$5041cdee-2527-11eb-154f-0b0c68e11fe3depends_on_disabled_cells§runtimeDpublished_object_keysdepends_on_skipped_cells§errored$378aed18-252b-11eb-0b37-a3b511af2cb5queued¤logsrunning¦outputbodyB mimeimage/svg+xmlrootassigneelast_run_timestampA;Spersist_js_state·has_pluto_hook_features§cell_id$378aed18-252b-11eb-0b37-a3b511af2cb5depends_on_disabled_cells§runtime8published_object_keysdepends_on_skipped_cells§errored$b6d7a362-1fc8-11eb-03bc-89464b55c6fcqueued¤logsrunning¦outputbody<

Answer:

mimetext/htmlrootassigneelast_run_timestampA0Nbpersist_js_state·has_pluto_hook_features§cell_id$b6d7a362-1fc8-11eb-03bc-89464b55c6fcdepends_on_disabled_cells§runtime63published_object_keysdepends_on_skipped_cells§errored$cf276892-25e7-11eb-38f0-03f75c90dd9equeued¤logsrunning¦outputbody4

Hello world!

mimetext/htmlrootassignee(observations_from_the_order_of_averaginglast_run_timestampA:2rpersist_js_state·has_pluto_hook_features§cell_id$cf276892-25e7-11eb-38f0-03f75c90dd9edepends_on_disabled_cells§runtimefٵpublished_object_keysdepends_on_skipped_cells§errored$cb15cd88-25ed-11eb-2be4-f31500a726c8queued¤logsrunning¦outputbody

Hint

Use a condition on the albedo or temperature to check whether the Snowball has melted.

mimetext/htmlrootassigneelast_run_timestampA;ȹ(persist_js_state·has_pluto_hook_features§cell_id$cb15cd88-25ed-11eb-2be4-f31500a726c8depends_on_disabled_cells§runtimevmpublished_object_keysdepends_on_skipped_cells§errored$37061f1e-2433-11eb-3879-2d31dc70a771queued¤logsrunning¦outputbody'almost (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA;persist_js_state·has_pluto_hook_features§cell_id$37061f1e-2433-11eb-3879-2d31dc70a771depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$9c1f73e0-268a-11eb-2bf1-216a5d869568queued¤logsrunning¦outputbody

If you like, make the visualization more informative! Like in the lecture notebook, you could add a trail behind the black dot, or you could plot the stable and unstable branches. It's up to you!

mimetext/htmlrootassigneelast_run_timestampA0ؾpersist_js_state·has_pluto_hook_features§cell_id$9c1f73e0-268a-11eb-2bf1-216a5d869568depends_on_disabled_cells§runtime>vpublished_object_keysdepends_on_skipped_cells§errored$56b68356-2601-11eb-39a9-5f4b8e580b87queued¤logsrunning¦outputbodyْ

Reveal answer:

mimetext/htmlrootassigneelast_run_timestampA6հpersist_js_state·has_pluto_hook_features§cell_id$56b68356-2601-11eb-39a9-5f4b8e580b87depends_on_disabled_cells§runtimeRVpublished_object_keysdepends_on_skipped_cells§errored$12cbbab0-2671-11eb-2b1f-038c206e84cequeued¤logsrunning¦outputbodyA

Again, look inside simulated_model and notice that T and t have accumulated the simulation results.

In this simulation, we used T0 = 14 and CO2 = t -> 280, which is why T is constant during our simulation. These parameters are the default, pre-industrial values, and our model is based on this equilibrium.

👉 Run a simulation with policy scenario RCP8.5, and plot the computed temperature graph. What is the global temperature at 2100?

mimetext/htmlrootassigneelast_run_timestampA0$persist_js_state·has_pluto_hook_features§cell_id$12cbbab0-2671-11eb-2b1f-038c206e84cedepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$9596c2dc-2671-11eb-36b9-c1af7e5f1089queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneesimulated_rcp85_modellast_run_timestampA:qTpersist_js_state·has_pluto_hook_features§cell_id$9596c2dc-2671-11eb-36b9-c1af7e5f1089depends_on_disabled_cells§runtimeCpublished_object_keysdepends_on_skipped_cells§errored$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA06ΰpersist_js_state·has_pluto_hook_features§cell_id$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fdepends_on_disabled_cells§runtimeеpublished_object_keysdepends_on_skipped_cells§errored$4b091fac-2672-11eb-0db8-75457788d85equeued¤logsrunning¦outputbody

Additional parameters can be set using keyword arguments. For example:

Model.EBM(14, 1850, 1, t -> 280.0; B=-2.0)

Creates the same model as before, but with B = -2.0.

mimetext/htmlrootassigneelast_run_timestampA0Npersist_js_state·has_pluto_hook_features§cell_id$4b091fac-2672-11eb-0db8-75457788d85edepends_on_disabled_cells§runtimerpublished_object_keysdepends_on_skipped_cells§errored$1eabe908-268b-11eb-329b-b35160ec951equeued¤logsrunning¦outputbody

👉 Create a slider for CO2 between CO2min and CO2max. Just like the horizontal axis of our plot, we want the slider to be logarithmic.

mimetext/htmlrootassigneelast_run_timestampA0C̰persist_js_state·has_pluto_hook_features§cell_id$1eabe908-268b-11eb-329b-b35160ec951edepends_on_disabled_cells§runtimevpublished_object_keysdepends_on_skipped_cells§errored$971f401e-266c-11eb-3104-171ae299ef70queued¤logsrunning¦outputbody[

You can set up an instance of EBM like so:

mimetext/htmlrootassigneelast_run_timestampA0ϰpersist_js_state·has_pluto_hook_features§cell_id$971f401e-266c-11eb-3104-171ae299ef70depends_on_disabled_cells§runtimePpublished_object_keysdepends_on_skipped_cells§errored$de95efae-2675-11eb-0909-73afcd68fd42queued¤logsrunning¦outputbody-48mimetext/plainrootassigneeTneolast_run_timestampA;X-ܰpersist_js_state·has_pluto_hook_features§cell_id$de95efae-2675-11eb-0909-73afcd68fd42depends_on_disabled_cells§runtime(ǵpublished_object_keysdepends_on_skipped_cells§errored$2dfab366-25a1-11eb-15c9-b3dd9cd6b96cqueued¤logsrunning¦outputbodyٌ

👉 In what year are we expected to have doubled the CO₂ concentration, under policy scenario RCP8.5?

mimetext/htmlrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$2dfab366-25a1-11eb-15c9-b3dd9cd6b96cdepends_on_disabled_cells§runtimeLpublished_object_keysdepends_on_skipped_cells§errored$1ea81214-1fca-11eb-2442-7b0b448b49d6queued¤logsrunning¦outputbody

Exercise 2 - How did Snowball Earth melt?

In lecture 21 (see below), we discovered that increases in the brightness of the Sun are not sufficient to explain how Snowball Earth eventually melted.

mimetext/htmlrootassigneelast_run_timestampA0Ǐpersist_js_state·has_pluto_hook_features§cell_id$1ea81214-1fca-11eb-2442-7b0b448b49d6depends_on_disabled_cells§runtime|published_object_keysdepends_on_skipped_cells§errored$a919d584-2670-11eb-1cf9-2327c8135d6dqueued¤logsrunning¦outputbodyٵ

Have look inside this object. We see that T and t are initialized to a 1-element array.

Let's run our model:

mimetext/htmlrootassigneelast_run_timestampA0 Rpersist_js_state·has_pluto_hook_features§cell_id$a919d584-2670-11eb-1cf9-2327c8135d6ddepends_on_disabled_cells§runtimekpublished_object_keysdepends_on_skipped_cells§errored$06c5139e-252d-11eb-2645-8b324b24c405queued¤logsrunning¦outputbody

We are interested in how the uncertainty in our input $B$ (the climate feedback paramter) propagates through our model to determine the uncertainty in our output $T(t)$, for a given emissions scenario. The goal of this exercise is to answer the following by using Monte Carlo Simulation for uncertainty propagation:

👉 What is the probability that we see more than 2°C of warming by 2100 under the low-emissions scenario RCP2.6? What about under the high-emissions scenario RCP8.5?

mimetext/htmlrootassigneelast_run_timestampA0Jpersist_js_state·has_pluto_hook_features§cell_id$06c5139e-252d-11eb-2645-8b324b24c405depends_on_disabled_cells§runtimew published_object_keysdepends_on_skipped_cells§errored$b9f882d8-266b-11eb-2998-75d6539088c7queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$b9f882d8-266b-11eb-2998-75d6539088c7depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$e296c6e8-259c-11eb-1385-53f757f4d585queued¤logsrunning¦outputbody1

👉 Change the value of $B$ using the slider above. What does it mean for a climate system to have a more negative value of $B$? Explain why we call $B$ the climate feedback parameter.

mimetext/htmlrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$e296c6e8-259c-11eb-1385-53f757f4d585depends_on_disabled_cells§runtime0published_object_keysdepends_on_skipped_cells§errored$06d28052-2531-11eb-39e2-e9613ab0401cqueued¤logsrunning¦outputbodyprefixMain.workspace#3.Model.EBMelementsTprefixFloat64elements-48.0text/plaintypeArrayprefix_shortobjectid499d2ca068376de3!application/vnd.pluto.tree+objecttprefixFloat64elements0.0text/plaintypeArrayprefix_shortobjectidac91e428ae20f0ba!application/vnd.pluto.tree+objectΔt5.0text/plainCO2*CO2_const (generic function with 1 method)text/plainC51.0text/plaina5.0text/plainA221.2text/plainB-1.3text/plainCO2_PI280.0text/plainα0.3text/plainS1368.0text/plaintypestructprefix_shortEBMobjectidc3b60e81eb3984a9mime!application/vnd.pluto.tree+objectrootassigneeebmlast_run_timestampA;Z Epersist_js_state·has_pluto_hook_features§cell_id$06d28052-2531-11eb-39e2-e9613ab0401cdepends_on_disabled_cells§runtime9published_object_keysdepends_on_skipped_cells§errored$e10a9b70-25a0-11eb-2aed-17ed8221c208queued¤logsrunning¦outputbodyG mimeimage/svg+xmlrootassigneelast_run_timestampA; Ӱpersist_js_state·has_pluto_hook_features§cell_id$e10a9b70-25a0-11eb-2aed-17ed8221c208depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$36e2dfea-2433-11eb-1c90-bb93ab25b33cqueued¤logsrunning¦outputbody

Before you submit

Remember to fill in your name and Kerberos ID at the top of this notebook.

mimetext/htmlrootassigneelast_run_timestampA;ipersist_js_state·has_pluto_hook_features§cell_id$36e2dfea-2433-11eb-1c90-bb93ab25b33cdepends_on_disabled_cells§runtime޵published_object_keysdepends_on_skipped_cells§errored$1312525c-1fc0-11eb-2756-5bc3101d2260queued¤logsrunning¦outputbody0

Exercise 1 - policy goals under uncertainty

A recent ground-breaking review paper produced the most comprehensive and up-to-date estimate of the climate feedback parameter, which they find to be

$$B \approx \mathcal{N}(-1.3, 0.4),$$

i.e. our knowledge of the real value is normally distributed with a mean value $\overline{B} = -1.3$ W/m²/K and a standard deviation $\sigma = 0.4$ W/m²/K. These values are not very intuitive, so let us convert them into more policy-relevant numbers.

Definition: Equilibrium climate sensitivity (ECS) is defined as the amount of warming $\Delta T$ caused by a doubling of CO₂ (e.g. from the pre-industrial value 280 ppm to 560 ppm), at equilibrium.

At equilibrium, the energy balance model equation is:

$$0 = \frac{S(1 - α)}{4} - (A - BT_{eq}) + a \ln\left( \frac{2\;\text{CO}₂_{\text{PI}}}{\text{CO}₂_{\text{PI}}} \right)$$

From this, we subtract the preindustrial energy balance, which is given by:

$$0 = \frac{S(1-α)}{4} - (A - BT_{0}),$$

The result of this subtraction, after rearranging, is our definition of $\text{ECS}$:

$$\text{ECS} \equiv T_{eq} - T_{0} = -\frac{a\ln(2)}{B}$$

mimetext/htmlrootassigneelast_run_timestampA0\%persist_js_state·has_pluto_hook_features§cell_id$1312525c-1fc0-11eb-2756-5bc3101d2260depends_on_disabled_cells§runtime Lpublished_object_keysdepends_on_skipped_cells§errored$0e19f82e-2685-11eb-2e99-0d094c1aa520queued¤logsrunning¦outputbody6add_reference_points! (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA;Ipersist_js_state·has_pluto_hook_features§cell_id$0e19f82e-2685-11eb-2e99-0d094c1aa520depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$a0ef04b0-25e9-11eb-1110-cde93601f712queued¤logsrunning¦outputbody mimetext/htmlrootassigneelast_run_timestampA0°persist_js_state·has_pluto_hook_features§cell_id$a0ef04b0-25e9-11eb-1110-cde93601f712depends_on_disabled_cells§runtimeˇpublished_object_keysdepends_on_skipped_cells§errored$3f823490-266d-11eb-1ba4-d5a23975c335queued¤logsrunning¦outputbody

Properties of an EBM obect:

NameDescription
ALinearized outgoing thermal radiation: offset [W/m²]
BLinearized outgoing thermal radiation: slope. or: climate feedback parameter [W/m²/°C]
αPlanet albedo, 0.0-1.0 [unitless]
SSolar insulation [W/m²]
CAtmosphere and upper-ocean heat capacity [J/m²/°C]
aCO₂ forcing effect [W/m²]
CO2_PIPre-industrial CO₂ concentration [ppm]
mimetext/htmlrootassigneelast_run_timestampA0@persist_js_state·has_pluto_hook_features§cell_id$3f823490-266d-11eb-1ba4-d5a23975c335depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$fe3304f8-2668-11eb-066d-fdacadce5a19queued¤logsrunning¦outputbody

Before working on the homework, make sure that you have watched the first lecture on climate modeling 👆. We have included the important functions from this lecture notebook in the next cell. Feel free to have a look!

mimetext/htmlrootassigneelast_run_timestampA07vpersist_js_state·has_pluto_hook_features§cell_id$fe3304f8-2668-11eb-066d-fdacadce5a19depends_on_disabled_cells§runtimeѵpublished_object_keysdepends_on_skipped_cells§errored$4c9173ac-2685-11eb-2129-99071821ebebqueued¤logsrunning¦outputbody

👉 Write a function step_model! that takes an existing ebm and new_CO2, which performs a step of our interactive process:

mimetext/htmlrootassigneelast_run_timestampA0~persist_js_state·has_pluto_hook_features§cell_id$4c9173ac-2685-11eb-2129-99071821ebebdepends_on_disabled_cells§runtimeߥpublished_object_keysdepends_on_skipped_cells§errored$3737be8e-2433-11eb-2049-2d6d8a5e4753queued¤logsrunning¦outputbody)correct (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampA<dpersist_js_state·has_pluto_hook_features§cell_id$3737be8e-2433-11eb-2049-2d6d8a5e4753depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$bfb07a0a-2670-11eb-3938-772499c637b1queued¤logsrunning¦outputbodyprefixMain.workspace#3.Model.EBMelementsTprefixFloat64elements14.0text/plain14.0text/plain14.0text/plain14.0text/plain14.0text/plain14.0text/plain14.0text/plain14.0text/plain 14.0text/plainmore̫14.0text/plaintypeArrayprefix_shortobjectidc940a34cec99f84e!application/vnd.pluto.tree+objecttprefixFloat64elements1850.0text/plain1851.0text/plain1852.0text/plain1853.0text/plain1854.0text/plain1855.0text/plain1856.0text/plain1857.0text/plain 1858.0text/plainmore̫2020.0text/plaintypeArrayprefix_shortobjectidc0cad1c3dbae20e8!application/vnd.pluto.tree+objectΔt1.0text/plainCO2$#11 (generic function with 1 method)text/plainC51.0text/plaina5.0text/plainA221.2text/plainB-1.3text/plainCO2_PI280.0text/plainα0.3text/plainS1368.0text/plaintypestructprefix_shortEBMobjectidd298add01c33e8d9mime!application/vnd.pluto.tree+objectrootassigneesimulated_modellast_run_timestampA:7persist_js_state·has_pluto_hook_features§cell_id$bfb07a0a-2670-11eb-3938-772499c637b1depends_on_disabled_cells§runtime'published_object_keysdepends_on_skipped_cells§errored$ee1be5dc-252b-11eb-0865-291aa823b9e9queued¤logsrunning¦outputbody1850:2100mimetext/plainrootassigneetlast_run_timestampA:persist_js_state·has_pluto_hook_features§cell_id$ee1be5dc-252b-11eb-0865-291aa823b9e9depends_on_disabled_cells§runtime/

👉 Generate a probability distribution for the ECS based on the probability distribution function for $B$ above. Plot a histogram.

mimetext/htmlrootassigneelast_run_timestampA06߰persist_js_state·has_pluto_hook_features§cell_id$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddedepends_on_disabled_cells§runtimeჵpublished_object_keysdepends_on_skipped_cells§errored$c78e02b4-268a-11eb-0af7-f7c7620fcc34queued¤logsrunning¦outputbody\

The albedo feedback is implemented by the methods below:

mimetext/htmlrootassigneelast_run_timestampA0npersist_js_state·has_pluto_hook_features§cell_id$c78e02b4-268a-11eb-0af7-f7c7620fcc34depends_on_disabled_cells§runtime4published_object_keysdepends_on_skipped_cells§errored$9cdc5f84-2671-11eb-3c78-e3495bc64d33queued¤logsrunning¦outputbody

👉 Write a function temperature_response that takes a function CO2 and an optional value B as parameters, and returns the temperature at 2100 according to our model.

mimetext/htmlrootassigneelast_run_timestampA0eRpersist_js_state·has_pluto_hook_features§cell_id$9cdc5f84-2671-11eb-3c78-e3495bc64d33depends_on_disabled_cells§runtime"published_object_keysdepends_on_skipped_cells§errored$3cbc95ba-2685-11eb-3810-3bf38aa33231queued¤logsrunning¦outputbodyA

We used two helper functions:

mimetext/htmlrootassigneelast_run_timestampA0+԰persist_js_state·has_pluto_hook_features§cell_id$3cbc95ba-2685-11eb-3810-3bf38aa33231depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$aed8f00e-266b-11eb-156d-8bb09de0dc2bqueued¤logsrunning¦outputbody]

👉 Create a graph to visualize ECS as a function of B.

mimetext/htmlrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$aed8f00e-266b-11eb-156d-8bb09de0dc2bdepends_on_disabled_cells§runtimegpublished_object_keysdepends_on_skipped_cells§errored$269200ec-259f-11eb-353b-0b73523ef71aqueued¤logsrunning¦outputbody!

Exercise 1.2 - Doubling CO₂

To compute ECS, we doubled the CO₂ in our atmosphere. This factor 2 is not entirely arbitrary: without substantial effort to reduce CO₂ emissions, we are expected to at least double the CO₂ in our atmosphere by 2100.

Right now, our CO₂ concentration is 415 ppm – 1.482 times the pre-industrial value of 280 ppm from 1850.

The CO₂ concentrations in the future depend on human action. There are several models for future concentrations, which are formed by assuming different policy scenarios. A baseline model is RCP8.5 - a "worst-case" high-emissions scenario. In our notebook, this model is given as a function of $t$.

mimetext/htmlrootassigneelast_run_timestampA6Ipersist_js_state·has_pluto_hook_features§cell_id$269200ec-259f-11eb-353b-0b73523ef71adepends_on_disabled_cells§runtimeVpublished_object_keysdepends_on_skipped_cells§errored$1d388372-2695-11eb-3068-7b28a2ccb9acqueued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampA0Vpersist_js_state·has_pluto_hook_features§cell_id$1d388372-2695-11eb-3068-7b28a2ccb9acdepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$8b06b944-268c-11eb-0bfc-8d4dd21e1f02queued¤logsrunning¦outputbodyn

👉 Inside the plot cell, call the function step_model!.

mimetext/htmlrootassigneelast_run_timestampA0persist_js_state·has_pluto_hook_features§cell_id$8b06b944-268c-11eb-0bfc-8d4dd21e1f02depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$372c1480-2433-11eb-3c4e-95a37d51835fqueued¤logsrunning¦outputbodyprefixMarkdown.MDelements2

Fantastic!

text/html1

Splendid!

text/html.

Great!

text/html+

Yay ❤

text/html3

Great! 🎉

text/html2

Well done!

text/html3

Keep it up!

text/html1

Good job!

text/html 0

Awesome!

text/html A

You got the right answer!

text/html J

Let's move on to the next section.

text/htmltypeArrayprefix_shortobjectidfc05ac597826aa53mime!application/vnd.pluto.tree+objectrootassigneeyayslast_run_timestampA;z persist_js_state·has_pluto_hook_features§cell_id$372c1480-2433-11eb-3c4e-95a37d51835fdepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$5f82dec8-259e-11eb-2f4f-4d661f44ef41queued¤logsrunning¦outputbody4

Hello world!

mimetext/htmlrootassigneeobservations_from_nonnegative_Blast_run_timestampA6Ipersist_js_state·has_pluto_hook_features§cell_id$5f82dec8-259e-11eb-2f4f-4d661f44ef41depends_on_disabled_cells§runtimei published_object_keysdepends_on_skipped_cells§errored$fa7e6f7e-2434-11eb-1e61-1b1858bb0988queued¤logsrunning¦outputbody*

$B =$ -1.301

mimetext/htmlrootassigneelast_run_timestampA6Ppersist_js_state·has_pluto_hook_features§cell_id$fa7e6f7e-2434-11eb-1e61-1b1858bb0988depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$a86f13de-259d-11eb-3f46-1f6fb40020cequeued¤logsrunning¦outputbody4

Hello world!

mimetext/htmlrootassigneeobservations_from_changing_Blast_run_timestampA6ٰpersist_js_state·has_pluto_hook_features§cell_id$a86f13de-259d-11eb-3f46-1f6fb40020cedepends_on_disabled_cells§runtimeյpublished_object_keysdepends_on_skipped_cells§errored$930d7154-1fbf-11eb-1c3a-b1970d291811queued¤logsrunning¦outputbodyMain.workspace#3.Modelmimetext/plainrootassigneelast_run_timestampA6Ygjpersist_js_state·has_pluto_hook_features§cell_id$930d7154-1fbf-11eb-1c3a-b1970d291811depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$50ea30ba-25a1-11eb-05d8-b3d579f85652queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneeexpected_double_CO2_yearlast_run_timestampA6persist_js_state·has_pluto_hook_features§cell_id$50ea30ba-25a1-11eb-05d8-b3d579f85652depends_on_disabled_cells§runtimeB.published_object_keysdepends_on_skipped_cells§errored$19957754-252d-11eb-1e0a-930b5208f5acqueued¤logsrunning¦outputbodyelements280.0text/plain280.0text/plaintypeTupleobjectid8090ba310d99306mime!application/vnd.pluto.tree+objectrootassigneelast_run_timestampA;3kpersist_js_state·has_pluto_hook_features§cell_id$19957754-252d-11eb-1e0a-930b5208f5acdepends_on_disabled_cells§runtimeB8published_object_keysdepends_on_skipped_cells§errored$d6d1b312-2543-11eb-1cb2-e5b801686ffbqueued¤logsrunning¦outputbody&

Below we have an empty diagram, which is already set up with a CO₂ vs $T$ diagram, with a logirthmic horizontal axis. Now it's your turn! We have written some pointers below to help you, but feel free to do it your own way.

mimetext/htmlrootassigneelast_run_timestampA0fpersist_js_state·has_pluto_hook_features§cell_id$d6d1b312-2543-11eb-1cb2-e5b801686ffbdepends_on_disabled_cells§runtimezpublished_object_keysdepends_on_skipped_cells§errored$02232964-2603-11eb-2c4c-c7b7e5fed7d1queued¤logsrunning¦outputbody0.4mimetext/plainrootassigneelast_run_timestampA6&persist_js_state·has_pluto_hook_features§cell_id$02232964-2603-11eb-2c4c-c7b7e5fed7d1depends_on_disabled_cells§runtime9published_object_keysdepends_on_skipped_cells§errored$40f1e7d8-252d-11eb-0549-49ca4e806e16queued¤logsrunning¦outputbody {1850mimetext/htmlrootassigneelast_run_timestampA;"persist_js_state·has_pluto_hook_features§cell_id$40f1e7d8-252d-11eb-0549-49ca4e806e16depends_on_disabled_cells§runtime,published_object_keysdepends_on_skipped_cells§errored$253f4da0-2433-11eb-1e48-4906059607d3queued¤logsrunning¦outputbodyT

Let's create a package environment:

mimetext/htmlrootassigneelast_run_timestampA0 persist_js_state·has_pluto_hook_features§cell_id$253f4da0-2433-11eb-1e48-4906059607d3depends_on_disabled_cells§runtime}published_object_keysdepends_on_skipped_cells§errored$d7801e88-2530-11eb-0b93-6f1c78d00eeaqueued¤logsrunning¦outputbody#α (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA;7persist_js_state·has_pluto_hook_features§cell_id$d7801e88-2530-11eb-0b93-6f1c78d00eeadepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$232b9bec-2544-11eb-0401-97a60bb172fcqueued¤logsrunning¦outputbodyF

Hint

Start by writing a function equilibrium_temperature(CO2) which creates a new EBM at the Snowball Earth temperature T = -48 and returns the final temperature for a given CO2 level.

mimetext/htmlrootassigneelast_run_timestampA;persist_js_state·has_pluto_hook_features§cell_id$232b9bec-2544-11eb-0401-97a60bb172fcdepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$736ed1b6-1fc2-11eb-359e-a1be0a188670queued¤logsrunning¦outputbodyprefixFloat64elements-0.839394text/plain-1.83261text/plain-1.51962text/plain-1.34761text/plain-2.05329text/plain-1.09714text/plain-1.87902text/plain-1.92523text/plain -0.867286text/plain -0.81234text/plain -1.10896text/plain -1.67607text/plain -1.81938text/plain-0.488091text/plain-1.07774text/plain-1.09176text/plain-1.5451text/plain-1.66074text/plain-0.886149text/plain-1.30182text/plainmore-0.903911text/plain-1.30127text/plain-1.26712text/plain-1.47987text/plain-1.21988text/plain-0.932483text/plain-0.942255text/plain-1.38637text/plain-0.677058text/plain-1.48604text/plaintypeArrayprefix_shortobjectid8e8964548747ef8fmime!application/vnd.pluto.tree+objectrootassigneeB_sampleslast_run_timestampA9persist_js_state·has_pluto_hook_features§cell_id$736ed1b6-1fc2-11eb-359e-a1be0a188670depends_on_disabled_cells§runtime1published_object_keysdepends_on_skipped_cells§errored$440271b6-25e8-11eb-26ce-1b80aa176acaqueued¤logsrunning¦outputbody

👉 Does accounting for uncertainty in feedbacks make our expectation of global warming better (less implied warming) or worse (more implied warming)?

mimetext/htmlrootassigneelast_run_timestampA0@persist_js_state·has_pluto_hook_features§cell_id$440271b6-25e8-11eb-26ce-1b80aa176acadepends_on_disabled_cells§runtimeLpublished_object_keysdepends_on_skipped_cells§errored$36ea4410-2433-11eb-1d98-ab4016245d95queued¤logsrunning¦outputbodyn

Function library

Just some helper functions used in the notebook.

mimetext/htmlrootassigneelast_run_timestampA0%5persist_js_state·has_pluto_hook_features§cell_id$36ea4410-2433-11eb-1d98-ab4016245d95depends_on_disabled_cells§runtime[published_object_keysdepends_on_skipped_cells§errored$374522c4-2433-11eb-3da3-17419949defcqueued¤logsrunning¦outputbody,not_defined (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampA<persist_js_state·has_pluto_hook_features§cell_id$374522c4-2433-11eb-3da3-17419949defcdepends_on_disabled_cells§runtime ~published_object_keysdepends_on_skipped_cells§errored$3d66bd30-259d-11eb-2694-471fb3a4a7bequeued¤logsrunning¦outputbodyy

👉 What happens when $B$ is greater than or equal to zero?

mimetext/htmlrootassigneelast_run_timestampA08persist_js_state·has_pluto_hook_features§cell_id$3d66bd30-259d-11eb-2694-471fb3a4a7bedepends_on_disabled_cells§runtime6published_object_keysdepends_on_skipped_cells§errored$bade1372-25a1-11eb-35f4-4b43d4e8d156queued¤logsrunning¦outputbody

Exercise 1.3 - Uncertainty in B

The climate feedback parameter $B$ is not something that we can control– it is an emergent property of the global climate system. Unfortunately, $B$ is also difficult to quantify empirically (the relevant processes are difficult or impossible to observe directly), so there remains uncertainty as to its exact value.

A value of $B$ close to zero means that an increase in CO₂ concentrations will have a larger impact on global warming, and that more action is needed to stay below a maximum temperature. In answering such policy-related question, we need to take the uncertainty in $B$ into account. In this exercise, we will do so using a Monte Carlo simulation: we generate a sample of values for $B$, and use these values in our analysis.

mimetext/htmlrootassigneelast_run_timestampA0'persist_js_state·has_pluto_hook_features§cell_id$bade1372-25a1-11eb-35f4-4b43d4e8d156depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$87e68a4a-2433-11eb-3e9d-21675850ed71queued¤logsrunning¦outputbody mimetext/htmlrootassigneelast_run_timestampA0*persist_js_state·has_pluto_hook_features§cell_id$87e68a4a-2433-11eb-3e9d-21675850ed71depends_on_disabled_cells§runtimeߵpublished_object_keysdepends_on_skipped_cells§errored$7f961bc0-1fc5-11eb-1f18-612aeff0d8dfqueued¤logsrunning¦outputbodye

The plot below provides an example of an "abrupt 2xCO₂" experiment, a classic experimental treatment method in climate modelling which is used in practice to estimate ECS for a particular model. (Note: in complicated climate models the values of the parameters $a$ and $B$ are not specified a priori, but emerge as outputs of the simulation.)

The simulation begins at the preindustrial equilibrium, i.e. a temperature $T_{0} = 14$°C is in balance with the pre-industrial CO₂ concentration of 280 ppm until CO₂ is abruptly doubled from 280 ppm to 560 ppm. The climate responds by warming rapidly, and after a few hundred years approaches the equilibrium climate sensitivity value, by definition.

mimetext/htmlrootassigneelast_run_timestampA0vpersist_js_state·has_pluto_hook_features§cell_id$7f961bc0-1fc5-11eb-1f18-612aeff0d8dfdepends_on_disabled_cells§runtimebfpublished_object_keysdepends_on_skipped_cells§errored$3d72ab3a-2689-11eb-360d-9b3d829b78a9queued¤logsrunning¦outputbodymissingmimetext/plainrootassigneeECS_sampleslast_run_timestampA:ϰpersist_js_state·has_pluto_hook_features§cell_id$3d72ab3a-2689-11eb-360d-9b3d829b78a9depends_on_disabled_cells§runtime-Եpublished_object_keysdepends_on_skipped_cells§errored±cell_dependenciesd$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22precedence_heuristic cell_id$cf8dca6c-1fc8-11eb-1f89-099e6ba53c22downstream_cells_mapupstream_cells_map@md_strgetindex$f2e55166-25ff-11eb-0297-796e97c62b07precedence_heuristic cell_id$f2e55166-25ff-11eb-0297-796e97c62b07downstream_cells_mapupstream_cells_map$36f8c1e8-2433-11eb-1f6e-69dc552a4a07precedence_heuristic cell_id$36f8c1e8-2433-11eb-1f6e-69dc552a4a07downstream_cells_maphint$51e2e742-25a1-11eb-2511-ab3434eacc3e$53c2eaf6-268b-11eb-0899-b91c03713da4$cb15cd88-25ed-11eb-2be4-f31500a726c8$232b9bec-2544-11eb-0401-97a60bb172fcupstream_cells_mapMarkdown.AdmonitionMarkdown.MDMarkdown$3a35598a-2527-11eb-37e5-3b3e4c63c4f7precedence_heuristic cell_id$3a35598a-2527-11eb-37e5-3b3e4c63c4f7downstream_cells_mapupstream_cells_map@md_strgetindex$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0precedence_heuristic cell_id$9eb07a6e-2687-11eb-0de3-7bc6aa0eefb0downstream_cells_mapco2_to_melt_snowballupstream_cells_mapmissing$2bbf5a70-2676-11eb-1085-7130d4a30443precedence_heuristic cell_id$2bbf5a70-2676-11eb-1085-7130d4a30443downstream_cells_mapCO2max$378aed18-252b-11eb-0b37-a3b511af2cb5upstream_cells_map$371352ec-2433-11eb-153d-379afa8ed15eprecedence_heuristic cell_id$371352ec-2433-11eb-153d-379afa8ed15edownstream_cells_mapstill_missingupstream_cells_map@md_strMarkdown.AdmonitionMarkdown.MDMarkdowngetindex$09901de6-2672-11eb-3d50-05b176b729e7precedence_heuristic cell_id$09901de6-2672-11eb-3d50-05b176b729e7downstream_cells_mapupstream_cells_maptemperature_response$f688f9f2-2671-11eb-1d71-a57c9817433fModel$930d7154-1fbf-11eb-1c3a-b1970d291811$607058ec-253c-11eb-0fb6-add8cfb73a4fprecedence_heuristic cell_id$607058ec-253c-11eb-0fb6-add8cfb73a4fdownstream_cells_mapModel.timestep!upstream_cells_mapappend!Model.tendency+α$d7801e88-2530-11eb-0b93-6f1c78d00eeaModel$930d7154-1fbf-11eb-1c3a-b1970d291811*end$372002e4-2433-11eb-0b25-39ce1b1dd3d1precedence_heuristic cell_id$372002e4-2433-11eb-0b25-39ce1b1dd3d1downstream_cells_mapkeep_workingupstream_cells_map@md_strMarkdown.AdmonitionMarkdown.MDMarkdowngetindex$736515ba-2685-11eb-38cb-65bfcf8d1b8dprecedence_heuristic cell_id$736515ba-2685-11eb-38cb-65bfcf8d1b8ddownstream_cells_mapstep_model!upstream_cells_mapModel$930d7154-1fbf-11eb-1c3a-b1970d291811Real$5b5f25f0-266c-11eb-25d4-17e411c850c9precedence_heuristic cell_id$5b5f25f0-266c-11eb-25d4-17e411c850c9downstream_cells_mapupstream_cells_map@md_strgetindex$049a866e-2672-11eb-29f7-bfea7ad8f572precedence_heuristic cell_id$049a866e-2672-11eb-29f7-bfea7ad8f572downstream_cells_mapupstream_cells_maptemperature_response$f688f9f2-2671-11eb-1d71-a57c9817433f$02173c7a-2695-11eb-251c-65efb5b4a45fprecedence_heuristic cell_id$02173c7a-2695-11eb-251c-65efb5b4a45fdownstream_cells_mapupstream_cells_map$49cb5174-1fc3-11eb-3670-c3868c9b0255precedence_heuristic cell_id$49cb5174-1fc3-11eb-3670-c3868c9b0255downstream_cells_mapupstream_cells_mapB_samples$736ed1b6-1fc2-11eb-359e-a1be0a188670histogramnothing$09ce27ca-268c-11eb-0cdd-c9801db876f8precedence_heuristic cell_id$09ce27ca-268c-11eb-0cdd-c9801db876f8downstream_cells_mapupstream_cells_map@md_strgetindex$53c2eaf6-268b-11eb-0899-b91c03713da4precedence_heuristic cell_id$53c2eaf6-268b-11eb-0899-b91c03713da4downstream_cells_mapupstream_cells_map@md_strhint$36f8c1e8-2433-11eb-1f6e-69dc552a4a07getindex$9c32db5c-1fc9-11eb-029a-d5d554de1067precedence_heuristic cell_id$9c32db5c-1fc9-11eb-029a-d5d554de1067downstream_cells_mapupstream_cells_map@md_strgetindex$37552044-2433-11eb-1984-d16e355a7c10precedence_heuristic cell_id$37552044-2433-11eb-1984-d16e355a7c10downstream_cells_mapTODOupstream_cells_mapBaseBase.Docs.HTML@html_str$16348b6a-1fc2-11eb-0b9c-65df528db2a1precedence_heuristic cell_id$16348b6a-1fc2-11eb-0b9c-65df528db2a1downstream_cells_mapupstream_cells_map@md_strgetindex$21524c08-2433-11eb-0c55-47b1bdc9e459precedence_heuristic cell_id$21524c08-2433-11eb-0c55-47b1bdc9e459downstream_cells_mapupstream_cells_map@md_strgetindex$1f148d9a-1fc8-11eb-158e-9d784e390b24precedence_heuristic cell_id$1f148d9a-1fc8-11eb-158e-9d784e390b24downstream_cells_mapupstream_cells_map$11096250-2544-11eb-057b-d7112f20b05cprecedence_heuristic cell_id$11096250-2544-11eb-057b-d7112f20b05cdownstream_cells_mapupstream_cells_map@md_strgetindex$7d815988-1fc7-11eb-322a-4509e7128ce3precedence_heuristic cell_id$7d815988-1fc7-11eb-322a-4509e7128ce3downstream_cells_mapupstream_cells_map@md_strreveal_nonnegative_B_answer$56b68356-2601-11eb-39a9-5f4b8e580b87getindex$1e06178a-1fbf-11eb-32b3-61769a79b7c0precedence_heuristiccell_id$1e06178a-1fbf-11eb-32b3-61769a79b7c0downstream_cells_mapPkg$1e06178a-1fbf-11eb-32b3-61769a79b7c0DistributionsPlotsPlutoUIRandomLaTeXStringsupstream_cells_mapPkg.addPkg$1e06178a-1fbf-11eb-32b3-61769a79b7c0Pkg.activatemktempdir$169727be-2433-11eb-07ae-ab7976b5be90precedence_heuristic cell_id$169727be-2433-11eb-07ae-ab7976b5be90downstream_cells_mapupstream_cells_map@md_strgetindex$3e310cf8-25ec-11eb-07da-cb4a2c71ae34precedence_heuristic cell_id$3e310cf8-25ec-11eb-07da-cb4a2c71ae34downstream_cells_mapupstream_cells_map@md_strgetindex$298deff4-2676-11eb-2595-e7e22f613ea1precedence_heuristic cell_id$298deff4-2676-11eb-2595-e7e22f613ea1downstream_cells_mapCO2min$378aed18-252b-11eb-0b37-a3b511af2cb5upstream_cells_map$f688f9f2-2671-11eb-1d71-a57c9817433fprecedence_heuristic cell_id$f688f9f2-2671-11eb-1d71-a57c9817433fdownstream_cells_maptemperature_response$049a866e-2672-11eb-29f7-bfea7ad8f572$09901de6-2672-11eb-3d50-05b176b729e7$aea0d0b4-2672-11eb-231e-395c863827d3upstream_cells_mapmissingFloat64Function$51e2e742-25a1-11eb-2511-ab3434eacc3eprecedence_heuristic cell_id$51e2e742-25a1-11eb-2511-ab3434eacc3edownstream_cells_mapupstream_cells_map@md_strhint$36f8c1e8-2433-11eb-1f6e-69dc552a4a07getindex$746aa5bc-266c-11eb-14c9-63ccc313f5deprecedence_heuristic cell_id$746aa5bc-266c-11eb-14c9-63ccc313f5dedownstream_cells_mapempty_ebmupstream_cells_mapModel.EBMModel$930d7154-1fbf-11eb-1c3a-b1970d291811$68b2a560-2536-11eb-0cc4-27793b4d6a70precedence_heuristic cell_id$68b2a560-2536-11eb-0cc4-27793b4d6a70downstream_cells_mapadd_cold_hot_areas!$378aed18-252b-11eb-0b37-a3b511af2cb5upstream_cells_mapannotate!plot!+textxlimsnothing$23335418-2433-11eb-05e4-2b35dc6cca0eprecedence_heuristic cell_id$23335418-2433-11eb-05e4-2b35dc6cca0edownstream_cells_mapstudent$18be4f7c-2433-11eb-33cb-8d90ca6f124c$36e2dfea-2433-11eb-1c90-bb93ab25b33cupstream_cells_map$25f92dec-1fc4-11eb-055d-f34deea81d0eprecedence_heuristic cell_id$25f92dec-1fc4-11eb-055d-f34deea81d0edownstream_cells_mapupstream_cells_mapECS$c4398f9c-1fc4-11eb-0bbb-37f066c6027disless|>Model$930d7154-1fbf-11eb-1c3a-b1970d291811Model.run!Model.EBMendB_slider$fa7e6f7e-2434-11eb-1e61-1b1858bb0988=+plot!*$aea0d0b4-2672-11eb-231e-395c863827d3precedence_heuristic cell_id$aea0d0b4-2672-11eb-231e-395c863827d3downstream_cells_mapupstream_cells_maptemperature_response$f688f9f2-2671-11eb-1d71-a57c9817433fModel$930d7154-1fbf-11eb-1c3a-b1970d291811$18be4f7c-2433-11eb-33cb-8d90ca6f124cprecedence_heuristic cell_id$18be4f7c-2433-11eb-33cb-8d90ca6f124cdownstream_cells_mapupstream_cells_map@md_strstudent$23335418-2433-11eb-05e4-2b35dc6cca0egetindex$5041cdee-2527-11eb-154f-0b0c68e11fe3precedence_heuristic cell_id$5041cdee-2527-11eb-154f-0b0c68e11fe3downstream_cells_maplines_i_editedupstream_cells_map@md_strgetindex$378aed18-252b-11eb-0b37-a3b511af2cb5precedence_heuristic cell_id$378aed18-252b-11eb-0b37-a3b511af2cb5downstream_cells_mapupstream_cells_mapCO2min$298deff4-2676-11eb-2595-e7e22f613ea1CO2max$2bbf5a70-2676-11eb-1085-7130d4a30443|>ebm$06d28052-2531-11eb-39e2-e9613ab0401cebm.CO2endnothingas_svgadd_cold_hot_areas!$68b2a560-2536-11eb-0cc4-27793b4d6a70plotadd_reference_points!$0e19f82e-2685-11eb-2e99-0d094c1aa520plot!$b6d7a362-1fc8-11eb-03bc-89464b55c6fcprecedence_heuristic cell_id$b6d7a362-1fc8-11eb-03bc-89464b55c6fcdownstream_cells_mapupstream_cells_map@md_strgetindex$cf276892-25e7-11eb-38f0-03f75c90dd9eprecedence_heuristic cell_id$cf276892-25e7-11eb-38f0-03f75c90dd9edownstream_cells_map(observations_from_the_order_of_averagingupstream_cells_map@md_strgetindex$cb15cd88-25ed-11eb-2be4-f31500a726c8precedence_heuristic cell_id$cb15cd88-25ed-11eb-2be4-f31500a726c8downstream_cells_mapupstream_cells_map@md_strhint$36f8c1e8-2433-11eb-1f6e-69dc552a4a07getindex$37061f1e-2433-11eb-3879-2d31dc70a771precedence_heuristic cell_id$37061f1e-2433-11eb-3879-2d31dc70a771downstream_cells_mapalmostupstream_cells_mapMarkdown.AdmonitionMarkdown.MDMarkdown$9c1f73e0-268a-11eb-2bf1-216a5d869568precedence_heuristic cell_id$9c1f73e0-268a-11eb-2bf1-216a5d869568downstream_cells_mapupstream_cells_map@md_strgetindex$56b68356-2601-11eb-39a9-5f4b8e580b87precedence_heuristic cell_id$56b68356-2601-11eb-39a9-5f4b8e580b87downstream_cells_mapreveal_nonnegative_B_answer$7d815988-1fc7-11eb-322a-4509e7128ce3upstream_cells_mapCore@md_strBasePlutoRunner.create_bondPlutoRunnerCheckBoxCore.applicable@bindBase.getgetindex$12cbbab0-2671-11eb-2b1f-038c206e84ceprecedence_heuristic cell_id$12cbbab0-2671-11eb-2b1f-038c206e84cedownstream_cells_mapupstream_cells_map@md_strgetindex$9596c2dc-2671-11eb-36b9-c1af7e5f1089precedence_heuristic cell_id$9596c2dc-2671-11eb-36b9-c1af7e5f1089downstream_cells_mapsimulated_rcp85_modelupstream_cells_mapmissing$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fprecedence_heuristic cell_id$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fdownstream_cells_mapupstream_cells_map$4b091fac-2672-11eb-0db8-75457788d85eprecedence_heuristic cell_id$4b091fac-2672-11eb-0db8-75457788d85edownstream_cells_mapupstream_cells_map@md_strgetindex$1eabe908-268b-11eb-329b-b35160ec951eprecedence_heuristic cell_id$1eabe908-268b-11eb-329b-b35160ec951edownstream_cells_mapupstream_cells_map@md_strgetindex$971f401e-266c-11eb-3104-171ae299ef70precedence_heuristic cell_id$971f401e-266c-11eb-3104-171ae299ef70downstream_cells_mapupstream_cells_map@md_strgetindex$de95efae-2675-11eb-0909-73afcd68fd42precedence_heuristic cell_id$de95efae-2675-11eb-0909-73afcd68fd42downstream_cells_mapTneo$06d28052-2531-11eb-39e2-e9613ab0401c$232b9bec-2544-11eb-0401-97a60bb172fcupstream_cells_map$2dfab366-25a1-11eb-15c9-b3dd9cd6b96cprecedence_heuristic cell_id$2dfab366-25a1-11eb-15c9-b3dd9cd6b96cdownstream_cells_mapupstream_cells_map@md_strgetindex$1ea81214-1fca-11eb-2442-7b0b448b49d6precedence_heuristic cell_id$1ea81214-1fca-11eb-2442-7b0b448b49d6downstream_cells_mapupstream_cells_map@md_strgetindex$a919d584-2670-11eb-1cf9-2327c8135d6dprecedence_heuristic cell_id$a919d584-2670-11eb-1cf9-2327c8135d6ddownstream_cells_mapupstream_cells_map@md_strgetindex$06c5139e-252d-11eb-2645-8b324b24c405precedence_heuristic cell_id$06c5139e-252d-11eb-2645-8b324b24c405downstream_cells_mapupstream_cells_map@md_strgetindex$b9f882d8-266b-11eb-2998-75d6539088c7precedence_heuristic cell_id$b9f882d8-266b-11eb-2998-75d6539088c7downstream_cells_mapupstream_cells_map$e296c6e8-259c-11eb-1385-53f757f4d585precedence_heuristic cell_id$e296c6e8-259c-11eb-1385-53f757f4d585downstream_cells_mapupstream_cells_map@md_strgetindex$06d28052-2531-11eb-39e2-e9613ab0401cprecedence_heuristic cell_id$06d28052-2531-11eb-39e2-e9613ab0401cdownstream_cells_mapebm$378aed18-252b-11eb-0b37-a3b511af2cb5upstream_cells_mapTneo$de95efae-2675-11eb-0909-73afcd68fd42Model.EBMModel$930d7154-1fbf-11eb-1c3a-b1970d291811$e10a9b70-25a0-11eb-2aed-17ed8221c208precedence_heuristic cell_id$e10a9b70-25a0-11eb-2aed-17ed8221c208downstream_cells_mapupstream_cells_mapModel.CO2_RCP85plott$ee1be5dc-252b-11eb-0865-291aa823b9e9Model$930d7154-1fbf-11eb-1c3a-b1970d291811$36e2dfea-2433-11eb-1c90-bb93ab25b33cprecedence_heuristic cell_id$36e2dfea-2433-11eb-1c90-bb93ab25b33cdownstream_cells_mapupstream_cells_map@md_strstudent$23335418-2433-11eb-05e4-2b35dc6cca0e==getindex$1312525c-1fc0-11eb-2756-5bc3101d2260precedence_heuristic cell_id$1312525c-1fc0-11eb-2756-5bc3101d2260downstream_cells_mapupstream_cells_map@md_strgetindex$0e19f82e-2685-11eb-2e99-0d094c1aa520precedence_heuristic cell_id$0e19f82e-2685-11eb-2e99-0d094c1aa520downstream_cells_mapadd_reference_points!$378aed18-252b-11eb-0b37-a3b511af2cb5upstream_cells_mapplot!Model$930d7154-1fbf-11eb-1c3a-b1970d291811$a0ef04b0-25e9-11eb-1110-cde93601f712precedence_heuristic cell_id$a0ef04b0-25e9-11eb-1110-cde93601f712downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$3f823490-266d-11eb-1ba4-d5a23975c335precedence_heuristic cell_id$3f823490-266d-11eb-1ba4-d5a23975c335downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$fe3304f8-2668-11eb-066d-fdacadce5a19precedence_heuristic cell_id$fe3304f8-2668-11eb-066d-fdacadce5a19downstream_cells_mapupstream_cells_map@md_strgetindex$4c9173ac-2685-11eb-2129-99071821ebebprecedence_heuristic cell_id$4c9173ac-2685-11eb-2129-99071821ebebdownstream_cells_mapupstream_cells_map@md_strgetindex$3737be8e-2433-11eb-2049-2d6d8a5e4753precedence_heuristic cell_id$3737be8e-2433-11eb-2049-2d6d8a5e4753downstream_cells_mapcorrectupstream_cells_mapMarkdown.Admonitionyays$372c1480-2433-11eb-3c4e-95a37d51835fMarkdown.MDMarkdownrand$bfb07a0a-2670-11eb-3938-772499c637b1precedence_heuristic cell_id$bfb07a0a-2670-11eb-3938-772499c637b1downstream_cells_mapsimulated_modelupstream_cells_mapModel.EBMModel$930d7154-1fbf-11eb-1c3a-b1970d291811Model.run!$ee1be5dc-252b-11eb-0865-291aa823b9e9precedence_heuristic cell_id$ee1be5dc-252b-11eb-0865-291aa823b9e9downstream_cells_mapt$e10a9b70-25a0-11eb-2aed-17ed8221c208$40f1e7d8-252d-11eb-0549-49ca4e806e16upstream_cells_map:$c4398f9c-1fc4-11eb-0bbb-37f066c6027dprecedence_heuristic cell_id$c4398f9c-1fc4-11eb-0bbb-37f066c6027ddownstream_cells_mapECS$25f92dec-1fc4-11eb-055d-f34deea81d0eupstream_cells_map-logB̅$02232964-2603-11eb-2c4c-c7b7e5fed7d1/*Model$930d7154-1fbf-11eb-1c3a-b1970d291811$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddeprecedence_heuristic cell_id$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddedownstream_cells_mapupstream_cells_map@md_strgetindex$c78e02b4-268a-11eb-0af7-f7c7620fcc34precedence_heuristic cell_id$c78e02b4-268a-11eb-0af7-f7c7620fcc34downstream_cells_mapupstream_cells_map@md_strgetindex$9cdc5f84-2671-11eb-3c78-e3495bc64d33precedence_heuristic cell_id$9cdc5f84-2671-11eb-3c78-e3495bc64d33downstream_cells_mapupstream_cells_map@md_strgetindex$3cbc95ba-2685-11eb-3810-3bf38aa33231precedence_heuristic cell_id$3cbc95ba-2685-11eb-3810-3bf38aa33231downstream_cells_mapupstream_cells_map@md_strgetindex$aed8f00e-266b-11eb-156d-8bb09de0dc2bprecedence_heuristic cell_id$aed8f00e-266b-11eb-156d-8bb09de0dc2bdownstream_cells_mapupstream_cells_map@md_strgetindex$269200ec-259f-11eb-353b-0b73523ef71aprecedence_heuristic cell_id$269200ec-259f-11eb-353b-0b73523ef71adownstream_cells_mapupstream_cells_map@md_str/roundgetindex$1d388372-2695-11eb-3068-7b28a2ccb9acprecedence_heuristic cell_id$1d388372-2695-11eb-3068-7b28a2ccb9acdownstream_cells_mapupstream_cells_map$8b06b944-268c-11eb-0bfc-8d4dd21e1f02precedence_heuristic cell_id$8b06b944-268c-11eb-0bfc-8d4dd21e1f02downstream_cells_mapupstream_cells_map@md_strgetindex$372c1480-2433-11eb-3c4e-95a37d51835fprecedence_heuristic cell_id$372c1480-2433-11eb-3c4e-95a37d51835fdownstream_cells_mapyays$3737be8e-2433-11eb-2049-2d6d8a5e4753upstream_cells_map@md_strgetindex$5f82dec8-259e-11eb-2f4f-4d661f44ef41precedence_heuristic cell_id$5f82dec8-259e-11eb-2f4f-4d661f44ef41downstream_cells_mapobservations_from_nonnegative_Bupstream_cells_map@md_strgetindex$fa7e6f7e-2434-11eb-1e61-1b1858bb0988precedence_heuristic cell_id$fa7e6f7e-2434-11eb-1e61-1b1858bb0988downstream_cells_mapB_slider$25f92dec-1fc4-11eb-055d-f34deea81d0eupstream_cells_map@md_strCore:Base.get@bindSliderBasePlutoRunnerPlutoRunner.create_bondCore.applicablegetindex$a86f13de-259d-11eb-3f46-1f6fb40020ceprecedence_heuristic cell_id$a86f13de-259d-11eb-3f46-1f6fb40020cedownstream_cells_mapobservations_from_changing_Bupstream_cells_map@md_strgetindex$930d7154-1fbf-11eb-1c3a-b1970d291811precedence_heuristic cell_id$930d7154-1fbf-11eb-1c3a-b1970d291811downstream_cells_mapModel$c4398f9c-1fc4-11eb-0bbb-37f066c6027d$25f92dec-1fc4-11eb-055d-f34deea81d0e$e10a9b70-25a0-11eb-2aed-17ed8221c208$746aa5bc-266c-11eb-14c9-63ccc313f5de$bfb07a0a-2670-11eb-3938-772499c637b1$09901de6-2672-11eb-3d50-05b176b729e7$aea0d0b4-2672-11eb-231e-395c863827d3$19957754-252d-11eb-1e0a-930b5208f5ac$0e19f82e-2685-11eb-2e99-0d094c1aa520$06d28052-2531-11eb-39e2-e9613ab0401c$736515ba-2685-11eb-38cb-65bfcf8d1b8d$d7801e88-2530-11eb-0b93-6f1c78d00eea$607058ec-253c-11eb-0fb6-add8cfb73a4fupstream_cells_map$50ea30ba-25a1-11eb-05d8-b3d579f85652precedence_heuristic cell_id$50ea30ba-25a1-11eb-05d8-b3d579f85652downstream_cells_mapexpected_double_CO2_yearupstream_cells_mapmissing$19957754-252d-11eb-1e0a-930b5208f5acprecedence_heuristic cell_id$19957754-252d-11eb-1e0a-930b5208f5acdownstream_cells_mapupstream_cells_mapModel.CO2_RCP26Model.CO2_RCP85Model$930d7154-1fbf-11eb-1c3a-b1970d291811t_scenario_test$40f1e7d8-252d-11eb-0549-49ca4e806e16$d6d1b312-2543-11eb-1cb2-e5b801686ffbprecedence_heuristic cell_id$d6d1b312-2543-11eb-1cb2-e5b801686ffbdownstream_cells_mapupstream_cells_map@md_strgetindex$02232964-2603-11eb-2c4c-c7b7e5fed7d1precedence_heuristic cell_id$02232964-2603-11eb-2c4c-c7b7e5fed7d1downstream_cells_mapB̅$c4398f9c-1fc4-11eb-0bbb-37f066c6027d$736ed1b6-1fc2-11eb-359e-a1be0a188670σ$736ed1b6-1fc2-11eb-359e-a1be0a188670upstream_cells_map$40f1e7d8-252d-11eb-0549-49ca4e806e16precedence_heuristic cell_id$40f1e7d8-252d-11eb-0549-49ca4e806e16downstream_cells_mapt_scenario_test$19957754-252d-11eb-1e0a-930b5208f5acupstream_cells_mapCoreBasePlutoRunner.create_bondPlutoRunnert$ee1be5dc-252b-11eb-0865-291aa823b9e9Core.applicable@bindBase.getSlider$253f4da0-2433-11eb-1e48-4906059607d3precedence_heuristic cell_id$253f4da0-2433-11eb-1e48-4906059607d3downstream_cells_mapupstream_cells_map@md_strgetindex$d7801e88-2530-11eb-0b93-6f1c78d00eeaprecedence_heuristic cell_id$d7801e88-2530-11eb-0b93-6f1c78d00eeadownstream_cells_mapα$607058ec-253c-11eb-0fb6-add8cfb73a4fupstream_cells_map<=<->=/isless+Model$930d7154-1fbf-11eb-1c3a-b1970d291811*$232b9bec-2544-11eb-0401-97a60bb172fcprecedence_heuristic cell_id$232b9bec-2544-11eb-0401-97a60bb172fcdownstream_cells_mapupstream_cells_map@md_strTneo$de95efae-2675-11eb-0909-73afcd68fd42hint$36f8c1e8-2433-11eb-1f6e-69dc552a4a07getindex$736ed1b6-1fc2-11eb-359e-a1be0a188670precedence_heuristic cell_id$736ed1b6-1fc2-11eb-359e-a1be0a188670downstream_cells_mapB_samples$49cb5174-1fc3-11eb-3670-c3868c9b0255upstream_cells_map 280` to simulate a model with concentrations fixed at 280 ppm. `EBM` also contains the simulation results, in two arrays: - `T` is the array of tempartures (°C, `Float64`). - `t` is the array of timestamps (years, `Float64`), of the same size as `T`. """metadatashow_logsèdisabled®skip_as_script«code_folded$049a866e-2672-11eb-29f7-bfea7ad8f572cell_id$049a866e-2672-11eb-29f7-bfea7ad8f572codetemperature_response(t -> 280)metadatashow_logsèdisabled®skip_as_script«code_folded$02173c7a-2695-11eb-251c-65efb5b4a45fcell_id$02173c7a-2695-11eb-251c-65efb5b4a45fcodemetadatashow_logsèdisabled®skip_as_script«code_folded$49cb5174-1fc3-11eb-3670-c3868c9b0255cell_id$49cb5174-1fc3-11eb-3670-c3868c9b0255code\histogram(B_samples, size=(600, 250), label=nothing, xlabel="B [W/m²/K]", ylabel="samples")metadatashow_logsèdisabled®skip_as_script«code_folded$09ce27ca-268c-11eb-0cdd-c9801db876f8cell_id$09ce27ca-268c-11eb-0cdd-c9801db876f8codemd""" ##### Parameters """metadatashow_logsèdisabled®skip_as_script«code_folded$53c2eaf6-268b-11eb-0899-b91c03713da4cell_id$53c2eaf6-268b-11eb-0899-b91c03713da4codeRhint(md" ```julia @bind log_CO2 Slider(❓) ``` ```julia CO2 = 10^log_CO2 ``` ")metadatashow_logsèdisabled®skip_as_script«code_folded$9c32db5c-1fc9-11eb-029a-d5d554de1067cell_id$9c32db5c-1fc9-11eb-029a-d5d554de1067codemd"""#### Exercise 1.6 - _Application to policy relevant questions_ We talked about two _emissions scenarios_: RCP2.6 (strong mitigation - controlled CO2 concentrations) and RCP8.5 (no mitigation - high CO2 concentrations). These are given by the following functions: """metadatashow_logsèdisabled®skip_as_script«code_folded$37552044-2433-11eb-1984-d16e355a7c10cell_id$37552044-2433-11eb-1984-d16e355a7c10codehTODO = html"TODO"metadatashow_logsèdisabled®skip_as_script«code_folded$16348b6a-1fc2-11eb-0b9c-65df528db2a1cell_id$16348b6a-1fc2-11eb-0b9c-65df528db2a1code\md""" ##### Exercise 1.1 - _Develop understanding for feedbacks and climate sensitivity_ """metadatashow_logsèdisabled®skip_as_script«code_folded$21524c08-2433-11eb-0c55-47b1bdc9e459cell_id$21524c08-2433-11eb-0c55-47b1bdc9e459codeFmd""" # **Homework 9**: _Climate modeling I_ `18.S191`, fall 2020 """metadatashow_logsèdisabled®skip_as_script«code_folded$1f148d9a-1fc8-11eb-158e-9d784e390b24cell_id$1f148d9a-1fc8-11eb-158e-9d784e390b24codemetadatashow_logsèdisabled®skip_as_script«code_folded$11096250-2544-11eb-057b-d7112f20b05ccell_id$11096250-2544-11eb-057b-d7112f20b05ccodezmd""" #### Exercise 2.2 👉 Find the **lowest CO₂ concentration** necessary to melt the Snowball, programatically. """metadatashow_logsèdisabled®skip_as_script«code_folded$7d815988-1fc7-11eb-322a-4509e7128ce3cell_id$7d815988-1fc7-11eb-322a-4509e7128ce3codeif reveal_nonnegative_B_answer md""" This is known as the "runaway greenhouse effect", where warming self-amplifies so strongly through *positive feedbacks* that the warming continues forever (or until the oceans boil away and there is no longer a reservoir or water to support a *water vapor feedback*. This is thought to explain Venus' extremely hot and hostile climate, but as you can see is extremely unlikely to occur on present-day Earth. """ endmetadatashow_logsèdisabled®skip_as_script«code_folded$1e06178a-1fbf-11eb-32b3-61769a79b7c0cell_id$1e06178a-1fbf-11eb-32b3-61769a79b7c0codebegin import Pkg Pkg.activate(mktempdir()) Pkg.add([ "Plots", "PlutoUI", "LaTeXStrings", "Distributions", "Random", ]) using LaTeXStrings using Plots using PlutoUI using Random, Distributions endmetadatashow_logsèdisabled®skip_as_script«code_folded$169727be-2433-11eb-07ae-ab7976b5be90cell_id$169727be-2433-11eb-07ae-ab7976b5be90codemd"_homework 9, version 1_"metadatashow_logsèdisabled®skip_as_script«code_folded$3e310cf8-25ec-11eb-07da-cb4a2c71ae34cell_id$3e310cf8-25ec-11eb-07da-cb4a2c71ae34code md""" We talked about a second theory -- a large increase in CO₂ (by volcanoes) could have caused a strong enough greenhouse effect to melt the Snowball. If we imagine that the CO₂ then decreased (e.g. by getting sequestered by the now liquid ocean), we might be able to explain how we transitioned from a hostile Snowball Earth to today's habitable "Waterball" Earth. In this exercise, you will estimate how much CO₂ would be needed to melt the Snowball and visualize a possible trajectory for Earth's climate over the past 700 million years by making an interactive *bifurcation diagram*. #### Exercise 2.1 In the [lecture notebook](https://github.com/hdrake/simplEarth/blob/master/2_ebm_multiple_equilibria.jl) (video above), we had a bifurcation diagram of $S$ (solar insolation) vs $T$ (temperature). We increased $S$, watched our point move right in the diagram until we found the tipping point. This time we will do the same, but we vary the CO₂ concentration, and keep $S$ fixed at its default (present day) value. """metadatashow_logsèdisabled®skip_as_script«code_folded$298deff4-2676-11eb-2595-e7e22f613ea1cell_id$298deff4-2676-11eb-2595-e7e22f613ea1codeCO2min = 10metadatashow_logsèdisabled®skip_as_script«code_folded$f688f9f2-2671-11eb-1d71-a57c9817433fcell_id$f688f9f2-2671-11eb-1d71-a57c9817433fcodeSfunction temperature_response(CO2::Function, B::Float64=-1.3) return missing endmetadatashow_logsèdisabled®skip_as_script«code_folded$51e2e742-25a1-11eb-2511-ab3434eacc3ecell_id$51e2e742-25a1-11eb-2511-ab3434eacc3ecode4hint(md"The function `findfirst` might be helpful.")metadatashow_logsèdisabled®skip_as_script«code_folded$746aa5bc-266c-11eb-14c9-63ccc313f5decell_id$746aa5bc-266c-11eb-14c9-63ccc313f5decodeqempty_ebm = Model.EBM( 14.0, # initial temperature 1850, # initial year 1, # Δt t -> 280.0, # CO2 function )metadatashow_logsèdisabled®skip_as_script«code_folded$68b2a560-2536-11eb-0cc4-27793b4d6a70cell_id$68b2a560-2536-11eb-0cc4-27793b4d6a70codefunction add_cold_hot_areas!(p) left, right = xlims(p) plot!(p, [left, right], [-60, -60], fillrange=[-10., -10.], fillalpha=0.3, c=:lightblue, label=nothing ) annotate!(p, left+12, -19, text("completely\nfrozen", 10, :darkblue, :left) ) plot!(p, [left, right], [10, 10], fillrange=[80., 80.], fillalpha=0.09, c=:red, lw=0., label=nothing ) annotate!(p, left+12, 15, text("no ice", 10, :darkred, :left) ) endmetadatashow_logsèdisabled®skip_as_script«code_folded$23335418-2433-11eb-05e4-2b35dc6cca0ecell_id$23335418-2433-11eb-05e4-2b35dc6cca0ecode# edit the code below to set your name and kerberos ID (i.e. email without @mit.edu) student = (name = "Jazzy Doe", kerberos_id = "jazz") # you might need to wait until all other cells in this notebook have completed running. # scroll around the page to see what's upmetadatashow_logsèdisabled®skip_as_script«code_folded$25f92dec-1fc4-11eb-055d-f34deea81d0ecell_id$25f92dec-1fc4-11eb-055d-f34deea81d0ecodelet double_CO2(t) = if t >= 0 2*Model.CO2_PI else Model.CO2_PI end # the definition of A depends on B, so we recalculate: A = Model.S*(1. - Model.α)/4 + B_slider*Model.T0 # create the model ebm_ECS = Model.EBM(14., -100., 1., double_CO2, A=A, B=B_slider); Model.run!(ebm_ECS, 300) ecs = ECS(B=B_slider) p = plot( size=(500,250), legend=:bottomright, title="Transient response to instant doubling of CO₂", ylabel="temperature change [°C]", xlabel="years after doubling", ylim=(-.5, (isfinite(ecs) && ecs < 4) ? 4 : 10), ) plot!(p, [ebm_ECS.t[1], ebm_ECS.t[end]], ecs .* [1,1], ls=:dash, color=:darkred, label="ECS") plot!(p, ebm_ECS.t, ebm_ECS.T .- ebm_ECS.T[1], label="ΔT(t) = T(t) - T₀") end |> as_svgmetadatashow_logsèdisabled®skip_as_script«code_folded$aea0d0b4-2672-11eb-231e-395c863827d3cell_id$aea0d0b4-2672-11eb-231e-395c863827d3code+temperature_response(Model.CO2_RCP85, -1.0)metadatashow_logsèdisabled®skip_as_script«code_folded$18be4f7c-2433-11eb-33cb-8d90ca6f124ccell_id$18be4f7c-2433-11eb-33cb-8d90ca6f124ccodePmd""" Submission by: **_$(student.name)_** ($(student.kerberos_id)@mit.edu) """metadatashow_logsèdisabled®skip_as_script«code_folded$5041cdee-2527-11eb-154f-0b0c68e11fe3cell_id$5041cdee-2527-11eb-154f-0b0c68e11fe3codeylines_i_edited = md""" Abstraction, lines 1-219; Array Basics, lines 1-137; Course Intro, lines 1-144 (_for example_) """metadatashow_logsèdisabled®skip_as_script«code_folded$378aed18-252b-11eb-0b37-a3b511af2cb5cell_id$378aed18-252b-11eb-0b37-a3b511af2cb5codelet p = plot( xlims=(CO2min, CO2max), ylims=(-55, 75), xaxis=:log, xlabel="CO2 concentration [ppm]", ylabel="Global temperature T [°C]", title="Earth's CO2 concentration bifurcation diagram", legend=:topleft ) add_cold_hot_areas!(p) add_reference_points!(p) # your code here plot!(p, [ebm.CO2(ebm.t[end])], [ebm.T[end]], label=nothing, color=:black, shape=:circle, ) end |> as_svgmetadatashow_logsèdisabled®skip_as_script«code_folded$b6d7a362-1fc8-11eb-03bc-89464b55c6fccell_id$b6d7a362-1fc8-11eb-03bc-89464b55c6fccodemd"**Answer:**"metadatashow_logsèdisabled®skip_as_script«code_folded$cf276892-25e7-11eb-38f0-03f75c90dd9ecell_id$cf276892-25e7-11eb-38f0-03f75c90dd9ecodeAobservations_from_the_order_of_averaging = md""" Hello world! """metadatashow_logsèdisabled®skip_as_script«code_folded$cb15cd88-25ed-11eb-2be4-f31500a726c8cell_id$cb15cd88-25ed-11eb-2be4-f31500a726c8code`hint(md"Use a condition on the albedo or temperature to check whether the Snowball has melted.")metadatashow_logsèdisabled®skip_as_script«code_folded$37061f1e-2433-11eb-3879-2d31dc70a771cell_id$37061f1e-2433-11eb-3879-2d31dc70a771codeSalmost(text) = Markdown.MD(Markdown.Admonition("warning", "Almost there!", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$9c1f73e0-268a-11eb-2bf1-216a5d869568cell_id$9c1f73e0-268a-11eb-2bf1-216a5d869568codemd""" If you like, make the visualization more informative! Like in the lecture notebook, you could add a trail behind the black dot, or you could plot the stable and unstable branches. It's up to you! """metadatashow_logsèdisabled®skip_as_script«code_folded$56b68356-2601-11eb-39a9-5f4b8e580b87cell_id$56b68356-2601-11eb-39a9-5f4b8e580b87codeBmd"Reveal answer: $(@bind reveal_nonnegative_B_answer CheckBox())"metadatashow_logsèdisabled®skip_as_script«code_folded$12cbbab0-2671-11eb-2b1f-038c206e84cecell_id$12cbbab0-2671-11eb-2b1f-038c206e84cecodemd""" Again, look inside `simulated_model` and notice that `T` and `t` have accumulated the simulation results. In this simulation, we used `T0 = 14` and `CO2 = t -> 280`, which is why `T` is constant during our simulation. These parameters are the default, pre-industrial values, and our model is based on this equilibrium. 👉 Run a simulation with policy scenario RCP8.5, and plot the computed temperature graph. What is the global temperature at 2100? """metadatashow_logsèdisabled®skip_as_script«code_folded$9596c2dc-2671-11eb-36b9-c1af7e5f1089cell_id$9596c2dc-2671-11eb-36b9-c1af7e5f1089code*simulated_rcp85_model = let missing endmetadatashow_logsèdisabled®skip_as_script«code_folded$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fcell_id$f94a1d56-2671-11eb-2cdc-810a9c7a8a5fcodemetadatashow_logsèdisabled®skip_as_script«code_folded$4b091fac-2672-11eb-0db8-75457788d85ecell_id$4b091fac-2672-11eb-0db8-75457788d85ecodemd""" Additional parameters can be set using keyword arguments. For example: ```julia Model.EBM(14, 1850, 1, t -> 280.0; B=-2.0) ``` Creates the same model as before, but with `B = -2.0`. """metadatashow_logsèdisabled®skip_as_script«code_folded$1eabe908-268b-11eb-329b-b35160ec951ecell_id$1eabe908-268b-11eb-329b-b35160ec951ecodeٛmd""" 👉 Create a slider for `CO2` between `CO2min` and `CO2max`. Just like the horizontal axis of our plot, we want the slider to be _logarithmic_. """metadatashow_logsèdisabled®skip_as_script«code_folded$971f401e-266c-11eb-3104-171ae299ef70cell_id$971f401e-266c-11eb-3104-171ae299ef70code7md""" You can set up an instance of `EBM` like so: """metadatashow_logsèdisabled®skip_as_script«code_folded$de95efae-2675-11eb-0909-73afcd68fd42cell_id$de95efae-2675-11eb-0909-73afcd68fd42codeTneo = -48metadatashow_logsèdisabled®skip_as_script«code_folded$2dfab366-25a1-11eb-15c9-b3dd9cd6b96ccell_id$2dfab366-25a1-11eb-15c9-b3dd9cd6b96ccodermd""" 👉 In what year are we expected to have doubled the CO₂ concentration, under policy scenario RCP8.5? """metadatashow_logsèdisabled®skip_as_script«code_folded$1ea81214-1fca-11eb-2442-7b0b448b49d6cell_id$1ea81214-1fca-11eb-2442-7b0b448b49d6codemd""" ## **Exercise 2** - _How did Snowball Earth melt?_ In lecture 21 (see below), we discovered that increases in the brightness of the Sun are not sufficient to explain how Snowball Earth eventually melted. """metadatashow_logsèdisabled®skip_as_script«code_folded$a919d584-2670-11eb-1cf9-2327c8135d6dcell_id$a919d584-2670-11eb-1cf9-2327c8135d6dcode{md""" Have look inside this object. We see that `T` and `t` are initialized to a 1-element array. Let's run our model: """metadatashow_logsèdisabled®skip_as_script«code_folded$06c5139e-252d-11eb-2645-8b324b24c405cell_id$06c5139e-252d-11eb-2645-8b324b24c405codemd""" We are interested in how the **uncertainty in our input** $B$ (the climate feedback paramter) *propagates* through our model to determine the **uncertainty in our output** $T(t)$, for a given emissions scenario. The goal of this exercise is to answer the following by using *Monte Carlo Simulation* for *uncertainty propagation*: > 👉 What is the probability that we see more than 2°C of warming by 2100 under the low-emissions scenario RCP2.6? What about under the high-emissions scenario RCP8.5? """metadatashow_logsèdisabled®skip_as_script«code_folded$b9f882d8-266b-11eb-2998-75d6539088c7cell_id$b9f882d8-266b-11eb-2998-75d6539088c7codemetadatashow_logsèdisabled®skip_as_script«code_folded$e296c6e8-259c-11eb-1385-53f757f4d585cell_id$e296c6e8-259c-11eb-1385-53f757f4d585codemd""" 👉 Change the value of $B$ using the slider above. What does it mean for a climate system to have a more negative value of $B$? Explain why we call $B$ the _climate feedback parameter_. """metadatashow_logsèdisabled®skip_as_script«code_folded$06d28052-2531-11eb-39e2-e9613ab0401ccell_id$06d28052-2531-11eb-39e2-e9613ab0401ccode.ebm = Model.EBM(Tneo, 0., 5., Model.CO2_const)metadatashow_logsèdisabled®skip_as_script«code_folded$e10a9b70-25a0-11eb-2aed-17ed8221c208cell_id$e10a9b70-25a0-11eb-2aed-17ed8221c208codeOplot(t, Model.CO2_RCP85.(t), ylim=(0,1200), ylabel="CO2 concentration [ppm]")metadatashow_logsèdisabled®skip_as_script«code_folded$36e2dfea-2433-11eb-1c90-bb93ab25b33ccell_id$36e2dfea-2433-11eb-1c90-bb93ab25b33ccodeif student.name == "Jazzy Doe" || student.kerberos_id == "jazz" md""" !!! danger "Before you submit" Remember to fill in your **name** and **Kerberos ID** at the top of this notebook. """ endmetadatashow_logsèdisabled®skip_as_script«code_folded$1312525c-1fc0-11eb-2756-5bc3101d2260cell_id$1312525c-1fc0-11eb-2756-5bc3101d2260codemd"""## **Exercise 1** - _policy goals under uncertainty_ A recent ground-breaking [review paper](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2019RG000678) produced the most comprehensive and up-to-date estimate of the *climate feedback parameter*, which they find to be $B \approx \mathcal{N}(-1.3, 0.4),$ i.e. our knowledge of the real value is normally distributed with a mean value $\overline{B} = -1.3$ W/m²/K and a standard deviation $\sigma = 0.4$ W/m²/K. These values are not very intuitive, so let us convert them into more policy-relevant numbers. **Definition:** *Equilibrium climate sensitivity (ECS)* is defined as the amount of warming $\Delta T$ caused by a doubling of CO₂ (e.g. from the pre-industrial value 280 ppm to 560 ppm), at equilibrium. At equilibrium, the energy balance model equation is: $0 = \frac{S(1 - α)}{4} - (A - BT_{eq}) + a \ln\left( \frac{2\;\text{CO}₂_{\text{PI}}}{\text{CO}₂_{\text{PI}}} \right)$ From this, we subtract the preindustrial energy balance, which is given by: $0 = \frac{S(1-α)}{4} - (A - BT_{0}),$ The result of this subtraction, after rearranging, is our definition of $\text{ECS}$: $\text{ECS} \equiv T_{eq} - T_{0} = -\frac{a\ln(2)}{B}$ """metadatashow_logsèdisabled®skip_as_script«code_folded$0e19f82e-2685-11eb-2e99-0d094c1aa520cell_id$0e19f82e-2685-11eb-2e99-0d094c1aa520codefunction add_reference_points!(p) plot!(p, [Model.CO2_PI, Model.CO2_PI], [-55, 75], color=:grey, alpha=0.3, lw=8, label="Pre-industrial CO2" ) plot!(p, [Model.CO2_PI], [Model.T0], shape=:circle, color=:orange, markersize=8, label="Our preindustrial climate" ) plot!(p, [Model.CO2_PI], [-38.3], shape=:circle, color=:aqua, markersize=8, label="Alternate preindustrial climate" ) endmetadatashow_logsèdisabled®skip_as_script«code_folded$a0ef04b0-25e9-11eb-1110-cde93601f712cell_id$a0ef04b0-25e9-11eb-1110-cde93601f712codehtml""" """metadatashow_logsèdisabled®skip_as_script«code_folded$3f823490-266d-11eb-1ba4-d5a23975c335cell_id$3f823490-266d-11eb-1ba4-d5a23975c335codehtml"""

Properties of an EBM obect:

NameDescription
ALinearized outgoing thermal radiation: offset [W/m²]
BLinearized outgoing thermal radiation: slope. or: climate feedback parameter [W/m²/°C]
αPlanet albedo, 0.0-1.0 [unitless]
SSolar insulation [W/m²]
CAtmosphere and upper-ocean heat capacity [J/m²/°C]
aCO₂ forcing effect [W/m²]
CO2_PIPre-industrial CO₂ concentration [ppm]
"""metadatashow_logsèdisabled®skip_as_script«code_folded$fe3304f8-2668-11eb-066d-fdacadce5a19cell_id$fe3304f8-2668-11eb-066d-fdacadce5a19codemd""" _Before working on the homework, make sure that you have watched the first lecture on climate modeling 👆. We have included the important functions from this lecture notebook in the next cell. Feel free to have a look!_ """metadatashow_logsèdisabled®skip_as_script«code_folded$4c9173ac-2685-11eb-2129-99071821ebebcell_id$4c9173ac-2685-11eb-2129-99071821ebebcode3md""" 👉 Write a function `step_model!` that takes an existing `ebm` and `new_CO2`, which performs a step of our interactive process: - Reset the model by setting the `ebm.t` and `ebm.T` arrays to a single element. _Which value?_ - Assign a new function to `ebm.CO2`. _What function?_ - Run the model. """metadatashow_logsèdisabled®skip_as_script«code_folded$3737be8e-2433-11eb-2049-2d6d8a5e4753cell_id$3737be8e-2433-11eb-2049-2d6d8a5e4753codeYcorrect(text=rand(yays)) = Markdown.MD(Markdown.Admonition("correct", "Got it!", [text]))metadatashow_logsèdisabled®skip_as_script«code_folded$bfb07a0a-2670-11eb-3938-772499c637b1cell_id$bfb07a0a-2670-11eb-3938-772499c637b1codeasimulated_model = let ebm = Model.EBM(14.0, 1850, 1, t -> 280.0) Model.run!(ebm, 2020) ebm endmetadatashow_logsèdisabled®skip_as_script«code_folded$ee1be5dc-252b-11eb-0865-291aa823b9e9cell_id$ee1be5dc-252b-11eb-0865-291aa823b9e9codet = 1850:2100metadatashow_logsèdisabled®skip_as_script«code_folded$c4398f9c-1fc4-11eb-0bbb-37f066c6027dcell_id$c4398f9c-1fc4-11eb-0bbb-37f066c6027dcode(ECS(; B=B̅, a=Model.a) = -a*log(2.)./B;metadatashow_logsèdisabled®skip_as_script«code_folded$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddecell_id$f3abc83c-1fc7-11eb-1aa8-01ce67c8bddecodeَmd""" 👉 Generate a probability distribution for the ECS based on the probability distribution function for $B$ above. Plot a histogram. """metadatashow_logsèdisabled®skip_as_script«code_folded$c78e02b4-268a-11eb-0af7-f7c7620fcc34cell_id$c78e02b4-268a-11eb-0af7-f7c7620fcc34codeBmd""" The albedo feedback is implemented by the methods below: """metadatashow_logsèdisabled®skip_as_script«code_folded$9cdc5f84-2671-11eb-3c78-e3495bc64d33cell_id$9cdc5f84-2671-11eb-3c78-e3495bc64d33codeٷmd""" 👉 Write a function `temperature_response` that takes a function `CO2` and an optional value `B` as parameters, and returns the temperature at 2100 according to our model. """metadatashow_logsèdisabled®skip_as_script«code_folded$3cbc95ba-2685-11eb-3810-3bf38aa33231cell_id$3cbc95ba-2685-11eb-3810-3bf38aa33231code'md""" We used two helper functions: """metadatashow_logsèdisabled®skip_as_script«code_folded$aed8f00e-266b-11eb-156d-8bb09de0dc2bcell_id$aed8f00e-266b-11eb-156d-8bb09de0dc2bcodeCmd""" 👉 Create a graph to visualize ECS as a function of B. """metadatashow_logsèdisabled®skip_as_script«code_folded$269200ec-259f-11eb-353b-0b73523ef71acell_id$269200ec-259f-11eb-353b-0b73523ef71acodemd""" #### Exercise 1.2 - _Doubling CO₂_ To compute ECS, we doubled the CO₂ in our atmosphere. This factor 2 is not entirely arbitrary: without substantial effort to reduce CO₂ emissions, we are expected to **at least** double the CO₂ in our atmosphere by 2100. Right now, our CO₂ concentration is 415 ppm -- $(round(415 / 280, digits=3)) times the pre-industrial value of 280 ppm from 1850. The CO₂ concentrations in the _future_ depend on human action. There are several models for future concentrations, which are formed by assuming different _policy scenarios_. A baseline model is RCP8.5 - a "worst-case" high-emissions scenario. In our notebook, this model is given as a function of ``t``. """metadatashow_logsèdisabled®skip_as_script«code_folded$1d388372-2695-11eb-3068-7b28a2ccb9accell_id$1d388372-2695-11eb-3068-7b28a2ccb9accodemetadatashow_logsèdisabled®skip_as_script«code_folded$8b06b944-268c-11eb-0bfc-8d4dd21e1f02cell_id$8b06b944-268c-11eb-0bfc-8d4dd21e1f02codeEmd""" 👉 Inside the plot cell, call the function `step_model!`. """metadatashow_logsèdisabled®skip_as_script«code_folded$372c1480-2433-11eb-3c4e-95a37d51835fcell_id$372c1480-2433-11eb-3c4e-95a37d51835fcodeyays = [md"Fantastic!", md"Splendid!", md"Great!", md"Yay ❤", md"Great! 🎉", md"Well done!", md"Keep it up!", md"Good job!", md"Awesome!", md"You got the right answer!", md"Let's move on to the next section."]metadatashow_logsèdisabled®skip_as_script«code_folded$5f82dec8-259e-11eb-2f4f-4d661f44ef41cell_id$5f82dec8-259e-11eb-2f4f-4d661f44ef41code8observations_from_nonnegative_B = md""" Hello world! """metadatashow_logsèdisabled®skip_as_script«code_folded$fa7e6f7e-2434-11eb-1e61-1b1858bb0988cell_id$fa7e6f7e-2434-11eb-1e61-1b1858bb0988codeWmd""" ``B = `` $(@bind B_slider Slider(-2.5:.001:0; show_value=true, default=-1.3)) """metadatashow_logsèdisabled®skip_as_script«code_folded$a86f13de-259d-11eb-3f46-1f6fb40020cecell_id$a86f13de-259d-11eb-3f46-1f6fb40020cecode5observations_from_changing_B = md""" Hello world! """metadatashow_logsèdisabled®skip_as_script«code_folded$930d7154-1fbf-11eb-1c3a-b1970d291811cell_id$930d7154-1fbf-11eb-1c3a-b1970d291811code Ymodule Model const S = 1368; # solar insolation [W/m^2] (energy per unit time per unit area) const α = 0.3; # albedo, or planetary reflectivity [unitless] const B = -1.3; # climate feedback parameter [W/m^2/°C], const T0 = 14.; # preindustrial temperature [°C] absorbed_solar_radiation(; α=α, S=S) = S*(1 - α)/4; # [W/m^2] outgoing_thermal_radiation(T; A=A, B=B) = A - B*T; const A = S*(1. - α)/4 + B*T0; # [W/m^2]. greenhouse_effect(CO2; a=a, CO2_PI=CO2_PI) = a*log(CO2/CO2_PI); const a = 5.0; # CO2 forcing coefficient [W/m^2] const CO2_PI = 280.; # preindustrial CO2 concentration [parts per million; ppm]; CO2_const(t) = CO2_PI; # constant CO2 concentrations const C = 51.; # atmosphere and upper-ocean heat capacity [J/m^2/°C] function timestep!(ebm) append!(ebm.T, ebm.T[end] + ebm.Δt*tendency(ebm)); append!(ebm.t, ebm.t[end] + ebm.Δt); end; tendency(ebm) = (1. /ebm.C) * ( + absorbed_solar_radiation(α=ebm.α, S=ebm.S) - outgoing_thermal_radiation(ebm.T[end], A=ebm.A, B=ebm.B) + greenhouse_effect(ebm.CO2(ebm.t[end]), a=ebm.a, CO2_PI=ebm.CO2_PI) ); begin mutable struct EBM T::Array{Float64, 1} t::Array{Float64, 1} Δt::Float64 CO2::Function C::Float64 a::Float64 A::Float64 B::Float64 CO2_PI::Float64 α::Float64 S::Float64 end; # Make constant parameters optional kwargs EBM(T::Array{Float64, 1}, t::Array{Float64, 1}, Δt::Real, CO2::Function; C=C, a=a, A=A, B=B, CO2_PI=CO2_PI, α=α, S=S) = ( EBM(T, t, Δt, CO2, C, a, A, B, CO2_PI, α, S) ); # Construct from float inputs for convenience EBM(T0::Real, t0::Real, Δt::Real, CO2::Function; C=C, a=a, A=A, B=B, CO2_PI=CO2_PI, α=α, S=S) = ( EBM(Float64[T0], Float64[t0], Δt, CO2; C=C, a=a, A=A, B=B, CO2_PI=CO2_PI, α=α, S=S); ); end; begin function run!(ebm::EBM, end_year::Real) while ebm.t[end] < end_year timestep!(ebm) end end; run!(ebm) = run!(ebm, 200.) # run for 200 years by default end CO2_hist(t) = CO2_PI * (1 .+ fractional_increase(t)); fractional_increase(t) = ((t .- 1850.)/220).^3; begin CO2_RCP26(t) = CO2_PI * (1 .+ fractional_increase(t) .* min.(1., exp.(-((t .-1850.).-170)/100))) ; RCP26 = EBM(T0, 1850., 1., CO2_RCP26) run!(RCP26, 2100.) CO2_RCP85(t) = CO2_PI * (1 .+ fractional_increase(t) .* max.(1., exp.(((t .-1850.).-170)/100))); RCP85 = EBM(T0, 1850., 1., CO2_RCP85) run!(RCP85, 2100.) end endmetadatashow_logsèdisabled®skip_as_script«code_folded$50ea30ba-25a1-11eb-05d8-b3d579f85652cell_id$50ea30ba-25a1-11eb-05d8-b3d579f85652code/expected_double_CO2_year = let missing endmetadatashow_logsèdisabled®skip_as_script«code_folded$19957754-252d-11eb-1e0a-930b5208f5accell_id$19957754-252d-11eb-1e0a-930b5208f5accodeBModel.CO2_RCP26(t_scenario_test), Model.CO2_RCP85(t_scenario_test)metadatashow_logsèdisabled®skip_as_script«code_folded$d6d1b312-2543-11eb-1cb2-e5b801686ffbcell_id$d6d1b312-2543-11eb-1cb2-e5b801686ffbcodemd""" Below we have an empty diagram, which is already set up with a CO₂ vs $T$ diagram, with a logirthmic horizontal axis. Now it's your turn! We have written some pointers below to help you, but feel free to do it your own way. """metadatashow_logsèdisabled®skip_as_script«code_folded$02232964-2603-11eb-2c4c-c7b7e5fed7d1cell_id$02232964-2603-11eb-2c4c-c7b7e5fed7d1codeB̅ = -1.3; σ = 0.4metadatashow_logsèdisabled®skip_as_script«code_folded$40f1e7d8-252d-11eb-0549-49ca4e806e16cell_id$40f1e7d8-252d-11eb-0549-49ca4e806e16code>@bind t_scenario_test Slider(t; show_value=true, default=1850)metadatashow_logsèdisabled®skip_as_script«code_folded$253f4da0-2433-11eb-1e48-4906059607d3cell_id$253f4da0-2433-11eb-1e48-4906059607d3code)md"_Let's create a package environment:_"metadatashow_logsèdisabled®skip_as_script«code_folded$d7801e88-2530-11eb-0b93-6f1c78d00eeacell_id$d7801e88-2530-11eb-0b93-6f1c78d00eeacodeٯfunction α(T; α0=Model.α, αi=0.5, ΔT=10.) if T < -ΔT return αi elseif -ΔT <= T < ΔT return αi + (α0-αi)*(T+ΔT)/(2ΔT) elseif T >= ΔT return α0 end endmetadatashow_logsèdisabled®skip_as_script«code_folded$232b9bec-2544-11eb-0401-97a60bb172fccell_id$232b9bec-2544-11eb-0401-97a60bb172fccodehint(md"Start by writing a function `equilibrium_temperature(CO2)` which creates a new `EBM` at the Snowball Earth temperature T = $(Tneo) and returns the final temperature for a given CO2 level.")metadatashow_logsèdisabled®skip_as_script«code_folded$736ed1b6-1fc2-11eb-359e-a1be0a188670cell_id$736ed1b6-1fc2-11eb-359e-a1be0a188670codeٶB_samples = let B_distribution = Normal(B̅, σ) Nsamples = 5000 samples = rand(B_distribution, Nsamples) # we only sample negative values of B filter(x -> x < 0, samples) endmetadatashow_logsèdisabled®skip_as_script«code_folded$440271b6-25e8-11eb-26ce-1b80aa176acacell_id$440271b6-25e8-11eb-26ce-1b80aa176acacodeٛmd"👉 Does accounting for uncertainty in feedbacks make our expectation of global warming better (less implied warming) or worse (more implied warming)?"metadatashow_logsèdisabled®skip_as_script«code_folded$36ea4410-2433-11eb-1d98-ab4016245d95cell_id$36ea4410-2433-11eb-1d98-ab4016245d95codeImd"## Function library Just some helper functions used in the notebook."metadatashow_logsèdisabled®skip_as_script«code_folded$374522c4-2433-11eb-3da3-17419949defccell_id$374522c4-2433-11eb-3da3-17419949defccodeٱnot_defined(variable_name) = Markdown.MD(Markdown.Admonition("danger", "Oopsie!", [md"Make sure that you define a variable called **$(Markdown.Code(string(variable_name)))**"]))metadatashow_logsèdisabled®skip_as_script«code_folded$3d66bd30-259d-11eb-2694-471fb3a4a7becell_id$3d66bd30-259d-11eb-2694-471fb3a4a7becodeFmd""" 👉 What happens when $B$ is greater than or equal to zero? """metadatashow_logsèdisabled®skip_as_script«code_folded$bade1372-25a1-11eb-35f4-4b43d4e8d156cell_id$bade1372-25a1-11eb-35f4-4b43d4e8d156code&md""" #### Exercise 1.3 - _Uncertainty in B_ The climate feedback parameter ``B`` is not something that we can control– it is an emergent property of the global climate system. Unfortunately, ``B`` is also difficult to quantify empirically (the relevant processes are difficult or impossible to observe directly), so there remains uncertainty as to its exact value. A value of ``B`` close to zero means that an increase in CO₂ concentrations will have a larger impact on global warming, and that more action is needed to stay below a maximum temperature. In answering such policy-related question, we need to take the uncertainty in ``B`` into account. In this exercise, we will do so using a Monte Carlo simulation: we generate a sample of values for ``B``, and use these values in our analysis. """metadatashow_logsèdisabled®skip_as_script«code_folded$87e68a4a-2433-11eb-3e9d-21675850ed71cell_id$87e68a4a-2433-11eb-3e9d-21675850ed71codehtml""" """metadatashow_logsèdisabled®skip_as_script«code_folded$7f961bc0-1fc5-11eb-1f18-612aeff0d8dfcell_id$7f961bc0-1fc5-11eb-1f18-612aeff0d8dfcodemd"""The plot below provides an example of an "abrupt 2xCO₂" experiment, a classic experimental treatment method in climate modelling which is used in practice to estimate ECS for a particular model. (Note: in complicated climate models the values of the parameters $a$ and $B$ are not specified *a priori*, but *emerge* as outputs of the simulation.) The simulation begins at the preindustrial equilibrium, i.e. a temperature $T_{0} = 14$°C is in balance with the pre-industrial CO₂ concentration of 280 ppm until CO₂ is abruptly doubled from 280 ppm to 560 ppm. The climate responds by warming rapidly, and after a few hundred years approaches the equilibrium climate sensitivity value, by definition. """metadatashow_logsèdisabled®skip_as_script«code_folded$3d72ab3a-2689-11eb-360d-9b3d829b78a9cell_id$3d72ab3a-2689-11eb-360d-9b3d829b78a9codeECS_samples = missingmetadatashow_logsèdisabled®skip_as_script«code_folded«notebook_id$8ddbb042-4aa5-11f0-152c-778cb89daca8in_temp_dir¨metadata