[yt-svn] commit/yt: 13 new changesets

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Fri Dec 8 09:58:12 PST 2017


13 new commits in yt:

https://bitbucket.org/yt_analysis/yt/commits/bb8aa068e77b/
Changeset:   bb8aa068e77b
User:        atmyers
Date:        2017-11-20 20:44:00+00:00
Summary:     adding some additional field aliases for WarpX datasets.
Affected #:  1 file

diff -r dca5e454d03e59c1f9ab4a52301e74dc12f245e7 -r bb8aa068e77bd0fd6ba07de9c3923aa6c7a9b545 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -55,19 +55,19 @@
 class WarpXFieldInfo(FieldInfoContainer):
 
     known_other_fields = (
-        ("Bx", ("T", ["magnetic_field_x"], None)),
-        ("By", ("T", ["magnetic_field_y"], None)),
-        ("Bz", ("T", ["magnetic_field_z"], None)),
-        ("Ex", ("V/m", ["electric_field_x"], None)),
-        ("Ey", ("V/m", ["electric_field_y"], None)),
-        ("Ez", ("V/m", ["electric_field_z"], None)),
-        ("jx", ("A", ["current_x"], None)),
-        ("jy", ("A", ["current_y"], None)),
-        ("jz", ("A", ["current_z"], None)),
+        ("Bx", ("T",   ["magnetic_field_x", "B_x"], None)),
+        ("By", ("T",   ["magnetic_field_y", "B_y"], None)),
+        ("Bz", ("T",   ["magnetic_field_z", "B_z"], None)),
+        ("Ex", ("V/m", ["electric_field_x", "E_x"], None)),
+        ("Ey", ("V/m", ["electric_field_y", "E_y"], None)),
+        ("Ez", ("V/m", ["electric_field_z". "E_z"], None)),
+        ("jx", ("A",   ["current_x", "Jx", "J_x"],  None)),
+        ("jy", ("A",   ["current_y", "Jy", "J_y"],  None)),
+        ("jz", ("A",   ["current_z", "Jz", "J_z"],  None)),
     )
 
     known_particle_fields = (
-        ("particle_weight", ("", [], None)),
+        ("particle_weight", ("", ["particle_weighting"], None)),
         ("particle_position_x", ("m", [], None)),
         ("particle_position_y", ("m", [], None)),
         ("particle_position_z", ("m", [], None)),


https://bitbucket.org/yt_analysis/yt/commits/7378b729ec1c/
Changeset:   7378b729ec1c
User:        atmyers
Date:        2017-11-20 21:27:38+00:00
Summary:     defining some additional fields
Affected #:  1 file

diff -r bb8aa068e77bd0fd6ba07de9c3923aa6c7a9b545 -r 7378b729ec1cccbb8fc75a2613f250157084f96b yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -15,7 +15,7 @@
 import re
 
 from yt.utilities.physical_constants import \
-    boltzmann_constant_cgs, amu_cgs
+    boltzmann_constant_cgs, amu_cgs, c
 from yt.fields.field_info_container import \
     FieldInfoContainer
 from yt.units import YTQuantity
@@ -71,9 +71,9 @@
         ("particle_position_x", ("m", [], None)),
         ("particle_position_y", ("m", [], None)),
         ("particle_position_z", ("m", [], None)),
-        ("particle_velocity_x", ("m/s", [], None)),
-        ("particle_velocity_y", ("m/s", [], None)),
-        ("particle_velocity_z", ("m/s", [], None)),
+        ("particle_momentum_x", ("kg*m/s", [], None)),
+        ("particle_momentum_y", ("kg*m/s", [], None)),
+        ("particle_momentum_z", ("kg*m/s", [], None)),
     )
 
     extra_union_fields = (
@@ -108,6 +108,37 @@
                        function=get_charge,
                        units="C")
 
+        def get_energy(field, data):
+            p2 = data[ptype, 'particle_momentum_x']**2 + \
+                 data[ptype, 'particle_momentum_y']**2 + \
+                 data[ptype, 'particle_momentum_z']**2
+            return np.sqrt(p2 * c**2 + data[ptype, 'particle_mass']**2 * c**4)
+
+        self.add_field((ptype, "particle_energy"), sampling_type="particle",
+                       function=get_energy,
+                       units="J")
+
+        def get_velocity_x(field, data):
+            return c**2 * data[ptype, 'particle_momentum_x'] / data[ptype, 'particle_energy']
+
+        def get_velocity_y(field, data):
+            return c**2 * data[ptype, 'particle_momentum_y'] / data[ptype, 'particle_energy']
+
+        def get_velocity_z(field, data):
+            return c**2 * data[ptype, 'particle_momentum_z'] / data[ptype, 'particle_energy']
+            
+        self.add_field((ptype, "particle_velocity_x"), sampling_type="particle",
+                       function=get_velocity_x,
+                       units="m/s")
+
+        self.add_field((ptype, "particle_velocity_y"), sampling_type="particle",
+                       function=get_velocity_y,
+                       units="m/s")
+
+        self.add_field((ptype, "particle_velocity_z"), sampling_type="particle",
+                       function=get_velocity_z,
+                       units="m/s")
+                                    
         super(WarpXFieldInfo, self).setup_particle_fields(ptype)
 
 


https://bitbucket.org/yt_analysis/yt/commits/f6e37d90fa61/
Changeset:   f6e37d90fa61
User:        atmyers
Date:        2017-11-20 21:27:56+00:00
Summary:     fix typo.
Affected #:  1 file

diff -r 7378b729ec1cccbb8fc75a2613f250157084f96b -r f6e37d90fa61c884239bb0d4b4237a5973a6d599 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -60,7 +60,7 @@
         ("Bz", ("T",   ["magnetic_field_z", "B_z"], None)),
         ("Ex", ("V/m", ["electric_field_x", "E_x"], None)),
         ("Ey", ("V/m", ["electric_field_y", "E_y"], None)),
-        ("Ez", ("V/m", ["electric_field_z". "E_z"], None)),
+        ("Ez", ("V/m", ["electric_field_z", "E_z"], None)),
         ("jx", ("A",   ["current_x", "Jx", "J_x"],  None)),
         ("jy", ("A",   ["current_y", "Jy", "J_y"],  None)),
         ("jz", ("A",   ["current_z", "Jz", "J_z"],  None)),


https://bitbucket.org/yt_analysis/yt/commits/aee3bce5ac62/
Changeset:   aee3bce5ac62
User:        atmyers
Date:        2017-11-20 21:34:52+00:00
Summary:     add missing import
Affected #:  1 file

diff -r f6e37d90fa61c884239bb0d4b4237a5973a6d599 -r aee3bce5ac626befaf1dba7533dbf245c815c7c4 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -13,6 +13,7 @@
 
 import string
 import re
+import numpy as np
 
 from yt.utilities.physical_constants import \
     boltzmann_constant_cgs, amu_cgs, c


https://bitbucket.org/yt_analysis/yt/commits/206df35ea708/
Changeset:   206df35ea708
User:        atmyers
Date:        2017-11-21 18:47:05+00:00
Summary:     generalize the field info container so that the default fluid type doesn't have to be 'gas'
Affected #:  2 files

diff -r aee3bce5ac626befaf1dba7533dbf245c815c7c4 -r 206df35ea7084daaf076fb2975c94370ea9b0227 yt/data_objects/static_output.py
--- a/yt/data_objects/static_output.py
+++ b/yt/data_objects/static_output.py
@@ -565,7 +565,7 @@
                 mylog.debug("zero common fields: skipping particle union 'all'")
         self.field_info.setup_extra_union_fields()
         mylog.debug("Loading field plugins.")
-        self.field_info.load_all_plugins()
+        self.field_info.load_all_plugins(self.default_fluid_type)
         deps, unloaded = self.field_info.check_derived_fields()
         self.field_dependencies.update(deps)
         self.fields = FieldTypeContainer(self)

diff -r aee3bce5ac626befaf1dba7533dbf245c815c7c4 -r 206df35ea7084daaf076fb2975c94370ea9b0227 yt/fields/field_info_container.py
--- a/yt/fields/field_info_container.py
+++ b/yt/fields/field_info_container.py
@@ -173,7 +173,7 @@
             #print "Aliasing %s => %s" % (alias, source)
             self.alias(alias, source)
 
-    def setup_fluid_aliases(self):
+    def setup_fluid_aliases(self, ftype='gas'):
         known_other_fields = dict(self.known_other_fields)
         for field in sorted(self.field_list):
             if not isinstance(field, tuple):
@@ -199,7 +199,7 @@
             self.add_output_field(field, sampling_type="cell", units = units,
                                   display_name = display_name)
             for alias in aliases:
-                self.alias(("gas", alias), field)
+                self.alias((ftype, alias), field)
 
     def add_field(self, name, sampling_type, function=None, **kwargs):
         """


https://bitbucket.org/yt_analysis/yt/commits/64c14511ef8b/
Changeset:   64c14511ef8b
User:        atmyers
Date:        2017-11-21 18:48:12+00:00
Summary:     make the default fluid type for WarpX called 'mesh'
Affected #:  2 files

diff -r 206df35ea7084daaf076fb2975c94370ea9b0227 -r 64c14511ef8b6ebf23ffb830c0ad145363966326 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -1499,6 +1499,10 @@
                  units_override=None,
                  unit_system="mks"):
 
+        self.default_fluid_type = "mesh"
+        self.default_field = ("mesh", "density")
+        self.fluid_types = ("mesh", "index")
+
         super(WarpXDataset, self).__init__(output_dir,
                                            cparam_filename,
                                            fparam_filename,

diff -r 206df35ea7084daaf076fb2975c94370ea9b0227 -r 64c14511ef8b6ebf23ffb830c0ad145363966326 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -21,6 +21,7 @@
     FieldInfoContainer
 from yt.units import YTQuantity
 
+
 rho_units = "code_mass / code_length**3"
 mom_units = "code_mass / (code_time * code_length**2)"
 eden_units = "code_mass / (code_time**2 * code_length)" # erg / cm^3
@@ -91,6 +92,14 @@
             finfo = self.__getitem__(('raw', field))
             finfo.nodal_flag = ds.nodal_flags[field]
 
+    def setup_fluid_fields(self):
+        for field in self.known_other_fields:
+            fname = field[0]
+            self.alias(("mesh", fname), ('boxlib', fname))
+
+    def setup_fluid_aliases(self):
+        super(WarpXFieldInfo, self).setup_fluid_aliases("mesh")
+
     def setup_particle_fields(self, ptype):
 
         def get_mass(field, data):


https://bitbucket.org/yt_analysis/yt/commits/9fd34ec5c5b1/
Changeset:   9fd34ec5c5b1
User:        atmyers
Date:        2017-11-28 18:27:27+00:00
Summary:     update test answers for the boxlib frontend.
Affected #:  1 file

diff -r 64c14511ef8b6ebf23ffb830c0ad145363966326 -r 9fd34ec5c5b14292b193104cf0e6aa6153072675 tests/tests.yaml
--- a/tests/tests.yaml
+++ b/tests/tests.yaml
@@ -77,7 +77,7 @@
     - yt/visualization/tests/test_line_plots.py:test_line_plot
     - yt/visualization/tests/test_line_plots.py:test_multi_line_plot
 
-  local_boxlib_005:
+  local_boxlib_006:
     - yt/frontends/boxlib/tests/test_outputs.py:test_radadvect
     - yt/frontends/boxlib/tests/test_outputs.py:test_radtube
     - yt/frontends/boxlib/tests/test_outputs.py:test_star
@@ -87,7 +87,7 @@
     - yt/frontends/boxlib/tests/test_outputs.py:test_units_override
     - yt/frontends/boxlib/tests/test_outputs.py:test_raw_fields
 
-  local_boxlib_particles_004:
+  local_boxlib_particles_005:
     - yt/frontends/boxlib/tests/test_outputs.py:test_LyA
     - yt/frontends/boxlib/tests/test_outputs.py:test_nyx_particle_io
     - yt/frontends/boxlib/tests/test_outputs.py:test_castro_particle_io


https://bitbucket.org/yt_analysis/yt/commits/b1f1ba8d860a/
Changeset:   b1f1ba8d860a
User:        atmyers
Date:        2017-11-28 21:28:25+00:00
Summary:     add velocity back to the list of known particle fields (for backwards compatibility)
Affected #:  1 file

diff -r 9fd34ec5c5b14292b193104cf0e6aa6153072675 -r b1f1ba8d860aa97c97547fe879f1e5e7968c7152 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -73,6 +73,9 @@
         ("particle_position_x", ("m", [], None)),
         ("particle_position_y", ("m", [], None)),
         ("particle_position_z", ("m", [], None)),
+        ("particle_velocity_x", ("m/s", [], None)),
+        ("particle_velocity_y", ("m/s", [], None)),
+        ("particle_velocity_z", ("m/s", [], None)),
         ("particle_momentum_x", ("kg*m/s", [], None)),
         ("particle_momentum_y", ("kg*m/s", [], None)),
         ("particle_momentum_z", ("kg*m/s", [], None)),


https://bitbucket.org/yt_analysis/yt/commits/86fd2becbd61/
Changeset:   86fd2becbd61
User:        atmyers
Date:        2017-12-05 18:33:05+00:00
Summary:     add --with-isolation argument.
Affected #:  1 file

diff -r b1f1ba8d860aa97c97547fe879f1e5e7968c7152 -r 86fd2becbd61d93d00ca2aaa7dfc6d41600d7bc2 tests/nose_runner.py
--- a/tests/nose_runner.py
+++ b/tests/nose_runner.py
@@ -75,7 +75,8 @@
     tests = yaml.load(data)
 
     base_argv = ['--local-dir=%s' % answers_dir, '-s', '--nologcapture',
-                 '--with-answer-testing', '--answer-big-data', '--local']
+                 '--with-answer-testing', '--answer-big-data', '--local',
+                 '--with-isolation']
     args = []
 
     for test in list(tests["other_tests"].keys()):


https://bitbucket.org/yt_analysis/yt/commits/f5be93296585/
Changeset:   f5be93296585
User:        atmyers
Date:        2017-12-06 00:08:47+00:00
Summary:     revert add --with-isolation
Affected #:  1 file

diff -r 86fd2becbd61d93d00ca2aaa7dfc6d41600d7bc2 -r f5be93296585d7b831f69ed9bda8bc649108fd20 tests/nose_runner.py
--- a/tests/nose_runner.py
+++ b/tests/nose_runner.py
@@ -75,8 +75,7 @@
     tests = yaml.load(data)
 
     base_argv = ['--local-dir=%s' % answers_dir, '-s', '--nologcapture',
-                 '--with-answer-testing', '--answer-big-data', '--local',
-                 '--with-isolation']
+                 '--with-answer-testing', '--answer-big-data', '--local']
     args = []
 
     for test in list(tests["other_tests"].keys()):


https://bitbucket.org/yt_analysis/yt/commits/a234f9d22156/
Changeset:   a234f9d22156
User:        atmyers
Date:        2017-12-06 22:49:03+00:00
Summary:     always have a 'raw' fluid type
Affected #:  1 file

diff -r f5be93296585d7b831f69ed9bda8bc649108fd20 -r a234f9d221564d77325673e779f157664d0b8cf9 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -1464,7 +1464,6 @@
 
         # now detect the optional, non-cell-centered fields
         self.raw_file = self.ds.output_dir + "/raw_fields/"
-        self.ds.fluid_types += ("raw",)
         self.raw_fields = _read_raw_field_names(self.raw_file + 'Level_0/')
         self.field_list += [('raw', f) for f in self.raw_fields]
         self.raw_field_map = {}
@@ -1501,7 +1500,7 @@
 
         self.default_fluid_type = "mesh"
         self.default_field = ("mesh", "density")
-        self.fluid_types = ("mesh", "index")
+        self.fluid_types = ("mesh", "index", "raw")
 
         super(WarpXDataset, self).__init__(output_dir,
                                            cparam_filename,


https://bitbucket.org/yt_analysis/yt/commits/b530de41ee00/
Changeset:   b530de41ee00
User:        atmyers
Date:        2017-12-07 00:56:50+00:00
Summary:     bump boxlib answers
Affected #:  1 file

diff -r a234f9d221564d77325673e779f157664d0b8cf9 -r b530de41ee001b6e0dbc4d48ae0ff9499ae307f6 tests/tests.yaml
--- a/tests/tests.yaml
+++ b/tests/tests.yaml
@@ -77,7 +77,7 @@
     - yt/visualization/tests/test_line_plots.py:test_line_plot
     - yt/visualization/tests/test_line_plots.py:test_multi_line_plot
 
-  local_boxlib_006:
+  local_boxlib_007:
     - yt/frontends/boxlib/tests/test_outputs.py:test_radadvect
     - yt/frontends/boxlib/tests/test_outputs.py:test_radtube
     - yt/frontends/boxlib/tests/test_outputs.py:test_star


https://bitbucket.org/yt_analysis/yt/commits/a374b49fe309/
Changeset:   a374b49fe309
User:        ngoldbaum
Date:        2017-12-08 17:57:58+00:00
Summary:     Merge pull request #1634 from atmyers/warpx_field_names

Warpx field name improvements
Affected #:  6 files

diff -r 0535ffa5fe9afe653f5f53c85e65a1521769a8d3 -r a374b49fe3098b802b33caaa82ae541e9f66b777 tests/tests.yaml
--- a/tests/tests.yaml
+++ b/tests/tests.yaml
@@ -77,7 +77,7 @@
     - yt/visualization/tests/test_line_plots.py:test_line_plot
     - yt/visualization/tests/test_line_plots.py:test_multi_line_plot
 
-  local_boxlib_005:
+  local_boxlib_007:
     - yt/frontends/boxlib/tests/test_outputs.py:test_radadvect
     - yt/frontends/boxlib/tests/test_outputs.py:test_radtube
     - yt/frontends/boxlib/tests/test_outputs.py:test_star
@@ -87,7 +87,7 @@
     - yt/frontends/boxlib/tests/test_outputs.py:test_units_override
     - yt/frontends/boxlib/tests/test_outputs.py:test_raw_fields
 
-  local_boxlib_particles_004:
+  local_boxlib_particles_005:
     - yt/frontends/boxlib/tests/test_outputs.py:test_LyA
     - yt/frontends/boxlib/tests/test_outputs.py:test_nyx_particle_io
     - yt/frontends/boxlib/tests/test_outputs.py:test_castro_particle_io

diff -r 0535ffa5fe9afe653f5f53c85e65a1521769a8d3 -r a374b49fe3098b802b33caaa82ae541e9f66b777 yt/data_objects/static_output.py
--- a/yt/data_objects/static_output.py
+++ b/yt/data_objects/static_output.py
@@ -565,7 +565,7 @@
                 mylog.debug("zero common fields: skipping particle union 'all'")
         self.field_info.setup_extra_union_fields()
         mylog.debug("Loading field plugins.")
-        self.field_info.load_all_plugins()
+        self.field_info.load_all_plugins(self.default_fluid_type)
         deps, unloaded = self.field_info.check_derived_fields()
         self.field_dependencies.update(deps)
         self.fields = FieldTypeContainer(self)

diff -r 0535ffa5fe9afe653f5f53c85e65a1521769a8d3 -r a374b49fe3098b802b33caaa82ae541e9f66b777 yt/fields/field_info_container.py
--- a/yt/fields/field_info_container.py
+++ b/yt/fields/field_info_container.py
@@ -173,7 +173,7 @@
             #print "Aliasing %s => %s" % (alias, source)
             self.alias(alias, source)
 
-    def setup_fluid_aliases(self):
+    def setup_fluid_aliases(self, ftype='gas'):
         known_other_fields = dict(self.known_other_fields)
         for field in sorted(self.field_list):
             if not isinstance(field, tuple):
@@ -199,7 +199,7 @@
             self.add_output_field(field, sampling_type="cell", units = units,
                                   display_name = display_name)
             for alias in aliases:
-                self.alias(("gas", alias), field)
+                self.alias((ftype, alias), field)
 
     def add_field(self, name, sampling_type, function=None, **kwargs):
         """

diff -r 0535ffa5fe9afe653f5f53c85e65a1521769a8d3 -r a374b49fe3098b802b33caaa82ae541e9f66b777 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -1469,7 +1469,6 @@
 
         # now detect the optional, non-cell-centered fields
         self.raw_file = self.ds.output_dir + "/raw_fields/"
-        self.ds.fluid_types += ("raw",)
         self.raw_fields = _read_raw_field_names(self.raw_file + 'Level_0/')
         self.field_list += [('raw', f) for f in self.raw_fields]
         self.raw_field_map = {}
@@ -1504,6 +1503,10 @@
                  units_override=None,
                  unit_system="mks"):
 
+        self.default_fluid_type = "mesh"
+        self.default_field = ("mesh", "density")
+        self.fluid_types = ("mesh", "index", "raw")
+
         super(WarpXDataset, self).__init__(output_dir,
                                            cparam_filename,
                                            fparam_filename,

diff -r 0535ffa5fe9afe653f5f53c85e65a1521769a8d3 -r a374b49fe3098b802b33caaa82ae541e9f66b777 yt/frontends/boxlib/fields.py
--- a/yt/frontends/boxlib/fields.py
+++ b/yt/frontends/boxlib/fields.py
@@ -13,13 +13,15 @@
 
 import string
 import re
+import numpy as np
 
 from yt.utilities.physical_constants import \
-    boltzmann_constant_cgs, amu_cgs
+    boltzmann_constant_cgs, amu_cgs, c
 from yt.fields.field_info_container import \
     FieldInfoContainer
 from yt.units import YTQuantity
 
+
 rho_units = "code_mass / code_length**3"
 mom_units = "code_mass / (code_time * code_length**2)"
 eden_units = "code_mass / (code_time**2 * code_length)" # erg / cm^3
@@ -55,25 +57,28 @@
 class WarpXFieldInfo(FieldInfoContainer):
 
     known_other_fields = (
-        ("Bx", ("T", ["magnetic_field_x"], None)),
-        ("By", ("T", ["magnetic_field_y"], None)),
-        ("Bz", ("T", ["magnetic_field_z"], None)),
-        ("Ex", ("V/m", ["electric_field_x"], None)),
-        ("Ey", ("V/m", ["electric_field_y"], None)),
-        ("Ez", ("V/m", ["electric_field_z"], None)),
-        ("jx", ("A", ["current_x"], None)),
-        ("jy", ("A", ["current_y"], None)),
-        ("jz", ("A", ["current_z"], None)),
+        ("Bx", ("T",   ["magnetic_field_x", "B_x"], None)),
+        ("By", ("T",   ["magnetic_field_y", "B_y"], None)),
+        ("Bz", ("T",   ["magnetic_field_z", "B_z"], None)),
+        ("Ex", ("V/m", ["electric_field_x", "E_x"], None)),
+        ("Ey", ("V/m", ["electric_field_y", "E_y"], None)),
+        ("Ez", ("V/m", ["electric_field_z", "E_z"], None)),
+        ("jx", ("A",   ["current_x", "Jx", "J_x"],  None)),
+        ("jy", ("A",   ["current_y", "Jy", "J_y"],  None)),
+        ("jz", ("A",   ["current_z", "Jz", "J_z"],  None)),
     )
 
     known_particle_fields = (
-        ("particle_weight", ("", [], None)),
+        ("particle_weight", ("", ["particle_weighting"], None)),
         ("particle_position_x", ("m", [], None)),
         ("particle_position_y", ("m", [], None)),
         ("particle_position_z", ("m", [], None)),
         ("particle_velocity_x", ("m/s", [], None)),
         ("particle_velocity_y", ("m/s", [], None)),
         ("particle_velocity_z", ("m/s", [], None)),
+        ("particle_momentum_x", ("kg*m/s", [], None)),
+        ("particle_momentum_y", ("kg*m/s", [], None)),
+        ("particle_momentum_z", ("kg*m/s", [], None)),
     )
 
     extra_union_fields = (
@@ -90,6 +95,14 @@
             finfo = self.__getitem__(('raw', field))
             finfo.nodal_flag = ds.nodal_flags[field]
 
+    def setup_fluid_fields(self):
+        for field in self.known_other_fields:
+            fname = field[0]
+            self.alias(("mesh", fname), ('boxlib', fname))
+
+    def setup_fluid_aliases(self):
+        super(WarpXFieldInfo, self).setup_fluid_aliases("mesh")
+
     def setup_particle_fields(self, ptype):
 
         def get_mass(field, data):
@@ -108,6 +121,37 @@
                        function=get_charge,
                        units="C")
 
+        def get_energy(field, data):
+            p2 = data[ptype, 'particle_momentum_x']**2 + \
+                 data[ptype, 'particle_momentum_y']**2 + \
+                 data[ptype, 'particle_momentum_z']**2
+            return np.sqrt(p2 * c**2 + data[ptype, 'particle_mass']**2 * c**4)
+
+        self.add_field((ptype, "particle_energy"), sampling_type="particle",
+                       function=get_energy,
+                       units="J")
+
+        def get_velocity_x(field, data):
+            return c**2 * data[ptype, 'particle_momentum_x'] / data[ptype, 'particle_energy']
+
+        def get_velocity_y(field, data):
+            return c**2 * data[ptype, 'particle_momentum_y'] / data[ptype, 'particle_energy']
+
+        def get_velocity_z(field, data):
+            return c**2 * data[ptype, 'particle_momentum_z'] / data[ptype, 'particle_energy']
+            
+        self.add_field((ptype, "particle_velocity_x"), sampling_type="particle",
+                       function=get_velocity_x,
+                       units="m/s")
+
+        self.add_field((ptype, "particle_velocity_y"), sampling_type="particle",
+                       function=get_velocity_y,
+                       units="m/s")
+
+        self.add_field((ptype, "particle_velocity_z"), sampling_type="particle",
+                       function=get_velocity_z,
+                       units="m/s")
+                                    
         super(WarpXFieldInfo, self).setup_particle_fields(ptype)

Repository URL: https://bitbucket.org/yt_analysis/yt/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.



More information about the yt-svn mailing list