Skip to content

Commit 81f7bfa

Browse files
committed
MNT: addition of is_multidimensional to function.py
- MNT: Function.is_multidimensional property in function.py. It returns True when the function's internal domain dimension is greater than 1 and safely returns False on errors. - MNT: Replaced the ad-hoc hasattr/len check in flight.py with a clearer check: if isinstance and drag_function.is_multidimensional
1 parent e4053ac commit 81f7bfa

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

rocketpy/mathutils/function.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,18 @@ def set_extrapolation(self, method="constant"):
367367
self.__set_extrapolation_func()
368368
return self
369369

370+
@property
371+
def is_multidimensional(self):
372+
"""Return True when the Function has domain dimension greater than 1.
373+
374+
This abstracts checks for multi-dimensionality so callers don't need
375+
to inspect internal attributes like ``__inputs__`` or ``__dom_dim__``.
376+
"""
377+
try:
378+
return int(self.__dom_dim__) > 1
379+
except Exception:
380+
return False
381+
370382
def __set_interpolation_func(self): # pylint: disable=too-many-statements
371383
"""Defines interpolation function used by the Function. Each
372384
interpolation method has its own function`.

rocketpy/simulation/flight.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1398,8 +1398,10 @@ def __get_drag_coefficient(self, drag_function, mach, z, freestream_velocity_bod
13981398
float
13991399
Drag coefficient value
14001400
"""
1401-
# Check if drag function is multi-dimensional by examining its inputs
1402-
if hasattr(drag_function, "__inputs__") and len(drag_function.__inputs__) > 1:
1401+
# Check if drag function is multi-dimensional using Function API
1402+
if isinstance(drag_function, Function) and getattr(
1403+
drag_function, "is_multidimensional", False
1404+
):
14031405
# Multi-dimensional drag function - calculate additional parameters
14041406

14051407
# Calculate Reynolds number

tests/integration/test_multidim_drag.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ def test_3d_drag_with_varying_alpha(example_plain_env, cesaroni_m1670):
106106
# Create a flat (alpha-agnostic) drag by averaging over alpha
107107
cd_flat = cd_data.mean(axis=2)
108108
drag_flat = Function.from_grid(
109-
cd_flat, [mach, reynolds], inputs=["Mach", "Reynolds"], outputs="Cd",
109+
cd_flat,
110+
[mach, reynolds],
111+
inputs=["Mach", "Reynolds"],
112+
outputs="Cd",
110113
)
111114

112115
# Use fixtures for environment and motor

0 commit comments

Comments
 (0)