Skip to content

Commit

Permalink
calculate default depth for off axis proj initially
Browse files Browse the repository at this point in the history
  • Loading branch information
chrishavlin committed Dec 12, 2024
1 parent e6e5f1f commit f014741
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
3 changes: 1 addition & 2 deletions yt/visualization/fixed_resolution.py
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,6 @@ def _generate_image_and_mask(self, item) -> None:
self.bounds[5] - self.bounds[4],
)
)
depth = dd.depth[0] if dd.depth is not None else None
buff = off_axis_projection(
dd.dd,
dd.center,
Expand All @@ -652,7 +651,7 @@ def _generate_image_and_mask(self, item) -> None:
no_ghost=dd.no_ghost,
interpolated=dd.interpolated,
north_vector=dd.north_vector,
depth=depth,
depth=dd.depth,
method=dd.method,
)
if self.data_source.moment == 2:
Expand Down
27 changes: 15 additions & 12 deletions yt/visualization/plot_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@ def get_window_parameters(axis, center, width, ds):


def get_oblique_window_parameters(
normal, center, width, ds, depth=None, get3bounds=False
normal,
center,
width,
ds,
depth=None,
):
center, display_center = ds.coordinates.sanitize_center(center, axis=None)
width = ds.coordinates.sanitize_width(normal, width, depth)
Expand All @@ -101,15 +105,7 @@ def get_oblique_window_parameters(

w = tuple(el.in_units("code_length") for el in width)
bounds = tuple(((2 * (i % 2)) - 1) * w[i // 2] / 2 for i in range(len(w) * 2))
if get3bounds and depth is None:
# off-axis projection, depth not specified
# -> set 'large enough' depth using half the box diagonal + margin
d2 = ds.domain_width[0].in_units("code_length") ** 2
d2 += ds.domain_width[1].in_units("code_length") ** 2
d2 += ds.domain_width[2].in_units("code_length") ** 2
diag = np.sqrt(d2)
bounds = bounds + (-0.51 * diag, 0.51 * diag)
return (bounds, center)
return bounds, center


def get_axes_unit(width, ds):
Expand Down Expand Up @@ -2389,7 +2385,8 @@ class OffAxisProjectionPlot(ProjectionPlot, PWViewerMPL):
depth : A tuple or a float
A tuple containing the depth to project through and the string
key of the unit: (width, 'unit'). If set to a float, code units
are assumed
are assumed. In not set, then a depth equal to the diagonal of
the domain width plus a small margin will be used.
weight_field : string
The name of the weighting field. Set to None for no weight.
max_level: int
Expand Down Expand Up @@ -2466,6 +2463,13 @@ def __init__(
"currently supported geometries:"
f" {self._supported_geometries!r}"
)

if depth is None:
# off-axis projection, depth not specified
# -> set 'large enough' depth using half the box diagonal + margin
depth = np.sqrt(np.sum(ds.domain_width.in_units("code_length") ** 2)) * 1.02
depth = ds.coordinates.sanitize_depth(depth)[0]

# center_rot normalizes the center to (0,0),
# units match bounds
# for SPH data, we want to input the original center
Expand All @@ -2479,7 +2483,6 @@ def __init__(
width,
ds,
depth=depth,
get3bounds=True,
)
# will probably fail if you try to project an SPH and non-SPH
# field in a single call
Expand Down

0 comments on commit f014741

Please sign in to comment.