# Canopy Newsletter 17 - June 2023

June 29, 2023

## User Maths Overhaul

There has been a strong adoption of User Maths, and in response to an __upvoted feature request__ a significant upgrade has been released which presents a number of new options:

## Evaluate at Track POIs (as an alternative to Lap Scalar Results)

As a history lesson, before User Maths configs existed, Lap Scalar results which are defined in the track were the only place where sLap dependent outputs could be defined, for example, calculating sector energy consumption or end of straight speed. Since the invention of User Maths, Lap Scalar Results have received little to no development attention. However, it sometimes makes sense for sectors or zone definitions to be stored with the track otherwise a different User Maths would be required for every track.

Sectors or sLap zones can be defined within the Track config, but addressed from User Maths using the Evaluate at Track POIs option. The legacy Lap Scalar Results Channel List can be deselected in the Track if desired so that the zones are defined in the track and User Maths specifies which channels to evaluate.

## Order-Independent Evaluation

It is now possible to define a UserMaths vector result that depends on a UserMaths scalar result that depends on another UserMaths vector result. Reference loops result in a warning.

## Reference Previous Simulations

StraightSim results can now be used in your DynamicLap User Maths calculation.

Some of the simulations have a number of pre-requisite simulations that are run alongside, for example before a DynamicLap is run, StraightSim and ApexSim are computed. It might be useful to reference these results in User Maths, for example:

hRideF - StraightSim.hRideF_Setup

hRideF is a vector from the current sim and StraightSim.hRideF_Setup is a scalar from StraightSim.

**Interpolate into Vector Results**

StraightSim is based in the vCar domain while DynamicLap is in the sLap domain, so it might be useful to interpolate when calculating a Vector result from these sims, for example:

hRideF - interpResult("StraightSim.hRideF", vCar)

hRideF is a vector from the current sim and StraightSim.hRideF is a vector from StraightSim.

**Logical Operators in Vector Results**

A number of logical operators are now available, for example:

(FzUndertrayFrontL < -50) || (FzUndertrayFrontR < -50)

For the complete list, please see the documentation: __https://support.canopysimulations.com/hc/en-gb/articles/5650469186845-User-Maths__

**Expression Gates for Scalar Results**

This should be the go to option when creating all boolean gates, as it supersedes the capability of all other gates. Previously it was necessary to specify Absolute, Windowed, Relative or Compound Boolean Gate, but this has been simplified so that logical operators can be used directly in the Expression:

**Transient Battery Models**

The battery model circuits can now be switched separately for both store and deploy modes between:

1) Simple internal resistance in series with the battery EMF (existing option).

New options:

2) First order model with one RC pair in series with internal resistance.

3) Second order model with two RC pairs in series with internal resistance.

All resistive and capacitive elements are assumed to be linear, however, their R and C values can be either constant or a map wrt battery temperature and state of charge (or more correctly state of energy according to the current implementation).

In addition, the user can also specify the number of cells in series and parallel, which is useful since most battery test data is available per cell.

To be noted that R and C values are specified for the battery cell and not the whole battery (default when number of cells in series and parallel are not specified is for the whole battery).

Also, the model now features capability to specify the maximum current and voltage bounds of the whole battery.

**Ratio of Cornering Stiffness to Stiffness at Zero Slip**

Users can limit tyre slips using rLateralStiffnessToZeroSlipStiffnessMin and rLongitudinalStiffnessToZeroSlipStiffnessMin, which may take values between 0 and 1. In the lateral stiffness case we compute the tyre lateral slip stiffness (dFyTyre_daSlip) at the current operating condition (aSlip, rSlip, aCamber, FzTyre). We also compute the lateral slip stiffness at the corresponding condition with aSlip = 0. We then compute the ratio between these two values. If this ratio is 0.5, then it means that the lateral slip stiffness is 50% of the maximum value, if it drops to 0, then the tyre is at its peak. An analogous approach is applied for longitudinal slip.

Users can apply lower bounds to these values, which will be applied only to the most heavily loaded tyre (thus allowing super saturation of the unloaded tyre). This acts as an effective limit on the driving style of DynamicLap, and should offer a more numerically robust alternative to rAxleSlipBoundRatioF, which has a nominally similar function. We therefore intend to allow a period of familiarisation before deprecating the functionality of rAxleSlipBoundRatioF in favour of this new set of constraints.

**Advancing the State of the Art**

Last month we announced that Canopy has become part of the Michelin Group. While this won’t affect the way we work with you, it does mean we have more resources at our disposal. We are continuing to recruit new team members, so that we can offer you more and more features and technical developments.

**Free Productivity Month: 8 Nodes Always-On**

With all these new features to test, it might help to have some more processing power. My favourite upgrade is to have 8 nodes always on. This provides a significant performance boost when running multiple small studies or with simultaneous users.

Below you can see some benchmark times when running multiple DynamicLap simulations, but don’t take my word for it; email Lizzie or __hello@canopysimula____tions.com__ if you would like to test it for free during July 2023.

**Did you know…**

Pacejka 6.2 tyre model is now available in the dropdown. This adds some additional parameters to improve the accuracy at high slip angles.

Stage Inputs button; in the main list of studies, the Stage Inputs button is a shortcut to copy all of the configs, study name and simulation type to the Staging Area.

Factorial / Monte Carlo. This allows a Monte Carlo Exploration to be performed at specified discrete points, for example, each circuit.

Tenant Admins can now delete other users’ configs and studies without taking ownership. This is particularly useful for deleting old studies where ownership change is not possible.

Virtual 4 Post now has additional options: “Use Wheel Pans”, which controls whether to use flat wheel pans or to model the fact that the track under the wheel may have a slope. This should be true unless replaying a car moving over a track.

The option “Use Road Speed”, which controls whether to model the velocity of the wheel pans in time. This should be true unless replaying a car moving over track.There have been a number of improvements to the handling of battery power limits and interaction with braking systems.

We hope you enjoy using these new features.

Let us know if you have any questions or comments.

Your Canopy Team