A tool to analyze results from idefix/pluto simulations (for protoplanetary disks more specifically)
Project description
nonos
nonos is a 2D visualization command line application for planet-disk hydro simulations, as well as a Python library. It works seamlessly with vtu-formatted data from Pluto, Fargo3D and Idefix.
:construction: This project and documentation are under construction :construction:
Ongoing progress
- spherical coordinates
- error:
streamlines
&midplane=False
-> not yet implemented - warning:
isPlanet=False
&corotate=True
-> we don't rotate the grid if there is no planet for now.omegagrid
= 0. - warning:
cartesian=False
&midplane=False
-> plot not optimized for now in the (R,z) plane in polar.
Installation
:warning: Nonos requires Python 3.8 or newer.
python -m pip install git:https://github.com/volodia99/nonos.git@main
Usage
There are three ways to use nonos:
- use the command line tool
- use the local mode with the config.toml file
- write a Python script using the nonos library
1. On the command line
To get help, run
$ nonos --help
nonos -mod d/f [options]
-info
: give the default parameters in the config.toml file.
-dir
: where .vtk files and the inifile are stored ("."
by default).
-mod [d/f]
: display/film (""
home page by default).
-f [str]
: field (for now RHO
, VX1
and VX2
in 2D, + VX3
in 3D, RHO
by default).
-on [int]
: if -mod d
-> we plot the field of the data.on.vtk file (1
by default).
-onend [int]
: if -mod f
and -partial
(15
by default).
-partial
: if -mod f
-> partial movie between -on
and -onend
(false
by default).
-vmin [float]
: minimum value for the data (-0.5
by default).
-vmax [float]
: maximum value for the data (0.5
by default).
-diff
: plot the relative perturbation of the field f, i.e. (f-f0)/f0
(false
by default).
-log
: plot the log of the field f, i.e. log(f)
(false
by default).
-cor
: does the grid corotate? For now, works in pair with -isp
(false
by default).
-isp
: is there a planet in the grid ? (false
by default)
-p [1d/2d]
: 1D axisymmetric radial profile or 2D field (2d
by default).
-mid
/-rz
: 2D plot in the (R-phi) plane or in the (R-z) plane (-mid
by default).
-cart
/-pol
: 2D plot in cartesian or polar coordinates (-cart
by default).
-avr
/-noavr
: do we average is the 3rd dimension, i.e. vertically when -mid
and azimuthally when -rz
(-avr
by default).
-s
: do we compute streamlines? (false
by default)
-stype [random/fixed/lic]
: do we compute random, fixed streams, or do we use line integral convolution? (random
by default)
-srmin [float]
: minimum radius for streamlines computation (0.7
by default).
-srmax [float]
: maximum radius for streamlines computation (1.3
by default).
-sn [int]
: number of streamlines (50
by default).
-ft [float]
: fontsize in the graph (11
by default).
-cmap [str]
: choice of colormap for the -p 2d
maps (RdYlBu_r
by default).
-pbar
: do we display the progress bar when -mod f
? (false
by default)
-multi
: load and save figures in parallel when -mod f
(false
by default).
-cpu [int]
: number of cpus if -multi
(4
by default).
-l
: local mode.
2. Use of the local mode
Run the following command to copy the default config.toml
file to the current working directory.
$ nonos -l
You can then edit it directly, and change the parameters. Then run again:
$ nonos -l
3. Programmatic usage
Here are some example Python scripts using nonos' api.
Example of field
from nonos import InitParamNonos, FieldNonos
init = InitParamNonos(info=True) #info=True gives the default parameters in the param file config.toml
fieldon = FieldNonos(init, field='RHO', on=25, diff=True)
Example of plot without streamlines
import matplotlib.pyplot as plt
from nonos import InitParamNonos, PlotNonos
init = InitParamNonos()
ploton = PlotNonos(init, field='RHO', on=25, diff=True)
fig, ax = plt.subplots()
ploton.plot(ax, cartesian=True)
plt.show()
Example of (R,z) plot with quiver
import matplotlib.pyplot as plt
import numpy as np
from nonos import InitParamNonos, FieldNonos, PlotNonos, StreamNonos
init = InitParamNonos(isPlanet=True, corotate=True)
ploton = PlotNonos(init, field='RHO', on=25, diff=True)
streamon = StreamNonos(init, on=25)
vx1on = FieldNonos(init, field='VX1', on=25)
vr = vx1on.data
vx2on = FieldNonos(init, field='VX3', on=25)
vz = vx2on.data
fig, ax = plt.subplots()
ploton.plot(ax, vmin=-0.15, vmax=0.15, midplane=False, cartesian=True, fontsize=8)
Z,R = np.meshgrid(ploton.zmed, ploton.xmed)
ax.quiver(R[:,::2], Z[:,::2], vr[:,ploton.ny//2,::2], vz[:,ploton.ny//2,::2])
plt.show()
Example of plot with streamlines with a planet
import matplotlib.pyplot as plt
from nonos import InitParamNonos, FieldNonos, PlotNonos, StreamNonos
init = InitParamNonos(isPlanet=True, corotate=True)
ploton = PlotNonos(init, field='RHO', on=25, diff=True)
streamon = StreamNonos(init, on=25)
vx1on = FieldNonos(init, field='VX1', on=25, diff=False, log=False)
vr = vx1on.data
vx2on = FieldNonos(init, field='VX2', on=25, diff=False, log=False)
vphi = vx2on.data
vphi -= vx2on.omegaplanet[25]*vx2on.xmed[:,None,None]
streams = streamon.get_random_streams(vr,vphi,xmin=0.7,xmax=1.3, n=30)
fig, ax = plt.subplots()
ploton.plot(ax, cartesian=True, fontsize=8)
streamon.plot_streams(ax,streams, cartesian=True, color='k', linewidth=2, alpha=0.5)
plt.show()
Example of plot with a comparison between several simulations
import matplotlib.pyplot as plt
from nonos import InitParamNonos, PlotNonos
dirpath = ['path_to_dir1', 'path_to_dir2', 'path_to_dir3']
fig, axes = plt.subplots(figsize=(9,2.5), ncols=len(dirpath))
plt.subplots_adjust(left=0.05, right=0.94, top=0.95, bottom=0.1, wspace=0.4)
for dirp, ax in zip(dirpath, axes):
init = InitParamNonos(directory=dirp)
ploton = PlotNonos(init, field='RHO', on=10, diff=True, directory=dirp)
ploton.plot(ax, cartesian=True, fontsize=6)
plt.show()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nonos-0.1.0.tar.gz
.
File metadata
- Download URL: nonos-0.1.0.tar.gz
- Upload date:
- Size: 34.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73b900cef93a8d5ea94cd820b07fbd561928977000de020b8ef1da55db18438c |
|
MD5 | d73c5ee7a44bb3f889ec97bf3e348d46 |
|
BLAKE2b-256 | 068195aa7de121339cac9046b0f85e1463129cbf52ceb1620c87a992108caf10 |
File details
Details for the file nonos-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: nonos-0.1.0-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57bd87e331acac3da2ebba9359e34339807c831af5ce809fadbffc73afcd2307 |
|
MD5 | 0bc15bae6c28d5f03021368144b577a1 |
|
BLAKE2b-256 | 41cda54ed9d7c7736d4ee409d4071acfd9581c6e6fc7576fc7b316bf6e9ec8f4 |