Skip to main content

Small tool to create uniform data cubes of FLASH datasets. Port from bitbucket.org/pierrenbg/flash-amr-tools

Project description

flash-amr-tools

Small tool to create uniform data cubes of FLASH datasets. Port from bitbucket.org/pierrenbg/flash-amr-tools

Dependencies

  • h5py
  • numpy

Installation

This can be done as simply as

pip install flash-amr-tools

Usage

  1. Specify your filename, and optionally the region of interest, that you want to look at:
filename = "SILCC_hdf5_plt_cnt_0150"
xmin = np.array([2.8931249e+20, -5.78625013e+20, -1.9287499e+20], dtype=np.float32)
xmax = np.array([6.7506249e+20, -1.92874993e+20,  1.9287499e+20], dtype=np.float32)

If no xmin, xmax are provided, then it defaults to using the whole domain.

  1. Get the block list corresponding to the region of interest.
import flash_amr_tools

blist, brefs, bns = flash_amr_tools.get_true_blocks(filename, xmin, xmax)

This will calculate the complete list of blocks, the maximum and minimum refinement, and the number of blocks at the lowest refinement level within the region of interest.

  1. Read in the data using h5py
import h5py

# read in the data
pf = h5py.File(filename)
dens = pf["dens"][()][blist]  # ex. density
ref_lvl = pf["refine level"][()][blist]
bbox = pf["bounding box"][()][blist]
bsize = pf["block size"][()][blist]
pf.close()

Note that the naming convention of the argument must follow the variable name in flash.par. Note that the refinement levels, the bounding box, and the block size are necessary to determine the coordinates and the refinement levels in each block.

  1. Convert the data into a uniform cube
dens_cube = flash_amr_tools.get_cube(dens, ref_lvl=ref_lvl, bbox=bbox, bsize=bsize, brefs=brefs, bns=bns)

This now transforms the density as a cube with gridsizes following the highest resolution.

Plotting Routines

Optional plotting routines for slice & on-axis (weighted) projections are also available.

Slices

To retrive the slice, we require the dataset, the position, and the axis(0, 1, or 2) in which the slicing takes place.

# ex. density slice along the mid-plane
dens_sl = flash_amr_tools.get_slice(dens, pos=0.5, axis=2, ref_lvl=ref_lvl, bbox=bbox, bsize=bsize, brefs=brefs, bns=bns)

On-Axis Projections

To obtain the projection, we require the dataset and the axis(0, 1, or 2) of the projection.

# ex. column density along the z-axis
cdens = flash_amr_tools.get_cdens(dens, axis=2, ref_lvl=ref_lvl, bbox=bbox, bsize=bsize, brefs=brefs, bns=bns)

Optionally, one can also specify weights to have weighted projections instead. Note that the shape of the weights must be the same as that of the dataset.

# ex. temperature-weighted projection along the z-axis

# first read in other data from h5py
# read in the data
pf = h5py.File(filename)
temp = pf["temp"][()][blist]  # temperature
pf.close()

# now get temperature-weighted projection along z-axis
cdens_wtemp = flash_amr_tools.get_cdens(dens, axis=2, ref_lvl=ref_lvl, bbox=bbox, bsize=bsize, brefs=brefs, bns=bns, weights=temp)

Optional routines

Further initialisation routines

One can also optionally force a region to have maximum / minimum refinement by passing the following arguments:

blist, brefs, bns = flash_amr_tools.get_true_blocks(filename, xmin, xmax, max_ref_given=10, min_ref_given=3)

which may be useful to conserve memory.

Cubes of refinement levels

One can also retrieve the refinement level as a uniform grid as well:

reflvl_cube = flash_amr_tools.get_reflvl_cube(ref_lvl=ref_lvl, bbox=bbox, bsize=bsize, brefs=brefs, bns=bns)

which can be used for (for example) plotting the AMR mesh grid.

Vector quantities

One can also retrive a uniform grid of vector quantities (ex. velocity, magnetic field) from the following:

# read in and save vectorial data as list
pf = h5py.File(filename)
vel_vec = [pf["velx"][()][blist], pf["vely"][()][blist], pf["velz"][()][blist]]
ref_lvl = pf["refine level"][()][blist]
bbox = pf["bounding box"][()][blist]
bsize = pf["block size"][()][blist]
pf.close()

# return uniform cube of vectorial data in each direction
vel_cube = flash_amr_tools.get_vector_cube(vel_vec, ref_lvl=ref_lvl, bbox=bbox, bsize=bsize, brefs=brefs, bns=bns)

This will return a 4D array consisting of a 3-D array in each direction (as the last axis).

License

This code is under the BSD3 license. See LICENSE for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flash_amr_tools-1.1.0a1.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

flash_amr_tools-1.1.0a1-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file flash_amr_tools-1.1.0a1.tar.gz.

File metadata

  • Download URL: flash_amr_tools-1.1.0a1.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for flash_amr_tools-1.1.0a1.tar.gz
Algorithm Hash digest
SHA256 d627168f75545df73849bf2acb0d2211fc031620e7250d48ceea2427e2117fe3
MD5 21476d2c261bdd94817bbf8b5038b08e
BLAKE2b-256 6c1cc98a7882ad58db8ae242661cf29d8dcdaad6a10a06be28bcc58a6169904a

See more details on using hashes here.

Provenance

File details

Details for the file flash_amr_tools-1.1.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for flash_amr_tools-1.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 936cc2c9477fda3d71e7b94e48ada9e5118681ffe50a0504f7b0fc6622d95f76
MD5 9d685f3d64b00885f4b3c97f807507e5
BLAKE2b-256 844e6a8bc1d7fa4101d00582591285a18ea96045e3f0f6f2a9b177da93154609

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page