#!/usr/bin/env python

import yt
import numpy as np
from yt.units import parsec, Msun
from __future__ import print_function

n_particles = 5e6

# positions
ppx, ppy, ppz = 1e6*np.random.normal(size=(3,n_particles))

# internal energy
ppu = 1e6*np.random.normal(size=n_particles)**2

# masses
ppm = np.ones(n_particles)

# smoothing lengths
pph = np.ones(n_particles)

data = {'particle_position_x' : ppx,
        'particle_position_y' : ppy,
        'particle_position_z' : ppz,
        'particle_mass' : ppm,
        'smoothing_length' : pph,
        'specific_energy' : ppu}

bbox = 1.1*np.array([[min(ppx),max(ppx)],
                     [min(ppy),max(ppy)],
                     [min(ppz),max(ppz)]])

ds = yt.load_particles(data,length_unit=parsec,mass_unit=1e8*Msun,
                       n_ref=256,bbox=bbox)

fn, = add_nearest_neighbor_field("all","particle_position",ds)

dd = ds.all_data()

print(ds.derived_field_list)

p = yt.SlicePlot(ds,'z',('deposit','Gas_smoothed_specific_energy'))
p.save('smoothed-specific-internal-energy.png')
