From 068046e87fcf0a34b502ca5b6e6f4ecd3f5b9e80 Mon Sep 17 00:00:00 2001 From: MatsEsseldeurs Date: Fri, 13 Oct 2023 10:17:22 +0200 Subject: [PATCH 1/2] Change phantom loading script to plons package --- .../3_create_Phantom_3D.ipynb | 141 ++++++++---------- 1 file changed, 66 insertions(+), 75 deletions(-) diff --git a/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb b/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb index 64bfc878..2da8d06f 100644 --- a/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb +++ b/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb @@ -13,8 +13,7 @@ "source": [ "We create a Magritte model from a snapshot of 3D Phantom hydrodynamics simulation.\n", "The hydro model was kindly provided by Jolien Malfait.\n", - "Currently, the Phantom binary files can not yet be used directly to extract the snapshot data.\n", - "Hence we use the corresponding `.ascii` files." + "The Phantom binary files are used directly, and are loaded using the [plons](https://plons.readthedocs.io). package." ] }, { @@ -39,16 +38,17 @@ "source": [ "import magritte.setup as setup # Model setup\n", "import magritte.core as magritte # Core functionality\n", + "import plons # Loading phantom data\n", "import numpy as np # Data structures\n", "import warnings # Hide warnings\n", "warnings.filterwarnings('ignore') # especially for yt\n", "import yt # 3D plotting\n", "import os\n", "\n", - "from tqdm import tqdm # Progress bars\n", - "from astropy import constants, units # Unit conversions\n", - "from scipy.spatial import Delaunay, cKDTree # Finding neighbors\n", - "from yt.funcs import mylog # To avoid yt output \n", + "from tqdm import tqdm # Progress bars\n", + "from astropy import constants # Unit conversions\n", + "from scipy.spatial import Delaunay # Finding neighbors\n", + "from yt.funcs import mylog # To avoid yt output \n", "mylog.setLevel(40) # as error messages" ] }, @@ -65,7 +65,7 @@ "metadata": {}, "outputs": [], "source": [ - "wdir = \"/lhome/thomasc/Magritte-examples/Phantom_3D/\"" + "wdir = \"/home/matse/Documents/Phantom_3D/\"" ] }, { @@ -97,9 +97,11 @@ "metadata": {}, "outputs": [], "source": [ - "input_file = os.path.join(wdir, 'model_Phantom_3D.ascii') # Phantom snapshot\n", - "model_file = os.path.join(wdir, 'model_Phantom_3D.hdf5' ) # Resulting Magritte model\n", - "lamda_file = os.path.join(wdir, 'co.txt' ) # Line data file" + "dump_file = os.path.join(wdir, 'model_Phantom_3D' ) # Phantom full dump (snapshot)\n", + "setup_file = os.path.join(wdir, 'wind.setup' ) # Phantom setup file\n", + "input_file = os.path.join(wdir, 'wind.in' ) # Phantom input file\n", + "model_file = os.path.join(wdir, 'model_Phantom_3D.hdf5') # Resulting Magritte model\n", + "lamda_file = os.path.join(wdir, 'co.txt' ) # Line data file" ] }, { @@ -115,7 +117,9 @@ "metadata": {}, "outputs": [], "source": [ - "input_link = \"https://owncloud.ster.kuleuven.be/index.php/s/6mCZjZ2erTsXq5Y/download\"\n", + "dump_link = \"https://github.com/Ensor-code/phantom-models/raw/main/Malfait+2021/v05e50/wind_v05e50?download=\"\n", + "setup_link = \"https://raw.githubusercontent.com/Ensor-code/phantom-models/main/Malfait%2B2021/v05e50/wind.setup\"\n", + "input_link = \"https://raw.githubusercontent.com/Ensor-code/phantom-models/main/Malfait%2B2021/v05e50/wind.in\"\n", "lamda_link = \"https://home.strw.leidenuniv.nl/~moldata/datafiles/co.dat\"" ] }, @@ -133,6 +137,9 @@ "outputs": [], "source": [ "%%capture\n", + "print(setup_file)\n", + "!wget $dump_link --output-document $dump_file\n", + "!wget $setup_link --output-document $setup_file\n", "!wget $input_link --output-document $input_file\n", "!wget $lamda_link --output-document $lamda_file" ] @@ -148,61 +155,56 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The script below extracts the required data from the snapshot `.ascii` file." + "The script below extracts the required data from the snapshot `phantom dump` file." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████| 7653411/7653411 [00:34<00:00, 221589.21it/s]\n" - ] - } - ], + "outputs": [], "source": [ - "# Read the Phantom ascii file\n", - "(x,y,z, h, rho, vx,vy,vz, u) = np.loadtxt(input_file, skiprows=14, usecols=(0,1,2,4,5,6,7,8,9), unpack=True)\n", + "# Loading the data\n", + "setupData = plons.LoadSetup(wdir, \"wind\")\n", + "dumpData = plons.LoadFullDump(dump_file, setupData)\n", "\n", - "# Constants that can be read from ascii file\n", - "velocity_cte = 2.9784608e+06\n", - "density_cte = 5.9410314e-07\n", - "energy_cte = 8.8712277e+12\n", - "\n", - "keep = np.logical_and(h>0.0, rho>0.0)\n", - "\n", - "# Exclude unphysical points and points with zero abundance\n", - "x = x [keep]\n", - "y = y [keep]\n", - "z = z [keep]\n", - "vx = vx [keep]\n", - "vy = vy [keep]\n", - "vz = vz [keep]\n", - "u = u [keep]\n", - "rho = rho[keep]\n", + "position = dumpData[\"position\"]*1e2 # position vectors [cm -> m]\n", + "velocity = dumpData[\"velocity\"]*1e3 # velocity vectors [km/s -> m/s]\n", + "velocity = velocity/constants.c.si.value # velocity vectors [m/s -> 1/c]\n", + "rho = dumpData[\"rho\"] # density [g/cm^3]\n", + "u = dumpData[\"u\"] # internal energy density [erg/g]\n", + "tmp = dumpData[\"Tgas\"] # temperature [K]\n", + "tmp[tmp<2.725] = 2.725 # Cut-off temperatures below 2.725 K\n", "\n", "# Extract the number of points\n", - "npoints = len(x)\n", - "\n", - "# Convert rho (total density) to abundances\n", - "nH2 = rho * density_cte * 1.0e+6 * constants.N_A.si.value / 2.02\n", - "nCO = nH2 * 1.0e-4\n", + "npoints = len(rho)\n", "\n", "# Convenience arrays\n", "zeros = np.zeros(npoints)\n", "ones = np.ones (npoints)\n", "\n", - "position = np.array((x, y, z )).transpose()\n", - "velocity = np.array((vx,vy,vz)).transpose()\n", - "\n", - "# Convert units\n", - "position *= constants.au.si.value # Convert au to m\n", - "velocity *= (velocity_cte / constants.c.cgs.value) # cm/s to c fraction\n", + "# Convert rho (total density) to abundances\n", + "nH2 = rho * 1.0e+6 * constants.N_A.si.value / 2.02\n", + "nCO = nH2 * 1.0e-4\n", "\n", + "# Define turbulence at 150 m/s\n", + "trb = (150.0/constants.c.si.value)**2 * ones" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 6960643/6960643 [00:36<00:00, 191760.25it/s]\n" + ] + } + ], + "source": [ "# Extract Delaunay vertices (= Voronoi neighbors)\n", "delaunay = Delaunay(position)\n", "(indptr, indices) = delaunay.vertex_neighbor_vertices\n", @@ -228,18 +230,7 @@ "# we add all points which fall inside the boundary defined above.\n", "b_nms = np.linalg.norm(position[boundary], axis=1)\n", "p_nms = np.linalg.norm(position, axis=1)\n", - "boundary = np.array([i[0] for i in np.argwhere(p_nms >= np.min(b_nms))])\n", - "\n", - "# Derive temperature from internal energy (assuming adiabatic heating/cooling)\n", - "gamma = 1.2\n", - "mu = 2.381\n", - "tmp = mu * (gamma-1.0) * u * energy_cte * 1.00784 * (units.erg/units.g * constants.u/constants.k_B).to(units.K).value\n", - "\n", - "# Cut-off temperatures below 2.725 K\n", - "tmp[tmp<2.725] = 2.725\n", - "\n", - "# Define turbulence at 150 m/s\n", - "trb = (150.0/constants.c.si.value)**2 * ones" + "boundary = np.array([i[0] for i in np.argwhere(p_nms >= np.min(b_nms))])" ] }, { @@ -267,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -308,7 +299,7 @@ "model.parameters.set_dimension (3) # This is a 3D model\n", "model.parameters.set_npoints (npoints) # Number of points\n", "model.parameters.set_nrays (2) # Number of rays \n", - "model.parameters.set_nspecs (3) # Number of species (min. 5)\n", + "model.parameters.set_nspecs (3) # Number of species\n", "model.parameters.set_nlspecs (1) # Number of line species\n", "model.parameters.set_nquads (31) # Number of quadrature points\n", "\n", @@ -333,7 +324,7 @@ "\n", "# model = setup.set_uniform_rays (model) # Uncomment to use all directions\n", "model = setup.set_boundary_condition_CMB (model)\n", - "model = setup.set_linedata_from_LAMDA_file(model, lamda_file, {'considered transitions': [0]})\n", + "model = setup.set_linedata_from_LAMDA_file(model, lamda_file, {'considered transitions': [1]})\n", "# model = setup.set_linedata_from_LAMDA_file(model, lamda_file) # Consider all transitions\n", "model = setup.set_quadrature (model)\n", "\n", @@ -356,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -376,19 +367,19 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -408,19 +399,19 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -456,7 +447,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.9.18" }, "widgets": { "application/vnd.jupyter.widget-state+json": { From 1406c104e7205aa853f6e7a8c4154b96aef59e3d Mon Sep 17 00:00:00 2001 From: MatsEsseldeurs Date: Fri, 13 Oct 2023 10:44:13 +0200 Subject: [PATCH 2/2] Update phantom loading Phantom_3D_column --- .../3_create_Phantom_3D.ipynb | 10 +- .../3_create_Phantom_3D_column.ipynb | 167 +++++++++--------- 2 files changed, 85 insertions(+), 92 deletions(-) diff --git a/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb b/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb index 2da8d06f..98ce6e51 100644 --- a/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb +++ b/docs/src/1_examples/1_post-processing/3_create_Phantom_3D.ipynb @@ -13,7 +13,7 @@ "source": [ "We create a Magritte model from a snapshot of 3D Phantom hydrodynamics simulation.\n", "The hydro model was kindly provided by Jolien Malfait.\n", - "The Phantom binary files are used directly, and are loaded using the [plons](https://plons.readthedocs.io). package." + "The Phantom binary files are used directly, and are loaded using the [plons](https://plons.readthedocs.io) package." ] }, { @@ -65,7 +65,7 @@ "metadata": {}, "outputs": [], "source": [ - "wdir = \"/home/matse/Documents/Phantom_3D/\"" + "wdir = \"/lhome/thomasc/Magritte-examples/Phantom_3D/\"" ] }, { @@ -200,7 +200,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 6960643/6960643 [00:36<00:00, 191760.25it/s]\n" + "100%|██████████| 6960643/6960643 [00:36<00:00, 192379.75it/s]\n" ] } ], @@ -376,7 +376,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -408,7 +408,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, diff --git a/docs/src/1_examples/1_post-processing/3_create_Phantom_3D_column.ipynb b/docs/src/1_examples/1_post-processing/3_create_Phantom_3D_column.ipynb index 535c3d6d..24a9883a 100644 --- a/docs/src/1_examples/1_post-processing/3_create_Phantom_3D_column.ipynb +++ b/docs/src/1_examples/1_post-processing/3_create_Phantom_3D_column.ipynb @@ -13,8 +13,7 @@ "source": [ "We create a Magritte model from a snapshot of 3D Phantom hydrodynamics simulation.\n", "The hydro model was kindly provided by Jolien Malfait.\n", - "Currently, the Phantom binary files can not yet be used directly to extract the snapshot data.\n", - "Hence we use the corresponding `.ascii` files." + "The Phantom binary files are used directly, and are loaded using the [plons](https://plons.readthedocs.io) package." ] }, { @@ -41,6 +40,7 @@ "source": [ "import magritte.setup as setup # Model setup\n", "import magritte.core as magritte # Core functionality\n", + "import plons # Loading phantom data\n", "import numpy as np # Data structures\n", "import warnings # Hide warnings\n", "warnings.filterwarnings('ignore') # especially for yt\n", @@ -105,7 +105,9 @@ }, "outputs": [], "source": [ - "input_file = os.path.join(wdir, 'model_Phantom_3D.ascii') # Phantom snapshot\n", + "dump_file = os.path.join(wdir, 'model_Phantom_3D' ) # Phantom full dump (snapshot)\n", + "setup_file = os.path.join(wdir, 'wind.setup' ) # Phantom setup file\n", + "input_file = os.path.join(wdir, 'wind.in' ) # Phantom input file\n", "model_file = os.path.join(wdir, 'model_Phantom_3D_column_densities.hdf5' ) # Resulting Magritte model\n", "lamda_file = os.path.join(wdir, 'co.txt' ) # Line data file" ] @@ -125,7 +127,9 @@ }, "outputs": [], "source": [ - "input_link = \"https://owncloud.ster.kuleuven.be/index.php/s/6mCZjZ2erTsXq5Y/download\"\n", + "dump_link = \"https://github.com/Ensor-code/phantom-models/raw/main/Malfait+2021/v05e50/wind_v05e50?download=\"\n", + "setup_link = \"https://raw.githubusercontent.com/Ensor-code/phantom-models/main/Malfait%2B2021/v05e50/wind.setup\"\n", + "input_link = \"https://raw.githubusercontent.com/Ensor-code/phantom-models/main/Malfait%2B2021/v05e50/wind.in\"\n", "lamda_link = \"https://home.strw.leidenuniv.nl/~moldata/datafiles/co.dat\"" ] }, @@ -145,6 +149,9 @@ "outputs": [], "source": [ "%%capture\n", + "print(setup_file)\n", + "!wget $dump_link --output-document $dump_file\n", + "!wget $setup_link --output-document $setup_file\n", "!wget $input_link --output-document $input_file\n", "!wget $lamda_link --output-document $lamda_file" ] @@ -160,12 +167,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The script below extracts the required data from the snapshot `.ascii` file." + "The script below extracts the required data from the snapshot `phantom dump` file." ] }, { "cell_type": "code", "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Loading the data\n", + "setupData = plons.LoadSetup(wdir, \"wind\")\n", + "dumpData = plons.LoadFullDump(dump_file, setupData)\n", + "\n", + "position = dumpData[\"position\"]*1e2 # position vectors [cm -> m]\n", + "velocity = dumpData[\"velocity\"]*1e3 # velocity vectors [km/s -> m/s]\n", + "velocity = velocity/constants.c.si.value # velocity vectors [m/s -> 1/c]\n", + "rho = dumpData[\"rho\"] # density [g/cm^3]\n", + "u = dumpData[\"u\"] # internal energy density [erg/g]\n", + "tmp = dumpData[\"Tgas\"] # temperature [K]\n", + "tmp[tmp<2.725] = 2.725 # Cut-off temperatures below 2.725 K\n", + "\n", + "# Extract the number of points\n", + "npoints = len(rho)\n", + "\n", + "# Convenience arrays\n", + "zeros = np.zeros(npoints)\n", + "ones = np.ones (npoints)\n", + "\n", + "# Convert rho (total density) to abundances\n", + "nH2 = rho * 1.0e+6 * constants.N_A.si.value / 2.02\n", + "nCO = nH2 * 1.0e-4\n", + "\n", + "# Define turbulence at 150 m/s\n", + "trb = (150.0/constants.c.si.value)**2 * ones" + ] + }, + { + "cell_type": "code", + "execution_count": 8, "metadata": { "tags": [] }, @@ -174,47 +214,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|█████████████████████████████| 7652884/7652884 [00:36<00:00, 212553.30it/s]\n" + "100%|██████████| 6960643/6960643 [00:36<00:00, 190667.48it/s]\n" ] } ], "source": [ - "# Read the Phantom ascii file\n", - "(x,y,z, h, rho, vx,vy,vz, u) = np.loadtxt(input_file, skiprows=14, usecols=(0,1,2,4,5,6,7,8,9), unpack=True)\n", - "\n", - "# Constants that can be read from ascii file\n", - "velocity_cte = 2.9784608e+06\n", - "density_cte = 5.9410314e-07\n", - "energy_cte = 8.8712277e+12\n", - "\n", - "# Exclude unphysical points\n", - "x = x [h>0.0]\n", - "y = y [h>0.0]\n", - "z = z [h>0.0]\n", - "rho = rho[h>0.0]\n", - "vx = vx [h>0.0]\n", - "vy = vy [h>0.0]\n", - "vz = vz [h>0.0]\n", - "u = u [h>0.0]\n", - "\n", - "# Extract the number of points\n", - "npoints = len(x)\n", - "\n", - "# Convert rho (total density) to abundances\n", - "nH2 = rho * density_cte * 1.0e+6 * constants.N_A.si.value / 2.02\n", - "nCO = nH2 * 1.0e-4\n", - "\n", - "# Convenience arrays\n", - "zeros = np.zeros(npoints)\n", - "ones = np.ones (npoints)\n", - "\n", - "position = np.array((x, y, z )).transpose()\n", - "velocity = np.array((vx,vy,vz)).transpose()\n", - "\n", - "# Convert units\n", - "position *= constants.au.si.value # Convert au to m\n", - "velocity *= (velocity_cte / constants.c.cgs.value) # cm/s to c fraction\n", - "\n", "# Extract Delaunay vertices (= Voronoi neighbors)\n", "delaunay = Delaunay(position)\n", "(indptr, indices) = delaunay.vertex_neighbor_vertices\n", @@ -240,18 +244,7 @@ "# we add all points which fall inside the boundary defined above.\n", "b_nms = np.linalg.norm(position[boundary], axis=1)\n", "p_nms = np.linalg.norm(position, axis=1)\n", - "boundary = np.array([i[0] for i in np.argwhere(p_nms >= np.min(b_nms))])\n", - "\n", - "# Derive temperature from internal energy (assuming adiabatic heating/cooling)\n", - "gamma = 1.2\n", - "mu = 2.381\n", - "tmp = mu * (gamma-1.0) * u * energy_cte * 1.00784 * (units.erg/units.g * constants.u/constants.k_B).to(units.K).value\n", - "\n", - "# Cut-off temperatures below 2.725 K\n", - "tmp[tmp<2.725] = 2.725\n", - "\n", - "# Define turbulence at 150 m/s\n", - "trb = (150.0/constants.c.si.value)**2 * ones" + "boundary = np.array([i[0] for i in np.argwhere(p_nms >= np.min(b_nms))])" ] }, { @@ -279,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "tags": [] }, @@ -323,7 +316,7 @@ "model.parameters.set_dimension (3) # This is a 3D model\n", "model.parameters.set_npoints (npoints) # Number of points\n", "model.parameters.set_nrays (12*1**2) # Number of rays (Must be of the form 12*n**2) \n", - "model.parameters.set_nspecs (3) # Number of species (min. 5)\n", + "model.parameters.set_nspecs (3) # Number of species\n", "model.parameters.set_nlspecs (1) # Number of line species\n", "model.parameters.set_nquads (1) # Number of quadrature points\n", "\n", @@ -366,7 +359,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "tags": [] }, @@ -388,7 +381,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "tags": [] }, @@ -396,13 +389,13 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -422,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "tags": [] }, @@ -430,13 +423,13 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ - "" + "" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -464,7 +457,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "tags": [] }, @@ -477,7 +470,7 @@ "-------------------------------------------\n", " Reading Model... \n", "-------------------------------------------\n", - " model file = /lhome/thomasc/Magritte-examples/Phantom_3D/model_Phantom_3D_column_densities.hdf5\n", + " model file = /home/matse/Documents/Phantom_3D/model_Phantom_3D_column_densities.hdf5\n", "-------------------------------------------\n", "Reading parameters...\n", "Reading points...\n", @@ -505,9 +498,9 @@ "-------------------------------------------\n", " Model read, parameters: \n", "-------------------------------------------\n", - " npoints = 1138671\n", + " npoints = 1034671\n", " nrays = 12\n", - " nboundary = 17849\n", + " nboundary = 12634\n", " nfreqs = 1\n", " nspecs = 3\n", " nlspecs = 1\n", @@ -524,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "tags": [] }, @@ -539,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "tags": [] }, @@ -562,7 +555,7 @@ "0" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -574,7 +567,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "tags": [] }, @@ -582,22 +575,22 @@ { "data": { "text/plain": [ - "array([[2.99298953e+13, 2.99102103e+13, 2.99143501e+13, ...,\n", - " 3.00189196e+13, 2.97792211e+13, 2.84328096e+13],\n", - " [2.96510055e+13, 2.96060593e+13, 2.96320158e+13, ...,\n", - " 2.97980734e+13, 2.95920872e+13, 2.90646146e+13],\n", - " [2.97718121e+13, 2.97616835e+13, 2.97785285e+13, ...,\n", - " 2.96690843e+13, 2.96891287e+13, 2.97133498e+13],\n", + "array([[2.97431359e+17, 2.97487140e+17, 2.97268185e+17, ...,\n", + " 2.97559495e+17, 2.97279476e+17, 2.96782182e+17],\n", + " [2.93738295e+17, 2.93745895e+17, 2.93716192e+17, ...,\n", + " 2.95575936e+17, 2.95439962e+17, 2.95306082e+17],\n", + " [2.93950227e+17, 2.93756021e+17, 2.93883244e+17, ...,\n", + " 2.92900793e+17, 2.93004395e+17, 2.93129412e+17],\n", " ...,\n", - " [2.87721890e+13, 2.87570564e+13, 2.87620280e+13, ...,\n", - " 2.89329604e+13, 2.89466283e+13, 2.96753795e+13],\n", - " [2.86240463e+13, 2.86437313e+13, 2.86395914e+13, ...,\n", - " 2.85350220e+13, 2.87747205e+13, 3.01211319e+13],\n", - " [2.95936273e+13, 2.96385735e+13, 2.96126170e+13, ...,\n", - " 2.90866656e+13, 2.92926518e+13, 2.99742333e+13]])" + " [2.89892177e+17, 2.90038201e+17, 2.90100230e+17, ...,\n", + " 2.92881048e+17, 2.92921493e+17, 2.92929956e+17],\n", + " [2.95875406e+17, 2.95819624e+17, 2.96038580e+17, ...,\n", + " 2.95977203e+17, 2.96257222e+17, 2.96524583e+17],\n", + " [3.00412021e+17, 2.92807866e+17, 3.00434125e+17, ...,\n", + " 2.97764180e+17, 2.97900154e+17, 2.98034034e+17]])" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -626,7 +619,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.9.18" }, "widgets": { "application/vnd.jupyter.widget-state+json": {