diff --git a/python/fastsim/__init__.py b/python/fastsim/__init__.py index 583bb5c2..e3dbd0e8 100644 --- a/python/fastsim/__init__.py +++ b/python/fastsim/__init__.py @@ -9,7 +9,7 @@ from . import fastsimrust from . import fastsimrust as fsr from . import parameters as params -from . import utilities as utils +from . import utils from . import simdrive, vehicle, cycle, calibration, tests from . import calibration as cal from .resample import resample diff --git a/python/fastsim/auxiliaries.py b/python/fastsim/auxiliaries.py index 22dd08bb..86d465ab 100644 --- a/python/fastsim/auxiliaries.py +++ b/python/fastsim/auxiliaries.py @@ -1,26 +1,29 @@ """Auxiliary functions that require fastsim and provide faster access FASTSim vehicle properties.""" -import fastsim as fsim -from fastsim.vehicle import Vehicle -from fastsim import parameters as params from scipy.optimize import minimize, curve_fit import numpy as np import matplotlib.pyplot as plt from typing import Tuple, List -from fastsim.utilities import get_rho_air +# Local imports +import fastsim as fsim +from fastsim.vehicle import Vehicle +from fastsim import parameters as params +from fastsim.utils import get_rho_air props = params.PhysicalProperties() R_air = 287 # J/(kg*K) -def abc_to_drag_coeffs(veh: Vehicle, - a_lbf: float, b_lbf__mph: float, c_lbf__mph2: float, - custom_rho: bool = False, - custom_rho_temp_degC: float = 20., - custom_rho_elevation_m: float = 180., - simdrive_optimize: bool = True, - show_plots: bool = False, - use_rust=True) -> Tuple[float, float]: +def abc_to_drag_coeffs( + veh: Vehicle, + a_lbf: float, b_lbf__mph: float, c_lbf__mph2: float, + custom_rho: bool = False, + custom_rho_temp_degC: float = 20., + custom_rho_elevation_m: float = 180., + simdrive_optimize: bool = True, + show_plots: bool = False, + use_rust=True +) -> Tuple[float, float]: """For a given vehicle and target A, B, and C coefficients; calculate and return drag and rolling resistance coefficients. @@ -41,13 +44,16 @@ def abc_to_drag_coeffs(veh: Vehicle, """ # TODO: allows air density read APIs for whole project; `get_rho_air()` not used for `SimDrive` yet - cur_ambient_air_density_kg__m3 = get_rho_air( - custom_rho_temp_degC, custom_rho_elevation_m) if custom_rho else props.air_density_kg_per_m3 + + if custom_rho: + cur_ambient_air_density_kg__m3 = get_rho_air(custom_rho_temp_degC, custom_rho_elevation_m) + else: + cur_ambient_air_density_kg__m3 = props.air_density_kg_per_m3 vmax_mph = 70.0 a_newton = a_lbf * params.N_PER_LBF - b_newton__mps = b_lbf__mph * params.N_PER_LBF * params.MPH_PER_MPS + _b_newton__mps = b_lbf__mph * params.N_PER_LBF * params.MPH_PER_MPS c_newton__mps2 = c_lbf__mph2 * params.N_PER_LBF * \ params.MPH_PER_MPS * params.MPH_PER_MPS diff --git a/python/fastsim/demos/demo.py b/python/fastsim/demos/demo.py index 1714b176..4581db2e 100644 --- a/python/fastsim/demos/demo.py +++ b/python/fastsim/demos/demo.py @@ -41,7 +41,7 @@ # local modules import fastsim as fsim -import fastsim.utilities as utils + # importlib.reload(simdrive) importlib.reload(cycle) #for testing demo files, false when running automatic tests diff --git a/python/fastsim/demos/demo_abc_drag_coef_conv.py b/python/fastsim/demos/demo_abc_drag_coef_conv.py index 4c97a92e..daf9b2e4 100644 --- a/python/fastsim/demos/demo_abc_drag_coef_conv.py +++ b/python/fastsim/demos/demo_abc_drag_coef_conv.py @@ -1,6 +1,5 @@ import fastsim as fsim from fastsim.auxiliaries import abc_to_drag_coeffs, drag_coeffs_to_abc -import fastsim.utilities as utils v = fsim.vehicle.Vehicle.from_vehdb(1).to_rust() v2 = fsim.vehicle.Vehicle.from_vehdb(1).to_rust() diff --git a/python/fastsim/demos/demo_eu_vehicle_wltp.py b/python/fastsim/demos/demo_eu_vehicle_wltp.py index 3e95e7e3..228f404d 100644 --- a/python/fastsim/demos/demo_eu_vehicle_wltp.py +++ b/python/fastsim/demos/demo_eu_vehicle_wltp.py @@ -5,7 +5,7 @@ import time import fastsim as fsim import fastsim.parameters as params -import fastsim.utilities as utils +import fastsim.utils as utils import matplotlib.pyplot as plt diff --git a/python/fastsim/demos/fusion_thermal_demo.py b/python/fastsim/demos/fusion_thermal_demo.py index 85b71649..c9f90e7f 100644 --- a/python/fastsim/demos/fusion_thermal_demo.py +++ b/python/fastsim/demos/fusion_thermal_demo.py @@ -11,7 +11,6 @@ from pathlib import Path import os import sys -import fastsim.utilities as utils #for testing demo files, false when running automatic tests SHOW_PLOTS = fsim.utils.show_plots() diff --git a/python/fastsim/demos/stop_start_demo.py b/python/fastsim/demos/stop_start_demo.py index 6e09e429..d8e7de02 100644 --- a/python/fastsim/demos/stop_start_demo.py +++ b/python/fastsim/demos/stop_start_demo.py @@ -13,7 +13,6 @@ import importlib import seaborn as sns import fastsim as fsim -import fastsim.utilities as utils sns.set() diff --git a/python/fastsim/demos/time_dilation_demo.py b/python/fastsim/demos/time_dilation_demo.py index 87ad45a4..e5e6f83a 100644 --- a/python/fastsim/demos/time_dilation_demo.py +++ b/python/fastsim/demos/time_dilation_demo.py @@ -17,7 +17,6 @@ from fastsim import parameters as params import fastsim as fsim -import fastsim.utilities as utils # importlib.reload(simdrive) diff --git a/python/fastsim/demos/utils.py b/python/fastsim/demos/utils.py deleted file mode 100644 index 46959772..00000000 --- a/python/fastsim/demos/utils.py +++ /dev/null @@ -1,25 +0,0 @@ -""" -Utility functions for demo code -""" -DEMO_TEST_ENV_VAR = 'FASTSIM_DEMO_IS_INTERACTIVE' - -def maybe_str_to_bool(x, default=True): - """ - Turn values of None or string to bool - - x: str | None, some parameter, a string or None - - default: Bool, the default if x is None or blank - RETURN: True or False - """ - if x is None: - return default - if x is True or x is False: - return x - try: - lower_cased = x.lower().strip() - if lower_cased == 'false': - return False - if lower_cased == 'true': - return True - return default - except: - return default diff --git a/python/fastsim/demos/vehicle_import_demo.py b/python/fastsim/demos/vehicle_import_demo.py index 358229be..26789d88 100644 --- a/python/fastsim/demos/vehicle_import_demo.py +++ b/python/fastsim/demos/vehicle_import_demo.py @@ -7,10 +7,10 @@ import os, pathlib import fastsim.fastsimrust as fsr -from fastsim.demos.utils import maybe_str_to_bool, DEMO_TEST_ENV_VAR +import fastsim.utils as utils -RAN_SUCCESSFULLY = False -IS_INTERACTIVE = maybe_str_to_bool(os.getenv(DEMO_TEST_ENV_VAR)) +#for testing demo files, false when running automatic tests +SHOW_PLOTS = utils.show_plots() # %% # Setup some directories @@ -33,14 +33,14 @@ # Python pathlib.Path object will be rejected. options = fsr.get_options_for_year_make_model(year, make, model) -if IS_INTERACTIVE: +if SHOW_PLOTS: for opt in options: print(f"{opt.id}: {opt.transmission}") # %% # Get the data for the given option data = options[1] -if IS_INTERACTIVE: +if SHOW_PLOTS: print( f"{data.year} {data.make} {data.model}: {data.comb_mpg_fuel1} mpg ({data.city_mpg_fuel1} CITY / {data.highway_mpg_fuel1} HWY)" ) @@ -81,11 +81,6 @@ # Python pathlib.Path object will be rejected. vehs = fsr.import_all_vehicles(int(year), make, model, other_inputs) -if IS_INTERACTIVE: +if SHOW_PLOTS: for v in vehs: - print(f"Imported {v.scenario_name}") - - -# %% -# Used for automated testing -RAN_SUCCESSFULLY = True + print(f"Imported {v.scenario_name}") \ No newline at end of file diff --git a/python/fastsim/tests/test_auxiliaries.py b/python/fastsim/tests/test_auxiliaries.py index 58a8595b..9891f3d2 100644 --- a/python/fastsim/tests/test_auxiliaries.py +++ b/python/fastsim/tests/test_auxiliaries.py @@ -15,16 +15,28 @@ def test_abc_to_drag_coeffs(self): a = 25.91 b = 0.1943 c = 0.01796 - drag_coeff, wheel_rr_coef = auxiliaries.abc_to_drag_coeffs(veh=veh, - a_lbf=a, - b_lbf__mph=b, - c_lbf__mph2=c, - custom_rho=False, - simdrive_optimize=True, - show_plots=False, - use_rust=False) + drag_coeff, wheel_rr_coef = auxiliaries.abc_to_drag_coeffs( + veh=veh, + a_lbf=a, + b_lbf__mph=b, + c_lbf__mph2=c, + custom_rho=False, + simdrive_optimize=True, + show_plots=False, + use_rust=False + ) self.assertAlmostEqual(0.29396666380768194, drag_coeff, places=5) self.assertAlmostEqual(0.00836074507871098, wheel_rr_coef, places=7) + drag_coeff, wheel_rr_coef = auxiliaries.abc_to_drag_coeffs( + veh=veh, + a_lbf=a, + b_lbf__mph=b, + c_lbf__mph2=c, + custom_rho=True, + simdrive_optimize=True, + show_plots=False, + use_rust=False + ) def test_drag_coeffs_to_abc(self): veh = Vehicle.from_vehdb(1).to_rust() diff --git a/python/fastsim/tests/utils.py b/python/fastsim/tests/utils.py deleted file mode 100644 index a2e09d7a..00000000 --- a/python/fastsim/tests/utils.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -Utilities for Testing -""" -import os -import fastsim.demos.utils as utils - -def start_demo_environment(): - original_value = os.getenv(utils.DEMO_TEST_ENV_VAR) - os.environ[utils.DEMO_TEST_ENV_VAR] = 'False' - return original_value - -def end_demo_test_environment(original_value): - if original_value is not None: - os.environ[utils.DEMO_TEST_ENV_VAR] = original_value - else: - del os.environ[utils.DEMO_TEST_ENV_VAR] \ No newline at end of file diff --git a/python/fastsim/utils/__init__.py b/python/fastsim/utils/__init__.py index e69de29b..01ec46c3 100644 --- a/python/fastsim/utils/__init__.py +++ b/python/fastsim/utils/__init__.py @@ -0,0 +1 @@ +from .utilities import * \ No newline at end of file diff --git a/python/fastsim/utilities.py b/python/fastsim/utils/utilities.py similarity index 100% rename from python/fastsim/utilities.py rename to python/fastsim/utils/utilities.py