{ "metadata": { "name": "", "signature": "sha256:54164c4ceb737e62d8c675b1e7def742f9d3f445d44f690905aa19e02eed5879" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Custom Validators and Info Items" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import yt\n", "from yt.analysis_modules.level_sets.api import *\n", "\n", "ds = yt.load(\"IsolatedGalaxy/galaxy0030/galaxy0030\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Set up the same as before." ] }, { "cell_type": "code", "collapsed": false, "input": [ "data_source = ds.disk([0.5, 0.5, 0.5], [0., 0., 1.], \n", " (8, 'kpc'), (1, 'kpc'))\n", "field = (\"gas\", \"density\")\n", "step = 2.0\n", "c_min = 10**np.floor(np.log10(data_source[field]).min() )\n", "c_max = 10**np.floor(np.log10(data_source[field]).max()+1)\n", "master_clump = Clump(data_source, field)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Make a custom validator function." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "The function must take at least one argument." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def min_cell_mass(clump, m_min):\n", " # clumps are data containers\n", " cell_mass = clump.quantities.total_quantity(\"cell_mass\")\n", " return cell_mass >= m_min" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Add this to the list of available validators." ] }, { "cell_type": "code", "collapsed": false, "input": [ "add_validator(\"minimum_cell_mass\", min_cell_mass)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Now make this the validator to use here." ] }, { "cell_type": "code", "collapsed": false, "input": [ "master_clump.add_validator(\"minimum_cell_mass\", ds.quan(1e7, \"Msun\"))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Make a custom info item to write out for each clump." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "This is similar to making a new validator. It is a function that must take at least one argument." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def average_temperature(clump):\n", " t_mean = clump.quantities.weighted_average_quantity(\"temperature\",\n", " \"cell_mass\")\n", " return \"Mean temperature: %e K.\" % t_mean" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Add this to the list of available info items." ] }, { "cell_type": "code", "collapsed": false, "input": [ "add_clump_info(\"average_temperature\", average_temperature)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Now add it to the list of used info items." ] }, { "cell_type": "code", "collapsed": false, "input": [ "master_clump.add_info_item(\"average_temperature\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Begin clump finding!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "find_clumps(master_clump, c_min, c_max, step)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Write out clump information." ] }, { "cell_type": "code", "collapsed": false, "input": [ "write_clump_index(master_clump, 0, \"%s_clump_hierarchy.txt\" % ds)\n", "write_clumps(master_clump,0, \"%s_clumps.txt\" % ds)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "!cat galaxy0030_clump_hierarchy.txt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Clump at level 0:\r\n", "Cells: 100134.\r\n", "Mass: 1.296926e+09 Msun.\r\n", "Jeans Mass (mass-weighted): 4.746875e+09 Msolar.\r\n", "Jeans Mass (volume-weighted): 1.223489e+11 Msolar.\r\n", "Max grid level: 8.\r\n", "Min number density: 1.661908e-04 cm^-3.\r\n", "Max number density: 5.601262e+00 cm^-3.\r\n", "Mean temperature: 1.349015e+04 K.\r\n", "Mean temperature: 1.349015e+04 K.\r\n", "\r\n", "\tClump at level 1:\r\n", "\tCells: 94.\r\n", "\tMass: 1.784123e+07 Msun.\r\n", "\tJeans Mass (mass-weighted): 6.287895e+07 Msolar.\r\n", "\tJeans Mass (volume-weighted): 6.269044e+07 Msolar.\r\n", "\tMax grid level: 8.\r\n", "\tMin number density: 3.149490e+00 cm^-3.\r\n", "\tMax number density: 4.996931e+00 cm^-3.\r\n", "\tMean temperature: 1.344124e+04 K.\r\n", "\tMean temperature: 1.344124e+04 K.\r\n", "\r\n", "\tClump at level 1:\r\n", "\tCells: 106.\r\n", "\tMass: 2.025443e+07 Msun.\r\n", "\tJeans Mass (mass-weighted): 6.306800e+07 Msolar.\r\n", "\tJeans Mass (volume-weighted): 6.325248e+07 Msolar.\r\n", "\tMax grid level: 8.\r\n", "\tMin number density: 3.251722e+00 cm^-3.\r\n", "\tMax number density: 4.065772e+00 cm^-3.\r\n", "\tMean temperature: 1.426605e+04 K.\r\n", "\tMean temperature: 1.426605e+04 K.\r\n", "\r\n", "\tClump at level 1:\r\n", "\tCells: 104.\r\n", "\tMass: 1.966537e+07 Msun.\r\n", "\tJeans Mass (mass-weighted): 8.874298e+07 Msolar.\r\n", "\tJeans Mass (volume-weighted): 8.754599e+07 Msolar.\r\n", "\tMax grid level: 8.\r\n", "\tMin number density: 3.161182e+00 cm^-3.\r\n", "\tMax number density: 5.285985e+00 cm^-3.\r\n", "\tMean temperature: 1.558691e+04 K.\r\n", "\tMean temperature: 1.558691e+04 K.\r\n", "\r\n", "\tClump at level 1:\r\n", "\tCells: 179.\r\n", "\tMass: 3.434637e+07 Msun.\r\n", "\tJeans Mass (mass-weighted): 8.451847e+07 Msolar.\r\n", "\tJeans Mass (volume-weighted): 8.390353e+07 Msolar.\r\n", "\tMax grid level: 8.\r\n", "\tMin number density: 3.178488e+00 cm^-3.\r\n", "\tMax number density: 5.601262e+00 cm^-3.\r\n", "\tMean temperature: 1.520796e+04 K.\r\n", "\tMean temperature: 1.520796e+04 K.\r\n", "\r\n" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "!cat galaxy0030_clumps.txt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Clump:\r\n", "Cells: 94.\r\n", "Mass: 1.784123e+07 Msun.\r\n", "Jeans Mass (mass-weighted): 6.287895e+07 Msolar.\r\n", "Jeans Mass (volume-weighted): 6.269044e+07 Msolar.\r\n", "Max grid level: 8.\r\n", "Min number density: 3.149490e+00 cm^-3.\r\n", "Max number density: 4.996931e+00 cm^-3.\r\n", "Mean temperature: 1.344124e+04 K.\r\n", "Mean temperature: 1.344124e+04 K.\r\n", "\r\n", "Clump:\r\n", "Cells: 106.\r\n", "Mass: 2.025443e+07 Msun.\r\n", "Jeans Mass (mass-weighted): 6.306800e+07 Msolar.\r\n", "Jeans Mass (volume-weighted): 6.325248e+07 Msolar.\r\n", "Max grid level: 8.\r\n", "Min number density: 3.251722e+00 cm^-3.\r\n", "Max number density: 4.065772e+00 cm^-3.\r\n", "Mean temperature: 1.426605e+04 K.\r\n", "Mean temperature: 1.426605e+04 K.\r\n", "\r\n", "Clump:\r\n", "Cells: 104.\r\n", "Mass: 1.966537e+07 Msun.\r\n", "Jeans Mass (mass-weighted): 8.874298e+07 Msolar.\r\n", "Jeans Mass (volume-weighted): 8.754599e+07 Msolar.\r\n", "Max grid level: 8.\r\n", "Min number density: 3.161182e+00 cm^-3.\r\n", "Max number density: 5.285985e+00 cm^-3.\r\n", "Mean temperature: 1.558691e+04 K.\r\n", "Mean temperature: 1.558691e+04 K.\r\n", "\r\n", "Clump:\r\n", "Cells: 179.\r\n", "Mass: 3.434637e+07 Msun.\r\n", "Jeans Mass (mass-weighted): 8.451847e+07 Msolar.\r\n", "Jeans Mass (volume-weighted): 8.390353e+07 Msolar.\r\n", "Max grid level: 8.\r\n", "Min number density: 3.178488e+00 cm^-3.\r\n", "Max number density: 5.601262e+00 cm^-3.\r\n", "Mean temperature: 1.520796e+04 K.\r\n", "Mean temperature: 1.520796e+04 K.\r\n", "\r\n" ] } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Get a list of the leaf clumps and display them in a projection." ] }, { "cell_type": "code", "collapsed": false, "input": [ "leaf_clumps = get_lowest_clumps(master_clump)\n", "prj = yt.ProjectionPlot(ds, 2, field, center='c', width=(20,'kpc'))\n", "prj.annotate_clumps(leaf_clumps)\n", "prj.show()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }