APPENDIX F – Curve Correlation
T/HIS provides a number of ways to determine a measure for the degree to which two curves match i.e. correlation. Typically one curve is a reference curve that might come from physical testing, the other is the comparison curve that may be the result of a simulation of the scenario that generated the reference curve.
The following sections describe each of the tools and functions available in T/HIS:
- CORA An implementation of the methodology used by the Partnership for Dummy Technology and Biomechanics (PDB) software CORA (CORellation and Analysis) [F1], [F2]
- ISO 18571 An implementation of the calculations described in ISO 18571 [F3]
- MADM An implementation of the Minimum Area Discrepancy Method (MADM) [F4], [F5]
- COR1 and COR2 The T/HIS correlation functions COR1 and COR2
- COR3 The T/HIS correlation function COR3
- WIF The T/HIS correlation function that implements the weighted integrated factor method
CORA implementation
T/HIS implements the part of the PDB CORA method in which four measures of correlation are calculated and combined to give a total signal rating. One of these measures is made by examining how the curve fits within a defined corridor around the reference curve. The result is the corridor metric, with a value between zero and one. The remaining three measures are determined from properties related to a phase shift applied to the reference curve in order to achieve maximum cross-correlation. These three measures are each given a weighting and summed to give a cross-correlation metric, with a value between zero and one. The total signal rating is then determined from the weighted sum of the corridor and cross-correlation metrics.
Pre-requisites
- In order to achieve a meaningful correlation rating, the input curves should have a minimal amount of noise. This can be achieved using the filtering capabilities of T/HIS. It is assumed that any signal filtering required has been carried out prior to the use of CORA
- The curves should have x-values that increase monotonically
- The T/HIS CORA tool currently assumes the curves for analysis are available for selection within T/HIS
User interface
The T/HIS implementation of CORA is powered by JavaScript and can be accessed via . The options and parameters that are available for selection and modification are described in the hover text that appears when your mouse is positioned over the item of interest.

The features of the CORA menu control the correlation assessment as follows:
| Feature | Description |
| Rating method | Allows the choice of CORAplus 4.0.4, ISO 18571:2014 or ISO 18571:2024. |
| Defaults | The default values as specified in [F1] ( or [F3] for the ISO 18571 rating method) |
Output calculation curves |
Curves illustrating the details of the correlation calculation are created if this option is selected |
| Plot correlation graphs | Graph objects with respective curves for Corridor and Cross Correlation ratings. Scores and method can be automatically added to graph title or legend. |
| File output | A record of the calculation input and results is produced if this option is selected. The full path to the output file is required and a file dialogue can be used to select the location by using the button. If you wish to record multiple correlation analyses in the same file, the option should be selected otherwise the output file will be overwritten. |
| Signal | Parameters and options related to the input signals and how they are pre-processed prior to the correlation rating being calculated |
| Evaluation interval | The parameters in this section allow you to specify the most relevant region of the signals for correlation analysis |
| Corridor | Parameters used in the calculation of the corridor metric |
| Cross correlation | Parameters used in the calculation of the cross-correlation metric |
| Signal rating weighting | The weighting factors applied to the corridor and cross-correlation metrics to obtain the overall signal rating |
| Save configuration | Save the current input configuration to a file (in json format) for retrieval using the option. |
| Load configuration | To recreate a previous configuration a configuration file (in json format) can be loaded. The configuration file can be generated by using the option. |
Rating Methods
Three rating methods are available, described in the following sections:
CORAplus 4.0.4
The T/HIS CORA tool was benchmarked against the PDB CORA software CORAplus 4.0.4. The benchmarks indicated that the results will not always be consistent, because of differences in the cross correlation shifted and truncated curve used to perform the rating. In March 2022, PDB acknowledged some issues with its implementation, and intends to make corrections once ISO 18571 is next updated.
ISO/TS 18571:2014
The rating methods described in ISO/TS 18751:2014 [F3] have been implemented in T/HIS and are available by selecting the ISO/TS 18571:2014 rating method. This method in the T/HIS tool was also benchmarked against PDB CORA software CORAplus 4.0.4. The benchmarks indicated that the results will not always be consistent, because of differences in the dynamic time warping algorithms used. In March 2022, PDB acknowledged these differences, which relate to issues in ISO 18571 itself.
ISO/TS 18571:2024
The new ISO/TS 18571:2024 method is based on the latest ISO/TS 18571:2024 standard [F6] and supersedes the previously existing "ISO 18571 Euro NCAP v1.0" rating method in T/HIS. The ISO/TS 18571:2024 method is largely based on the existing ISO/TS 18571:2014 revision, with the following differences:
1. Dynamic Time Warping Constraint
In the Phase score calculation, the Dynamic Time Warping (DTW) algorithm is implemented with a Sakoe-Chiba window constraint with relative window size 0.1, as opposed to the unconstrained DTW algorithm described in the 2014 revision.
Additionally, a descent priority is enforced in the DTW algorithm warp path. When choosing the next step, if no clear minimum cost path is available—meaning that the options are equivalent or indistinguishable in terms of cost—the algorithm enforces a priority order for selecting the direction:
- Move downward (to the cell directly below).
- Move leftward (to the cell directly to the left).
- Move diagonally down-left (to the cell diagonally below and to the left).
This priority ensures a consistent approach to path selection even in cases where the cost differences between potential paths are negligible.
2. Alternative Slope Method
In the Slope score calculation, an alternative slope method is used. In the 2014 revision, the gradient is calculated by dividing the signal into intervals (10 data points in length) and computing the average slope within each interval.
In the 2024 revision, the gradient of the original 10 kHz signal is computed using:
- forward difference for the first point (1st order accurate)
- backward difference for the last point (1st order accurate)
- central difference for all the other points (2nd order accurate)
such that the gradient curve is the same size as the input curve. The algorithm then applies a smoothing function to the gradient curve. For each point on the curve, the smoothing function takes the average of the point and the four neighbouring points on either side (reducing to zero points either side as one approaches the ends of the curve).
CORA scripting interface
A CORA or ISO 18571 assessment can be automated by importing the CORA module into your own T/HIS JavaScript. For instructions and a worked example, follow the CORA and ISO-18571 tutorial ().
MADM Correlation tool
The MADM Correlation Tool in T/HIS is powered by JavaScript. The Minimum Area Discrepancy Method (MADM) is ideal for correlation between Ansys LS-DYNA simulations and physical tests when force versus deflection is the relationship of interest, and offers benefits over other correlation methods that focus on parameters versus time. The tool can be accessed by selecting .
Three input methods are available for providing average, lower, and upper curves for the MADM rating calculation:
- The user can directly specify average, lower, and upper curves.
- These can be provided in the form of a CSV file, or by picking/selecting from T/HIS curves.
- An average curve can be provided, and a corridor of uniform width generated around it. This width can be adjusted. Once a corridor is generated, it can be provided as the lower and upper curves.
- The average curve can be provided in the form of a CSV file, or by picking/selecting from T/HIS curves.
- From provided force-time and deflection-time datasets (which should each consist of more than one curve), a mean average curve can be generated. A corridor can then be generated which varies in width (the variation depends on each point’s standard deviation). The width can be controlled via the number of standard deviations used in the calculation. These curves can then be provided as the average, lower, and upper curves.
- The datasets can be provided in the form of multiple separate CSV files, or by selecting multiple T/HIS curves. Note that the dataset should have a uniform number of points, with regular time intervals throughout.
Note that all data provided should have the deflection along the x-axis, and the force along the y-axis. In addition, a corridor cannot be generated from data which self-intersects – in this case, the corridor should be generated separately by the user. Finally, a corridor cannot be generated from data with non-adjacent duplicate points.
Previously generated curves are deleted when the curves are re-generated, or when the input method is changed.
A MADM assessment can be automated by importing the MADM module into your own T/HIS JavaScript. For instructions and a worked example, follow the MADM tutorial ().
For information on the Minimum Area Discrepancy Method itself, further help and references can be found in the tool menu:

MADM input configuration can be saved or loaded via the and buttons. The configuration is saved as a JSON file. The following table documents the configuration file properties:
| Property | Description | Required? | Valid format |
| method | Method used for input curve generation. Will change what inputs are required. | Required for all methods. | 'Can be "specifyCurves", "generateOffset", or "generateAverage". |
| curve_inputs.avg | Input average curve. | Required for methods "specifyCurves" and "generateOffset". | File path to a .cur or .csv file, or a valid curve ID. |
| curve_inputs.lower | Input lower curve. | Required for method "specifyCurves". | File path to a .cur or .csv file, or a valid curve ID. |
| curve_inputs.upper | Input upper curve. | Required for method "specifyCurves". | File path to a .cur or .csv file, or a valid curve ID. |
| curve_inputs.sim | Input simulation curve. | Required for all methods. | File path to a .cur or .csv file, or a valid curve ID. |
| curve_inputs.dt | Input deflection-time curves. | Required for method "generateAverage". | File path to a .cur or .csv files containing multiple curves, or an array of valid curve IDs. |
| curve_inputs.ft | Input force-time curves | Required for method "generateAverage". | File path to a .cur or .csv files containing multiple curves, or an array of valid curve IDs. |
| n | Input n value. Required for all methods. Defaults to 1. | Required for all methods. | A number or string of a number. Recommended to be between 0.5 and 3. |
| m | Input m value. Required for all methods. Defaults to 2. | Required for all methods. | A number or string of a number. Recommended to be between 1 and 2. |
| offset | Offset value of generated corridor. | Required for method "generateOffset". | A number or string of a number. Must be a real postive number. |
| half_width | Number of standard deviations of generated corridor half-width. | Required for method "generateAverage". | A number or string of a number. Must be a real postive number. |
| output_curves | File path that an output curve file will be written to. | Optional | File path to a .cur/.csv file. |
| output_image | File path that an output graph image will be written to. | Optional | File path to a .png file. |
| output_json | File path that an output results .json file will be written to. | Optional | File path to a .json file. |
The MADM Correlation Tool was developed in collaboration with the University of Coventry [F4], [F5].
COR1 and COR2
The Correlation functions COR1 and COR2 provide a measure of the degree to which two curves match. When comparing curves by eye, the quality of correlation may be judged on the basis of how well matched are the patterns of peaks, the overall shapes of the curves, etc, and can allow for differences of timing as well as magnitude. Thus a simple function based on the difference of Y-values (such as T/HIS ERR function) does not measure correlation in the same way as the human eye. The T/HIS correlation function attempts to include and quantify the more subtle ways in which the correlation of two curves may be judged.
The correlation function may be applied to any two curves whose x-values increase monotonically (e.g. responses versus time). The results are independent of the units used, e.g. milliseconds or seconds are both acceptable. The sign of the y-values is not important.
Only the overlap time period is considered (i.e. the range of x-values for which both curves have a y-value). The time period (range of X-values) and maximum absolute Y-value are used to non-dimensionalise the curves such that x-values run from 0 to 1, and the maximum absolute y-value is 1.
Five measures of correlation are calculated. Each is given equal weighting. The final correlation score is given as a percentage - two identical curves would score 100%.
The first two measures require identification of peaks in the curves. An unlimited number of peaks in each curve will be considered. A peak is defined as a local maximum (or in the case of negative y-values a minimum), satisfying the following criteria:
- Absolute y-value at least 0.5
- Separated from any larger peak by a trough (local minimum) at least 0.2
deep.
Peaks of positive or negative signs are considered. Peaks are matched only against peaks of the same sign in the other curve.
Measure 1 – Peak valuesFor each identified peak in Curve A, find the maximum value in Curve B within the same time range for which the value in Curve A is within a tolerance of the peak value. Points are lost according to the error in y-values compared to a tolerance limit. Repeat for peaks in curve B against values in Curve A. This measure allows for the situation where curves are similar but the peaks are more strongly delineated in one of the curves, such that the program does not recognise the other curve as having a peak in that location.
|
Measure 2 – Peak matchingFor each identified peak in Curve A, find the closest identified peak in Curve B. Points are lost according to the largest error (timing or y-value) compared to tolerance limits; points are also lost if there is no corresponding peak in Curve B. Repeat for Curve A peaks matched against those of Curve B.
|
![]()
|
|
This measure picks up matching of primary and secondary peaks in the curves, which may correspond to physical events.
|
Measure 3 – Area matchingThe integral of each curve is calculated by summing the area of the curve above y=0 and the absolute area of the curve below y=0. Points are lost according to the difference compared to a tolerance limit.
|
Measure 4 – Curve shape (low frequency excursion)The curves are filtered. A band is drawn around filtered curve A (using positive and negative offsets in x and y). The area of excursions of filtered Curve B outside the band is calculated. Points are lost according to the excursion area compared to a tolerance limit. The process is repeated for filtered Curve A excursions from a band drawn around filtered curve B.
|
![]()
|
Measure 5 – Curve shape (full curve)The same as Measure 4 except that the curves are not filtered and different
tolerance limits and band sizes may be used. |
Output
T/HIS prints the overall correlation percentage and the marks from each measure to the screen or to a text file. A new curve is created from each input curve showing the identified peaks (used in measures 1 and 2). As the same curve could be used as input to multiple correlations the correlation percentage is stored internally in T/HIS with the 2 output curves NOT the input curves.
The correlation percentage can be accessed from within FAST-TCF scripts by
requesting the "correlate" property for either of the 2 ouptut curves.
| e.g. | operation correlate strict | curve_1 curve_2 | tag curve_3 curve_4 |
| Calculate correlation between "curve_1" and "curve_2". Tag the curves containing the peaks as "curve_3" and "curve_4" | |||
| tab output.txt | curve_3 | correlate | |
| Output the curve correlation value from "curve_3" to the file "output.txt" | |||
| taba output.txt | curve_4 | correlate | |
| Append the curve correlation value from "curve_4" to the file "output.txt" | |||
Selection of Parameters
The Correlation algorithm has many tolerance limits and other inputs. Two sets of these parameters have been pre-selected, to offer strict or less strict judgement of correlation (buttons COR1 and COR2 in the Automotive menu). The parameters selected are:
| Criterion | Decription | COR1 Value | COR2 Value |
| Peak matching | Fraction difference in timing that scores zero points for this peak | 0.2 | 0.4 |
| Peak matching and peak values | Fraction difference in value that scores zero points for this peak | 0.25 | 0.5 |
| Area matching | Fraction difference in integral that scores zero points | 0.3 | 0.5 |
| Curve shape (low frequency trend) | Size of tolerance band in X and Y, as fractions of the curve extent in X and Y | 0.025 | 0.05 |
| Curve shape (low frequency trend) | Excursion area fraction scoring zero points | 0.1 | 0.2 |
| Curve shape (full curve) | Size of tolerance band in X and Y, as fractions of the curve extent in X and Y | 0.025 | 0.05 |
| Curve shape (full curve) | Excursion area fraction scoring zero points | 0.2 | 0.4 |
It is expected that, if COR1 rates Curves A and B as better correlated than C and D, then COR2 would also rate the pairs of curves in the same order. The percentage correlation would be greater in each case from COR2 than from COR1. COR1 will provide a greater difference (discrimination) between well-correlated and very well-correlated pairs of curves; while COR2 will provide greater discrimination between averagely-correlated and poorly-correlated pairs of curves. The purpose of offering both versions of the correlation function is to allow the user to select a calibration of the function appropriate to the typical input curves used.
| Examples |
COR1
|
COR2
|
![]() |
17%
|
42%
|
![]() |
27%
|
62%
|
![]() |
70%
|
88%
|
![]() |
84%
|
92%
|
|
WIFThe Correlation function WIF provides another measure of the degree to which two curves match. It uses the Weighted Integrated Factor method: |
![]() |
References
[F1] Thunert (GNS mbH), CORAplus release 4.04 user's manual, May 2017
[F2] Gehre (PDB); Gades (Volkswagen AG); Wernicke (BMW Group), Objective rating of signals using test and simulation responses, Paper number 09-0407, 2009.
[F3] BSI Standards publication, Road vehicles - Objective rating metric for non-ambiguous signals, PD ISO/TS 18571:2014.
[F4] Bastien, C., Diederich, A., Christensen, J., & Ghaleb, S. (2021). Improving Correlation Accuracy of Crashworthiness Applications by Combining the CORA and MADM Methods. Proceedings of the Institution of Mechanical Engineers, Part D: Journal of Automobile Engineering. https://journals.sagepub.com/doi/10.1177/09544070211069666
[F5] Peres, J, Bastien, C, Christensen, J & Asgharpour, Z 2019, A Minimum Area Discrepancy Method (MADM) for Force Displacement Response Correlation, Computer Methods in Biomechanics and Biomedical Engineering, vol. 22, no. 11, GCMB-2018-045, pp. 981-996. https://doi.org/10.1080/10255842.2019.1610745
[F6] BSI Standards publication, Road vehicles - Objective rating metric for non-ambiguous signals, PD ISO/TS 18571:2024.







