suboptimumg.vehicle.suspension.suspension#

class suboptimumg.vehicle.suspension.suspension.ComplexSuspension(vehicle_model)[source]#

Bases: Suspension

https://kktse.github.io/jekyll/update/2021/05/12/simplied-lateral-load-transfer-analysis.html

Front & Rear Roll Stiffness includes: - Corner Spring/Torsion Bar Stiffness (Spring Rate, Motion Ratio, etc.) - Anti-roll bar stiffness (ARB Setting, Motion Ratio, etc.)

Parameters:

vehicle_model (VehicleModel)

lateral_weight_transfer(axle, axle_track, m_front, m_rear, cg_height, lat_acc_x, **kwargs)[source]#

Calculate lateral weight transfer using complex suspension model.

Parameters:
  • axle (str) – The position of the suspension (either ‘front’ or ‘rear’)

  • axle_track (float) – The track width of the axle (m)

  • m_front (float) – The mass on the front axle (kg)

  • m_rear (float) – The mass on the rear axle (kg)

  • cg_height (float) – The height of the center of gravity of the vehicle (m)

  • lat_acc_x (float) – The lateral acceleration of the vehicle (m/s^2)

  • **kwargs (dict) – Additional keyword arguments (unused)

Returns:

Force deltas due to lateral weight transfer (N) (left, right)

Return type:

tuple[float, float]

Notes

This model is based on the paper referenced in the class docstring.

Formula:

\[|\Delta F_{y,axle}| = \frac{m_{axle} \cdot h_{RC,axle}}{t_{axle}} \cdot a_x + \frac{k_{\phi,axle}}{k_{\phi,axle} + k_{\phi,opp}} \cdot \frac{m_{axle} \cdot (h_{CG} - h_{RC,axle}) + m_{opp} \cdot (h_{CG} - h_{RC,opp})}{t_{axle}} \cdot a_x\]

Where:

  • \(\Delta F_{y,axle}\) : change in normal force on the axle (N)

  • \(m_{axle}\) : mass on the axle (kg)

  • \(h_{RC,axle}\) : roll center height of the axle (m)

  • \(t_{axle}\) : track width of the axle (m)

  • \(a_x\) : lateral acceleration of the vehicle (m/s²)

  • \(k_{\phi,axle}\) : roll stiffness of the axle (Nm/rad)

  • \(h_{CG}\) : height of the center of gravity (m)

longitudinal_weight_transfer(wheelbase, total_mass, cg_height, long_acc_z, **kwargs)[source]#

Calculate longitudinal weight transfer using complex suspension model.

Parameters:
  • wheelbase (float) – Wheelbase of the vehicle (m)

  • total_mass (float) – Total mass of the car (kg)

  • cg_height (float) – Height of the center of gravity (m)

  • long_acc_z (float) – Longitudinal acceleration of the vehicle (m/s^2)

  • **kwargs (dict) – Additional keyword arguments (unused)

Returns:

Force deltas due to longitudinal weight transfer (N) (front, rear)

Return type:

tuple[float, float]

Notes

This model was derived by Vedansh Goenka based on the paper referenced in the class docstring. Currently uses simplified model pending full implementation with pitch stiffness parameters.

Formula:

\[\Delta F_{y,axle} = \frac{m \cdot h_{PC}}{L} \cdot a_z + \frac{k_{\theta,axle}}{k_{\theta,axle} + k_{\theta,opp}} \cdot \frac{m \cdot (h_{CG} - h_{PC})}{L} \cdot a_z\]

Where:

  • \(\Delta F_{y,axle}\) : change in normal force on the axle (N)

  • \(m\) : mass on the axle (kg)

  • \(h_{PC}\) : pitch center height (m)

  • \(L\) : wheelbase of the vehicle (m)

  • \(a_z\) : longitudinal acceleration of the vehicle (m/s²)

  • \(k_{\theta,axle}\) : pitch stiffness of the axle (Nm/rad)

  • \(h_{CG}\) : height of the center of gravity (m)

class suboptimumg.vehicle.suspension.suspension.SimpleSuspension(vehicle_model, **kwargs)[source]#

Bases: Suspension

Parameters:

vehicle_model (VehicleModel)

lateral_weight_transfer(axle_track, m_front, m_rear, cg_height, lat_acc_x, **kwargs)[source]#

Calculate lateral weight transfer using simple suspension model.

Parameters:
  • axle_track (float) – Track width of the axle (m)

  • m_front (float) – Mass on the front axle (kg)

  • m_rear (float) – Mass on the rear axle (kg)

  • cg_height (float) – Height of the center of gravity (m)

  • lat_acc_x (float) – Lateral acceleration of the vehicle (m/s^2); positive means left turn

  • **kwargs (dict) – Additional keyword arguments (unused)

Returns:

Lateral weight transfer (N) across specific axle, (left, right)

Return type:

tuple[float, float]

Notes

Formula used:

\[|\Delta F_{y,sus}| = \frac{m \cdot a_x \cdot h_{CG}}{t}\]

where \(\Delta F_{y,sus}\) is change in normal force on the suspension (N)

longitudinal_weight_transfer(wheelbase, total_mass, cg_height, long_acc_z, **kwargs)[source]#

Calculate longitudinal weight transfer using simple suspension model.

Parameters:
  • wheelbase (float) – Wheelbase of the vehicle (m)

  • total_mass (float) – Total mass of the vehicle (kg)

  • cg_height (float) – Height of the center of gravity (m)

  • long_acc_z (float) – Longitudinal acceleration of the vehicle (m/s^2); positive means go faster

  • **kwargs (dict) – Additional keyword arguments (unused)

Returns:

Longitudinal weight transfer (N) (front, rear)

Return type:

tuple[float, float]

Notes

Formula used:

\[|\Delta F_{y,sus}| = \frac{m \cdot a_z \cdot h_{CG}}{L}\]

where \(\Delta F_{y,sus}\) is change in normal force on the suspension (N)

class suboptimumg.vehicle.suspension.suspension.Suspension(vehicle_model)[source]#

Bases: ABC

Parameters:

vehicle_model (VehicleModel)

abstractmethod static lateral_weight_transfer(self, *args, **kwargs)[source]#
abstractmethod static longitudinal_weight_transfer(self, *args, **kwargs)[source]#