From 4463a18beb0f58c7e9e6f43d86ae17c37b477364 Mon Sep 17 00:00:00 2001 From: Matthew Turk Date: Sat, 10 Jun 2023 08:36:37 -0500 Subject: [PATCH] Add cartesian coordinate fields to spherical geom --- .../coordinates/spherical_coordinates.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/yt/geometry/coordinates/spherical_coordinates.py b/yt/geometry/coordinates/spherical_coordinates.py index ee98e48b2f..3b452c2f05 100644 --- a/yt/geometry/coordinates/spherical_coordinates.py +++ b/yt/geometry/coordinates/spherical_coordinates.py @@ -81,6 +81,53 @@ def _path_phi(field, data): units="code_length", ) + self.setup_cartesian_fields(registry) + + def setup_cartesian_fields(self, registry): + def _cartesian_x(field, data): + return ( + data[("index", "r")] + * np.sin(data[("index", "theta")]) + * np.cos(data[("index", "phi")]) + ) + + def _cartesian_y(field, data): + return ( + data[("index", "r")] + * np.sin(data[("index", "theta")]) + * np.sin(data[("index", "phi")]) + ) + + def _cartesian_z(field, data): + return data[("index", "r")] * np.cos(data[("index", "theta")]) + + registry.add_field( + ("index", "cartesian_x"), + sampling_type="local", + function=_cartesian_x, + units="code_length", + display_field=True, + take_log=False, + ) + + registry.add_field( + ("index", "cartesian_y"), + sampling_type="local", + function=_cartesian_y, + units="code_length", + display_field=True, + take_log=False, + ) + + registry.add_field( + ("index", "cartesian_z"), + sampling_type="local", + function=_cartesian_z, + units="code_length", + display_field=True, + take_log=False, + ) + def pixelize( self, dimension, data_source, field, bounds, size, antialias=True, periodic=True ):