{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### calculate the values used in the manuscript" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import copy\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import netCDF4 as nc\n", "import pandas as pd\n", "import sys\n", "from my_io import Figure1\n", "def cOcean_from_fgco2(df,yrstart):\n", " cOcean = []\n", " for year in range(yrstart,2100):\n", " cOcean.append(df['fgco2'].loc[yrstart:year].sum())\n", " cOcean = np.array(cOcean)\n", " cOcean = pd.DataFrame(data=cOcean, index=range(yrstart,2100), columns=['cOcean'])\n", " cOcean.index.name = 'year'\n", " return cOcean" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ACCESS-ESM1-5 C0\n", "CESM2 C1\n", "CanESM5 C2\n", "FOCI C3\n", "MIROC-ES2L C4\n", "MPI-ESM1-2-LR C5\n", "NorESM2-LM C6\n", "UKESM1-0-LL C7\n" ] } ], "source": [ "model_list = ['ACCESS-ESM1-5', 'CESM2', 'CanESM5', \n", " 'FOCI', 'MIROC-ES2L', 'MPI-ESM1-2-LR',\n", " 'NorESM2-LM','UKESM1-0-LL']\n", "color_list = []\n", "for imodel in range(len(model_list)):\n", " color_list.append('C'+str(imodel))\n", " print(model_list[imodel],color_list[imodel])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ACCESS-ESM1-5: 0.04862 deg\n", "CESM2: -0.09394 deg\n", "CanESM5: -0.15678 deg\n", "FOCI: -0.07627 deg\n", "MIROC-ES2L: -0.09102 deg\n", "MPI-ESM1-2-LR: -0.09050 deg\n", "NorESM2-LM!!!\n", "UKESM1-0-LL: -0.08796 deg\n", "2-m temperature mean: -0.08, stddev: 0.06\n" ] } ], "source": [ "####### Tmiti A/R\n", "df_list = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['NorESM2-LM']:\n", " df_list.append([])\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'temp2', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " for ireal in range(1):\n", " df_list.append((fig1.dflist[3][0]['temp2']-fig1.dflist[2][0]['temp2']\n", " + fig1.dflist[3][1]['temp2']-fig1.dflist[2][1]['temp2']\n", " + fig1.dflist[3][2]['temp2']-fig1.dflist[2][2]['temp2'])/3)\n", " pass\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'temp2', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " for ireal in range(1):\n", " df_list.append((fig1.dflist[2][0]['temp2']-fig1.dflist[0][ireal]['temp2']\n", " + fig1.dflist[2][1]['temp2']-fig1.dflist[0][1]['temp2']\n", " + fig1.dflist[2][2]['temp2']-fig1.dflist[0][2]['temp2'])/3)\n", " else:\n", " var_name, exp = 'tas', 'AFF' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[2][ireal]['tas']-fig1.dflist[0][ireal]['tas'])\n", "foo = []\n", "for idf in range(len(df_list)):\n", " try:\n", " print(f'{model_list[idf]}: {df_list[idf].loc[2040:2060].mean():.5f} deg')\n", " except:\n", " print(f'{model_list[idf]}!!!')\n", " continue\n", " foo.append(df_list[idf].loc[2040:2060].mean())\n", "print(f'2-m temperature mean: {np.array(foo).mean():.2f}, stddev: {np.array(foo).std():.2f}')\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ACCESS-ESM1-5: -5.58646 ppm\n", "CESM2: -18.45009 ppm\n", "CanESM5!!!\n", "FOCI: -18.42547 ppm\n", "MIROC-ES2L: -11.36106 ppm\n", "MPI-ESM1-2-LR: -18.92149 ppm\n", "NorESM2-LM!!!\n", "UKESM1-0-LL: -8.83160 ppm\n", "+++ co2 concentration mean 2060: -13.6, stddev: 5.28\n", "ACCESS-ESM1-5: -5.58646 ppm\n", "CESM2: -18.45009 ppm\n", "CanESM5!!!\n", "FOCI: -18.42547 ppm\n", "MIROC-ES2L: -11.36106 ppm\n", "MPI-ESM1-2-LR: -18.92149 ppm\n", "NorESM2-LM!!!\n", "UKESM1-0-LL: -8.83160 ppm\n", "+++ co2 concentration mean 2075: -15.4, stddev: 6.65\n" ] } ], "source": [ "####### co2 concentration A/R\n", "df_list_co2 = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['NorESM2-LM','CanESM5']:\n", " df_list_co2.append([])\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'co2_concentration', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " for ireal in range(1):\n", " df_list_co2.append((fig1.dflist[3][0]['co2_concentration']-fig1.dflist[2][0]['co2_concentration']\n", " + fig1.dflist[3][1]['co2_concentration']-fig1.dflist[2][1]['co2_concentration']\n", " + fig1.dflist[3][2]['co2_concentration']-fig1.dflist[2][2]['co2_concentration'])/3)\n", " pass\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'co2_concentration', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " for ireal in range(1):\n", " df_list_co2.append((fig1.dflist[2][0]['co2_concentration']-fig1.dflist[0][0]['co2_concentration']\n", " + fig1.dflist[2][1]['co2_concentration']-fig1.dflist[0][1]['co2_concentration']\n", " + fig1.dflist[2][2]['co2_concentration']-fig1.dflist[0][2]['co2_concentration'])/3)\n", " else:\n", " var_name, exp = 'co2_concentration', 'AFF' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " for ireal in range(1):\n", " df_list_co2.append(fig1.dflist[2][ireal]['co2_concentration']-fig1.dflist[0][ireal]['co2_concentration'])\n", "foo = []\n", "for idf in range(len(df_list_co2)):\n", " try:\n", " print(f'{model_list[idf]}: {df_list_co2[idf].loc[2060].mean():.5f} ppm')\n", " except:\n", " print(f'{model_list[idf]}!!!')\n", " continue\n", "# foo.append(df_list_co2[idf].loc[2040:2060].mean())\n", " foo.append(df_list_co2[idf].loc[2060].mean())\n", "print(f'+++ co2 concentration mean 2060: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.2f}')\n", "\n", "foo = []\n", "for idf in range(len(df_list_co2)):\n", " try:\n", " print(f'{model_list[idf]}: {df_list_co2[idf].loc[2060].mean():.5f} ppm')\n", " except:\n", " print(f'{model_list[idf]}!!!')\n", " continue\n", "# foo.append(df_list_co2[idf].loc[2040:2060].mean())\n", " foo.append(df_list_co2[idf].loc[2075].mean())\n", "print(f'+++ co2 concentration mean 2075: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.2f}')\n", "# #######\n", "# for idf in range(len(df_list_co2)):\n", "# try:\n", "# print(f'{model_list[idf]}: {df_list[idf].loc[2040:2059].mean()/df_list_co2[idf].loc[2040:2059].mean()*1000:.2f}')\n", "# except:\n", "# print(f'{model_list[idf]}!!!')\n", "# continue" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### warming mitigation OAE" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ACCESS-ESM1-5!!!\n", "CESM2!!!\n", "CanESM5!!!\n", "FOCI: -0.05442 deg\n", "MIROC-ES2L!!!\n", "MPI-ESM1-2-LR: -0.04829 deg\n", "NorESM2-LM: -0.09223 deg\n", "UKESM1-0-LL: -0.09758 deg\n", "2-m temperature mean: -0.07, stddev: 0.02\n" ] } ], "source": [ "df_list = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['ACCESS-ESM1-5','CESM2','CanESM5','MIROC-ES2L']:\n", " df_list.append([])\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'temp2', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[1][0]['temp2']-fig1.dflist[0][0]['temp2'])\n", "# df_list.append((fig1.dflist[1][0]['temp2']-fig1.dflist[0][0]['temp2']\n", "# + fig1.dflist[1][1]['temp2']-fig1.dflist[0][1]['temp2']\n", "# + fig1.dflist[1][2]['temp2']-fig1.dflist[0][2]['temp2'])/3)\n", " pass\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'temp2', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[1][0]['temp2']-fig1.dflist[0][0]['temp2'])\n", "# df_list.append((fig1.dflist[1][0]['temp2']-fig1.dflist[0][ireal]['temp2']\n", "# + fig1.dflist[1][1]['temp2']-fig1.dflist[0][1]['temp2']\n", "# + fig1.dflist[1][2]['temp2']-fig1.dflist[0][2]['temp2'])/3)\n", " else:\n", " var_name, exp = 'tas', 'AFF' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[1][ireal]['tas']-fig1.dflist[0][ireal]['tas'])\n", "foo = []\n", "for idf in range(len(df_list)):\n", " try:\n", " print(f'{model_list[idf]}: {df_list[idf].loc[2040:2060].mean():.5f} deg')\n", " except:\n", " print(f'{model_list[idf]}!!!')\n", " continue\n", " foo.append(df_list[idf].loc[2040:2060].mean())\n", "print(f'2-m temperature mean: {np.array(foo).mean():.2f}, stddev: {np.array(foo).std():.2f}')\n", "#######\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CO2 concentration OAE" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ACCESS-ESM1-5!!!\n", "CESM2!!!\n", "CanESM5!!!\n", "FOCI: -13.45319 ppm\n", "MIROC-ES2L!!!\n", "MPI-ESM1-2-LR: -15.43555 ppm\n", "NorESM2-LM: -14.13298 ppm\n", "UKESM1-0-LL: -14.22755 ppm\n", "+++ 2040 to 2060 mean: -18.5, stddev: 0.86\n", "ACCESS-ESM1-5!!!\n", "CESM2!!!\n", "CanESM5!!!\n", "FOCI: -13.45319 ppm\n", "MIROC-ES2L!!!\n", "MPI-ESM1-2-LR: -15.43555 ppm\n", "NorESM2-LM: -14.13298 ppm\n", "UKESM1-0-LL: -14.22755 ppm\n", "+++ 2099 mean: -44.4, stddev: 2.22\n" ] } ], "source": [ "df_list_co2 = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['ACCESS-ESM1-5','CESM2','CanESM5','MIROC-ES2L']:\n", " df_list_co2.append([])\n", " continue\n", "\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'co2_concentration', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " for ireal in range(1):\n", " df_list_co2.append(fig1.dflist[1][0]['co2_concentration']-fig1.dflist[0][0]['co2_concentration'])\n", "# df_list_co2.append((fig1.dflist[1][0]['co2_concentration']-fig1.dflist[0][0]['co2_concentration']\n", "# + fig1.dflist[1][1]['co2_concentration']-fig1.dflist[0][1]['co2_concentration']\n", "# + fig1.dflist[1][2]['co2_concentration']-fig1.dflist[0][2]['co2_concentration'])/3)\n", " pass\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'co2_concentration', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " for ireal in range(1):\n", " df_list_co2.append(fig1.dflist[1][0]['co2_concentration']-fig1.dflist[0][0]['co2_concentration'])\n", "# df_list_co2.append((fig1.dflist[1][0]['co2_concentration']-fig1.dflist[0][0]['co2_concentration']\n", "# + fig1.dflist[1][1]['co2_concentration']-fig1.dflist[0][1]['co2_concentration']\n", "# + fig1.dflist[1][2]['co2_concentration']-fig1.dflist[0][2]['co2_concentration'])/3)\n", " else:\n", " var_name, exp = 'co2_concentration', 'AFF' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " for ireal in range(1):\n", " df_list_co2.append(fig1.dflist[1][ireal]['co2_concentration']-fig1.dflist[0][ireal]['co2_concentration'])\n", "foo = []\n", "for idf in range(len(df_list_co2)):\n", " try:\n", " print(f'{model_list[idf]}: {df_list_co2[idf].loc[2040:2060].mean():.5f} ppm')\n", " except:\n", " print(f'{model_list[idf]}!!!')\n", " continue\n", " foo.append(df_list_co2[idf].loc[2060].mean())\n", "print(f'+++ 2040 to 2060 mean: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.2f}')\n", "#######\n", "# for idf in range(len(df_list_co2)):\n", "# try:\n", "# print(f'{model_list[idf]}: {df_list[idf].loc[2040:2059].mean()/df_list_co2[idf].loc[2040:2059].mean()*1000:.2f}')\n", "# except:\n", "# print(f'{model_list[idf]}!!!')\n", "# continue\n", "foo = []\n", "for idf in range(len(df_list_co2)):\n", " try:\n", " print(f'{model_list[idf]}: {df_list_co2[idf].loc[2040:2060].mean():.5f} ppm')\n", " except:\n", " print(f'{model_list[idf]}!!!')\n", " continue\n", " foo.append(df_list_co2[idf].loc[2099].mean())\n", "print(f'+++ 2099 mean: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.2f}')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean: 30.9, stddev: 8.3\n" ] } ], "source": [ "####### d_cLand A/R\n", "df_list = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['NorESM2-LM']:\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'cLand', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[3][ireal]['cLand']-fig1.dflist[2][ireal]['cLand'])\n", " pass\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'cLand', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[2][ireal]['cLand']-fig1.dflist[0][ireal]['cLand'])\n", " else:\n", " var_name, exp = 'cLand', 'AFF' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[2][ireal]['cLand']-fig1.dflist[0][ireal]['cLand'])\n", "foo = []\n", "for idf in range(len(df_list)):\n", " foo.append(df_list[idf].loc[2040:2060].mean())\n", "print(f'mean: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.1f}')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean: -4.8, stddev: 1.5\n" ] } ], "source": [ "######### d_cOcean A/R\n", "df_list = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['NorESM2-LM']:\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'fgco2', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " cOcean = []\n", " for iexp in range(4):\n", " cOcean.append([])\n", " for ireal in range(3):\n", " if iexp in [0,2,3]:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " if iexp in [1]:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2020)) \n", " cOcean[iexp][ireal] = cOcean[iexp][ireal] + cOcean[0][ireal].loc[2019]\n", " cOcean[iexp][ireal] = pd.concat([cOcean[iexp][ireal], cOcean[0][ireal].loc[2015:2019]]).sort_values('year')\n", " for ireal in range(1):\n", " df_list.append(cOcean[3][ireal]['cOcean']-cOcean[2][ireal]['cOcean'])\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'cLand', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " cOcean = []\n", " for iexp in range(3):\n", " cOcean.append([])\n", " for ireal in range(3):\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " for ireal in range(1):\n", " df_list.append(cOcean[2][ireal]['cOcean']-cOcean[0][ireal]['cOcean'])\n", " else:\n", " var_name, exp = 'fgco2', 'AFF' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " cOcean = []\n", " for iexp in range(3):\n", " cOcean.append([])\n", " for ireal in range(1):\n", " if iexp==1:\n", " pass\n", " else:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " for ireal in range(1):\n", " df_list.append(cOcean[2][ireal]['cOcean']-cOcean[0][ireal]['cOcean'])\n", "foo = []\n", "for idf in range(len(df_list)):\n", " foo.append(df_list[idf].loc[2040:2060].mean())\n", "print(f'mean: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.1f}')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "mean: 34.8, stddev: 0.6\n" ] } ], "source": [ "######### d_cOcean OAE\n", "df_list = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['ACCESS-ESM1-5', 'CESM2', 'CanESM5', 'MIROC-ES2L']:\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'fgco2', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " cOcean = []\n", " for iexp in range(4):\n", " cOcean.append([])\n", " for ireal in range(3):\n", " if iexp in [0,2,3]:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " if iexp in [1]:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2020)) \n", " cOcean[iexp][ireal] = cOcean[iexp][ireal] + cOcean[0][ireal].loc[2019]\n", " cOcean[iexp][ireal] = pd.concat([cOcean[iexp][ireal], cOcean[0][ireal].loc[2015:2019]]).sort_values('year')\n", " for ireal in range(1):\n", " df_list.append(cOcean[1][ireal]['cOcean']-cOcean[0][ireal]['cOcean'])\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'cLand', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " cOcean = []\n", " for iexp in range(3):\n", " cOcean.append([])\n", " for ireal in range(3):\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " for ireal in range(1):\n", " df_list.append(cOcean[1][ireal]['cOcean']-cOcean[0][ireal]['cOcean'])\n", " else:\n", " var_name, exp = 'fgco2', 'OAE' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " cOcean = []\n", " for iexp in range(3):\n", " cOcean.append([])\n", " for ireal in range(1):\n", " if iexp in [0]:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " if iexp in [1]:\n", " if model_list[imodel]in['UKESM1-0-LL']:\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2020)) \n", " cOcean[iexp][ireal] = cOcean[iexp][ireal] + cOcean[0][ireal].loc[2019]\n", " cOcean[iexp][ireal] = pd.concat([cOcean[iexp][ireal], cOcean[0][ireal].loc[2015:2019]]).sort_values('year')\n", " else:\n", " # NorESM ocn-alk starts also from 2015\n", " cOcean[iexp].append(cOcean_from_fgco2(fig1.dflist[iexp][ireal],2015))\n", " for ireal in range(1):\n", " df_list.append(cOcean[1][ireal]['cOcean']-cOcean[0][ireal]['cOcean'])\n", "print(len(df_list))\n", "foo = []\n", "for idf in range(len(df_list)):\n", " foo.append(df_list[idf].loc[2040:2060].mean())\n", "print(f'mean: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.1f}')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "mean: -4.7, stddev: 2.0\n" ] } ], "source": [ "####### d_cLand OAE\n", "df_list = []\n", "for imodel in range(len(model_list)):\n", " if model_list[imodel] in ['ACCESS-ESM1-5', 'CESM2', 'CanESM5', 'MIROC-ES2L']:\n", " continue\n", " elif model_list[imodel]=='MPI-ESM1-2-LR':\n", " var_name, exp = 'cLand', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_MPIESM()\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[1][ireal]['cLand']-fig1.dflist[0][ireal]['cLand'])\n", " pass\n", " elif model_list[imodel]=='FOCI':\n", " var_name, exp = 'cLand', 'BOTH' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_FOCI()\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[1][ireal]['cLand']-fig1.dflist[0][ireal]['cLand'])\n", " else:\n", " var_name, exp = 'cLand', 'OAE' \n", " fig1=Figure1(var_name,exp)\n", " fig1.read_model(model_list[imodel])\n", " for ireal in range(1):\n", " df_list.append(fig1.dflist[1][ireal]['cLand']-fig1.dflist[0][ireal]['cLand'])\n", "print(len(df_list))\n", "foo = []\n", "for idf in range(len(df_list)):\n", " foo.append(df_list[idf].loc[2040:2060].mean())\n", "print(f'mean: {np.array(foo).mean():.1f}, stddev: {np.array(foo).std():.1f}')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "lambda_AR_theo = np.array([-26.6,-23.2,-23.7,np.nan,-23,-23.9,-24.8,-23.4])\n", "lambda_OAE_theo = np.array([-10.7,-26.4,-39.7,np.nan,-27.8,-24.3,-26.5,-18.2])\n", "lambda_AR = np.array([-11.7,-14.1,-25.3,-16.6,-13.4,-15.3,np.nan,-14.1])\n", "lambda_OAE = np.array([np.nan,np.nan,np.nan,-15.9,np.nan,-9.4,-14.8,-12.1])\n", "lambda_AR_theo = lambda_AR_theo[~np.isnan(lambda_AR_theo)]\n", "lambda_OAE_theo = lambda_OAE_theo[~np.isnan(lambda_OAE_theo)]\n", "lambda_AR = lambda_AR[~np.isnan(lambda_AR)]\n", "lambda_OAE = lambda_OAE[~np.isnan(lambda_OAE)]\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean lambda_AR_theo: -24.1\n", "mean lambda_OAE_theo: -24.8\n", "mean lambda_AR: -15.8\n", "mean lambda_OAE: -13.1\n", "stddev lambda_AR_theo: 1.2\n", "stddev lambda_OAE_theo: 8.3\n", "stddev lambda_AR: 4.1\n", "stddev lambda_OAE: 2.5\n" ] } ], "source": [ "print(f'mean lambda_AR_theo: {np.mean(lambda_AR_theo):.1f}')\n", "print(f'mean lambda_OAE_theo: {np.mean(lambda_OAE_theo):.1f}')\n", "print(f'mean lambda_AR: {np.mean(lambda_AR):.1f}')\n", "print(f'mean lambda_OAE: {np.mean(lambda_OAE):.1f}')\n", "print(f'stddev lambda_AR_theo: {np.std(lambda_AR_theo):.1f}')\n", "print(f'stddev lambda_OAE_theo: {np.std(lambda_OAE_theo):.1f}')\n", "print(f'stddev lambda_AR: {np.std(lambda_AR):.1f}')\n", "print(f'stddev lambda_OAE: {np.std(lambda_OAE):.1f}')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "co2sys", "language": "python", "name": "co2sys" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.12" } }, "nbformat": 4, "nbformat_minor": 4 }